diff -Naur ns-3.19/AUTHORS ns-3.20/AUTHORS
--- ns-3.19/AUTHORS	2014-06-17 10:34:00.262638020 -0700
+++ ns-3.20/AUTHORS	2014-06-17 10:33:13.609998153 -0700
@@ -19,20 +19,24 @@
 Junling Bu <linlinjavaer@gmail.com>
 Elena Buchatskaia (borovkovaes@iitp.ru)
 Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
+Scott Carpenter (scarpen@ncsu.edu)
 Egemen K. Cetinkaya (ekc@iitc.ku.edu)
 Angelos Chatzipapas (chatzipa@ceid.upatras.gr)
+Eugene Chemeritskiy (echemeritskiy@arccn.ru)
 Yufei Cheng (yfcheng@ittc.ku.edu)
 Andrey Churin (aachurin@gmail.com)
 Salva Climent (jocliba@gmail.com)
 Luis Cortes (cortes@gatech.edu)
 Luca Costantino (luca.costantino@gmail.com)
 Alexander D'souza (moijes12@gmail.com)
+Sébastien Deronne (sebastien.deronne@gmail.com)
 Craig Dowell (craigdo@ee.washington.edu)
 Gilaras Drakeson <gilaras@gmail.com>
 Christian Facchini <c.facchini@gmail.com>
 Denis Fakhriev (fakhriev@iitp.ru)
 Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
 Luca Favatella <slackydeb@gmail.com>
+Margherita Filippetti <morag87@gmail.com>
 Pedro Fortuna (pedro.fortuna@inescporto.pt)
 Juliana Freitag Borin (juliana.freitag@gmail.com)
 Eric Gamess (egamess@gmail.com)
@@ -41,6 +45,7 @@
 Ashim Ghosh <ashim.atiit@gmail.com>
 Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
 Tom Goff (tgoff@tgoff.net)
+Juan C. Granda (jcgranda@uniovi.es)
 David Gross (gdavid.devel@gmail.com)
 Maja Grubišić (maja.grubisic@live.com)
 Charline Taibi Guguen (charline.guguen@gmail.com)
@@ -51,6 +56,7 @@
 Budiarto Herman <budiarto.herman@magister.fi>
 Tom Hewer <tomhewer@mac.com>
 Kim Højgaard-Hansen <kimrhh@gmail.com>
+Chris Hood (chood8@gatech.edu)
 Blake Hurd (naimorai@gmail.com)
 ishan (ishan.chhabra@gmail.com)
 Mohamed Amine Ismail (amine.ismail@inria.fr, iamine@udcast.com)
@@ -62,8 +68,10 @@
 Piotr Jurkiewicz (piotr.jerzy.jurkiewicz@gmail.com)
 Evgeny Kalishenko (ydginster@gmail.com)
 Konstantinos Katsaros <dinos.katsaros@gmail.com>
-Joe Kopena (tjkopena@cs.drexel.edu)
+Morteza Kheirkhah (m.kheirkhah@sussex.ac.uk)
 Flavio Kobuta (flaviokubota@gmail.com)
+Joe Kopena (tjkopena@cs.drexel.edu)
+Christopher Kosecki (christopher.l.kosecki.ctr@mail.mil)
 Aleksey Kovalenko (kovalenko@iitp.ru)
 Mathieu Lacage (mathieu.lacage@inria.fr)
 Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
@@ -71,10 +79,12 @@
 Daniel Lertpratchya (nikkipui@gmail.com)
 Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
 Timo Lindhorst <tlnd@online.de>
+Erwan Livolant <erwan.livolant@inria.fr>
 Keith Ma (keith.nwsuaf@gmail.com)
 Federico Maguolo (maguolof@dei.unipd.it)
 Antti Makela (zarhan@cc.hut.fi)
 Francesco Malandrino (francesco.malandrino@gmail.com)
+Rubén Martínez (rmartinez@deic.uab.cat)
 Fabian Mauchle (f1mauchl@hsr.ch)
 Andrey Mazo (mazo@iitp.ru)
 Jonathan McCrohan (jmccroha@tcd.ie)
@@ -115,8 +125,10 @@
 Andrea Sacco (andrea.sacco85@gmail.com)
 Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
 Francisco Javier Sánchez-Roselly <fnavarro@ujaen.es>
+l.salameh@cs.ucl.ac.uk
 Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
 Guillaume Seguin (guillaume.seguin@inria.fr)
+Tomasz Seweryn (tomasz.seweryn7@gmail.com)
 Kulin Shah (m.kulin@gmail.com)
 Guowang Shi <shiguowang2007@gmail.com>
 Phillip Sitbon (phillip.sitbon@gmail.com)
diff -Naur ns-3.19/bindings/python/ns3modulegen_core_customizations.py ns-3.20/bindings/python/ns3modulegen_core_customizations.py
--- ns-3.19/bindings/python/ns3modulegen_core_customizations.py	2014-06-17 10:34:00.280637881 -0700
+++ ns-3.20/bindings/python/ns3modulegen_core_customizations.py	2014-06-17 10:33:13.628998007 -0700
@@ -1,3 +1,5 @@
+from __future__ import print_function
+import sys
 import re
 
 from pybindgen.typehandlers import base as typehandlers
@@ -26,11 +28,13 @@
     def __init__(self):
         super(SmartPointerTransformation, self).__init__()
         self.rx = re.compile(r'(ns3::|::ns3::|)Ptr<([^>]+)>\s*$')
+        print("{0!r}".format(self), file=sys.stderr)
 
     def _get_untransformed_type_traits(self, name):
         m = self.rx.match(name)
         is_const = False
         if m is None:
+            print("{0!r} did not match".format(name), file=sys.stderr)
             return None, False
         else:
             name1 = m.group(2).strip()
@@ -61,9 +65,9 @@
         ## fix the ctype, add ns3:: namespace
         orig_ctype, is_const = self._get_untransformed_type_traits(args[0])
         if is_const:
-            correct_ctype = 'ns3::Ptr< %s const >' % orig_ctype[:-2]
+            correct_ctype = 'ns3::Ptr< {0} const >'.format(orig_ctype[:-2])
         else:
-            correct_ctype = 'ns3::Ptr< %s >' % orig_ctype[:-2]
+            correct_ctype = 'ns3::Ptr< {0} >'.format(orig_ctype[:-2])
         args = tuple([correct_ctype] + list(args[1:]))
 
         handler = type_handler(*args, **kwargs)
@@ -84,58 +88,6 @@
 del transf
 
 
-class ArgvParam(Parameter):
-    """
-    Converts a python list-of-strings argument to a pair of 'int argc,
-    char *argv[]' arguments to pass into C.
-
-    One Python argument becomes two C function arguments -> it's a miracle!
-
-    Note: this parameter type handler is not registered by any name;
-    must be used explicitly.
-    """
-
-    DIRECTIONS = [Parameter.DIRECTION_IN]
-    CTYPES = []
-    
-    def convert_c_to_python(self, wrapper):
-        raise NotImplementedError
-
-    def convert_python_to_c(self, wrapper):
-        py_name = wrapper.declarations.declare_variable('PyObject*', 'py_' + self.name)
-        argc_var = wrapper.declarations.declare_variable('int', 'argc')
-        name = wrapper.declarations.declare_variable('char**', self.name)
-        idx = wrapper.declarations.declare_variable('Py_ssize_t', 'idx')
-        wrapper.parse_params.add_parameter('O!', ['&PyList_Type', '&'+py_name], self.name)
-
-        #wrapper.before_call.write_error_check('!PyList_Check(%s)' % py_name) # XXX
-
-        wrapper.before_call.write_code("%s = (char **) malloc(sizeof(char*)*PyList_Size(%s));"
-                                       % (name, py_name))
-        wrapper.before_call.add_cleanup_code('free(%s);' % name)
-        wrapper.before_call.write_code('''
-for (%(idx)s = 0; %(idx)s < PyList_Size(%(py_name)s); %(idx)s++)
-{
-''' % vars())
-        wrapper.before_call.sink.indent()
-        wrapper.before_call.write_code('''
-PyObject *item = PyList_GET_ITEM(%(py_name)s, %(idx)s);
-''' % vars())
-        #wrapper.before_call.write_error_check('item == NULL')
-        wrapper.before_call.write_error_check(
-            '!PyString_Check(item)',
-            failure_cleanup=('PyErr_SetString(PyExc_TypeError, '
-                             '"argument %s must be a list of strings");') % self.name)
-        wrapper.before_call.write_code(
-            '%s[%s] = PyString_AsString(item);' % (name, idx))
-        wrapper.before_call.sink.unindent()
-        wrapper.before_call.write_code('}')
-        wrapper.before_call.write_code('%s = PyList_Size(%s);' % (argc_var, py_name))
-        
-        wrapper.call_params.append(argc_var)
-        wrapper.call_params.append(name)
-
-
 class CallbackImplProxyMethod(typehandlers.ReverseWrapperBase):
     """
     Class that generates a proxy virtual method that calls a similarly named python method.
@@ -204,7 +156,7 @@
             kwargs = {}
         try:
             return_type = ReturnValue.new(str(return_ctype), **kwargs)
-        except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
+        except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
             warnings.warn("***** Unable to register callback; Return value '%s' error (used in %s): %r"
                           % (callback_return, cls_name, ex),
                           Warning)
@@ -223,7 +175,7 @@
                 kwargs = {}
             try:
                 arguments.append(Parameter.new(str(param_ctype), arg_name, **kwargs))
-            except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
+            except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
                 warnings.warn("***** Unable to register callback; parameter '%s %s' error (used in %s): %r"
                               % (arg_type, arg_name, cls_name, ex),
                               Warning)
@@ -241,7 +193,7 @@
         class PythonCallbackParameter(Parameter):
             "Class handlers"
             CTYPES = [cls_name]
-            print >> sys.stderr, "***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name)
+            print("***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name), file=sys.stderr)
             DIRECTIONS = [Parameter.DIRECTION_IN]
             PYTHON_CALLBACK_IMPL_NAME = class_name
             TEMPLATE_ARGS = template_parameters
diff -Naur ns-3.19/bindings/python/ns3modulegen-modular.py ns-3.20/bindings/python/ns3modulegen-modular.py
--- ns-3.19/bindings/python/ns3modulegen-modular.py	2014-06-17 10:34:00.278637897 -0700
+++ ns-3.20/bindings/python/ns3modulegen-modular.py	2014-06-17 10:33:13.626998022 -0700
@@ -1,3 +1,4 @@
+from __future__ import print_function
 import warnings
 import sys
 import os
@@ -6,6 +7,8 @@
 from pybindgen.module import MultiSectionFactory
 import ns3modulegen_core_customizations
 
+import logging
+
 pybindgen.settings.wrapper_registry = pybindgen.settings.StdMapWrapperRegistry
 
 import traceback
@@ -55,6 +58,9 @@
 
 
 def main(argv):
+    logging.basicConfig()
+    logging.getLogger("pybindgen.typehandlers").setLevel(logging.DEBUG)
+
     module_abs_src_path, target, extension_name, output_cc_file_name = argv[1:]
     module_name = os.path.basename(module_abs_src_path)
     out = MyMultiSectionFactory(output_cc_file_name)
@@ -71,11 +77,11 @@
 
         try:
             from callbacks_list import callback_classes
-        except ImportError, ex:
-            print >> sys.stderr, "***************", repr(ex)
+        except ImportError as ex:
+            print("***************", repr(ex), file=sys.stderr)
             callback_classes = []
         else:
-            print >> sys.stderr, ">>>>>>>>>>>>>>>>", repr(callback_classes)
+            print(">>>>>>>>>>>>>>>>", repr(callback_classes), file=sys.stderr)
 
     finally:
         sys.path.pop(0)
diff -Naur ns-3.19/bindings/python/waf ns-3.20/bindings/python/waf
--- ns-3.19/bindings/python/waf	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/bindings/python/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/bindings/python/wscript ns-3.20/bindings/python/wscript
--- ns-3.19/bindings/python/wscript	2014-06-17 10:34:00.286637835 -0700
+++ ns-3.20/bindings/python/wscript	2014-06-17 10:33:13.633997968 -0700
@@ -13,7 +13,7 @@
 # after = TaskGen.after
 
 ## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 834)
+REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 868)
 REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
 
 RUN_ME=-3
@@ -47,6 +47,10 @@
     opt.add_option('--with-python',
                    help=('Path to the Python interpreter to use.'),
                    default=None, dest='with_python', type="string")
+    opt.add_option('--no32bit-scan',
+                   help=("Don't scan for the 32-bit variant of the bindings on 64-bit platforms."),
+                   action="store_true", default=False,
+                   dest='no32bit_scan')
 
 
 def configure(conf):
@@ -161,7 +165,7 @@
     else:
         out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
                                 "import pybindgen.version; "
-                                "print '.'.join([str(x) for x in pybindgen.version.__version__])"],
+                                "print('.'.join([str(x) for x in pybindgen.version.__version__]))"],
                                 stdout=subprocess.PIPE).communicate()[0]
         pybindgen_version_str = out.strip()
         pybindgen_version = tuple([int(x) for x in pybindgen_version_str.split('.')])
@@ -436,7 +440,9 @@
         else:
             import struct
             if struct.calcsize('I') == 4 and struct.calcsize('L') == 8 and struct.calcsize('P') == 8:
-                scan_targets.extend([('gcc_ILP32', '-m32'), ('gcc_LP64', '-m64')])
+                if not Options.options.no32bit_scan:
+                    scan_targets.append(('gcc_ILP32', '-m32'))
+                scan_targets.append(('gcc_LP64', '-m64'))
             elif struct.calcsize('I') == 4 and struct.calcsize('L') == 4 and struct.calcsize('P') == 4:
                 scan_targets.append(('gcc_ILP32', ''))
             else:
diff -Naur ns-3.19/CHANGES.html ns-3.20/CHANGES.html
--- ns-3.19/CHANGES.html	2014-06-17 10:34:00.268637974 -0700
+++ ns-3.20/CHANGES.html	2014-06-17 10:33:13.616998099 -0700
@@ -51,6 +51,64 @@
 us a note on ns-developers mailing list.</p>
 
 <hr>
+<h1>Changes from ns-3.19 to ns-3.20</h1>
+<h2>New API:</h2>
+<ul>
+  <li> Models have been added for low-rate, wireless personal area networks
+(LR-WPAN) as specified by IEEE standard 802.15.4 (2006).  The current 
+emphasis is on the unslotted mode of 802.15.4 operation for use in Zigbee, 
+and the scope is limited to enabling a single mode (CSMA/CA) with basic 
+data transfer capabilities. Association with PAN coordinators is not yet 
+supported, nor the use of extended addressing. Interference is modeled as 
+AWGN but this is currently not thoroughly tested.  The NetDevice Tx queue 
+is not limited, i.e., packets are never dropped due to queue becoming full. 
+They may be dropped due to excessive transmission retries or channel access 
+failure.  </li>
+  <li> A new IPv6 routing protocol has been added: RIPng. This protocol is
+  an Interior Gateway Protocol and it is available in the Internet module. </li>
+  <li> A new LTE MAC downlink scheduling algorithm named Channel and QoS 
+  Aware (CQA) Scheduler is provided by the new "ns3::CqaFfMacScheduler" object.
+  </li>
+  <li> Units may be attached to Time objects, to facilitate specific output
+  formats (see Time::As()) </li>
+  <li> FlowMonitor "SerializeToXml" functions are now directly available
+  from the helper.  </li>
+  <li> Access to OLSR's HNA table has been enabled </li>
+</ul>
+
+<h2>Changes to existing API:</h2>
+<ul>
+  <li> The SixLowPan model can now use uncompressed IPv6 headers. An option to
+  define the minimum compressed packet size has been added.  </li>
+  <li> MinDistance wsa replaced by MinLoss in FriisPropagationLossModel, to
+  better handle conditions outside of the assumed far field region. </li>
+  <li> In the DSR model, the attribute DsrOptionRerrHeader::ErrorType" has
+  been removed. </li>
+</ul>
+
+<h2>Changes to build system:</h2>
+<ul>
+  <li> Python 3.3 is now supported for Python bindings for ns-3.  Python 3.3 
+  support for API scanning is not supported.  Python 3.2 is not supported.</li>
+  <li>  Enable selection of high precision int64x64_t implementation
+  at configure time, for debugging purposes.</li>
+  <li> Optimized builds are now enabling signed overflow optimization 
+  (-fstrict-overflow) and for gcc 4.8.2 and greater, also warning for cases 
+  where an optimizization may occur due to compiler assumption that 
+  overflow will not occur. </li>
+</ul>
+
+<h2>Changed behavior:</h2>
+<ul>
+  <li> The Internet FlowMonitor can now track IPv6 packets.  </li>
+  <li> Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace
+  is now fired when appropriate.  </li>
+  <li> IPv4 identification field value is now dependent on the protocol 
+  field.  </li>
+  <li> Point-to-point trace sources now contain PPP headers </li>
+</ul>
+
+<hr>
 <h1>Changes from ns-3.18.1 to ns-3.19</h1>
 
 <h2>New API:</h2>
diff -Naur ns-3.19/doc/doxygen.conf ns-3.20/doc/doxygen.conf
--- ns-3.19/doc/doxygen.conf	2014-06-17 10:34:00.290637804 -0700
+++ ns-3.20/doc/doxygen.conf	2014-06-17 10:33:13.639997922 -0700
@@ -1,4 +1,6 @@
-# Doxyfile 1.8.1.1
+# -*-sh-*-
+
+# Doxyfile 1.8.3.1
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project.
@@ -126,7 +128,9 @@
 # only done if one of the specified strings matches the left-hand part of
 # the path. The tag can be used to show relative paths in the file list.
 # If left blank the directory from which doxygen is run is used as the
-# path to strip.
+# path to strip. Note that you specify absolute paths here, but also
+# relative paths, which will be relative from the directory where doxygen is
+# started.
 
 STRIP_FROM_PATH        =
 
@@ -242,14 +246,15 @@
 OPTIMIZE_OUTPUT_VHDL   = NO
 
 # Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension,
+# and language is one of the parsers supported by doxygen: IDL, Java,
+# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
+# C++. For instance to make doxygen treat .inc files as Fortran files (default
+# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
+# that for custom extensions you also need to set FILE_PATTERNS otherwise the
+# files are not read by doxygen.
 
 EXTENSION_MAPPING      =
 
@@ -262,6 +267,13 @@
 
 MARKDOWN_SUPPORT       = YES
 
+# When enabled doxygen tries to link words that correspond to documented classes,
+# or namespaces to their corresponding documentation. Such a link can be
+# prevented in individual cases by by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+
+AUTOLINK_SUPPORT       = YES
+
 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
 # to include (a tag file for) the STL sources as input, then you should
 # set this tag to YES in order to let doxygen match functions declarations and
@@ -282,10 +294,10 @@
 
 SIP_SUPPORT            = NO
 
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES (the
+# default) will make doxygen replace the get and set methods by a property in
+# the documentation. This will only work if the methods are indeed getting or
 # setting a simple type. If this is not the case, or you want to show the
 # methods anyway, you should set this option to NO.
 
@@ -346,7 +358,7 @@
 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
 # corresponding to a cache size of 2^16 = 65536 symbols.
 
-SYMBOL_CACHE_SIZE      = 0
+SYMBOL_CACHE_SIZE      = 1
 
 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
 # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
@@ -375,7 +387,8 @@
 
 EXTRACT_PRIVATE        = YES
 
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
 
 EXTRACT_PACKAGE        = NO
 
@@ -546,7 +559,8 @@
 GENERATE_DEPRECATEDLIST= YES
 
 # The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# documentation sections, marked by \if section-label ... \endif
+# and \cond section-label ... \endcond blocks.
 
 ENABLED_SECTIONS       =
 
@@ -604,7 +618,8 @@
 # requires the bibtex tool to be installed. See also
 # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
 # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
+# feature you need bibtex and perl available in the search path. Do not use
+# file names with spaces, bibtex cannot handle them.
 
 CITE_BIB_FILES         =
 
@@ -836,6 +851,13 @@
 
 FILTER_SOURCE_PATTERNS =
 
+# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page (index.html).
+# This can be useful if you have a project on for instance GitHub and want reuse
+# the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
 #---------------------------------------------------------------------------
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
@@ -957,12 +979,22 @@
 
 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
 # style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# style sheet in the HTML output directory as well, or it will be erased!
+# fine-tune the look of the HTML output. If left blank doxygen will
+# generate a default style sheet. Note that it is recommended to use
+# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
+# tag will in the future become obsolete.
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
+# user-defined cascading style sheet that is included after the standard
+# style sheets created by doxygen. Using this option one can overrule
+# certain style aspects. This is preferred over using HTML_STYLESHEET
+# since it does not replace the standard style sheet and is therefor more
+# robust against future updates. Doxygen will copy the style sheet file to
+# the output directory.
 
-HTML_STYLESHEET        = doc/ns3_html_theme/static/ns3_stylesheet.css
+HTML_EXTRA_STYLESHEET  = doc/ns3_html_theme/static/ns3_stylesheet.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
@@ -971,8 +1003,7 @@
 # files. In the HTML_STYLESHEET file, use the file name only. Also note that
 # the files will be copied as-is; there are no commands or markers available.
 
-HTML_EXTRA_FILES       = doc/ns3_html_theme/static/doxygen.css \
-                         doc/ns3_html_theme/static/bar-top.png \
+HTML_EXTRA_FILES       = doc/ns3_html_theme/static/bar-top.png \
                          doc/ns3_html_theme/static/drop-down-menu.js \
                          doc/ns3_html_theme/static/favicon.ico \
                          doc/ns3_html_theme/static/menu-bgr-400.png \
@@ -1055,9 +1086,9 @@
 
 DOCSET_BUNDLE_ID       = org.nsnam.ns3
 
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
+# identify the documentation publisher. This should be a reverse domain-name
+# style string, e.g. com.mycompany.MyDocSet.documentation.
 
 DOCSET_PUBLISHER_ID    = org.nsnam.ns3
 
@@ -1242,6 +1273,13 @@
 
 USE_MATHJAX            = NO
 
+# When MathJax is enabled you can set the default output format to be used for
+# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
+# SVG. The default value is HTML-CSS, which is slower, but has the best
+# compatibility.
+
+MATHJAX_FORMAT         = HTML-CSS
+
 # When MathJax is enabled you need to specify the location relative to the
 # HTML output directory using the MATHJAX_RELPATH option. The destination
 # directory should contain the MathJax.js script. For instance, if the mathjax
@@ -1252,7 +1290,7 @@
 # However, it is strongly recommended to install a local
 # copy of MathJax from http://www.mathjax.org before deployment.
 
-MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
 
 # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
 # names that should be enabled during MathJax rendering.
@@ -1270,15 +1308,55 @@
 SEARCHENGINE           = YES
 
 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
+# implemented using a web server instead of a web client using Javascript.
+# There are two flavours of web server based search depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools.
+# See the manual for details.
 
 SERVER_BASED_SEARCH    = NO
 
+# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain
+# the search results. Doxygen ships with an example indexer (doxyindexer) and
+# search engine (doxysearch.cgi) which are based on the open source search engine
+# library Xapian. See the manual for configuration details.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will returned the search results when EXTERNAL_SEARCH is enabled.
+# Doxygen ships with an example search engine (doxysearch) which is based on
+# the open source search engine library Xapian. See the manual for configuration
+# details.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
+# of to a relative location where the documentation can be found.
+# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
+
+EXTRA_SEARCH_MAPPINGS  =
+
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
@@ -1564,6 +1642,9 @@
 
 INCLUDE_PATH           =
 
+# Allow doxygen to find generated include files, such as ns3/core-config.h
+INCLUDE_PATH          += build
+
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
 # patterns (like *.h and *.hpp) to filter out the header-files in the
 # directories. If left blank, the patterns specified with FILE_PATTERNS will
@@ -1579,8 +1660,22 @@
 # undefined via #undef or recursively expanded use the := operator
 # instead of the = operator.
 
-PREDEFINED             = NS3_ASSERT_ENABLE \
-                         NS3_LOG_ENABLE
+# ns-3:
+#
+# We predefine NS3_ASSERT_ENABLE and NS3_LOG_ENABLE so doxygen sees
+# the working definitions.  (These are normally defined by waf
+# in ns3/core-config.h)
+#
+# Function like macros at file global scope typically need to be here,
+# since doxygen confuses invocations of these macros for function
+# definitions.
+
+PREDEFINED             = \
+                         NS3_ASSERT_ENABLE \
+                         NS3_LOG_ENABLE \
+                         NS_LOG_COMPONENT_DEFINE()=1 \
+                         NS_LOG_COMPONENT_DEFINE_MASK()=1 \
+			 NS_OBJECT_ENSURE_REGISTERED()=1 \
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
 # this tag can be used to specify a list of macro names that should be expanded.
diff -Naur ns-3.19/doc/doxygen.warnings.report.sh ns-3.20/doc/doxygen.warnings.report.sh
--- ns-3.19/doc/doxygen.warnings.report.sh	2014-06-17 10:34:00.291637796 -0700
+++ ns-3.20/doc/doxygen.warnings.report.sh	2014-06-17 10:33:13.639997922 -0700
@@ -136,14 +136,14 @@
     conf=$DIR/doxygen.conf
 
     sed -i.bak -E '/^EXTRACT_ALL |^HAVE_DOT |^WARNINGS /s/YES/no/' $conf
-    rm -f $conf.bak
 
     echo
     echo -n "Rebuilding doxygen docs with full errors..."
     (cd "$ROOT" && ./waf --doxygen >/dev/null 2>&1)
     status=$?
 
-    hg revert $conf
+    rm -f $conf
+    mv -f $conf.bak $conf
 
     if [ $status -eq 0 ]; then
 	echo "Done."
diff -Naur ns-3.19/doc/main.h ns-3.20/doc/main.h
--- ns-3.19/doc/main.h	2014-06-17 10:34:00.292637789 -0700
+++ ns-3.20/doc/main.h	2014-06-17 10:33:13.640997914 -0700
@@ -71,3 +71,28 @@
  * ns3 namespace.
  */
 
+// Macros defined by the build system.
+//
+// These have to be visible for doxygen to document them,
+// so we put them here in a file only seen by doxygen, not the compiler.
+/**
+ * \ingroup assert
+ *
+ * \def NS3_ASSERT_ENABLE
+ *
+ * Enable asserts at compile time.
+ *
+ * This is normally set by `./waf configure --build-profile=debug`.
+ */
+#define NS3_ASSERT_ENABLE
+
+/**
+ * \ingroup logging
+ *
+ * \def NS3_LOG_ENABLE
+ *
+ * Enable logging at compile time.
+ *
+ * This is normally set by `./waf configure --build-profile=debug`.
+ */
+#define NS3_LOG_ENABLE
diff -Naur ns-3.19/doc/manual/source/attributes.rst ns-3.20/doc/manual/source/attributes.rst
--- ns-3.19/doc/manual/source/attributes.rst	2014-06-17 10:34:00.296637758 -0700
+++ ns-3.20/doc/manual/source/attributes.rst	2014-06-17 10:33:13.644997883 -0700
@@ -741,6 +741,11 @@
     
       Simulator::Destroy ();
     
+Note the placement of these statements just prior to the 
+:cpp:func:`Simulator::Run ()` statement.  This output logs all of the
+values in place just prior to starting the simulation (i.e. after
+all of the configuration has taken place).
+
 After running, you can open the output-attributes.txt file and see:
 
 .. sourcecode:: text
@@ -808,15 +813,34 @@
     
 This file can be archived with your simulation script and output data.
 
-While it is possible to generate a sample config file and lightly edit it to
-change a couple of values, there are cases where this process will not work
-because the same value on the same object can appear multiple times in the same
-automatically-generated configuration file under different configuration paths.
-
-As such, the best way to use this class is to use it to generate an initial
-configuration file, extract from that configuration file only the strictly
-necessary elements, and move these minimal elements to a new configuration file
-which can then safely be edited and loaded in a subsequent simulation run. 
+Next, we discuss using this to configure simulations via an input
+configuration file.  There are a couple of key differences when
+compared to use for logging the final simulation configuration.  First, we
+need to place statements such as these at the beginning of the program,
+before simulation configuration statements are written (so the values
+are registered before being used in object construction).
+
+::
+
+      Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("input-defaults.xml"));
+      Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Load"));
+      Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+      ConfigStore inputConfig;
+      inputConfig.ConfigureDefaults ();
+
+Next, note that loading of input configuration data is limited to attribute
+default (i.e. not instance) values, and global values.  Attribute instance
+values are not supported because at this stage of the simulation, before
+any objects are constructed, there are no such object instances around.
+(Note, future enhancements to the config store may change this behavior).
+
+Second, while the output of config store state will list everything in
+the database, the input file need only contain the specific values to
+be overridden.  So, one way to use this class for input file configuration
+is to generate an initial configuration using the output (Save) method 
+described above, extract from that configuration file only the elements
+one wishes to change, and move these minimal elements to a new configuration 
+file which can then safely be edited and loaded in a subsequent simulation run. 
 
 When the ConfigStore object is instantiated, its attributes Filename, Mode, and
 FileFormat must be set, either via command-line or via program statements.  
@@ -824,9 +848,7 @@
 As a more complicated example, let's assume that we want to read in a
 configuration of defaults from an input file named "input-defaults.xml", and
 write out the resulting attributes to a separate file called
-"output-attributes.xml".  (Note-- to get this input xml file to begin with, it
-is sometimes helpful to run the program to generate an output xml file first,
-then hand-edit that file and re-input it for the next simulation run).::
+"output-attributes.xml".::
 
     #include "ns3/config-store-module.h"
     ...
diff -Naur ns-3.19/doc/manual/source/conf.py ns-3.20/doc/manual/source/conf.py
--- ns-3.19/doc/manual/source/conf.py	2014-06-17 10:34:00.297637750 -0700
+++ ns-3.20/doc/manual/source/conf.py	2014-06-17 10:33:13.645997876 -0700
@@ -41,16 +41,16 @@
 
 # General information about the project.
 project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2010, ns-3 project'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.19/doc/manual/source/object-model.rst ns-3.20/doc/manual/source/object-model.rst
--- ns-3.19/doc/manual/source/object-model.rst	2014-06-17 10:34:00.303637704 -0700
+++ ns-3.20/doc/manual/source/object-model.rst	2014-06-17 10:33:13.651997829 -0700
@@ -176,7 +176,7 @@
 binary-level compatibility of replaceable components is not supported and we
 have tried to simplify the syntax and impact on model developers.  
 
-Exmaples
+Examples
 ********
 
 Aggregation example
diff -Naur ns-3.19/doc/models/Makefile ns-3.20/doc/models/Makefile
--- ns-3.19/doc/models/Makefile	2014-06-17 10:34:00.310637650 -0700
+++ ns-3.20/doc/models/Makefile	2014-06-17 10:33:13.658997775 -0700
@@ -80,6 +80,7 @@
 	$(SRC)/flow-monitor/doc/flow-monitor.rst \
 	$(SRC)/wave/doc/wave.rst \
 	$(SRC)/sixlowpan/doc/sixlowpan.rst \
+	$(SRC)/lr-wpan/doc/lr-wpan.rst \
 
 # list all model library figure files that need to be copied to 
 # $SOURCETEMP/figures.  For each figure to be included in all
@@ -213,28 +214,29 @@
 	$(SRC)/stats/doc/gnuplot-example.png \
 	$(SRC)/stats/doc/gnuplot-helper-example.png \
 	$(SRC)/stats/doc/seventh-packet-byte-count.png \
-	$(SRC)/netanim/doc/figures/Dumbbell.png \
-	$(SRC)/netanim/doc/figures/Dumbbell.pdf \
 	$(SRC)/netanim/doc/figures/PacketStatistics.png \
 	$(SRC)/netanim/doc/figures/PacketStatistics.pdf \
-	$(SRC)/netanim/doc/figures/FastForward.png \
-	$(SRC)/netanim/doc/figures/FastForward.pdf \
-	$(SRC)/netanim/doc/figures/Wireless.png \
-	$(SRC)/netanim/doc/figures/Wireless.pdf \
-	$(SRC)/netanim/doc/figures/Precision.png \
-	$(SRC)/netanim/doc/figures/Precision.pdf \
-	$(SRC)/netanim/doc/figures/Persist.png \
-	$(SRC)/netanim/doc/figures/Persist.pdf \
-	$(SRC)/netanim/doc/figures/SimTime.png \
-	$(SRC)/netanim/doc/figures/SimTime.pdf \
+	$(SRC)/netanim/doc/figures/NetAnim_3_105.png \
+	$(SRC)/netanim/doc/figures/NetAnim_3_105.pdf \
 	$(SRC)/netanim/doc/figures/Trajectory.png \
 	$(SRC)/netanim/doc/figures/Trajectory.pdf \
-	$(SRC)/netanim/doc/figures/UpdateRateInterval.png \
-	$(SRC)/netanim/doc/figures/UpdateRateInterval.pdf \
-	$(SRC)/netanim/doc/figures/WithoutPrecision.png \
-	$(SRC)/netanim/doc/figures/WithoutPrecision.pdf \
-	$(SRC)/netanim/doc/figures/WithPrecision.png \
-	$(SRC)/netanim/doc/figures/WithPrecision.pdf \
+	$(SRC)/netanim/doc/figures/NodeCountersChart.png \
+	$(SRC)/netanim/doc/figures/NodeCountersChart.pdf \
+	$(SRC)/netanim/doc/figures/NodeCountersTable.png \
+	$(SRC)/netanim/doc/figures/NodeCountersTable.pdf \
+	$(SRC)/netanim/doc/figures/RoutingTables.png \
+	$(SRC)/netanim/doc/figures/RoutingTables.pdf \
+	$(SRC)/netanim/doc/figures/PacketTimeline.png \
+	$(SRC)/netanim/doc/figures/PacketTimeline.pdf \
+	$(SRC)/spectrum/doc/spectrum-channel-phy-interface.png \
+	$(SRC)/spectrum/doc/spectrum-channel-phy-interface.pdf \
+	$(SRC)/spectrum/doc/spectrum-analyzer-example.eps \
+	$(SRC)/lr-wpan/doc/lr-wpan-arch.dia \
+	$(SRC)/lr-wpan/doc/lr-wpan-data-example.dia \
+	$(SRC)/lr-wpan/doc/lr-wpan-primitives.dia \
+	$(SRC)/lr-wpan/doc/802-15-4-ber.eps \
+	$(SRC)/lr-wpan/doc/802-15-4-per-sens.eps \
+	$(SRC)/lr-wpan/doc/802-15-4-psr-distance.eps
 
 # specify figures from which .png and .pdf figures need to be
 # generated (all dia and eps figures)
@@ -303,6 +305,13 @@
 	$(FIGURES)/lte-epc-x2-entity-saps.eps \
 	$(FIGURES)/lte-strongest-cell-handover-algorithm.eps \
 	$(FIGURES)/auvmobility-classes.eps \
+	$(FIGURES)/spectrum-analyzer-example.eps \
+	$(FIGURES)/lr-wpan-primitives.eps \
+	$(FIGURES)/lr-wpan-data-example.eps \
+	$(FIGURES)/lr-wpan-arch.eps \
+	$(FIGURES)/802-15-4-ber.eps \
+	$(FIGURES)/802-15-4-per-sens.eps \
+	$(FIGURES)/802-15-4-psr-distance.eps 
 
 # rescale pdf figures as necessary
 $(FIGURES)/testbed.pdf_width = 5in
@@ -339,6 +348,9 @@
 $(FIGURES)/mac-random-access-noncontention.pdf_width = 15cm
 $(FIGURES)/helpers.pdf_width = 8cm
 $(FIGURES)/auvmobility-classes.pdf_width = 10cm
+$(FIGURES)/spectrum-analyzer-example.pdf_width = 15cm
+$(FIGURES)/lr-wpan-primitives.pdf_width = 3in
+$(FIGURES)/lr-wpan-arch.pdf_width = 2in
 
 IMAGES_PNG = ${IMAGES_EPS:.eps=.png}
 IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
@@ -389,11 +401,10 @@
 	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
 
 copy-sources:  $(SOURCES)
-	@rm -rf $(SOURCETEMP)
 	@mkdir -p $(SOURCETEMP) 
 	@mkdir -p $(FIGURES) 
-	@cp -r $(SOURCES) $(SOURCETEMP)
-	@cp -r $(SOURCEFIGS) $(FIGURES)
+	@cp -r -p $(SOURCES) $(SOURCETEMP)
+	@cp -r -p $(SOURCEFIGS) $(FIGURES)
 
 clean:
 	-rm -rf $(BUILDDIR)/*
diff -Naur ns-3.19/doc/models/source/conf.py ns-3.20/doc/models/source/conf.py
--- ns-3.19/doc/models/source/conf.py	2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/doc/models/source/conf.py	2014-06-17 10:33:13.660997760 -0700
@@ -41,16 +41,16 @@
 
 # General information about the project.
 project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2011, ns-3 project'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.19/doc/models/source/index.rst ns-3.20/doc/models/source/index.rst
--- ns-3.19/doc/models/source/index.rst	2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/doc/models/source/index.rst	2014-06-17 10:33:13.661997752 -0700
@@ -33,6 +33,7 @@
    energy
    flow-monitor
    internet-models
+   lr-wpan
    lte
    mesh
    distributed
diff -Naur ns-3.19/doc/modules ns-3.20/doc/modules
--- ns-3.19/doc/modules	2014-06-17 10:34:00.314637619 -0700
+++ ns-3.20/doc/modules	2014-06-17 10:33:13.662997744 -0700
@@ -1,33 +1,42 @@
 /**
  * @anchor modules_anchor
  *
- * @defgroup constructs Introspected Lists
- * \brief These are lists of useful items found by examining the type system.
- *
  * @defgroup constants Constants
  * @brief Constants you can change
  *
  * @defgroup utils Utils
  * @brief The utils directory is for various programs and scripts related 
  * to code coverage, test suites, style checking, and benchmarking.
- *
+ */
+/**
  * @defgroup core Core
  * \brief The "core" module contains:
- *    - a time management class to hold a time and convert between various time units: ns3::Time 
- *    - a scheduler base class used to implement new simulation event schedulers:       
+ *    - a time management class to hold a time and convert between various
+ *      time units: ns3::Time 
+ *    - a scheduler base class used to implement new simulation event
+ *      schedulers:       
  *      ns3::Scheduler and ns3::SchedulerFactory 
- *    - a simulator class used to create, schedule and cancel events: ns3::Simulator
+ *    - a simulator class used to create, schedule and cancel events:
+ *      ns3::Simulator
  *    - a Functor class: ns3::Callback  
- *    - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs 
- *    - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
- *    - debugging facilities: \ref logging, \ref assert
+ *    - an os-independent interface to get access to the elapsed wall clock
+ *      time: ns3::SystemWallClockMs 
+ *    - a class to register regression tests with the test manager: ns3::Test
+ *      and ns3::TestManager
+ *    - debugging facilities: \ref debugging
  *    - \ref randomvariable
- *    - a base class for objects which need to support per-instance "attributes" and
- *      trace sources: ns3::ObjectBase
+ *    - a base class for objects which need to support per-instance
+ *      "attributes" and trace sources: ns3::ObjectBase
  *    - a base class for objects which need to support reference counting
  *      and dynamic object aggregation: ns3::Object
- *    - a smart-pointer class ns3::Ptr designed to work together with ns3::Object
- *    - a configuration class used to set and control all attributes and trace sources
- *      in a simulation: ns3::Config.
+ *    - a smart-pointer class ns3::Ptr designed to work together with
+ *      ns3::Object
+ *    - a configuration class used to set and control all attributes and
+ *      trace sources in a simulation: ns3::Config.
+ */
+/**
+ * @ingroup core
+ * @defgroup debugging Debugging tools
  *
+ * @brief Assertions, breakpoints, logging, and abnormal program termination
  */
diff -Naur ns-3.19/doc/ns3_html_theme/get_version.sh ns-3.20/doc/ns3_html_theme/get_version.sh
--- ns-3.19/doc/ns3_html_theme/get_version.sh	2014-06-17 10:34:00.316637604 -0700
+++ ns-3.20/doc/ns3_html_theme/get_version.sh	2014-06-17 10:33:13.664997729 -0700
@@ -71,6 +71,7 @@
 
 # script arguments
 say
+say using doxygen: $(which doxygen) $(doxygen --version)
 public=0
 nsnam=0
 daily=0
diff -Naur ns-3.19/doc/ns3_html_theme/ns3_doxy_footer.html ns-3.20/doc/ns3_html_theme/ns3_doxy_footer.html
--- ns-3.19/doc/ns3_html_theme/ns3_doxy_footer.html	2014-06-17 10:34:00.317637596 -0700
+++ ns-3.20/doc/ns3_html_theme/ns3_doxy_footer.html	2014-06-17 10:33:13.665997721 -0700
@@ -1,3 +1,7 @@
+<!-- ns-3 doxygen header, based on
+     HTML header for doxygen 1.8.3.1
+     Verified compatible with 1.8.6
+-->
 <!-- start footer part -->
 <!--BEGIN GENERATE_TREEVIEW-->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
diff -Naur ns-3.19/doc/ns3_html_theme/ns3_doxy_header.html ns-3.20/doc/ns3_html_theme/ns3_doxy_header.html
--- ns-3.19/doc/ns3_html_theme/ns3_doxy_header.html	2014-06-17 10:34:00.317637596 -0700
+++ ns-3.20/doc/ns3_html_theme/ns3_doxy_header.html	2014-06-17 10:33:13.666997713 -0700
@@ -1,18 +1,23 @@
+<!-- ns-3 doxygen header, based on
+     HTML header for doxygen 1.8.3.1
+     Verified compatible with 1.8.6
+-->
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"></meta>
-    <meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
-    <!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-    <!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-    <link href="$relpath$tabs.css" rel="stylesheet" type="text/css"></link>
-    <script type="text/javascript" src="$relpath$jquery.js"></script>
-    <script type="text/javascript" src="$relpath$dynsections.js"></script>
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
 $treeview
 $search
 $mathjax
-    <link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"></link>
-    <link href="$relpath$ns3_stylesheet.css" rel="stylesheet" type="text/css"></link>
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
     <link href="$relpath$favicon.ico" rel="shortcut icon" type="image/ico"></link>
     <script type="text/javascript" src="$relpath$drop-down-menu.js"></script>
     <script type="text/javascript" src="$relpath$ns3_version.js"></script>
@@ -99,7 +104,7 @@
 	    </tr>
 	  </tbody>
 	</table>
-	<script  type="text/javascript">ns3_write_links()</script>
+	<script  type="text/javascript">ns3_write_links();</script>
       </div>
 <!--END TITLEAREA-->
 <!-- end header part -->
diff -Naur ns-3.19/doc/ns3_html_theme/static/doxygen.css ns-3.20/doc/ns3_html_theme/static/doxygen.css
--- ns-3.19/doc/ns3_html_theme/static/doxygen.css	2014-06-17 10:34:00.318637588 -0700
+++ ns-3.20/doc/ns3_html_theme/static/doxygen.css	1969-12-31 16:00:00.000000000 -0800
@@ -1,1156 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
-	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
-	font-size: 13px;
-	line-height: 1.3;
-}
-
-/* @group Heading Levels */
-
-h1 {
-	font-size: 150%;
-}
-
-.title {
-	font-size: 150%;
-	font-weight: bold;
-	margin: 10px 2px;
-}
-
-h2 {
-	font-size: 120%;
-}
-
-h3 {
-	font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
-	-webkit-transition: text-shadow 0.5s linear;
-	-moz-transition: text-shadow 0.5s linear;
-	-ms-transition: text-shadow 0.5s linear;
-	-o-transition: text-shadow 0.5s linear;
-	transition: text-shadow 0.5s linear;
-	margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
-	text-shadow: 0 0 15px cyan;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
-	margin-top: 2px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: #EFEFEF;
-	border: 1px solid #B5B5B5;
-	text-align: center;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #585858;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #686868;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #B0B0B0;
-	color: #ffffff;
-	border: 1px double #9F9F9F;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited {
-	color: #4665A2; 
-}
-
-a.codeRef, a.codeRef:visited {
-	color: #4665A2; 
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-pre.fragment {
-        border: 1px solid #C4CFE5;
-        background-color: #FBFCFD;
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
-        overflow: auto;
-        word-wrap: break-word;
-        font-size:  9pt;
-        line-height: 125%;
-        font-family: monospace, fixed;
-        font-size: 105%;
-}
-
-div.fragment {
-        padding: 4px;
-        margin: 4px;
-	background-color: #FCFCFC;
-	border: 1px solid #D0D0D0;
-}
-
-div.line {
-	font-family: monospace, fixed;
-        font-size: 13px;
-	min-height: 13px;
-	line-height: 1.0;
-	text-wrap: unrestricted;
-	white-space: -moz-pre-wrap; /* Moz */
-	white-space: -pre-wrap;     /* Opera 4-6 */
-	white-space: -o-pre-wrap;   /* Opera 7 */
-	white-space: pre-wrap;      /* CSS3  */
-	word-wrap: break-word;      /* IE 5.5+ */
-	text-indent: -53px;
-	padding-left: 53px;
-	padding-bottom: 0px;
-	margin: 0px;
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-div.line.glow {
-	background-color: cyan;
-	box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
-	padding-right: 4px;
-	text-align: right;
-	border-right: 2px solid #0F0;
-	background-color: #E8E8E8;
-        white-space: pre;
-}
-span.lineno a {
-	background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
-	background-color: #C8C8C8;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	box-shadow: 2px 2px 3px #999;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background-color: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 12px;
-	margin-right: 8px;
-}
-
-td.indexkey {
-	background-color: #EFEFEF;
-	font-weight: bold;
-	border: 1px solid #D0D0D0;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-        white-space: nowrap;
-        vertical-align: top;
-}
-
-td.indexvalue {
-	background-color: #EFEFEF;
-	border: 1px solid #D0D0D0;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #F1F1F1;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-blockquote {
-        background-color: #F8F8F8;
-        border-left: 2px solid #B0B0B0;
-        margin: 0 24px 0 4px;
-        padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #B5B5B5;
-}
-
-th.dirtab {
-	background: #EFEFEF;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid #6E6E6E;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.memberdecls td {
-	-webkit-transition-property: background-color, box-shadow;
-	-webkit-transition-duration: 0.5s;
-	-moz-transition-property: background-color, box-shadow;
-	-moz-transition-duration: 0.5s;
-	-ms-transition-property: background-color, box-shadow;
-	-ms-transition-duration: 0.5s;
-	-o-transition-property: background-color, box-shadow;
-	-o-transition-duration: 0.5s;
-	transition-property: background-color, box-shadow;
-	transition-duration: 0.5s;
-}
-
-.memberdecls td.glow {
-	background-color: cyan;
-	box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #FAFAFA;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
-	border-top: 1px solid #D0D0D0;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memItemRight {
-	width: 100%;
-}
-
-.memTemplParams {
-	color: #686868;
-        white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #686868;
-	font-weight: normal;
-	margin-left: 9px;
-}
-
-.memnav {
-	background-color: #EFEFEF;
-	border: 1px solid #B5B5B5;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.mempage {
-	width: 100%;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-	margin-right: 5px;
-        -webkit-transition: box-shadow 0.5s linear;
-        -moz-transition: box-shadow 0.5s linear;
-        -ms-transition: box-shadow 0.5s linear;
-        -o-transition: box-shadow 0.5s linear;
-        transition: box-shadow 0.5s linear;
-        display: table !important;
-        width: 100%;
-}
-
-.memitem.glow {
-         box-shadow: 0 0 15px cyan;
-}
-
-.memname {
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memname td {
-	vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
-        border-top: 1px solid #B9B9B9;
-        border-left: 1px solid #B9B9B9;
-        border-right: 1px solid #B9B9B9;
-        padding: 6px 0px 6px 0px;
-        color: #323232;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E8E8E8;
-        /* opera specific markup */
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 4px;
-        -moz-border-radius-topleft: 4px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 4px;
-        -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
-        border-bottom: 1px solid #B9B9B9;      
-        border-left: 1px solid #B9B9B9;      
-        border-right: 1px solid #B9B9B9; 
-        padding: 6px 10px 2px 10px;
-        background-color: #FCFCFC;
-        border-top-width: 0;
-        background-image:url('nav_g.png');
-        background-repeat:repeat-x;
-        background-color: #FFFFFF;
-        /* opera specific markup */
-        border-bottom-left-radius: 4px;
-        border-bottom-right-radius: 4px;
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 4px;
-        -moz-border-radius-bottomright: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 4px;
-        -webkit-border-bottom-right-radius: 4px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
-        padding: 5px;
-}
-
-dl.reflist dd {
-        margin: 0px 0px 10px 0px;
-        padding: 5px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-.paramname code {
-        line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
-        margin-left: 0px;
-        padding-left: 0px;
-}       
-
-.params .paramname, .retval .paramname {
-        font-weight: bold;
-        vertical-align: top;
-}
-        
-.params .paramtype {
-        font-style: italic;
-        vertical-align: top;
-}       
-        
-.params .paramdir {
-        font-family: "courier new",courier,monospace;
-        vertical-align: top;
-}
-
-table.mlabels {
-	border-spacing: 0px;
-}
-
-td.mlabels-left {
-	width: 100%;
-	padding: 0px;
-}
-
-td.mlabels-right {
-	vertical-align: bottom;
-	padding: 0px;
-	white-space: nowrap;
-}
-
-span.mlabels {
-        margin-left: 8px;
-}
-
-span.mlabel {
-        background-color: #8F8F8F;
-        border-top:1px solid #787878;
-        border-left:1px solid #787878;
-        border-right:1px solid #D0D0D0;
-        border-bottom:1px solid #D0D0D0;
-	text-shadow: none;
-        color: white;
-        margin-right: 4px;
-        padding: 2px 3px;
-        border-radius: 3px;
-        font-size: 7pt;
-	white-space: nowrap;
-}
-
-
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
-        margin: 10px 0px;
-        border-top: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        width: 100%;
-}
-
-.directory table {
-        border-collapse:collapse;
-}
-
-.directory td {
-        margin: 0px;
-        padding: 0px;
-	vertical-align: top;
-}
-
-.directory td.entry {
-        white-space: nowrap;
-        padding-right: 6px;
-}
-
-.directory td.entry a {
-        outline:none;
-}
-
-.directory td.entry a img {
-        border: none;
-}
-
-.directory td.desc {
-        width: 100%;
-        padding-left: 6px;
-	padding-right: 6px;
-	border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
-	padding-left: 6px;
-	background-color: #F8F8F8;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-.directory .levels {
-        white-space: nowrap;
-        width: 100%;
-        text-align: right;
-        font-size: 9pt;
-}
-
-.directory .levels span {
-        cursor: pointer;
-        padding-left: 2px;
-        padding-right: 2px;
-	color: #585858;
-}
-
-div.dynheader {
-        margin-top: 8px;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-address {
-	font-style: normal;
-	color: #3A3A3A;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-        margin-top: 4px;
-        margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid #3F3F3F;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: #4F4F4F;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-}
-
-table.fieldtable {
-        width: 100%;
-        margin-bottom: 10px;
-        border: 1px solid #B9B9B9;
-        border-spacing: 0px;
-        -moz-border-radius: 4px;
-        -webkit-border-radius: 4px;
-        border-radius: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-        padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-        white-space: nowrap;
-        border-right: 1px solid #B9B9B9;
-        border-bottom: 1px solid #B9B9B9;
-        vertical-align: top;
-}
-
-.fieldtable td.fielddoc {
-        border-bottom: 1px solid #B9B9B9;
-        width: 100%;
-}
-
-.fieldtable tr:last-child td {
-        border-bottom: none;
-}
-
-.fieldtable th {
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E8E8E8;
-        font-size: 90%;
-        color: #323232;
-        padding-bottom: 4px;
-        padding-top: 5px;
-        text-align:left;
-        -moz-border-radius-topleft: 4px;
-        -moz-border-radius-topright: 4px;
-        -webkit-border-top-left-radius: 4px;
-        -webkit-border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        border-top-right-radius: 4px;
-        border-bottom: 1px solid #B9B9B9;
-}
-
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	height:30px;
-	line-height:30px;
-	color:#A2A2A2;
-	border:solid 1px #CECECE;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right:15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:#4D4D4D;
-}
-
-.navpath li.navelem a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-}
-
-.navpath li.navelem a:hover
-{
-	color:#888888;
-}
-
-.navpath li.footer
-{
-        list-style-type:none;
-        float:right;
-        padding-left:10px;
-        padding-right:15px;
-        background-image:none;
-        background-repeat:no-repeat;
-        background-position:right;
-        color:#4D4D4D;
-        font-size: 8pt;
-}
-
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.ingroups
-{
-	font-size: 8pt;
-	width: 50%;
-	text-align: left;
-}
-
-div.ingroups a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: #FAFAFA;
-	margin:  0px;
-	border-bottom: 1px solid #D0D0D0;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 7px;
-}
-
-dl
-{
-        padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
-	margin-left: 0px;
-	padding-left: 0px;
-}
-
-dl.note
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00D000;
-}
-
-dl.deprecated
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #505050;
-}
-
-dl.todo
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00C0E0;
-}
-
-dl.test
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #3030E0;
-}
-
-dl.bug
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #C08050;
-}
-
-dl.section dd {
-	margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
-	text-align: center;
-	vertical-align: bottom;
-	border-collapse: separate;
-}
- 
-#projectlogo img
-{ 
-	border: 0px none;
-}
- 
-#projectname
-{
-	font: 300% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 2px 0px;
-}
-    
-#projectbrief
-{
-	font: 120% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#projectnumber
-{
-	font: 50% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#titlearea
-{
-	padding: 0px;
-	margin: 0px;
-	width: 100%;
-	border-bottom: 1px solid #787878;
-}
-
-.image
-{
-        text-align: center;
-}
-
-.dotgraph
-{
-        text-align: center;
-}
-
-.mscgraph
-{
-        text-align: center;
-}
-
-.caption
-{
-	font-weight: bold;
-}
-
-div.zoom
-{
-	border: 1px solid #A6A6A6;
-}
-
-dl.citelist {
-        margin-bottom:50px;
-}
-
-dl.citelist dt {
-        color:#484848;
-        float:left;
-        font-weight:bold;
-        margin-right:10px;
-        padding:5px;
-}
-
-dl.citelist dd {
-        margin:2px 0;
-        padding:5px 0;
-}
-
-div.toc {
-        padding: 14px 25px;
-        background-color: #F6F6F6;
-        border: 1px solid #DFDFDF;
-        border-radius: 7px 7px 7px 7px;
-        float: right;
-        height: auto;
-        margin: 0 20px 10px 10px;
-        width: 200px;
-}
-
-div.toc li {
-        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
-        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
-        margin-top: 5px;
-        padding-left: 10px;
-        padding-top: 2px;
-}
-
-div.toc h3 {
-        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
-	color: #686868;
-        border-bottom: 0 none;
-        margin: 0;
-}
-
-div.toc ul {
-        list-style: none outside none;
-        border: medium none;
-        padding: 0px;
-}       
-
-div.toc li.level1 {
-        margin-left: 0px;
-}
-
-div.toc li.level2 {
-        margin-left: 15px;
-}
-
-div.toc li.level3 {
-        margin-left: 30px;
-}
-
-div.toc li.level4 {
-        margin-left: 45px;
-}
-
-.inherit_header {
-        font-weight: bold;
-        color: gray;
-        cursor: pointer;
-	-webkit-touch-callout: none;
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-}
-
-.inherit_header td {
-        padding: 6px 0px 2px 5px;
-}
-
-.inherit {
-        display: none;
-}
-
-tr.heading h2 {
-        margin-top: 12px;
-        margin-bottom: 4px;
-}
-
-@media print
-{
-  #top { display: none; }
-  #side-nav { display: none; }
-  #nav-path { display: none; }
-  body { overflow:visible; }
-  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-  .summary { display: none; }
-  .memitem { page-break-inside: avoid; }
-  #doc-content
-  {
-    margin-left:0 !important;
-    height:auto !important;
-    width:auto !important;
-    overflow:inherit;
-    display:inline;
-  }
-}
-
diff -Naur ns-3.19/doc/ns3_html_theme/static/ns3_stylesheet.css ns-3.20/doc/ns3_html_theme/static/ns3_stylesheet.css
--- ns-3.19/doc/ns3_html_theme/static/ns3_stylesheet.css	2014-06-17 10:34:00.321637565 -0700
+++ ns-3.20/doc/ns3_html_theme/static/ns3_stylesheet.css	2014-06-17 10:33:13.669997690 -0700
@@ -190,7 +190,7 @@
 
 #ns3-menu .menu div {
   background: #94A901;
-  background-size: 100%; 100%
+  background-size: 100%;
   color:#ffffff;
   position: absolute;
   visibility: hidden;
diff -Naur ns-3.19/doc/release_steps.txt ns-3.20/doc/release_steps.txt
--- ns-3.19/doc/release_steps.txt	2014-06-17 10:34:00.323637549 -0700
+++ ns-3.20/doc/release_steps.txt	2014-06-17 10:33:13.671997675 -0700
@@ -144,6 +144,9 @@
 
 2. Check if these new files are available on the website
 
+3. In ns-3-dev, edit the tutorial "Getting Started" page to 
+   update the release version numbers.
+
 preparing the Wordpress-based main website
 ------------------------------------------
 
diff -Naur ns-3.19/doc/tutorial/source/conf.py ns-3.20/doc/tutorial/source/conf.py
--- ns-3.19/doc/tutorial/source/conf.py	2014-06-17 10:34:00.344637387 -0700
+++ ns-3.20/doc/tutorial/source/conf.py	2014-06-17 10:33:13.691997521 -0700
@@ -41,16 +41,16 @@
 
 # General information about the project.
 project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2010, ns-3 project'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.19/doc/tutorial/source/getting-started.rst ns-3.20/doc/tutorial/source/getting-started.rst
--- ns-3.19/doc/tutorial/source/getting-started.rst	2014-06-17 10:34:00.345637379 -0700
+++ ns-3.20/doc/tutorial/source/getting-started.rst	2014-06-17 10:33:13.693997505 -0700
@@ -33,8 +33,8 @@
 copies of |ns3|.  We'll walk through both examples since the tools
 involved are slightly different.
 
-Downloading ns-3
-****************
+Downloading |ns3|
+*****************
 
 The |ns3| system as a whole is a fairly complex system and has a
 number of dependencies on other components.  Along with the systems you will
@@ -72,8 +72,8 @@
 downloading and building of various subsystems of |ns3| for you.  We 
 recommend that you begin your |ns3| work in this environment.
 
-Downloading ns-3 Using a Tarball
-++++++++++++++++++++++++++++++++
+Downloading |ns3| Using a Tarball
++++++++++++++++++++++++++++++++++
 
 A tarball is a particular format of software archive where multiple
 files are bundled together and the archive possibly compressed.
@@ -85,27 +85,24 @@
 directory called ``workspace``. 
 If you adopt the ``workspace`` directory approach, you can 
 get a copy of a release by typing the following into your Linux shell 
-(substitute the appropriate version numbers, of course):
-
-::
+(substitute the appropriate version numbers, of course)::
 
   $ cd
   $ mkdir workspace
   $ cd workspace
-  $ wget http://www.nsnam.org/releases/ns-allinone-3.17.tar.bz2
-  $ tar xjf ns-allinone-3.17.tar.bz2
+  $ wget http://www.nsnam.org/releases/ns-allinone-3.20.tar.bz2
+  $ tar xjf ns-allinone-3.20.tar.bz2
 
-If you change into the directory ``ns-allinone-3.17`` you should see a
-number of files:
+If you change into the directory ``ns-allinone-3.20`` you should see a
+number of files::
 
-::
-
-  bake      constants.py   ns-3.17               README
+  $ ls
+  bake      constants.py   ns-3.20               README
   build.py  netanim-3.103  pybindgen-0.16.0.825  util.py
 
 You are now ready to build the |ns3| distribution.
 
-Downloading ns-3 Using Bake
+Downloading |ns3| Using Bake
 ++++++++++++++++++++++++++++
 
 Bake is a tool for distributed integration and building, 
@@ -119,9 +116,7 @@
 Any directory name will do, but we'll assume that ``workspace`` is used
 herein (note:  ``repos`` may also be used in some documentation as
 an example directory name).  You can get a copy of ``bake`` by typing the 
-following into your Linux shell (assuming you have installed Mercurial):
-
-::
+following into your Linux shell (assuming you have installed Mercurial)::
 
   $ cd
   $ mkdir workspace
@@ -133,6 +128,7 @@
 
 ::
 
+  ...
   destination directory: bake
   requesting all changes
   adding changesets
@@ -143,10 +139,9 @@
   45 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 After the clone command completes, you should have a directory called 
-``bake``, the contents of which should look something like the following:
-
-::
+``bake``, the contents of which should look something like the following::
 
+  $ ls
   bake                  bakeconf.xml  doc       generate-binary.py  TODO
   bake.py               examples      test
 
@@ -157,10 +152,10 @@
 
 There are a few configuration targets available:
 
-1.  ``ns-3.17``:  the module corresponding to the release; it will download
+1.  ``ns-3.20``:  the module corresponding to the release; it will download
     components similar to the release tarball.
 2.  ``ns-3-dev``:  a similar module but using the development code tree
-3.  ``ns-allinone-3.17``:  the module that includes other optional features
+3.  ``ns-allinone-3.20``:  the module that includes other optional features
     such as click routing, openflow for |ns3|, and the Network Simulation
     Cradle
 4.  ``ns-3-allinone``:  similar to the released version of the allinone
@@ -178,7 +173,7 @@
 `"ns-3 Releases"
 <http://www.nsnam.org/releases>`_
 web page and clicking on the latest release link.  We'll proceed in
-this tutorial example with ``ns-3.17``.
+this tutorial example with ``ns-3.20``.
 
 We are now going to use the bake tool to pull down the various pieces of 
 |ns3| you will be using.  First, we'll say a word about running bake.
@@ -187,9 +182,7 @@
 and installing libraries into a build directory.  bake can be run
 by referencing the binary, but if one chooses to run bake from
 outside of the directory it was downloaded into, it is advisable
-to put bake into your path, such as follows (Linux bash shell example):
-
-::
+to put bake into your path, such as follows (Linux bash shell example)::
 
   $ export BAKE_HOME=`pwd`/bake
   $ export PATH=$PATH:$BAKE_HOME
@@ -199,16 +192,12 @@
 complete this tutorial, so we'll call bake directly by specifying the path 
 to it in our shell commands.
 
-Step into the workspace directory and type the following into your shell:
-
-::
+Step into the workspace directory and type the following into your shell::
 
-  $ ./bake.py configure -e ns-3.17
+  $ ./bake.py configure -e ns-3.20
 
 Next, we'l ask bake to check whether we have enough tools to download
-various components.  Type:
-
-::
+various components.  Type::
 
   $ ./bake.py check
 
@@ -240,15 +229,11 @@
 are our principal concerns at this point, since they allow us to fetch
 the code.  Please install missing tools at this stage if you are able to.
 
-Next, try to download the software:
+Next, try to download the software::
 
-::
+  $ ./bake.py download
 
-  ./bake.py download
-
-should yield something like:
-
-::
+should yield something like::
 
    >> Searching for system dependency pygoocanvas - OK
    >> Searching for system dependency python-dev - OK
@@ -257,22 +242,21 @@
    >> Searching for system dependency g++ - OK
    >> Searching for system dependency qt4 - OK
    >> Downloading netanim-3.103 - OK
-   >> Downloading ns-3.17 - OK    
+   >> Downloading ns-3.20 - OK    
 
 The above suggests that three sources have been downloaded.  Check the
-``source`` directory now and type ``ls``; one should see:
+``source`` directory now and type ``ls``; one should see::
 
-::
-
-  netanim-3.103  ns-3.17  pybindgen-0.16.0.825
+  $ ls
+  netanim-3.103  ns-3.20  pybindgen-0.16.0.825
 
 You are now ready to build the |ns3| distribution.
 
-Building ns-3
-*************
+Building |ns3|
+**************
 
-Building with build.py
-++++++++++++++++++++++
+Building with ``build.py``
+++++++++++++++++++++++++++
 When working from a released tarball, the first time you build the 
 |ns3| project you can build using a convenience program found in the
 ``allinone`` directory.  This program is called ``build.py``.  This 
@@ -283,10 +267,8 @@
 
 If you downloaded
 using a tarball you should have a directory called something like 
-``ns-allinone-3.17`` under your ``~/workspace`` directory.  
-Type the following:
-
-::
+``ns-allinone-3.20`` under your ``~/workspace`` directory.  
+Type the following::
 
   $ ./build.py --enable-examples --enable-tests
 
@@ -299,11 +281,9 @@
 
 You will see lots of typical compiler output messages displayed as the build
 script builds the various pieces you downloaded.  Eventually you should see the
-following magic words:
-
-::
+following magic words::
 
-   Waf: Leaving directory `/path/to/workspace/ns-allinone-3.17/ns-3.17/build'
+   Waf: Leaving directory `/path/to/workspace/ns-allinone-3.20/ns-3.20/build'
    'build' finished successfully (6m25.032s)
   
    Modules built:
@@ -325,17 +305,15 @@
    brite                     click                     openflow                 
    visualizer               
 
-   Leaving directory `./ns-3.17'
-
-Regarding the portion about modules not built:
+   Leaving directory `./ns-3.20'
 
-::
+Regarding the portion about modules not built::
 
   Modules not built (see ns-3 tutorial for explanation):
   brite                     click                     openflow                 
   visualizer               
 
-This just means that some ns-3 modules that have dependencies on
+This just means that some |ns3| modules that have dependencies on
 outside libraries may not have been built, or that the configuration
 specifically asked not to build them.  It does not mean that the 
 simulator did not build successfully or that it will provide wrong 
@@ -351,20 +329,16 @@
 
   $ ./bake.py build
 
-and you should see something like:
-
-:: 
+and you should see something like::
 
   >> Building pybindgen-0.16.0.825 - OK
   >> Building netanim-3.103 - OK
-  >> Building ns-3.17 - OK
+  >> Building ns-3.20 - OK
 
 *Hint:  you can also perform both steps, download and build by calling 'bake.py deploy'.*
 
 If there happens to be a failure, please have a look at what the following
-command tells you; it may give a hint as to a missing dependency:
-
-::
+command tells you; it may give a hint as to a missing dependency::
 
   $ ./bake.py show
 
@@ -390,83 +364,96 @@
 your project to build the debug version.  Let's tell the project to 
 make an optimized build.  To explain to Waf that it should do optimized
 builds that include the examples and tests, you will need to execute the 
-following commands,
-
-::
+following commands::
 
   $ ./waf clean
-  $ ./waf -d optimized --enable-examples --enable-tests configure
+  $ ./waf --build-profile=optimized --enable-examples --enable-tests configure
 
 This runs Waf out of the local directory (which is provided as a convenience
 for you).  The first command to clean out the previous build is not 
-typically strictly necessary but is good practice; it will remove the
+typically strictly necessary but is good practice (but see `Build Profiles`_,
+below); it will remove the
 previously built libraries and object files found in directory ``build/``. 
 When the project is reconfigured and the build system checks for various 
 dependencies, you should see
-output that looks similar to the following,
-
-::
+output that looks similar to the following::
 
-  Checking for program g++                 : ok /usr/bin/g++
-  Checking for program cpp                 : ok /usr/bin/cpp
-  Checking for program ar                  : ok /usr/bin/ar
-  Checking for program ranlib              : ok /usr/bin/ranlib
-  Checking for g++                         : ok
-  Checking for program pkg-config          : ok /usr/bin/pkg-config
-  Checking for -Wno-error=deprecated-declarations support : yes
-  Checking for -Wl,--soname=foo support                   : yes
-  Checking for header stdlib.h                            : ok
-  Checking for header signal.h                            : ok
-  Checking for header pthread.h                           : ok
-  Checking for high precision time implementation         : 128-bit integer
-  Checking for header stdint.h                            : ok
-  Checking for header inttypes.h                          : ok
-  Checking for header sys/inttypes.h                      : not found
-  Checking for library rt                                 : ok
-  Checking for header netpacket/packet.h                  : ok
-  Checking for pkg-config flags for GSL                   : ok
-  Checking for header linux/if_tun.h                      : ok
-  Checking for pkg-config flags for GTK_CONFIG_STORE      : ok
-  Checking for pkg-config flags for LIBXML2               : ok
-  Checking for library sqlite3                            : ok
-  Checking for NSC location                               : ok ../nsc (guessed)
-  Checking for library dl                                 : ok
-  Checking for NSC supported architecture x86_64          : ok
-  Checking for program python                             : ok /usr/bin/python
-  Checking for Python version >= 2.3                      : ok 2.5.2
-  Checking for library python2.5                          : ok
-  Checking for program python2.5-config                   : ok /usr/bin/python2.5-config
-  Checking for header Python.h                            : ok
-  Checking for -fvisibility=hidden support                : yes
-  Checking for pybindgen location                         : ok ../pybindgen (guessed)
-  Checking for Python module pybindgen                    : ok
-  Checking for pybindgen version                          : ok 0.10.0.640
-  Checking for Python module pygccxml                     : ok
-  Checking for pygccxml version                           : ok 0.9.5
-  Checking for program gccxml                             : ok /usr/local/bin/gccxml
-  Checking for gccxml version                             : ok 0.9.0
-  Checking for program sudo                               : ok /usr/bin/sudo
-  Checking for program hg                                 : ok /usr/bin/hg
-  Checking for program valgrind                           : ok /usr/bin/valgrind
+  Setting top to                           : .
+  Setting out to                           : build 
+  Checking for 'gcc' (c compiler)          : /usr/bin/gcc 
+  Checking for cc version                  : 4.2.1 
+  Checking for 'g++' (c++ compiler)        : /usr/bin/g++ 
+  Checking boost includes                  : 1_46_1 
+  Checking boost libs                      : ok 
+  Checking for boost linkage               : ok 
+  Checking for click location              : not found 
+  Checking for program pkg-config          : /sw/bin/pkg-config 
+  Checking for 'gtk+-2.0' >= 2.12          : yes 
+  Checking for 'libxml-2.0' >= 2.7         : yes 
+  Checking for type uint128_t              : not found 
+  Checking for type __uint128_t            : yes 
+  Checking high precision implementation   : 128-bit integer (default) 
+  Checking for header stdint.h             : yes 
+  Checking for header inttypes.h           : yes 
+  Checking for header sys/inttypes.h       : not found 
+  Checking for header sys/types.h          : yes 
+  Checking for header sys/stat.h           : yes 
+  Checking for header dirent.h             : yes 
+  Checking for header stdlib.h             : yes 
+  Checking for header signal.h             : yes 
+  Checking for header pthread.h            : yes 
+  Checking for header stdint.h             : yes 
+  Checking for header inttypes.h           : yes 
+  Checking for header sys/inttypes.h       : not found 
+  Checking for library rt                  : not found 
+  Checking for header netpacket/packet.h   : not found 
+  Checking for header sys/ioctl.h          : yes 
+  Checking for header net/if.h             : not found 
+  Checking for header net/ethernet.h       : yes 
+  Checking for header linux/if_tun.h       : not found 
+  Checking for header netpacket/packet.h   : not found 
+  Checking for NSC location                : not found 
+  Checking for 'mpic++'                    : yes 
+  Checking for 'sqlite3'                   : yes 
+  Checking for header linux/if_tun.h       : not found 
+  Checking for program sudo                : /usr/bin/sudo 
+  Checking for program valgrind            : /sw/bin/valgrind 
+  Checking for 'gsl'                       : yes 
+  Checking for compilation flag -Wno-error=deprecated-d... support : ok 
+  Checking for compilation flag -Wno-error=deprecated-d... support : ok 
+  Checking for compilation flag -fstrict-aliasing... support       : ok 
+  Checking for compilation flag -fstrict-aliasing... support       : ok 
+  Checking for compilation flag -Wstrict-aliasing... support       : ok 
+  Checking for compilation flag -Wstrict-aliasing... support       : ok 
+  Checking for program doxygen                                     : /usr/local/bin/doxygen 
   ---- Summary of optional NS-3 features:
-  Threading Primitives          : enabled
-  Real Time Simulator           : enabled
-  Emulated Net Device           : enabled
-  GNU Scientific Library (GSL)  : enabled
-  Tap Bridge                    : enabled
+  Build profile                 : debug
+  Build directory               : build
+  Python Bindings               : enabled
+  BRITE Integration             : not enabled (BRITE not enabled (see option --with-brite))
+  NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
   GtkConfigStore                : enabled
   XmlIo                         : enabled
+  Threading Primitives          : enabled
+  Real Time Simulator           : enabled (librt is not available)
+  Emulated Net Device           : enabled (<netpacket/packet.h> include not detected)
+  File descriptor NetDevice     : enabled
+  Tap FdNetDevice               : not enabled (needs linux/if_tun.h)
+  Emulation FdNetDevice         : not enabled (needs netpacket/packet.h)
+  PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
+  Network Simulation Cradle     : not enabled (NSC not found (see option --with-nsc))
+  MPI Support                   : enabled
+  NS-3 OpenFlow Integration     : not enabled (Required boost libraries not found, missing: system, signals, filesystem)
   SQlite stats data output      : enabled
-  Network Simulation Cradle     : enabled
-  Python Bindings               : enabled
-  Python API Scanning Support   : enabled
+  Tap Bridge                    : not enabled (<linux/if_tun.h> include not detected)
+  PyViz visualizer              : enabled
   Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
   Build tests                   : enabled
   Build examples                : enabled
-  Static build                  : not enabled (option --enable-static not selected)
-  'configure' finished successfully (2.870s)
+  GNU Scientific Library (GSL)  : enabled
+  'configure' finished successfully (1.944s)
 
-Note the last part of the above output.  Some ns-3 options are not enabled by
+Note the last part of the above output.  Some |ns3| options are not enabled by
 default or require support from the underlying system to work properly.
 For instance, to enable XmlTo, the library libxml-2.0 must be found on the
 system.  If this library were not found, the corresponding |ns3| feature 
@@ -479,7 +466,7 @@
 ::
 
   $ ./waf clean
-  $ ./waf -d debug --enable-examples --enable-tests configure
+  $ ./waf --build-profile=debug --enable-examples --enable-tests configure
 
 The build system is now configured and you can build the debug versions of 
 the |ns3| programs by simply typing
@@ -492,72 +479,146 @@
 but now you know how to change the configuration and build optimized code.
 
 Here are a few more introductory tips about Waf.
-Some waf commands are meaningful during the build phase and some commands are valid
-in the configuration phase.  For example, if you wanted to use the emulation 
+
+Configure vs. Build
+===================
+
+Some Waf commands are only meaningful during the configure phase and some commands are valid
+in the build phase.  For example, if you wanted to use the emulation 
 features of |ns3|, you might want to enable setting the suid bit using
 sudo as described above.  This turns out to be a configuration-time command, and so 
-you could reconfigure using the following command that also includes the examples and tests
+you could reconfigure using the following command that also includes the examples and tests.
 
 ::
 
-  $ ./waf configure -d debug --enable-sudo --enable-examples --enable-tests
+  $ ./waf configure --enable-sudo --enable-examples --enable-tests
 
-If you do this, waf will have run sudo to change the socket creator programs of the
-emulation code to run as root.  There are many other configure- and build-time options
-available in waf.  To explore these options, type:
+If you do this, Waf will have run sudo to change the socket creator programs of the
+emulation code to run as root.
 
-::
+There are many other configure- and build-time options
+available in Waf.  To explore these options, type::
 
   $ ./waf --help
 
 We'll use some of the testing-related commands in the next section.
 
-Finally, as an aside, it is possible to specify that waf builds the 
-project in 
-a directory different than the default ``build/`` directory by passing
-the ``-o`` option to configure; e.g.
+Build Profiles
+==============
 
-::
+We already saw how you can configure Waf for ``debug`` or ``optimized`` builds::
 
-  $ ./waf configure -d debug -o build/debug --enable-examples --enable-tests
+  $ ./waf --build-profile=debug
 
-This allows users to work with multiple builds rather than always
-overwriting the last build.
+There is also an intermediate build profile, ``release``.  ``-d`` is a
+synonym for ``--build-profile``.
 
-In the examples above, waf uses GCC C++ compiler, command ``g++``, for
-building ns-3. However, it's possible to change C++ compiler used by waf.
-Say one wants to use Clang C++ compiler, command ``clang++``; it's done by
+By default Waf puts the build artifacts in the ``build`` directory.  
+You can specify a different output directory with the ``--out``
+option, e.g.
 
 ::
 
-  $ CXX="clang++" ./waf configure
+  $ ./waf configure --out=foo
+
+Combining this with build profiles lets you switch between the different
+compile options in a clean way::
+
+  $ ./waf configure --build-profile=debug --out=build/debug
   $ ./waf build
+  ...
+  $ ./waf configure --build-profile=optimized --out=build/optimized
+  $ ./waf build
+  ...
 
-One can also set up waf to do distributed compilation with ``distcc`` in
-a similar way:
+This allows you to work with multiple builds rather than always
+overwriting the last build.  When you switch, Waf will only compile
+what it has to, instead of recompiling everything.
+
+When you do switch build profiles like this, you have to be careful
+to give the same configuration parameters each time.  It may be convenient
+to define some environment variables to help you avoid mistakes::
+
+  $ export NS3CONFIG="--enable-examples --enable-tests"
+  $ export NS3DEBUG="--build-profile=debug --out=build/debug"
+  $ export NS3OPT=="--build-profile=optimized --out=build/optimized"
+
+  $ ./waf configure $NS3CONFIG $NS3DEBUG
+  $ ./waf build
+  ...
+  $ ./waf configure $NS3CONFIG $NS3OPT
+  $ ./waf build
+
+Compilers
+=========
+
+In the examples above, Waf uses the GCC C++ compiler, ``g++``, for
+building |ns3|. However, it's possible to change the C++ compiler used by Waf
+by defining the ``CXX`` environment variable.
+For example, to use the Clang C++ compiler, ``clang++``,
 
 ::
 
+  $ CXX="clang++" ./waf configure
+  $ ./waf build
+
+One can also set up Waf to do distributed compilation with ``distcc`` in
+a similar way::
+
   $ CXX="distcc g++" ./waf configure
   $ ./waf build
 
-More info on distcc and distributed compilation can be found on it's
+More info on ``distcc`` and distributed compilation can be found on it's
 `project page
 <http://code.google.com/p/distcc/>`_
 under Documentation section.
 
-Testing ns-3
-************
+One Waf
+=======
 
-You can run the unit tests of the |ns3| distribution by running the 
-"./test.py -c core" script,
+There is only one Waf script, at the top level of the |ns3| source tree.
+As you work, you may find yourself spending a lot of time in ``scratch/``,
+or deep in ``src/...``, and needing to invoke Waf.  You could just
+remember where you are, and invoke Waf like this::
 
-::
+  $ ../../../waf ...
+
+but that get's tedious, and error prone, and there are better solutions.
+
+If you have the full |ns3| repository this little gem is a start::
+
+  $ cd $(hg root) && ./waf ...
+
+Even better is to define this as a shell function::
+
+  $ function waff { cd $(hg root) && ./waf $* ; }
+
+  $ waff build
+
+If you only have the tarball, an environment variable can help::
+
+  $ export NS3DIR="$PWD"
+  $ function waff { cd $NS3DIR && ./waf $* ; }
+
+  $ cd scratch
+  $ waff build
+
+It might be tempting in a module directory to add a trivial ``waf``
+script along the lines of ``exec ../../waf``.  Please don't.  It's
+confusing to new-comers, and when done poorly it leads to subtle build
+errors.  The solutions above are the way to go.
+
+
+Testing |ns3|
+*************
+
+You can run the unit tests of the |ns3| distribution by running the 
+``./test.py -c core`` script::
 
   $ ./test.py -c core
 
-These tests are run in parallel by waf. You should eventually
-see a report saying that,
+These tests are run in parallel by Waf. You should eventually
+see a report saying that
 
 ::
 
@@ -565,9 +626,8 @@
 
 This is the important message.
 
-You will also see output from the test runner and the output will actually look something like,
-
-::
+You will also see the summary output from Waf and the test runner
+executing each test, which will actually look something like::
 
   Waf: Entering directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
   Waf: Leaving directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
@@ -590,34 +650,26 @@
 
   PASS: TestSuite ns3-wifi-interference
   PASS: TestSuite histogram
-  PASS: TestSuite sample
-  PASS: TestSuite ipv4-address-helper
-  PASS: TestSuite devices-wifi
-  PASS: TestSuite propagation-loss-model
 
   ...
 
-  PASS: TestSuite attributes
-  PASS: TestSuite config
-  PASS: TestSuite global-value
-  PASS: TestSuite command-line
-  PASS: TestSuite basic-random-number
   PASS: TestSuite object
   PASS: TestSuite random-number-generators
   92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
 
 This command is typically run by users to quickly verify that an 
-|ns3| distribution has built correctly.  
+|ns3| distribution has built correctly.  (Note the order of the ``PASS: ...``
+lines can vary, which is okay.  What's important is that the summary line at
+the end report that all tests passed; none failed or crashed.)
 
 Running a Script
 ****************
+
 We typically run scripts under the control of Waf.  This allows the build 
 system to ensure that the shared library paths are set correctly and that
 the libraries are available at run time.  To run a program, simply use the
 ``--run`` option in Waf.  Let's run the |ns3| equivalent of the
-ubiquitous hello world program by typing the following:
-
-::
+ubiquitous hello world program by typing the following::
 
   $ ./waf --run hello-simulator
 
@@ -629,28 +681,26 @@
 
   Hello Simulator
 
-*Congratulations.  You are now an ns-3 user.*
+Congratulations!  You are now an ns-3 user!
 
-*What do I do if I don't see the output?*
+**What do I do if I don't see the output?**
 
-If you see ``waf`` messages indicating that the build was 
+If you see Waf messages indicating that the build was 
 completed successfully, but do not see the "Hello Simulator" output, 
-chances are that you have switched your build mode to "optimized" in 
-the "Building with Waf" section, but have missed the change back to 
-"debug" mode.  All of the console output used in this tutorial uses a 
+chances are that you have switched your build mode to ``optimized`` in 
+the `Building with Waf`_ section, but have missed the change back to 
+``debug`` mode.  All of the console output used in this tutorial uses a 
 special |ns3| logging component that is useful for printing 
 user messages to the console.  Output from this component is 
 automatically disabled when you compile optimized code -- it is 
 "optimized out."  If you don't see the "Hello Simulator" output,
-type the following,
+type the following::
 
-::
+  $ ./waf configure --build-profile=debug --enable-examples --enable-tests
 
-  $ ./waf configure -d debug --enable-examples --enable-tests
-
-to tell ``waf`` to build the debug versions of the |ns3| 
+to tell Waf to build the debug versions of the |ns3| 
 programs that includes the examples and tests.  You must still build 
-the actual debug version of the code by typing,
+the actual debug version of the code by typing
 
 ::
 
@@ -659,7 +709,80 @@
 Now, if you run the ``hello-simulator`` program, you should see the 
 expected output.
 
-If you want to run programs under another tool such as gdb or valgrind,
-see this `wiki entry
-<http://www.nsnam.org/wiki/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.
+Program Arguments
++++++++++++++++++
+
+To feed command line arguments to an |ns3| program use this pattern::
+
+  $ ./waf --run <ns3-program> --command-template="%s <args>"
+
+Substitute your program name for ``<ns3-program>``, and the arguments
+for ``<args>``.  The ``--command-template`` argument to Waf is
+basically a recipe for constructing the actual command line Waf should use
+to execute the program.  Waf checks that the build is complete,
+sets the shared library paths, then invokes the executable
+using the provided command line template, 
+inserting the program name for the ``%s`` placeholder.
+(I admit this is a bit awkward, but that's the way it is.  Patches welcome!)
+
+Another particularly useful example is to run the ``mytest`` test suite
+by itself.  Above, we used the ``./test.py`` script to run a whole slew of
+tests in parallel, by repeatedly invoking the real testing program,
+``test-runner``.  To invoke ``test-runner`` directly for a single test::
+
+  $ ./waf --run test-runner --command-template="% --suite=mytest --verbose"
+
+This passes the arguments to the ``test-runner`` program.  To print the
+available ``test-runner`` options::
+
+  $ ./waf --run test-runner --command-template="% --help"
+
+Debugging
++++++++++
+
+To run |ns3| programs under the control of another utility, such as
+a debugger (*e.g.* ``gdb``) or memory checker (*e.g.* ``valgrind``),
+you use a similar ``--command-template="..."`` form.
+
+For example, to run your |ns3| program ``mysim`` with the arguments
+``<args>`` under the ``gdb`` debugger::
+
+  $ ./waf --run=hello-simulator --command-template="gdb %s --args <args>"
+
+Notice that the |ns3| program name goes with the ``--run`` argument,
+and the control utility (here ``gdb``) is the first token
+in the ``--commmand-template`` argument.  The ``--args`` tells ``gdb``
+that the remainder of the command line belongs to the "inferior" program.
+(Some ``gdb``'s don't understand the ``--args`` feature.  In this case,
+omit the program arguments from the ``--command-template``,
+and use the ``gdb`` command ``set args``.)
+
+We can combine this recipe and the previous one to run a test under the
+debugger::
+
+  $ ./waf --run test-runner --command-template="gdb %s --args --suite=mytest --verbose"
+
+Working Directory
++++++++++++++++++
 
+Waf needs to run from it's location at the top of the |ns3| tree.
+This becomes the working directory where output files will be written.
+But what if you want to keep those ouf to the |ns3| source tree?  Use
+the ``--cwd`` argument::
+
+  $ ./waf --cwd=...
+
+It may be more convenient to start with your working directory where
+you want the output files, in which case a little indirection can help::
+
+  $ function waff {
+      CWD="$PWD"
+      cd $NS3DIR >/dev/null
+      ./waf --cwd="$CWD" $*
+      cd - >/dev/null
+    }
+
+This embellishment of the previous version saves the current working directory,
+``cd``'s to the Waf directory, then instructs Waf to change the working
+directory *back* to the saved current working directory before running the
+program.
diff -Naur ns-3.19/doc/tutorial-pt-br/source/conf.py ns-3.20/doc/tutorial-pt-br/source/conf.py
--- ns-3.19/doc/tutorial-pt-br/source/conf.py	2014-06-17 10:34:00.331637488 -0700
+++ ns-3.20/doc/tutorial-pt-br/source/conf.py	2014-06-17 10:33:13.678997621 -0700
@@ -42,7 +42,7 @@
 
 # General information about the project.
 project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2008-11, ns-3 project'
 
 
 # The version info for the project you're documenting, acts as replacement for
@@ -50,9 +50,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
 
 # The language for content autogenerated by . Refer to babel documentation
 # for a list of supported languages.
diff -Naur ns-3.19/examples/energy/waf ns-3.20/examples/energy/waf
--- ns-3.19/examples/energy/waf	2014-06-17 10:34:00.351637333 -0700
+++ ns-3.20/examples/energy/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/error-model/waf ns-3.20/examples/error-model/waf
--- ns-3.19/examples/error-model/waf	2014-06-17 10:34:00.352637325 -0700
+++ ns-3.20/examples/error-model/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/ipv6/waf ns-3.20/examples/ipv6/waf
--- ns-3.19/examples/ipv6/waf	2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/examples/ipv6/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/ipv6/wscript ns-3.20/examples/ipv6/wscript
--- ns-3.19/examples/ipv6/wscript	2014-06-17 10:34:00.357637287 -0700
+++ ns-3.20/examples/ipv6/wscript	2014-06-17 10:33:13.704997420 -0700
@@ -25,3 +25,6 @@
     obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet'])
     obj.source = 'loose-routing-ipv6.cc'
 
+    obj = bld.create_ns3_program('wsn-ping6', ['lr-wpan', 'internet', 'sixlowpan', 'mobility'])
+    obj.source = 'wsn-ping6.cc'
+
diff -Naur ns-3.19/examples/ipv6/wsn-ping6.cc ns-3.20/examples/ipv6/wsn-ping6.cc
--- ns-3.19/examples/ipv6/wsn-ping6.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/examples/ipv6/wsn-ping6.cc	2014-06-17 10:33:13.704997420 -0700
@@ -0,0 +1,141 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+// Network topology
+//
+//       n0    n1
+//       |     |
+//       =================
+//        WSN (802.15.4)
+//
+// - ICMPv6 echo request flows from n0 to n1 and back with ICMPv6 echo reply
+// - DropTail queues 
+// - Tracing of queues and packet receptions to file "wsn-ping6.tr"
+//
+// This example is based on the "ping6.cc" example.
+
+#include <fstream>
+#include "ns3/core-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/sixlowpan-module.h"
+#include "ns3/lr-wpan-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/mobility-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("Ping6WsnExample");
+
+int main (int argc, char **argv)
+{
+  bool verbose = false;
+
+  CommandLine cmd;
+  cmd.AddValue ("verbose", "turn on log components", verbose);
+  cmd.Parse (argc, argv);
+
+  if (verbose)
+    {
+      LogComponentEnable ("Ping6WsnExample", LOG_LEVEL_INFO);
+      LogComponentEnable ("Ipv6EndPointDemux", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ipv6ListRouting", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
+      LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
+      LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
+      LogComponentEnable ("SixLowPanNetDevice", LOG_LEVEL_ALL);
+    }
+
+  NS_LOG_INFO ("Create nodes.");
+  NodeContainer nodes;
+  nodes.Create (2);
+
+  // Set seed for random numbers
+  SeedManager::SetSeed (167);
+
+  // Install mobility
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+
+  Ptr<ListPositionAllocator> nodesPositionAlloc = CreateObject<ListPositionAllocator> ();
+  nodesPositionAlloc->Add (Vector (0.0, 0.0, 0.0));
+  nodesPositionAlloc->Add (Vector (50.0, 0.0, 0.0));
+  mobility.SetPositionAllocator (nodesPositionAlloc);
+  mobility.Install (nodes);
+
+  NS_LOG_INFO ("Create channels.");
+  LrWpanHelper lrWpanHelper;
+  // Add and install the LrWpanNetDevice for each node
+  // lrWpanHelper.EnableLogComponents();
+  NetDeviceContainer devContainer = lrWpanHelper.Install(nodes);
+  lrWpanHelper.AssociateToPan (devContainer, 10);
+
+  std::cout << "Created " << devContainer.GetN() << " devices" << std::endl;
+  std::cout << "There are " << nodes.GetN() << " nodes" << std::endl;
+
+  /* Install IPv4/IPv6 stack */
+  NS_LOG_INFO ("Install Internet stack.");
+  InternetStackHelper internetv6;
+  internetv6.SetIpv4StackInstall (false);
+  internetv6.Install (nodes);
+
+  // Install 6LowPan layer
+  NS_LOG_INFO ("Install 6LoWPAN.");
+  SixLowPanHelper sixlowpan;
+  NetDeviceContainer six1 = sixlowpan.Install (devContainer);
+
+  NS_LOG_INFO ("Assign addresses.");
+  Ipv6AddressHelper ipv6;
+  ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer i = ipv6.Assign (six1);
+
+  NS_LOG_INFO ("Create Applications.");
+
+  /* Create a Ping6 application to send ICMPv6 echo request from node zero to
+   * all-nodes (ff02::1).
+   */
+  uint32_t packetSize = 10;
+  uint32_t maxPacketCount = 5;
+  Time interPacketInterval = Seconds (1.);
+  Ping6Helper ping6;
+
+  ping6.SetLocal (i.GetAddress (0, 1));
+  ping6.SetRemote (i.GetAddress (1, 1));
+  // ping6.SetRemote (Ipv6Address::GetAllNodesMulticast ());
+
+  ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
+  ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
+  ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
+  ApplicationContainer apps = ping6.Install (nodes.Get (0));
+  apps.Start (Seconds (2.0));
+  apps.Stop (Seconds (10.0));
+
+  AsciiTraceHelper ascii;
+  lrWpanHelper.EnableAsciiAll (ascii.CreateFileStream ("ping6wsn.tr"));
+  lrWpanHelper.EnablePcapAll (std::string ("ping6wsn"), true);
+
+  NS_LOG_INFO ("Run Simulation.");
+  Simulator::Run ();
+  Simulator::Destroy ();
+  NS_LOG_INFO ("Done.");
+}
+
diff -Naur ns-3.19/examples/naming/waf ns-3.20/examples/naming/waf
--- ns-3.19/examples/naming/waf	2014-06-17 10:34:00.359637271 -0700
+++ ns-3.20/examples/naming/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/realtime/waf ns-3.20/examples/realtime/waf
--- ns-3.19/examples/realtime/waf	2014-06-17 10:34:00.361637256 -0700
+++ ns-3.20/examples/realtime/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/routing/manet-routing-compare.cc ns-3.20/examples/routing/manet-routing-compare.cc
--- ns-3.19/examples/routing/manet-routing-compare.cc	2014-06-17 10:34:00.378637125 -0700
+++ ns-3.20/examples/routing/manet-routing-compare.cc	2014-06-17 10:33:13.710997374 -0700
@@ -343,7 +343,7 @@
   onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
   onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
 
-  for (int i = 0; i <= nSinks - 1; i++)
+  for (int i = 0; i < nSinks; i++)
     {
       Ptr<Socket> sink = SetupPacketReceive (adhocInterfaces.GetAddress (i), adhocNodes.Get (i));
 
diff -Naur ns-3.19/examples/routing/ripng-simple-network.cc ns-3.20/examples/routing/ripng-simple-network.cc
--- ns-3.19/examples/routing/ripng-simple-network.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/examples/routing/ripng-simple-network.cc	2014-06-17 10:33:13.711997366 -0700
@@ -0,0 +1,268 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+// Network topology
+//
+//    SRC
+//     |<=== source network
+//     A-----B
+//      \   / \   all networks have cost 1, except
+//       \ /  |   for the direct link from C to D, which
+//        C  /    has cost 10
+//        | /
+//        |/
+//        D
+//        |<=== target network
+//       DST
+//
+//
+// A, B, C and D are RIPng routers.
+// A and D are configured with static addresses.
+// SRC and DST will exchange packets.
+//
+// After about 3 seconds, the topology is built, and Echo Reply will be received.
+// After 40 seconds, the link between B and D will break, causing a route failure.
+// After 44 seconds from the failure, the routers will recovery from the failure.
+// Split Horizoning should affect the recovery time, but it is not. See the manual
+// for an explanation of this effect.
+//
+// If "showPings" is enabled, the user will see:
+// 1) if the ping has been acknowledged
+// 2) if a Destination Unreachable has been received by the sender
+// 3) nothing, when the Echo Request has been received by the destination but
+//    the Echo Reply is unable to reach the sender.
+// Examining the .pcap files with Wireshark can confirm this effect.
+
+
+#include <fstream>
+#include "ns3/core-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/csma-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/ipv6-static-routing-helper.h"
+#include "ns3/ipv6-routing-table-entry.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("RipNgSimpleRouting");
+
+void TearDownLink (Ptr<Node> nodeA, Ptr<Node> nodeB, uint32_t interfaceA, uint32_t interfaceB)
+{
+  nodeA->GetObject<Ipv6> ()->SetDown (interfaceA);
+  nodeB->GetObject<Ipv6> ()->SetDown (interfaceB);
+}
+
+int main (int argc, char **argv)
+{
+  bool verbose = false;
+  bool printRoutingTables = false;
+  bool showPings = false;
+  std::string SplitHorizon ("PoisonReverse");
+
+  CommandLine cmd;
+  cmd.AddValue ("verbose", "turn on log components", verbose);
+  cmd.AddValue ("printRoutingTables", "Print routing tables at 30, 60 and 90 seconds", printRoutingTables);
+  cmd.AddValue ("showPings", "Show Ping6 reception", showPings);
+  cmd.AddValue ("splitHorizonStrategy", "Split Horizon strategy to use (NoSplitHorizon, SplitHorizon, PoisonReverse)", SplitHorizon);
+  cmd.Parse (argc, argv);
+
+  if (verbose)
+    {
+      LogComponentEnable ("RipNgSimpleRouting", LOG_LEVEL_INFO);
+      LogComponentEnable ("RipNg", LOG_LEVEL_ALL);
+      LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_INFO);
+      LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
+      LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
+      LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
+    }
+
+  if (showPings)
+    {
+      LogComponentEnable ("Ping6Application", LOG_LEVEL_INFO);
+    }
+
+  if (SplitHorizon == "NoSplitHorizon")
+    {
+      Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::NO_SPLIT_HORIZON));
+    }
+  else if (SplitHorizon == "SplitHorizon")
+    {
+      Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::SPLIT_HORIZON));
+    }
+  else
+    {
+      Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::POISON_REVERSE));
+    }
+
+  NS_LOG_INFO ("Create nodes.");
+  Ptr<Node> src = CreateObject<Node> ();
+  Names::Add ("SrcNode", src);
+  Ptr<Node> dst = CreateObject<Node> ();
+  Names::Add ("DstNode", dst);
+  Ptr<Node> a = CreateObject<Node> ();
+  Names::Add ("RouterA", a);
+  Ptr<Node> b = CreateObject<Node> ();
+  Names::Add ("RouterB", b);
+  Ptr<Node> c = CreateObject<Node> ();
+  Names::Add ("RouterC", c);
+  Ptr<Node> d = CreateObject<Node> ();
+  Names::Add ("RouterD", d);
+  NodeContainer net1 (src, a);
+  NodeContainer net2 (a, b);
+  NodeContainer net3 (a, c);
+  NodeContainer net4 (b, c);
+  NodeContainer net5 (c, d);
+  NodeContainer net6 (b, d);
+  NodeContainer net7 (d, dst);
+  NodeContainer routers (a, b, c, d);
+  NodeContainer nodes (src, dst);
+
+
+  NS_LOG_INFO ("Create channels.");
+  CsmaHelper csma;
+  csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
+  csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
+  NetDeviceContainer ndc1 = csma.Install (net1);
+  NetDeviceContainer ndc2 = csma.Install (net2);
+  NetDeviceContainer ndc3 = csma.Install (net3);
+  NetDeviceContainer ndc4 = csma.Install (net4);
+  NetDeviceContainer ndc5 = csma.Install (net5);
+  NetDeviceContainer ndc6 = csma.Install (net6);
+  NetDeviceContainer ndc7 = csma.Install (net7);
+
+  NS_LOG_INFO ("Create IPv6 and routing");
+  RipNgHelper ripNgRouting;
+
+  // Rule of thumb:
+  // Interfaces are added sequentially, starting from 0
+  // However, interface 0 is always the loopback...
+  ripNgRouting.ExcludeInterface (a, 1);
+  ripNgRouting.ExcludeInterface (d, 3);
+
+  ripNgRouting.SetInterfaceMetric (c, 3, 10);
+  ripNgRouting.SetInterfaceMetric (d, 1, 10);
+
+  Ipv6ListRoutingHelper listRH;
+  listRH.Add (ripNgRouting, 0);
+
+  InternetStackHelper internetv6;
+  internetv6.SetIpv4StackInstall (false);
+  internetv6.SetRoutingHelper (listRH);
+  internetv6.Install (routers);
+
+  InternetStackHelper internetv6Nodes;
+  internetv6Nodes.SetIpv4StackInstall (false);
+  internetv6Nodes.Install (nodes);
+
+  // Assign addresses.
+  // The source and destination networks have global addresses
+  // The "core" network just needs link-local addresses for routing.
+  // We assign global addresses to the routers as well to receive
+  // ICMPv6 errors.
+  NS_LOG_INFO ("Assign IPv6 Addresses.");
+  Ipv6AddressHelper ipv6;
+
+  ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic1 = ipv6.Assign (ndc1);
+  iic1.SetForwarding (1, true);
+  iic1.SetDefaultRouteInAllNodes (1);
+
+  ipv6.SetBase (Ipv6Address ("2001:0:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic2 = ipv6.Assign (ndc2);
+  iic2.SetForwarding (0, true);
+  iic2.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:0:2::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic3 = ipv6.Assign (ndc3);
+  iic3.SetForwarding (0, true);
+  iic3.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:0:3::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic4 = ipv6.Assign (ndc4);
+  iic4.SetForwarding (0, true);
+  iic4.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:0:4::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic5 = ipv6.Assign (ndc5);
+  iic5.SetForwarding (0, true);
+  iic5.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:0:5::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic6 = ipv6.Assign (ndc6);
+  iic6.SetForwarding (0, true);
+  iic6.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic7 = ipv6.Assign (ndc7);
+  iic7.SetForwarding (0, true);
+  iic7.SetDefaultRouteInAllNodes (0);
+
+  if (printRoutingTables)
+    {
+      RipNgHelper routingHelper;
+
+      Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
+
+      routingHelper.PrintRoutingTableAt (Seconds (30.0), a, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (30.0), b, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (30.0), c, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (30.0), d, routingStream);
+
+      routingHelper.PrintRoutingTableAt (Seconds (60.0), a, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (60.0), b, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (60.0), c, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (60.0), d, routingStream);
+
+      routingHelper.PrintRoutingTableAt (Seconds (90.0), a, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (90.0), b, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (90.0), c, routingStream);
+      routingHelper.PrintRoutingTableAt (Seconds (90.0), d, routingStream);
+    }
+
+  NS_LOG_INFO ("Create Applications.");
+  uint32_t packetSize = 1024;
+  uint32_t maxPacketCount = 100;
+  Time interPacketInterval = Seconds (1.0);
+  Ping6Helper ping6;
+
+  ping6.SetLocal (iic1.GetAddress (0, 1));
+  ping6.SetRemote (iic7.GetAddress (1, 1));
+  ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
+  ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
+  ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
+  ApplicationContainer apps = ping6.Install (src);
+  apps.Start (Seconds (1.0));
+  apps.Stop (Seconds (110.0));
+
+  AsciiTraceHelper ascii;
+  csma.EnableAsciiAll (ascii.CreateFileStream ("ripng-simple-routing.tr"));
+  csma.EnablePcapAll ("ripng-simple-routing", true);
+
+  Simulator::Schedule (Seconds (40), &TearDownLink, b, d, 3, 2);
+
+  /* Now, do the actual simulation. */
+  NS_LOG_INFO ("Run Simulation.");
+  Simulator::Stop (Seconds (120));
+  Simulator::Run ();
+  Simulator::Destroy ();
+  NS_LOG_INFO ("Done.");
+}
+
diff -Naur ns-3.19/examples/routing/simple-global-routing.cc ns-3.20/examples/routing/simple-global-routing.cc
--- ns-3.19/examples/routing/simple-global-routing.cc	2014-06-17 10:34:00.379637117 -0700
+++ ns-3.20/examples/routing/simple-global-routing.cc	2014-06-17 10:33:13.712997359 -0700
@@ -149,11 +149,10 @@
   p2p.EnablePcapAll ("simple-global-routing");
 
   // Flow Monitor
-  Ptr<FlowMonitor> flowmon;
   FlowMonitorHelper flowmonHelper;
   if (enableFlowMonitor)
     {
-      flowmon = flowmonHelper.InstallAll ();
+      flowmonHelper.InstallAll ();
     }
 
   NS_LOG_INFO ("Run Simulation.");
@@ -163,7 +162,7 @@
 
   if (enableFlowMonitor)
     {
-      flowmon->SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
+      flowmonHelper.SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
     }
 
   Simulator::Destroy ();
diff -Naur ns-3.19/examples/routing/waf ns-3.20/examples/routing/waf
--- ns-3.19/examples/routing/waf	2014-06-17 10:34:00.381637101 -0700
+++ ns-3.20/examples/routing/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/routing/wscript ns-3.20/examples/routing/wscript
--- ns-3.19/examples/routing/wscript	2014-06-17 10:34:00.381637101 -0700
+++ ns-3.20/examples/routing/wscript	2014-06-17 10:33:13.714997343 -0700
@@ -37,4 +37,8 @@
                                  ['wifi', 'dsr', 'dsdv', 'aodv', 'olsr', 'internet', 'applications'])
     obj.source = 'manet-routing-compare.cc'
 
+    obj = bld.create_ns3_program('ripng-simple-network',
+                                 ['csma', 'internet', 'applications'])
+    obj.source = 'ripng-simple-network.cc'
+
     bld.register_ns3_script('simple-routing-ping6.py', ['csma', 'internet', 'applications'])
diff -Naur ns-3.19/examples/socket/waf ns-3.20/examples/socket/waf
--- ns-3.19/examples/socket/waf	2014-06-17 10:34:00.383637086 -0700
+++ ns-3.20/examples/socket/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/tcp/tcp-variants-comparison.cc ns-3.20/examples/tcp/tcp-variants-comparison.cc
--- ns-3.19/examples/tcp/tcp-variants-comparison.cc	2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/examples/tcp/tcp-variants-comparison.cc	2014-06-17 10:33:13.723997274 -0700
@@ -339,11 +339,10 @@
   LocalLink.EnablePcapAll("TcpVariantsComparison", true);
 
   // Flow monitor
-  Ptr<FlowMonitor> flowMonitor;
   FlowMonitorHelper flowHelper;
   if (flow_monitor)
     {
-      flowMonitor = flowHelper.InstallAll();
+      flowHelper.InstallAll();
     }
 
   Simulator::Stop (Seconds(stop_time));
@@ -351,7 +350,7 @@
 
   if (flow_monitor)
     {
-      flowMonitor->SerializeToXmlFile("TcpVariantsComparison.flowmonitor", true, true);
+      flowHelper.SerializeToXmlFile("TcpVariantsComparison.flowmonitor", true, true);
     }
 
   Simulator::Destroy ();
diff -Naur ns-3.19/examples/tcp/waf ns-3.20/examples/tcp/waf
--- ns-3.19/examples/tcp/waf	2014-06-17 10:34:00.391637024 -0700
+++ ns-3.20/examples/tcp/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/tutorial/waf ns-3.20/examples/tutorial/waf
--- ns-3.19/examples/tutorial/waf	2014-06-17 10:34:00.395636994 -0700
+++ ns-3.20/examples/tutorial/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/udp/waf ns-3.20/examples/udp/waf
--- ns-3.19/examples/udp/waf	2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/examples/udp/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/udp-client-server/waf ns-3.20/examples/udp-client-server/waf
--- ns-3.19/examples/udp-client-server/waf	2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/examples/udp-client-server/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/waf ns-3.20/examples/waf
--- ns-3.19/examples/waf	2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../waf "$@"
diff -Naur ns-3.19/examples/wireless/mixed-wireless.cc ns-3.20/examples/wireless/mixed-wireless.cc
--- ns-3.19/examples/wireless/mixed-wireless.cc	2014-06-17 10:34:00.400636955 -0700
+++ ns-3.20/examples/wireless/mixed-wireless.cc	2014-06-17 10:33:13.731997212 -0700
@@ -69,6 +69,7 @@
 #include "ns3/csma-module.h"
 #include "ns3/olsr-helper.h"
 #include "ns3/internet-module.h"
+#include "ns3/netanim-module.h"
 
 using namespace ns3;
 
@@ -96,18 +97,17 @@
   // simulation parameters.
   //
   uint32_t backboneNodes = 10;
-  uint32_t infraNodes = 5;
-  uint32_t lanNodes = 5;
-  uint32_t stopTime = 10;
+  uint32_t infraNodes = 2;
+  uint32_t lanNodes = 2;
+  uint32_t stopTime = 20;
   bool useCourseChangeCallback = false;
-  bool enableTracing = false;
 
   //
   // Simulation defaults are typically set next, before command line
   // arguments are parsed.
   //
-  Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue ("210"));
-  Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("10kb/s"));
+  Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue ("1472"));
+  Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("100kb/s"));
 
   //
   // For convenience, we add the local variables to the command line argument
@@ -120,7 +120,6 @@
   cmd.AddValue ("lanNodes", "number of LAN nodes", lanNodes);
   cmd.AddValue ("stopTime", "simulation stop time (seconds)", stopTime);
   cmd.AddValue ("useCourseChangeCallback", "whether to enable course change tracing", useCourseChangeCallback);
-  cmd.AddValue ("enableTracing", "enable tracing", enableTracing);
 
   //
   // The system global variables and the local values added to the argument
@@ -128,6 +127,11 @@
   //
   cmd.Parse (argc, argv);
 
+  if (stopTime < 10)
+    {
+      std::cout << "Use a simulation stop time >= 10 seconds" << std::endl;
+      exit (1);
+    }
   /////////////////////////////////////////////////////////////////////////// 
   //                                                                       //
   // Construct the backbone                                                //
@@ -165,9 +169,6 @@
   internet.SetRoutingHelper (olsr); // has effect on the next Install ()
   internet.Install (backbone);
 
-  // re-initialize for non-olsr routing.
-  internet.Reset ();
-
   //
   // Assign IPv4 addresses to the device drivers (actually to the associated
   // IPv4 interfaces) we just created.
@@ -181,17 +182,15 @@
   // each of the nodes we just finished building.
   //
   MobilityHelper mobility;
-  Ptr<ListPositionAllocator> positionAlloc = 
-    CreateObject<ListPositionAllocator> ();
-  double x = 0.0;
-  for (uint32_t i = 0; i < backboneNodes; ++i)
-    {
-      positionAlloc->Add (Vector (x, 0.0, 0.0));
-      x += 5.0;
-    }
-  mobility.SetPositionAllocator (positionAlloc);
+  mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
+                                 "MinX", DoubleValue (20.0),
+                                 "MinY", DoubleValue (20.0),
+                                 "DeltaX", DoubleValue (20.0),
+                                 "DeltaY", DoubleValue (20.0),
+                                 "GridWidth", UintegerValue (5),
+                                 "LayoutType", StringValue ("RowFirst"));
   mobility.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
-                             "Bounds", RectangleValue (Rectangle (0, 20, 0, 20)),
+                             "Bounds", RectangleValue (Rectangle (-500, 500, -500, 500)),
                              "Speed", StringValue ("ns3::ConstantRandomVariable[Constant=2]"),
                              "Pause", StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"));
   mobility.Install (backbone);
@@ -242,6 +241,21 @@
       // network mask initialized above
       //
       ipAddrs.NewNetwork ();
+      //
+      // The new LAN nodes need a mobility model so we aggregate one
+      // to each of the nodes we just finished building.
+      //
+      MobilityHelper mobilityLan;
+      Ptr<ListPositionAllocator> subnetAlloc = 
+        CreateObject<ListPositionAllocator> ();
+      for (uint32_t j = 0; j < newLanNodes.GetN (); ++j)
+        {
+          subnetAlloc->Add (Vector (0.0, j*10 + 10, 0.0));
+        }
+      mobilityLan.PushReferenceMobilityModel (backbone.Get (i));
+      mobilityLan.SetPositionAllocator (subnetAlloc);
+      mobilityLan.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+      mobilityLan.Install (newLanNodes);
     }
 
   /////////////////////////////////////////////////////////////////////////// 
@@ -286,7 +300,9 @@
       NetDeviceContainer staDevices = wifiInfra.Install (wifiPhy, macInfra, stas);
       // setup ap.
       macInfra.SetType ("ns3::ApWifiMac",
-                        "Ssid", SsidValue (ssid));
+                        "Ssid", SsidValue (ssid),
+                        "BeaconGeneration", BooleanValue (true),
+                        "BeaconInterval", TimeValue(Seconds(2.5)));
       NetDeviceContainer apDevices = wifiInfra.Install (wifiPhy, macInfra, backbone.Get (i));
       // Collect all of these new devices
       NetDeviceContainer infraDevices (apDevices, staDevices);
@@ -320,19 +336,8 @@
                                  "Bounds", RectangleValue (Rectangle (-10, 10, -10, 10)),
                                  "Speed", StringValue ("ns3::ConstantRandomVariable[Constant=3]"),
                                  "Pause", StringValue ("ns3::ConstantRandomVariable[Constant=0.4]"));
-      mobility.Install (infra);
+      mobility.Install (stas);
     }
-  /////////////////////////////////////////////////////////////////////////// 
-  //                                                                       //
-  // Routing configuration                                                 //
-  //                                                                       //
-  /////////////////////////////////////////////////////////////////////////// 
-
-  // The below global routing does not take into account wireless effects.
-  // However, it is useful for setting default routes for all of the nodes
-  // such as the LAN nodes.
-  NS_LOG_INFO ("Enabling global routing on all nodes");
-  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
 
   /////////////////////////////////////////////////////////////////////////// 
   //                                                                       //
@@ -363,17 +368,16 @@
 
   OnOffHelper onoff ("ns3::UdpSocketFactory", 
                      Address (InetSocketAddress (remoteAddr, port)));
-  onoff.SetConstantRate (DataRate ("10kb/s"));
 
   ApplicationContainer apps = onoff.Install (appSource);
-  apps.Start (Seconds (3.0));
-  apps.Stop (Seconds (20.0));
+  apps.Start (Seconds (3));
+  apps.Stop (Seconds (stopTime - 1));
 
   // Create a packet sink to receive these packets
   PacketSinkHelper sink ("ns3::UdpSocketFactory", 
                          InetSocketAddress (Ipv4Address::GetAny (), port));
   apps = sink.Install (appSink);
-  apps.Start (Seconds (3.0));
+  apps.Start (Seconds (3));
 
   /////////////////////////////////////////////////////////////////////////// 
   //                                                                       //
@@ -382,36 +386,31 @@
   /////////////////////////////////////////////////////////////////////////// 
 
   NS_LOG_INFO ("Configure Tracing.");
-  if (enableTracing == true)
-    {
-      CsmaHelper csma;
+  CsmaHelper csma;
 
-      //
-      // Let's set up some ns-2-like ascii traces, using another helper class
-      //
-      AsciiTraceHelper ascii;
-      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream ("mixed-wireless.tr");
-      wifiPhy.EnableAsciiAll (stream);
-      csma.EnableAsciiAll (stream);
-      internet.EnableAsciiIpv4All (stream);
-
-      // Let's do a pcap trace on the application source and sink, ifIndex 0
-      // Csma captures in non-promiscuous mode
-#if 0
-      csma.EnablePcap ("mixed-wireless", appSource->GetId (), 0, false);
-#else
-      csma.EnablePcapAll ("mixed-wireless", false);
-#endif
-      wifiPhy.EnablePcap ("mixed-wireless", appSink->GetId (), 0);
-      wifiPhy.EnablePcap ("mixed-wireless", 9, 2);
-      wifiPhy.EnablePcap ("mixed-wireless", 9, 0);
-    }
+  //
+  // Let's set up some ns-2-like ascii traces, using another helper class
+  //
+  AsciiTraceHelper ascii;
+  Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream ("mixed-wireless.tr");
+  wifiPhy.EnableAsciiAll (stream);
+  csma.EnableAsciiAll (stream);
+  internet.EnableAsciiIpv4All (stream);
+
+  // Csma captures in non-promiscuous mode
+  csma.EnablePcapAll ("mixed-wireless", false);
+  // pcap captures on the backbone wifi devices
+  wifiPhy.EnablePcap ("mixed-wireless", backboneDevices, false);
+  // pcap trace on the application data sink
+  wifiPhy.EnablePcap ("mixed-wireless", appSink->GetId (), 0);
 
   if (useCourseChangeCallback == true)
     {
       Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange", MakeCallback (&CourseChangeCallback));
     }
 
+  AnimationInterface anim ("mixed-wireless.xml");
+
   /////////////////////////////////////////////////////////////////////////// 
   //                                                                       //
   // Run simulation                                                        //
diff -Naur ns-3.19/examples/wireless/mixed-wireless.py ns-3.20/examples/wireless/mixed-wireless.py
--- ns-3.19/examples/wireless/mixed-wireless.py	2014-06-17 10:34:00.400636955 -0700
+++ ns-3.20/examples/wireless/mixed-wireless.py	2014-06-17 10:33:13.731997212 -0700
@@ -76,16 +76,16 @@
     #  simulation parameters.
     # 
     backboneNodes = 10
-    infraNodes = 5
-    lanNodes = 5
-    stopTime = 10
+    infraNodes = 2 
+    lanNodes = 2
+    stopTime = 20
 
     # 
     #  Simulation defaults are typically set next, before command line
     #  arguments are parsed.
     # 
-    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize", ns.core.StringValue("210"))
-    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate", ns.core.StringValue("448kb/s"))
+    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize", ns.core.StringValue("1472"))
+    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate", ns.core.StringValue("100kb/s"))
 
     # 
     #  For convenience, we add the local variables to the command line argument
@@ -93,10 +93,10 @@
     #  "--backboneNodes=20"
     # 
     cmd = ns.core.CommandLine()
-    #cmd.AddValue("backboneNodes", "number of backbone nodes", backboneNodes)
-    #cmd.AddValue("infraNodes", "number of leaf nodes", infraNodes)
-    #cmd.AddValue("lanNodes", "number of LAN nodes", lanNodes)
-    #cmd.AddValue("stopTime", "simulation stop time(seconds)", stopTime)
+    cmd.AddValue("backboneNodes", "number of backbone nodes", str(backboneNodes))
+    cmd.AddValue("infraNodes", "number of leaf nodes", str(infraNodes))
+    cmd.AddValue("lanNodes", "number of LAN nodes", str(lanNodes))
+    cmd.AddValue("stopTime", "simulation stop time(seconds)", str(stopTime))
 
     # 
     #  The system global variables and the local values added to the argument
@@ -104,6 +104,9 @@
     # 
     cmd.Parse(argv)
 
+    if (stopTime < 10):
+        print "Use a simulation stop time >= 10 seconds"
+        exit(1)
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / 
     #                                                                        # 
     #  Construct the backbone                                                # 
@@ -138,7 +141,7 @@
     internet.SetRoutingHelper(olsr); # has effect on the next Install ()
     internet.Install(backbone);
     # re-initialize for non-olsr routing.
-    internet.Reset()
+    # internet.Reset()
     # 
     #  Assign IPv4 addresses to the device drivers(actually to the associated
     #  IPv4 interfaces) we just created.
@@ -152,15 +155,16 @@
     #  each of the nodes we just finished building.  
     # 
     mobility = ns.mobility.MobilityHelper()
-    positionAlloc = ns.mobility.ListPositionAllocator()
-    x = 0.0
-    for i in range(backboneNodes):
-        positionAlloc.Add(ns.core.Vector(x, 0.0, 0.0))
-        x += 5.0
-    mobility.SetPositionAllocator(positionAlloc)
+    mobility.SetPositionAllocator("ns3::GridPositionAllocator",
+                                  "MinX", ns.core.DoubleValue(20.0),
+                                  "MinY", ns.core.DoubleValue(20.0),
+                                  "DeltaX", ns.core.DoubleValue(20.0),
+                                  "DeltaY", ns.core.DoubleValue(20.0),
+                                  "GridWidth", ns.core.UintegerValue(5),
+                                  "LayoutType", ns.core.StringValue("RowFirst"))
     mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
-                               "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(0, 1000, 0, 1000)),
-                               "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=2000]"),
+                               "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-500, 500, -500, 500)),
+                               "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=2]"),
                                "Pause", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"))
     mobility.Install(backbone)
 
@@ -207,6 +211,19 @@
         #  network mask initialized above
         # 
         ipAddrs.NewNetwork()
+        #
+        # The new LAN nodes need a mobility model so we aggregate one
+        # to each of the nodes we just finished building.
+        #
+        mobilityLan = ns.mobility.MobilityHelper() 
+        positionAlloc = ns.mobility.ListPositionAllocator()
+        for j in range(newLanNodes.GetN()):
+            positionAlloc.Add(ns.core.Vector(0.0, (j*10 + 10), 0.0))
+
+        mobilityLan.SetPositionAllocator(positionAlloc)
+        mobilityLan.PushReferenceMobilityModel(backbone.Get(i))
+        mobilityLan.SetMobilityModel("ns3::ConstantPositionMobilityModel")
+        mobilityLan.Install(newLanNodes);
 
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / 
     #                                                                        # 
@@ -276,10 +293,10 @@
         mobility.PushReferenceMobilityModel(backbone.Get(i))
         mobility.SetPositionAllocator(subnetAlloc)
         mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
-                                  "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-25, 25, -25, 25)),
-                                  "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=30]"),
+                                  "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-10, 10, -10, 10)),
+                                  "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=3]"),
                                   "Pause", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0.4]"))
-        mobility.Install(infra)
+        mobility.Install(stas)
 
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / 
     #                                                                        # 
@@ -292,25 +309,23 @@
     print "Create Applications."
     port = 9   #  Discard port(RFC 863)
 
-    #  Let's make sure that the user does not define too few LAN nodes
-    #  to make this example work.  We need lanNodes >= 5
-    assert(lanNodes >= 5)
-    appSource = ns.network.NodeList.GetNode(11)
-    appSink = ns.network.NodeList.GetNode(13)
-    remoteAddr = ns.network.Ipv4Address("172.16.0.5")
+    appSource = ns.network.NodeList.GetNode(backboneNodes)
+    lastNodeIndex = backboneNodes + backboneNodes*(lanNodes - 1) + backboneNodes*(infraNodes - 1) - 1
+    appSink = ns.network.NodeList.GetNode(lastNodeIndex)
+    # Let's fetch the IP address of the last node, which is on Ipv4Interface 1
+    remoteAddr = appSink.GetObject(ns.internet.Ipv4.GetTypeId()).GetAddress(1,0).GetLocal()
 
     onoff = ns.applications.OnOffHelper("ns3::UdpSocketFactory", 
                             ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
-    onoff.SetConstantRate (ns.network.DataRate ("10kb/s"))
     apps = onoff.Install(ns.network.NodeContainer(appSource))
-    apps.Start(ns.core.Seconds(3.0))
-    apps.Stop(ns.core.Seconds(20.0))
+    apps.Start(ns.core.Seconds(3))
+    apps.Stop(ns.core.Seconds(stopTime - 1))
 
     #  Create a packet sink to receive these packets
     sink = ns.applications.PacketSinkHelper("ns3::UdpSocketFactory", 
                                 ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
     apps = sink.Install(ns.network.NodeContainer(appSink))
-    apps.Start(ns.core.Seconds(3.0))
+    apps.Start(ns.core.Seconds(3))
 
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / 
     #                                                                        # 
@@ -319,24 +334,21 @@
     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / 
 
     print "Configure Tracing."
+    csma = ns.csma.CsmaHelper()
     # 
     #  Let's set up some ns-2-like ascii traces, using another helper class
     # 
-    #std.ofstream ascii
-    #ascii = ns.core.AsciiTraceHelper();
-    #stream = ascii.CreateFileStream("mixed-wireless.tr");
-    #wifiPhy.EnableAsciiAll(stream);
-    #csma.EnableAsciiAll(stream);
-    print "(tracing not done for Python)"
-    #  Look at nodes 11, 13 only
-    # WifiHelper.EnableAscii(ascii, 11, 0); 
-    # WifiHelper.EnableAscii(ascii, 13, 0); 
+    ascii = ns.network.AsciiTraceHelper();
+    stream = ascii.CreateFileStream("mixed-wireless.tr");
+    wifiPhy.EnableAsciiAll(stream);
+    csma.EnableAsciiAll(stream);
+    internet.EnableAsciiIpv4All(stream);
 
+    #  Csma captures in non-promiscuous mode
+    csma.EnablePcapAll("mixed-wireless", False)
     #  Let's do a pcap trace on the backbone devices
     wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
-    #  Let's additionally trace the application Sink, ifIndex 0
-    csma = ns.csma.CsmaHelper()
-    csma.EnablePcapAll("mixed-wireless", False)
+    wifiPhy.EnablePcap("mixed-wireless", appSink.GetId(), 0)
 
 #   #ifdef ENABLE_FOR_TRACING_EXAMPLE
 #     Config.Connect("/NodeList/*/$MobilityModel/CourseChange",
diff -Naur ns-3.19/examples/wireless/multirate.cc ns-3.20/examples/wireless/multirate.cc
--- ns-3.19/examples/wireless/multirate.cc	2014-06-17 10:34:00.401636947 -0700
+++ ns-3.20/examples/wireless/multirate.cc	2014-06-17 10:33:13.732997204 -0700
@@ -508,12 +508,11 @@
       phy.EnableAsciiAll (ascii.CreateFileStream (GetOutputFileName () + ".tr"));
     }
 
-  Ptr<FlowMonitor> flowmon;
   FlowMonitorHelper flowmonHelper;
 
   if (enableFlowMon)
     {
-      flowmon = flowmonHelper.InstallAll ();
+      flowmonHelper.InstallAll ();
     }
 
   Simulator::Stop (Seconds (totalTime));
@@ -521,7 +520,7 @@
 
   if (enableFlowMon)
     {
-      flowmon->SerializeToXmlFile ((GetOutputFileName () + ".flomon"), false, false);
+      flowmonHelper.SerializeToXmlFile ((GetOutputFileName () + ".flomon"), false, false);
     }
 
   Simulator::Destroy ();
diff -Naur ns-3.19/examples/wireless/waf ns-3.20/examples/wireless/waf
--- ns-3.19/examples/wireless/waf	2014-06-17 10:34:00.402636940 -0700
+++ ns-3.20/examples/wireless/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/wireless/wscript ns-3.20/examples/wireless/wscript
--- ns-3.19/examples/wireless/wscript	2014-06-17 10:34:00.408636893 -0700
+++ ns-3.20/examples/wireless/wscript	2014-06-17 10:33:13.739997150 -0700
@@ -2,7 +2,7 @@
 
 def build(bld):
     obj = bld.create_ns3_program('mixed-wireless', ['core', 'mobility', 'wifi', 'applications', 'point-to-point', 
-                                                    'internet', 'csma', 'olsr'])
+                                                    'internet', 'csma', 'olsr', 'netanim'])
     obj.source = 'mixed-wireless.cc'
 
     bld.register_ns3_script('mixed-wireless.py', ['core', 'mobility', 'wifi', 'applications', 'point-to-point', 
diff -Naur ns-3.19/.hgignore ns-3.20/.hgignore
--- ns-3.19/.hgignore	2014-06-17 10:34:00.259638043 -0700
+++ ns-3.20/.hgignore	2014-06-17 10:33:13.606998177 -0700
@@ -42,5 +42,7 @@
 \.plt$
 \#[^\#/]+\#$
 ^coverity
+^(D|U)l[A-Z][a-z]*Stats.txt$
 syntax: glob
 TAGS
+waf
diff -Naur ns-3.19/.hgtags ns-3.20/.hgtags
--- ns-3.19/.hgtags	2014-06-17 10:34:00.261638028 -0700
+++ ns-3.20/.hgtags	2014-06-17 10:33:13.608998161 -0700
@@ -66,4 +66,5 @@
 49d343e55caec257bb01e400eef6c14522f37e1b ns-3.16
 b4a70b99171ade6e9628a87780994238950a1df1 ns-3.17
 cfbc9491d7e7c9d346cc042fd35b8afb8836e81f ns-3.18
-a831982d3190a1ff8d4be3c36befc2abf78a6009 ns-3.19
+322102df792e2be6c74df74f776b3470fb1db795 ns-3.19
+0430f8ab48f8177999b5203700dfb0edca1e2056 ns-3.20
diff -Naur ns-3.19/RELEASE_NOTES ns-3.20/RELEASE_NOTES
--- ns-3.19/RELEASE_NOTES	2014-06-17 10:34:00.276637912 -0700
+++ ns-3.20/RELEASE_NOTES	2014-06-17 10:33:13.624998038 -0700
@@ -9,6 +9,115 @@
 Consult the file CHANGES.html for more detailed information about changed
 API and behavior across ns-3 releases.
 
+Release 3.20
+=============
+
+Availability
+------------
+This release is available from:
+http://www.nsnam.org/release/ns-allinone-3.20.tar.bz2
+
+Supported platforms
+-------------------
+- Fedora Core 20 (32/64 bit) with g++-4.8.2
+- Ubuntu 14.04 (32/64 bit) with g++-4.8.2
+- Ubuntu 12.04.4 (64 bit) with g++-4.6.3
+- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
+- CentOS/RHEL 6.5 (64-bit) with g++-4.4.7
+- OS X Mavericks 10.9 with Xcode 5.1.1 and clang-503.0.40
+- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
+
+New user-visible features
+-------------------------
+
+- A new LrWpan model, providing initial support for IEEE 802.15.4 networks
+- A new IPv6 routing protocol has been added: RIPng. This protocol is
+  an Interior Gateway Protocol and it is available in the Internet module.
+- A new LTE MAC downlink scheduling algorithm named Channel and QoS Aware (CQA) 
+  Scheduler is provided by the new ``ns3::CqaFfMacScheduler`` object.
+- The Internet FlowMonitor can now track IPv6 packets.
+- FlowMonitor no longer tracks multicast/broadcast packets, reflecting
+  its original design.
+- FlowMonitor "SerializeToXml" functions are now directly available 
+  from the helper.
+- The SixLowPan model can now use uncompressed IPv6 headers. An option to
+  define the minimum compressed packet size has been added. 
+- Simplify output of Times in a specific unit; see Time::As ()
+- Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace 
+  is now fired when appropriate.
+- IPv4 identification field value is now dependent on the protocol field.
+- Fixes to support Python >= 3.3 in ns3 Python bindings
+- Enable selection of high precision int64x64_t implementation
+  at configure time, for debugging purposes.
+
+Bugs fixed
+----------
+- Bug 1276 - optimize NistErrorRateModel
+- Bug 1294 - New PeekU8 () and Read (Buffer::Iterator start, uint32_t size) methods in Buffer::Iterator
+- Bug 1443 - MinDistance replaced by MinLoss in FriisPropagationLossModel, to
+  better handle conditions outside of the assumed far field region.
+- Bug 1653 - Extension of CommandLine interface: restored operator << (CommandLine)
+- Bug 1717 - Detect unsettable attributes
+- Bug 1730 - no model library documentation for spectrum module
+- Bug 1739 - The endpoint is not deallocated for UDP sockets
+- Bug 1786 - os << int64x64_t prints un-normalized fractional values
+- Bug 1787 - Runtime error when using AnimationInterface::EnablePacketMetadata() to fetch metadata of CSMA packet
+- Bug 1792 - Parameter logger constructor
+- Bug 1808 - FlowMon relies on IPv4's Identification field to trace packets
+- Bug 1817 - IPv4 Identification field should consider protocol as well.
+- Bug 1818 - FlowMonitor needs IPv6 support
+- Bug 1820 - models library doc: make should not rm -rf figures
+- Bug 1821 - Setting an interface to Down state will cause various asserts in IPv6
+- Bug 1829 - Multiple TCP socket entries
+- Bug 1837 - AODV crashes when using multiple interfaces
+- Bug 1838 - FlowMonitorHelper must not be copied.
+- Bug 1841 - FlowMonitor fails to install if IPv4 is not installed in the node
+- Bug 1842 - FlowMonitor SerializeToXml<Something> should be called by the helper
+- Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
+- Bug 1845 - FlowMonitor should discard any broadcast/multicast packet
+- Bug 1846 - IPv6 should send Destination Unreachable if no route is available
+- Bug 1850 - TCP NewReno loss behavior
+- Bug 1852 - cairo-wideint-private.h error cannot find definitions for fixed-width integral types
+- Bug 1853 - NS_LOG_FUNCTION broken on OSX 10.9
+- Bug 1855 - SixLowPanNetDevice is not correctly indexed
+- Bug 1857 - Detect location of installed boost libraries
+- Bug 1862 - NS_LOG="Time=*|prefix_time" causes stack overflow
+- Bug 1868 - Optimized builds are sensitive to -fstrict-overflow
+- Bug 1870 - Remove unnecessary AsInt functions
+- Bug 1872 - Inside RREQ processing, in case of IP duplication, packet dropped instead of being forwarded
+- Bug 1873 - Energy source checked to be aggregated to the node
+- Bug 1874 - Ipv4L3Protocol::ProcessFragment: addressCombination and idProto identifiers not properly computed
+- Bug 1876 - enable OLSR HNA table access
+- Bug 1877 - constructors missing for PropagationLossModels
+- Bug 1882 - int64x64 tests trigger valgrind bug
+- Bug 1883 - IPv6 don't consider the prefix and network when choosing output address
+- Bug 1885 - WifiSpectrumValue5MhzFactory::CreateRfFilter does not align with the used 5Mhz SpectrumModel
+- Bug 1887 - Point-to-point traces should contain PPP headers
+- Bug 1888 - COST231 propagation loss model: corrections
+- Bug 1889 - PointToPointNetDevice: In some cases MacTxDrop trace is not called
+- Bug 1890 - UdpClientTrace: MPEG frame size is squeezed into (insufficient) 16 bit integer
+- Bug 1891 - UdpSocketImpl::GetSockName doesn't return the IPv6 address
+- Bug 1894 - CqaFfMacScheduler needs an update
+- Bug 1895 - IP header Source Address changed while forwarding RREQ
+- Bug 1900 - Avoid floating point differences across platforms in test outputs
+- Bug 1903 - Namespace usage in olsr-state.cc/h
+- Bug 1907 - Add IsSupportedMcs method in YansWifiPhy
+- Bug 1912 - Avoid multiple Wifi MacTxMiddle instances
+- Bug 1913 - Avoid crash in Wifi BlockAckManager::GetNextPacket()
+- Bug 1915 - BRITE channel delay is rounded to an integer
+- Bug 1916 - RandomWalk2dMobilityMode default "Bounds" attribute is not a rectangle
+- Bug 1919 - Strip trailing semi-colons from mobility trace files
+- Bug 1920 - Remove DSR attributes so file can be re-loaded by config-store
+- Bug 1922 - WAVE GetSsid should not be fatal
+- Bug 1923 - Setting Active Probing to false in Wifi Sta has no effect
+- Bug 1924 - sensing radius and CCA
+
+Known issues
+------------
+- Bug 1770 - The mesh module will crash if used for g++ version >= 4.8.1
+in optimized mode, on a 32-bit Linux machine.  Lowering the optimization
+level to -O1 in this case can be used as a workaround.
+
 Release 3.19
 =============
 
@@ -115,6 +224,7 @@
 - Bug 1814 - IPv6 Packet with length not multiple of 8 bytes are fragmented incorrectly.
 - Bug 1815 - Python bindings compilation with clang compiler toolchain
 - Bug 1816 - IPv4 fragmentation loses Packet tags
+- Bug 1877 - constructor missing for <something>PropagationLossModels
 
 Release 3.18.2
 ==============
diff -Naur ns-3.19/src/antenna/bindings/modulegen__gcc_ILP32.py ns-3.20/src/antenna/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/antenna/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.411636870 -0700
+++ ns-3.20/src/antenna/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.741997135 -0700
@@ -102,17 +102,17 @@
     module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -136,12 +136,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
diff -Naur ns-3.19/src/antenna/bindings/modulegen__gcc_LP64.py ns-3.20/src/antenna/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/antenna/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.412636862 -0700
+++ ns-3.20/src/antenna/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.742997127 -0700
@@ -102,17 +102,17 @@
     module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -136,12 +136,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
diff -Naur ns-3.19/src/antenna/model/antenna-model.cc ns-3.20/src/antenna/model/antenna-model.cc
--- ns-3.19/src/antenna/model/antenna-model.cc	2014-06-17 10:34:00.416636831 -0700
+++ ns-3.20/src/antenna/model/antenna-model.cc	2014-06-17 10:33:13.746997096 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (AntennaModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AntennaModel);
 
 
 AntennaModel::AntennaModel ()
diff -Naur ns-3.19/src/antenna/model/cosine-antenna-model.cc ns-3.20/src/antenna/model/cosine-antenna-model.cc
--- ns-3.19/src/antenna/model/cosine-antenna-model.cc	2014-06-17 10:34:00.417636824 -0700
+++ ns-3.20/src/antenna/model/cosine-antenna-model.cc	2014-06-17 10:33:13.747997088 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (CosineAntennaModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CosineAntennaModel);
 
 
 TypeId 
diff -Naur ns-3.19/src/antenna/model/isotropic-antenna-model.cc ns-3.20/src/antenna/model/isotropic-antenna-model.cc
--- ns-3.19/src/antenna/model/isotropic-antenna-model.cc	2014-06-17 10:34:00.418636816 -0700
+++ ns-3.20/src/antenna/model/isotropic-antenna-model.cc	2014-06-17 10:33:13.748997081 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (IsotropicAntennaModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (IsotropicAntennaModel);
 
 
 TypeId 
diff -Naur ns-3.19/src/antenna/model/parabolic-antenna-model.cc ns-3.20/src/antenna/model/parabolic-antenna-model.cc
--- ns-3.19/src/antenna/model/parabolic-antenna-model.cc	2014-06-17 10:34:00.419636808 -0700
+++ ns-3.20/src/antenna/model/parabolic-antenna-model.cc	2014-06-17 10:33:13.748997081 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ParabolicAntennaModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ParabolicAntennaModel);
 
 
 TypeId 
diff -Naur ns-3.19/src/antenna/test/test-angles.cc ns-3.20/src/antenna/test/test-angles.cc
--- ns-3.19/src/antenna/test/test-angles.cc	2014-06-17 10:34:00.419636808 -0700
+++ ns-3.20/src/antenna/test/test-angles.cc	2014-06-17 10:33:13.749997073 -0700
@@ -26,7 +26,7 @@
 #include <iostream>
 #include <sstream>
 
-namespace ns3 {
+using namespace ns3;
 
 class OneVectorConstructorTestCase : public TestCase
 {
@@ -209,8 +209,3 @@
 };
 
 static AnglesTestSuite staticAnglesTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-cosine-antenna.cc ns-3.20/src/antenna/test/test-cosine-antenna.cc
--- ns-3.19/src/antenna/test/test-cosine-antenna.cc	2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/antenna/test/test-cosine-antenna.cc	2014-06-17 10:33:13.750997065 -0700
@@ -31,7 +31,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("TestCosineAntennaModel");
 
-namespace ns3 {
+using namespace ns3;
 
 enum CosineAntennaModelGainTestCondition  {
   EQUAL = 0,
@@ -204,8 +204,3 @@
 };
 
 static CosineAntennaModelTestSuite staticCosineAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-degrees-radians.cc ns-3.20/src/antenna/test/test-degrees-radians.cc
--- ns-3.19/src/antenna/test/test-degrees-radians.cc	2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/antenna/test/test-degrees-radians.cc	2014-06-17 10:33:13.750997065 -0700
@@ -26,7 +26,7 @@
 #include <iostream>
 #include <sstream>
 
-namespace ns3 {
+using namespace ns3;
 
 class DegreesToRadiansTestCase : public TestCase
 {
@@ -132,8 +132,3 @@
 };
 
 static DegreesRadiansTestSuite staticDegreesRadiansTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-isotropic-antenna.cc ns-3.20/src/antenna/test/test-isotropic-antenna.cc
--- ns-3.19/src/antenna/test/test-isotropic-antenna.cc	2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/antenna/test/test-isotropic-antenna.cc	2014-06-17 10:33:13.750997065 -0700
@@ -26,7 +26,7 @@
 #include <iostream>
 #include <sstream>
 
-namespace ns3 {
+using namespace ns3;
 
 class IsotropicAntennaModelTestCase : public TestCase
 {
@@ -90,8 +90,3 @@
 };
 
 static IsotropicAntennaModelTestSuite staticIsotropicAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-parabolic-antenna.cc ns-3.20/src/antenna/test/test-parabolic-antenna.cc
--- ns-3.19/src/antenna/test/test-parabolic-antenna.cc	2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/antenna/test/test-parabolic-antenna.cc	2014-06-17 10:33:13.751997058 -0700
@@ -31,7 +31,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("TestParabolicAntennaModel");
 
-namespace ns3 {
+using namespace ns3;
 
 enum ParabolicAntennaModelGainTestCondition  {
   EQUAL = 0,
@@ -183,8 +183,3 @@
 };
 
 static ParabolicAntennaModelTestSuite staticParabolicAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/aodv/bindings/modulegen__gcc_ILP32.py ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/aodv/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.428636739 -0700
+++ ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.757997011 -0700
@@ -102,12 +102,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -148,6 +142,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -168,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## aodv-helper.h (module 'aodv'): ns3::AodvHelper [class]
     module.add_class('AodvHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -180,10 +178,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -296,10 +290,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -326,8 +316,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -370,8 +358,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -400,12 +388,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -460,8 +448,8 @@
     module.add_class('RreqHeader', parent=root_module['ns3::Header'])
     ## aodv-packet.h (module 'aodv'): ns3::aodv::TypeHeader [class]
     module.add_class('TypeHeader', parent=root_module['ns3::Header'])
-    module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
+    module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -491,7 +479,6 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
@@ -509,6 +496,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -520,7 +508,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -571,7 +558,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -584,7 +570,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -871,6 +856,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -883,6 +872,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1781,61 +1774,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2517,6 +2455,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2800,61 +2746,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -2862,6 +2764,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2902,6 +2806,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3AodvHelper_methods(root_module, cls):
@@ -3156,106 +3062,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4163,12 +3969,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4194,6 +4002,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5647,63 +5460,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -6127,6 +5883,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6460,151 +6221,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -7259,10 +6875,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/aodv/bindings/modulegen__gcc_LP64.py ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/aodv/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.433636700 -0700
+++ ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.762996973 -0700
@@ -102,12 +102,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -148,6 +142,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -168,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## aodv-helper.h (module 'aodv'): ns3::AodvHelper [class]
     module.add_class('AodvHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -180,10 +178,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -296,10 +290,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -326,8 +316,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -370,8 +358,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -400,12 +388,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -460,8 +448,8 @@
     module.add_class('RreqHeader', parent=root_module['ns3::Header'])
     ## aodv-packet.h (module 'aodv'): ns3::aodv::TypeHeader [class]
     module.add_class('TypeHeader', parent=root_module['ns3::Header'])
-    module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
+    module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -491,7 +479,6 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
@@ -509,6 +496,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -520,7 +508,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -571,7 +558,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -584,7 +570,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -871,6 +856,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -883,6 +872,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1781,61 +1774,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2517,6 +2455,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2800,61 +2746,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -2862,6 +2764,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2902,6 +2806,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3AodvHelper_methods(root_module, cls):
@@ -3156,106 +3062,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4163,12 +3969,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4194,6 +4002,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5647,63 +5460,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -6127,6 +5883,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6460,151 +6221,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -7259,10 +6875,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/aodv/model/aodv-packet.cc ns-3.20/src/aodv/model/aodv-packet.cc
--- ns-3.19/src/aodv/model/aodv-packet.cc	2014-06-17 10:34:00.438636662 -0700
+++ ns-3.20/src/aodv/model/aodv-packet.cc	2014-06-17 10:33:13.767996934 -0700
@@ -34,8 +34,7 @@
 namespace aodv
 {
 
-NS_OBJECT_ENSURE_REGISTERED (TypeHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TypeHeader);
 
 TypeHeader::TypeHeader (MessageType t) :
   m_type (t), m_valid (true)
@@ -147,8 +146,7 @@
 {
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RreqHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RreqHeader);
 
 TypeId
 RreqHeader::GetTypeId ()
@@ -287,8 +285,7 @@
   m_lifeTime = uint32_t (lifeTime.GetMilliSeconds ());
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RrepHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RrepHeader);
 
 TypeId
 RrepHeader::GetTypeId ()
@@ -430,8 +427,7 @@
 {
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RrepAckHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RrepAckHeader);
   
 TypeId
 RrepAckHeader::GetTypeId ()
@@ -497,8 +493,7 @@
 {
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RerrHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RerrHeader);
 
 TypeId
 RerrHeader::GetTypeId ()
diff -Naur ns-3.19/src/aodv/model/aodv-routing-protocol.cc ns-3.20/src/aodv/model/aodv-routing-protocol.cc
--- ns-3.19/src/aodv/model/aodv-routing-protocol.cc	2014-06-17 10:34:00.439636654 -0700
+++ ns-3.20/src/aodv/model/aodv-routing-protocol.cc	2014-06-17 10:33:13.769996919 -0700
@@ -48,8 +48,7 @@
 {
 namespace aodv
 {
-NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol);
 
 /// UDP Port for AODV control traffic
 const uint32_t RoutingProtocol::AODV_PORT = 654;
@@ -112,8 +111,7 @@
   int32_t m_oif;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (DeferredRouteOutputTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DeferredRouteOutputTag);
 
 
 //-----------------------------------------------------------------------------
@@ -1746,7 +1744,7 @@
             { 
               destination = iface.GetBroadcast ();
             }
-          socket->SendTo (packet, 0, InetSocketAddress (destination, AODV_PORT));
+          socket->SendTo (packet->Copy (), 0, InetSocketAddress (destination, AODV_PORT));
         }
     }
 }
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-0-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-0-0.pcap	2014-06-17 10:34:00.442636631 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap	2014-06-17 10:33:13.772996895 -0700
@@ -1,4 +1,4 @@
-ò            i         X   X                     E  4     
+ò            i         X   X                     E  4      
 
     (     
     
@@ -22,73 +22,74 @@
      
                 Ԁ               A  x   x   <                0     E  T    @  
 
-                                                                       5        Ԁ               	  @   @               P            
+                                                                       6        Ԁ               
+  @   @               P            
 
                 Ԁ                 x   x   <                `     E  T    ?  
 
-                                                                       H  T   T               @     E  0     
+                                                                       H  T   T               @     E  0     
 
       
    
-                  Ԁ                 x   x   <                p     E  T   =  
+                  Ԁ                 x   x   <                p     E  T    =  
 
-                                                                                Ԁ                  x   x   <                P     E  T   @  
+                                                                                Ԁ                  x   x   <                P     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              p  x   x   <                     E  T   =  
+                                                                             Ԁ              p  x   x   <                     E  T   =  
 
                                                                               Ԁ              ((  T   T                    E  0     
 
       
     
-          T   T               `     E  0     
+          T   T               `     E  0     
 
       
    
-             x   x   <                p     E  T   @  
+             x   x   <                p     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              p  x   x   <                     E  T   =  
+                                                                             Ԁ              p  x   x   <                     E  T   =  
 
                                                                               Ԁ                T   T                    E  0     
 
       
     
-         	 T   T                    E  0     
+         	 T   T                    E  0     
 
       
    
-             x   x   <                     E  T   @  
+             x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   =  
+                                                                             Ԁ                x   x   <                     E  T   =  
 
                                                                               Ԁ                T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
    
-             x   x   <                     E  T 	  @  
+             x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                    E  T 	  ?  
+                                                                              Ԁ                x   x   <                    E  T   ?  
 
-                                                                       x   x   <                    E  T 	  ?  
+                                                                       x   x   <                    E  T   ?  
 
-                                                                     `  x   x   <                    E  T 	  ?  
+                                                                     `  x   x   <                    E  T   ?  
 
-                                                                       x   x   <                    E  T 	  ?  
+                                                                       x   x   <                    E  T   ?  
 
-                                                                       x   x   <                    E  T 	  ?  
+                                                                       x   x   <                    E  T   ?  
 
-                                                                     !  x   x   <                    E  T 	  ?  
+                                                                     !  x   x   <                    E  T   ?  
 
-                                                                     *  x   x   <                    E  T 	  ?  
+                                                                     *  x   x   <                    E  T   ?  
 
                                                                      +  T   T                    E  0     
 
@@ -98,12 +99,11 @@
 
      
     
-           F        Ԁ              	 T   T                    E  0 
-    
+           F        Ԁ              	 T   T                    E  0     
 
       
    
-           X   X                    E  4     
+           X   X                    E  4     
 
           
     
@@ -115,7 +115,7 @@
 
          
     
-          (#  T   T                    E  0     
+          (#  T   T                    E  0     
 
       
    
@@ -123,7 +123,7 @@
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
    
@@ -132,7 +132,7 @@
 
       
     
-         'X X   X                    E  4     
+         'X X   X                    E  4 	    
 
           
     
@@ -140,7 +140,8 @@
 
          
     
-          @ T   T                   E  0     
+          @ T   T                   E  0 
+    
 
       
    
@@ -148,7 +149,7 @@
 
       
     
-      	   < T   T                    E  0     
+      	   < T   T                    E  0     
 
       
    
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-1-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-1-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-1-0.pcap	2014-06-17 10:34:00.443636623 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-1-0.pcap	2014-06-17 10:33:13.773996888 -0700
@@ -1,4 +1,4 @@
-ò            i       `  X   X                     E  4     
+ò            i       `  X   X                     E  4      
 
     (     
     
@@ -22,9 +22,9 @@
     
   +                Ԁ               ?  @   @                            
 
-        A  @   @   <                            
+        B  @   @   <                            
      
-        Q        Ԁ               բ  T   T   <                0     E  0     
+        R        Ԁ               ֢  T   T   <                0     E  0     
 
      
     
@@ -40,21 +40,21 @@
      
                 Ԁ               T  x   x   <                `     E  T    ?  
 
-                                                                       I        Ԁ                       Ԁ               "  x   x   <                `     E  T    >  
+                                                                       I        Ԁ                       Ԁ               #  x   x   <                `     E  T    >  
 
-                                                                               Ԁ                 x   x   <                p     E  T   >  
+                                                                               Ԁ                 x   x   <                p     E  T    >  
 
-                                                                                Ԁ                 x   x   <                p     E  T   =  
+                                                                                Ԁ                 x   x   <                p     E  T    =  
 
-                                                                                Ԁ                 x   x   <                P     E  T   @  
+                                                                                Ԁ                 x   x   <                P     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   >  
+                                                                             Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              Y  x   x   <                     E  T   >  
+                                                                             Ԁ              Y  x   x   <                     E  T   >  
 
-                                                                      i        Ԁ                x   x   <                     E  T   =  
+                                                                      i        Ԁ                x   x   <                     E  T   =  
 
                                                                               Ԁ              '  T   T                    E  0     
 
@@ -64,19 +64,19 @@
 
       
     
-         @ T   T               `     E  0     
+         @ T   T               `     E  0     
 
       
    
-            x   x   <                p     E  T   @  
+            x   x   <                p     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   >  
+                                                                             Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              Y  x   x   <                     E  T   >  
+                                                                             Ԁ              Y  x   x   <                     E  T   >  
 
-                                                                      i        Ԁ                x   x   <                     E  T   =  
+                                                                      i        Ԁ                x   x   <                     E  T   =  
 
                                                                               Ԁ                T   T                    E  0     
 
@@ -87,19 +87,19 @@
       
     
          (
- T   T                    E  0     
+ T   T                    E  0     
 
       
    
-            x   x   <                     E  T   @  
+            x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   >  
+                                                                             Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ                x   x   <                     E  T   >  
+                                                                             Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ                x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
                                                                       	        Ԁ                T   T                    E  0     
 
@@ -109,25 +109,25 @@
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
    
-            x   x   <                     E  T 	  @  
+            x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                    E  T 	  ?  
+                                                                              Ԁ                x   x   <                    E  T   ?  
 
-                                                                     V  x   x   <                    E  T 	  ?  
+                                                                     V  x   x   <                    E  T   ?  
 
-                                                                       x   x   <                    E  T 	  ?  
+                                                                       x   x   <                    E  T   ?  
 
-                                                                     1  x   x   <                    E  T 	  ?  
+                                                                     1  x   x   <                    E  T   ?  
 
-                                                                     6  x   x   <                    E  T 	  ?  
+                                                                     6  x   x   <                    E  T   ?  
 
-                                                                        x   x   <                    E  T 	  ?  
+                                                                        x   x   <                    E  T   ?  
 
-                                                                     )  x   x   <                    E  T 	  ?  
+                                                                     )  x   x   <                    E  T   ?  
 
                                                                      N+  T   T                    E  0     
 
@@ -138,12 +138,11 @@
      
     
            F        Ԁ              (
- T   T                    E  0 
-    
+ T   T                    E  0     
 
       
    
-           X   X                    E  4     
+           X   X                    E  4     
 
           
     
@@ -155,7 +154,7 @@
 
          
     
-          #  T   T                    E  0     
+          #  T   T                    E  0     
 
       
    
@@ -163,7 +162,7 @@
 
       
     
-         X  T   T                    E  0     
+         X  T   T                    E  0     
 
       
    
@@ -172,7 +171,7 @@
 
       
     
-         X X   X                    E  4     
+         X X   X                    E  4 	    
 
           
     
@@ -180,7 +179,8 @@
 
          
     
-          @A T   T                   E  0     
+          @A T   T                   E  0 
+    
 
       
    
@@ -188,7 +188,7 @@
 
       
     
-      	   X= T   T                    E  0     
+      	   X= T   T                    E  0     
 
       
    
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-2-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-2-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-2-0.pcap	2014-06-17 10:34:00.443636623 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-2-0.pcap	2014-06-17 10:33:13.773996888 -0700
@@ -20,11 +20,11 @@
 
         މ  @   @   <                            
      
-                Ԁ               a  T   T   <                @     E  0     
+                Ԁ               b  T   T   <                @     E  0     
 
      
     
-  +        q        Ԁ               I  @   @                            
+  +        r        Ԁ               J  @   @                            
 
         L  @   @   <                            
      
@@ -40,9 +40,10 @@
     
   +          @   @   <                @            
      
-        5        Ԁ               	  @   @               P            
+        6        Ԁ               
+  @   @               P            
 
-        +  @   @   <                @            
+        ,  @   @   <                @            
      
                 Ԁ                 x   x   <                `     E  T    ?  
 
@@ -56,23 +57,23 @@
 
                 Ԁ                 x   x   <                p     E  T    =  
 
-                                                                       O        Ԁ                 x   x   <                     E  T   ?  
+                                                                       P        Ԁ                 x   x   <                     E  T    ?  
 
-                                                                                Ԁ                 x   x   <                p     E  T   >  
+                                                                                Ԁ                 x   x   <                p     E  T    >  
 
-                                                                                Ԁ                 x   x   <                p     E  T   =  
+                                                                                Ԁ                 x   x   <                p     E  T    =  
 
-                                                                                Ԁ                x   x   <                     E  T   ?  
+                                                                                Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              ,  x   x   <                     E  T   >  
+                                                                             Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
 
-                                                                      S        Ԁ                x   x   <                     E  T   >  
+                                                                      S        Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ              p  x   x   <                     E  T   =  
+                                                                              Ԁ              p  x   x   <                     E  T   =  
 
                                                                       ((  T   T                    E  0     
 
@@ -86,17 +87,17 @@
 
       
     
-                  Ԁ                x   x   <                     E  T   ?  
+                  Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              ,  x   x   <                     E  T   >  
+                                                                             Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
 
-                                                                      S        Ԁ                x   x   <                     E  T   >  
+                                                                      S        Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ              p  x   x   <                     E  T   =  
+                                                                              Ԁ              p  x   x   <                     E  T   =  
 
                                                                         T   T                    E  0     
 
@@ -110,17 +111,17 @@
 
       
     
-                  Ԁ                x   x   <                     E  T   ?  
+                  Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              ,  x   x   <                     E  T   >  
+                                                                             Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ                x   x   <                     E  T   ?  
+                                                                     N        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ                x   x   <                     E  T   >  
+                                                                              Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ                x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
                                                                         T   T                    E  0     
 
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-3-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-3-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-3-0.pcap	2014-06-17 10:34:00.444636615 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-3-0.pcap	2014-06-17 10:33:13.774996880 -0700
@@ -10,9 +10,9 @@
 
       
     
-          s  @   @                            
+          s  @   @                            
 
-        t  @   @   <                             
+        t  @   @   <                             
      
         t        Ԁ               u  T   T   <                     E  0      
 
@@ -38,33 +38,33 @@
 
         '  @   @   <                P            
      
-                Ԁ               "  x   x   <                `     E  T    >  
+                Ԁ               #  x   x   <                `     E  T    >  
 
-                                                                       2        Ԁ                 @   @               `            
+                                                                       3        Ԁ                 @   @               `            
 
           @   @   <                             
      
                 Ԁ               D  x   x   <                p     E  T    =  
 
-                                                                       9        Ԁ                 x   x   <                0     E  T   @  
+                                                                       9        Ԁ                 x   x   <                0     E  T    @  
 
-                                                                        #        Ԁ                 x   x   <                     E  T   ?  
+                                                                        #        Ԁ                 x   x   <                     E  T    ?  
 
-                                                                                Ԁ                 x   x   <                p     E  T   >  
+                                                                                Ԁ                 x   x   <                p     E  T    >  
 
-                                                                         T   T               @     E  0     
+                                                                         T   T               @     E  0     
 
       
     
-                 Ԁ                x   x   <                     E  T   >  
+                 Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
-                                                                     7        Ԁ                x   x   <                P     E  T   @  
+                                                                     8        Ԁ                x   x   <                P     E  T   @  
 
-                                                                      !        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ              Y  x   x   <                     E  T   >  
+                                                                              Ԁ              Y  x   x   <                     E  T   >  
 
                                                                       0  T   T                    E  0     
 
@@ -74,19 +74,19 @@
 
       
     
-         X T   T               `     E  0     
+         X T   T               `     E  0     
 
       
     
-                 Ԁ                x   x   <                     E  T   >  
+                 Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
-                                                                     7        Ԁ                x   x   <                p     E  T   @  
+                                                                     8        Ԁ                x   x   <                p     E  T   @  
 
-                                                                      !        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ              Y  x   x   <                     E  T   >  
+                                                                              Ԁ              Y  x   x   <                     E  T   >  
 
                                                                          T   T                    E  0     
 
@@ -96,19 +96,19 @@
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
-                 Ԁ                x   x   <                     E  T   >  
+                 Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
-                                                                     7        Ԁ                x   x   <                     E  T   @  
+                                                                     8        Ԁ                x   x   <                     E  T   @  
 
-                                                                      !        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ                x   x   <                     E  T   >  
+                                                                              Ԁ                x   x   <                     E  T   >  
 
                                                                       D  T   T                    E  0     
 
@@ -118,7 +118,7 @@
 
       
     
-          T   T                    E  0     
+          T   T                    E  0     
 
       
     
@@ -126,7 +126,7 @@
 
       
     
-          T   T                    E  0 	    
+          T   T                    E  0     
 
       
     
@@ -134,8 +134,7 @@
 
       
     
-           T   T                    E  0 
-    
+           T   T                    E  0     
 
       
     
@@ -143,11 +142,11 @@
 
       
     
-         z T   T   <                P    E  0 	    
+         { T   T   <                P    E  0 	    
 
      
    
-           ?       Ԁ               T   T                    E  0     
+           ?       Ԁ               T   T                    E  0     
 
       
     
@@ -156,7 +155,7 @@
 
       
     
-          T   T                    E  0     
+          T   T                    E  0     
 
       
     
@@ -164,7 +163,7 @@
 
       
     
-           T   T                    E  0     
+           T   T                    E  0 	    
 
       
     
@@ -172,7 +171,8 @@
 
       
     
-      	   X T   T                    E  0     
+      	   X T   T                    E  0 
+    
 
       
     
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-4-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-4-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-4-0.pcap	2014-06-17 10:34:00.444636615 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-4-0.pcap	2014-06-17 10:33:13.774996880 -0700
@@ -16,7 +16,7 @@
     
   +         v        Ԁ                 @   @               0            
 
-                Ԁ               a  T   T   <                @     E  0     
+                Ԁ               b  T   T   <                @     E  0     
 
      
     
@@ -28,53 +28,53 @@
      
                 Ԁ                 x   x   <                p     E  T    =  
 
-                                                                               Ԁ               [  x   x   <                0     E  T   @  
+                                                                               Ԁ               [  x   x   <                0     E  T    @  
 
-                                                                        O        Ԁ                 x   x   <                     E  T   ?  
+                                                                        P        Ԁ                 x   x   <                     E  T    ?  
 
-                                                                        X T   T               @     E  0     
+                                                                        X T   T               @     E  0     
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
-                                                                             Ԁ              Y  x   x   <                P     E  T   @  
+                                                                             Ԁ              Y  x   x   <                P     E  T   @  
 
-                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
 
                                                                       @  T   T                    E  0     
 
       
     
-          T   T               `     E  0     
+          T   T               `     E  0     
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
-                                                                             Ԁ              Y  x   x   <                p     E  T   @  
+                                                                             Ԁ              Y  x   x   <                p     E  T   @  
 
-                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
 
                                                                       H  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
-                                                                             Ԁ              Y  x   x   <                     E  T   @  
+                                                                             Ԁ              Y  x   x   <                     E  T   @  
 
-                                                                      N        Ԁ                x   x   <                     E  T   ?  
+                                                                      N        Ԁ                x   x   <                     E  T   ?  
 
                                                                       AT  T   T                   E  0     
 
       
     
-          T   T                    E  0     
+          T   T                    E  0     
 
       
     
@@ -82,7 +82,7 @@
 
       
     
-          T   T                    E  0 	    
+          T   T                    E  0     
 
       
     
@@ -90,8 +90,7 @@
 
       
     
-            T   T                    E  0 
-    
+            T   T                    E  0     
 
       
     
@@ -103,7 +102,7 @@
 
      
    
-                  Ԁ              @ T   T                    E  0     
+                  Ԁ              @ T   T                    E  0     
 
       
     
@@ -112,7 +111,7 @@
 
       
     
-         X T   T                    E  0     
+         X T   T                    E  0     
 
       
     
@@ -120,7 +119,7 @@
 
       
     
-            T   T                    E  0     
+            T   T                    E  0 	    
 
       
     
@@ -128,7 +127,8 @@
 
       
     
-      	    T   T                    E  0     
+      	    T   T                    E  0 
+    
 
       
     
diff -Naur ns-3.19/src/aodv/test/aodv-regression.cc ns-3.20/src/aodv/test/aodv-regression.cc
--- ns-3.19/src/aodv/test/aodv-regression.cc	2014-06-17 10:34:00.445636607 -0700
+++ ns-3.20/src/aodv/test/aodv-regression.cc	2014-06-17 10:33:13.775996872 -0700
@@ -44,8 +44,8 @@
 #include "ns3/rng-seed-manager.h"
 #include <sstream>
 
-namespace ns3 {
-namespace aodv {
+using namespace ns3;
+using namespace aodv;
 //-----------------------------------------------------------------------------
 // Test suite
 //-----------------------------------------------------------------------------
@@ -192,6 +192,3 @@
       NS_PCAP_TEST_EXPECT_EQ (m_prefix << "-" << i << "-0.pcap");
     }
 }
-
-}
-}
diff -Naur ns-3.19/src/aodv/test/aodv-regression.h ns-3.20/src/aodv/test/aodv-regression.h
--- ns-3.19/src/aodv/test/aodv-regression.h	2014-06-17 10:34:00.445636607 -0700
+++ ns-3.20/src/aodv/test/aodv-regression.h	2014-06-17 10:33:13.776996865 -0700
@@ -25,8 +25,7 @@
 #include "ns3/nstime.h"
 #include "ns3/node-container.h"
 
-namespace ns3 {
-namespace aodv {
+using namespace ns3;
 
 /**
  * \ingroup aodv
@@ -189,7 +188,4 @@
   void DoRun ();
 };
 
-}
-}
-
 #endif /* AODV_REGRESSION_H */
diff -Naur ns-3.19/src/aodv/test/bug-606-test-0-0.pcap ns-3.20/src/aodv/test/bug-606-test-0-0.pcap
--- ns-3.19/src/aodv/test/bug-606-test-0-0.pcap	2014-06-17 10:34:00.447636592 -0700
+++ ns-3.20/src/aodv/test/bug-606-test-0-0.pcap	2014-06-17 10:33:13.777996857 -0700
@@ -1,4 +1,4 @@
-ò            i         X   X                     E  4     
+ò            i         X   X                     E  4      
 
     (     
     
@@ -18,11 +18,11 @@
     
   +        K        Ԁ               1W  @   @                            
 
-        3X  @   @   <                @            
+        4X  @   @   <                @            
      
-        CX        Ԁ               X  x   x   <                0     E  T    @  
+        DX        Ԁ               X  x   x   <                0     E  T    @  
 
-                                                                       Y        Ԁ               Hq  T   T               @     E  0     
+                                                                       Y        Ԁ               Hq  T   T               @     E  0     
 
       
    
@@ -30,19 +30,19 @@
 
         #z        Ԁ               W{  x   x   <                `     E  T    ?  
 
-                                                                       |        Ԁ               }  x   x   <                p     E  T   ?  
+                                                                       |        Ԁ               }  x   x   <                p     E  T    ?  
 
-                                                                        }        Ԁ                  x   x   <                P     E  T   @  
+                                                                        }        Ԁ                  x   x   <                P     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                     !        Ԁ              1  x   x   <                     E  T   ?  
+                                                                     !        Ԁ              1  x   x   <                     E  T   ?  
 
                                                                       A        Ԁ                T   T                    E  0     
 
       
     
-         Hq  T   T               `     E  0     
+         Hq  T   T               `     E  0     
 
       
    
@@ -50,7 +50,7 @@
 
        *$  @   @   <                            
      
-       :$        Ԁ              $  x   x   <                     E  T   @  
+       :$        Ԁ              $  x   x   <                     E  T   @  
 
                                                                      %        Ԁ              /  T   T                    E  0     
 
@@ -58,68 +58,68 @@
     
          fE  @   @                           
 
-       5F        Ԁ              G  x   x   <                     E  T   ?  
+       5F        Ԁ              G  x   x   <                     E  T   ?  
 
-                                                                     R  T   T                    E  0     
+                                                                     R  T   T                    E  0     
 
       
    
          \  @   @   <                            
      
-       ]        Ԁ              |  @   @                           
+       ]        Ԁ              |  @   @                           
 
-       }  @   @   <                            
+       }  @   @   <                            
      
-       }        Ԁ              ~  x   x   <                    E  T   ?  
+       }        Ԁ              ~  x   x   <                    E  T   ?  
 
-                                                                      ~        Ԁ                  x   x   <                     E  T   @  
+                                                                      ~        Ԁ                  x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                     !        Ԁ                x   x   <                0    E  T   ?  
+                                                                     !        Ԁ                x   x   <                0    E  T   ?  
 
                                                                               Ԁ                T   T               @    E  0     
 
       
     
-         e  T   T                    E  0     
+         e  T   T                    E  0     
 
       
    
          (#  @   @                           
 
-       0u  T   T                    E  0 
-    
+       0u  T   T                    E  0     
 
       
    
              @   @                           
 
-       U  T   T                    E  0     
+       U  T   T                    E  0     
 
       
    
              @   @                          
 
-       Hq  T   T                    E  0     
+       Hq  T   T                    E  0     
 
       
    
              @   @               0           
 
-         X   X               @    E  4     
+         X   X               @    E  4     
 
           
     
-          '  T   T               P    E  0     
+          '  T   T               P    E  0 	    
 
       
    
-      	   (#  T   T               `    E  0     
+      	   (#  T   T               `    E  0 
+    
 
       
    
-      	   @ X   X               p    E  4     
+      	   @ X   X               p    E  4     
 
           
     
diff -Naur ns-3.19/src/aodv/test/bug-606-test-1-0.pcap ns-3.20/src/aodv/test/bug-606-test-1-0.pcap
--- ns-3.19/src/aodv/test/bug-606-test-1-0.pcap	2014-06-17 10:34:00.447636592 -0700
+++ ns-3.20/src/aodv/test/bug-606-test-1-0.pcap	2014-06-17 10:33:13.778996849 -0700
@@ -1,4 +1,4 @@
-ò            i       `  X   X                     E  4     
+ò            i       `  X   X                     E  4      
 
     (     
     
@@ -10,11 +10,11 @@
 
         (  @   @   <                            
      
-        o)        Ԁ               *  T   T   <                     E  0      
+        p)        Ԁ               *  T   T   <                     E  0      
 
       
     
-  +        )*        Ԁ               YI  @   @                            
+  +        **        Ԁ               ZI  @   @                            
 
         \J  @   @   <                            
      
@@ -28,7 +28,7 @@
      
         pX        Ԁ               Y  x   x   <                0     E  T    @  
 
-                                                                       Y        Ԁ               q  T   T               @     E  0     
+                                                                       Y        Ԁ               q  T   T               @     E  0     
 
       
    
@@ -38,31 +38,31 @@
      
         y        Ԁ               z  x   x   <                `     E  T    ?  
 
-                                                                       {        Ԁ               |  x   x   <                0     E  T   @  
+                                                                       {        Ԁ               |  x   x   <                0     E  T    @  
 
-                                                                        |        Ԁ               %}  x   x   <                p     E  T   ?  
+                                                                        |        Ԁ               &}  x   x   <                p     E  T    ?  
 
-                                                                        ~        Ԁ               (  T   T               @     E  0     
+                                                                        ~        Ԁ               (  T   T               @     E  0     
 
       
     
-            x   x   <                P     E  T   @  
+            x   x   <                P     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                P     E  T   @  
+                                                                             Ԁ                x   x   <                P     E  T   @  
 
-                                                                              Ԁ              y  x   x   <                     E  T   ?  
+                                                                              Ԁ              y  x   x   <                     E  T   ?  
 
-                                                                      m        Ԁ              0  T   T                    E  0     
+                                                                      n        Ԁ              0  T   T                    E  0     
 
       
     
-         q  T   T               `     E  0     
+         q  T   T               `     E  0     
 
       
    
-         8  T   T               `     E  0     
+         8  T   T               `     E  0     
 
       
     
@@ -70,7 +70,7 @@
 
        #  @   @   <                            
      
-       g$        Ԁ              %  x   x   <                     E  T   @  
+       g$        Ԁ              %  x   x   <                     E  T   @  
 
                                                                      %        Ԁ              p/  T   T                    E  0     
 
@@ -78,11 +78,11 @@
     
          D  @   @                           
 
-       E  @   @   <                p            
+       E  @   @   <                p            
      
-       F        Ԁ              F  x   x   <                     E  T   ?  
+       	F        Ԁ              F  x   x   <                     E  T   ?  
 
-                                                                     G        Ԁ              R  T   T                    E  0     
+                                                                     G        Ԁ              R  T   T                    E  0     
 
       
    
@@ -90,35 +90,35 @@
 
        [  @   @   <                            
      
-       T\        Ԁ              I]  x   x   <                     E  T   @  
+       T\        Ԁ              I]  x   x   <                     E  T   @  
 
                                                                       Y]        Ԁ              |  @   @                           
 
        }  @   @   <                            
      
-       }        Ԁ              2~  x   x   <                    E  T   ?  
+       }        Ԁ              2~  x   x   <                    E  T   ?  
 
-                                                                      '        Ԁ                T   T                    E  0     
+                                                                      '        Ԁ                T   T                    E  0     
 
       
     
-            x   x   <                     E  T   @  
+            x   x   <                     E  T   @  
 
-                                                                              Ԁ                x   x   <                     E  T   ?  
+                                                                              Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   @  
+                                                                             Ԁ                x   x   <                     E  T   @  
 
-                                                                              Ԁ              L  x   x   <                0    E  T   ?  
+                                                                              Ԁ              L  x   x   <                0    E  T   ?  
 
-                                                                      @        Ԁ              0  T   T               @    E  0     
+                                                                      A        Ԁ              0  T   T               @    E  0     
 
       
     
-         f  T   T                    E  0     
+         f  T   T                    E  0     
 
       
    
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
diff -Naur ns-3.19/src/aodv/test/bug-606-test-2-0.pcap ns-3.20/src/aodv/test/bug-606-test-2-0.pcap
--- ns-3.19/src/aodv/test/bug-606-test-2-0.pcap	2014-06-17 10:34:00.448636584 -0700
+++ ns-3.20/src/aodv/test/bug-606-test-2-0.pcap	2014-06-17 10:33:13.778996849 -0700
@@ -16,7 +16,7 @@
 
      
     
-  +        3X  @   @   <                @            
+  +        4X  @   @   <                @            
      
         Y        Ԁ               Ty  @   @               P            
 
@@ -24,25 +24,25 @@
      
         #z        Ԁ               W{  x   x   <                `     E  T    ?  
 
-                                                                       g{        Ԁ               {  x   x   <                0     E  T   @  
+                                                                       g{        Ԁ               {  x   x   <                0     E  T    @  
 
-                                                                        |        Ԁ               }  x   x   <                p     E  T   ?  
+                                                                        |        Ԁ               }  x   x   <                p     E  T    ?  
 
-                                                                          T   T               @     E  0     
+                                                                          T   T               @     E  0     
 
       
     
-                  Ԁ                x   x   <                     E  T   ?  
+                  Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              ,  x   x   <                P     E  T   @  
+                                                                             Ԁ              ,  x   x   <                P     E  T   @  
 
-                                                                      !        Ԁ              1  x   x   <                     E  T   ?  
+                                                                      !        Ԁ              1  x   x   <                     E  T   ?  
 
                                                                         T   T                    E  0     
 
       
     
-           T   T               `     E  0     
+           T   T               `     E  0     
 
       
     
@@ -56,58 +56,58 @@
 
        E  @   @   <                p            
      
-       5F        Ԁ              G  x   x   <                     E  T   ?  
+       5F        Ԁ              G  x   x   <                     E  T   ?  
 
                                                                      G        Ԁ              [  @   @                           
 
        \  @   @   <                            
      
-       (\        Ԁ              \  x   x   <                     E  T   @  
+       (\        Ԁ              \  x   x   <                     E  T   @  
 
-                                                                      ]        Ԁ              |  @   @                           
+                                                                      ]        Ԁ              |  @   @                           
 
-       }        Ԁ              ~  x   x   <                    E  T   ?  
+       }        Ԁ              ~  x   x   <                    E  T   ?  
 
-                                                                        T   T                    E  0     
+                                                                        T   T                    E  0     
 
       
     
-                  Ԁ                x   x   <                     E  T   ?  
+                  Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              ,  x   x   <                     E  T   @  
+                                                                             Ԁ              ,  x   x   <                     E  T   @  
 
-                                                                      !        Ԁ                x   x   <                0    E  T   ?  
+                                                                      !        Ԁ                x   x   <                0    E  T   ?  
 
                                                                         T   T               @    E  0     
 
       
     
-         p  T   T                    E  0     
+         p  T   T                    E  0     
 
       
     
-         ȯ  T   T                    E  0 	    
+         ȯ  T   T                    E  0     
 
       
     
-         @  T   T                    E  0 
-    
+         @  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
-         X  T   T                   E  0     
+         X  T   T                   E  0 	    
 
       
     
-      	   @  T   T                    E  0     
+      	   @  T   T                    E  0 
+    
 
       
     
diff -Naur ns-3.19/src/aodv/test/bug-772.cc ns-3.20/src/aodv/test/bug-772.cc
--- ns-3.19/src/aodv/test/bug-772.cc	2014-06-17 10:34:00.448636584 -0700
+++ ns-3.20/src/aodv/test/bug-772.cc	2014-06-17 10:33:13.779996841 -0700
@@ -48,8 +48,7 @@
 #include "ns3/pcap-test.h"
 #include <sstream>
 
-namespace ns3 {
-namespace aodv {
+using namespace ns3;
 
 //-----------------------------------------------------------------------------
 // UdpChainTest
@@ -146,7 +145,7 @@
   uint16_t port = 9; // Discard port (RFC 863)
   OnOffHelper onoff (m_proto, Address (InetSocketAddress (interfaces.GetAddress (m_size-1), port)));
   onoff.SetConstantRate (DataRate (64000));
-  onoff.SetAttribute ("PacketSize", UintegerValue (1200));
+  onoff.SetAttribute ("PacketSize", UintegerValue (1000));
   ApplicationContainer app = onoff.Install (m_nodes->Get (0));
   app.Start (Seconds (1.0));
   app.Stop (m_time);
@@ -167,6 +166,3 @@
       NS_PCAP_TEST_EXPECT_EQ(m_prefix << "-" << i << "-0.pcap");
     }
 }
-
-}
-}
diff -Naur ns-3.19/src/aodv/test/bug-772.h ns-3.20/src/aodv/test/bug-772.h
--- ns-3.19/src/aodv/test/bug-772.h	2014-06-17 10:34:00.449636577 -0700
+++ ns-3.20/src/aodv/test/bug-772.h	2014-06-17 10:33:13.779996841 -0700
@@ -25,8 +25,7 @@
 #include "ns3/nstime.h"
 #include "ns3/node-container.h"
 
-namespace ns3 {
-namespace aodv {
+using namespace ns3;
 
 /**
  * \ingroup aodv
@@ -74,7 +73,4 @@
   void DoRun ();
 };
 
-}
-}
-
 #endif /* BUG_772_H */
diff -Naur ns-3.19/src/aodv/test/tcp-chain-test-0-0.pcap ns-3.20/src/aodv/test/tcp-chain-test-0-0.pcap
--- ns-3.19/src/aodv/test/tcp-chain-test-0-0.pcap	2014-06-17 10:34:00.451636561 -0700
+++ ns-3.20/src/aodv/test/tcp-chain-test-0-0.pcap	2014-06-17 10:33:13.782996818 -0700
@@ -6,7 +6,7 @@
 
       
     
-         @  X   X                    E  4     
+         @  X   X                    E  4     
 
     (     
 
@@ -18,9 +18,9 @@
     
           G( @   @   <                             
      
-       )       Ԁ              - @   @               0            
+       )       Ԁ              - @   @               0            
 
-       - @   @   <                             
+       - @   @   <                             
      
        .       Ԁ              / T   T   <                @     E  0     
 
@@ -31,270 +31,307 @@
 
        S @   @   <                P            
      
-       T       Ԁ              VT L   L   <                @     E  (   @  
+       T       Ԁ              VT L   L   <                @     E  (    @  
 
 
  	        P           U       Ԁ              /Y @   @               `            
 
-       Y       Ԁ              Z L   L   <                p     E  (   ?  
+       Y       Ԁ              Z L   L   <                p     E  (    ?  
 
 
- 	        P                  Ԁ              + L   L   <                     E  (   8  
+ 	        P                  Ԁ              + L   L   <                     E  (    8  
 
 
- 	       P           ;       Ԁ               L   L   <                P     E  (   @  
+ 	       P           ;       Ԁ               L   L   <                P     E  (   @  
 
 
- 	      P           F       Ԁ               L   L   <                     E  (   ?  
+ 	      P           F       Ԁ               L   L   <                     E  (   ?  
 
 
- 	      P           I d  d  <                `     E @   @  
+ 	      P           H d  d  <                `     E @   @  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   tM       Ԁ              P d  d  <                     E @   ?  
+ 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              6 d  d  <                     E @   ?  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   q       Ԁ              ar L   L   <                     E  (   8  
+ 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                     E  (   8  
 
 
- 	     P           qr       Ԁ              r d  d  <                p     E @   @  
+ 	     P                  Ԁ                   <                p     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Cv       Ԁ              y d  d  <                     E @   ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <       Ԁ              j     <                     E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   z       <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d  d  <                     E @   @  
 
 
- 	  1   P                                                                                                                                           |       <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              ~ d  d  <                     E @   ?  
 
 
- 	  1   P                                                                                                                                                  <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              % L   L   <                     E  (   8  
+
+
+ 	     P           5       Ԁ                   <                     E    @  
 
 
- 	  1   P                                                                                                                                                  Ԁ              M       <                     E     ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                     E    ?  
 
 
- 	  1   P                                                                                                                                           X       Ԁ               L   L   <                     E  (   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ظ d  d  <                     E @   @  
+
 
-
- 	     P           
-       Ԁ              ߓ d  d  <                     E @   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \       Ԁ              ~     <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   d       Ԁ              Κ d  d  <                     E @   ?  
+ 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           B     <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Y d  d  <                     E @   @  
+ 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           B     <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _ d  d  <                     E @   @  
+ 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           g       Ԁ              q     <                    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              N d  d  <                     E @   ?  
+ 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+       Ԁ               L   L   <                     E  (   8  
+
+
+ 	     	P                  Ԁ                d  d  <                     E @   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ǧ       <                     E   	  @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               d  d  <                0    E @   ?  
 
 
- 	     P                                                                                                                                           ,       Ԁ                     <                    E   	  ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ~     <                     E  	  @  
 
 
- 	     P                                                                                                                                           Q       Ԁ               L   L   <                     E  (   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <                     E  	  @  
+
+
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ٯ       Ԁ                   <                @    E  	  ?  
+
+
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               L   L   <                P    E  (   8  
 
 
- 	     P                  Ԁ               d  d  <                     E @ 
+ 	     P                  Ԁ              h	 d  d  <                     E @ 
   @  
 
 
- 	  	a   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   T       Ԁ               d  d  <                0    E @ 
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              V	 d  d  <                `    E @ 
   ?  
 
 
- 	  	a   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d  d  <                     E @   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                     E    @  
 
 
- 	  y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a d  d  <                     E @   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )	     <                     E    @  
 
 
- 	  y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              P d  d  <                @    E @   ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           N	       Ԁ              X	     <                p    E    ?  
 
 
- 	  y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           a	       Ԁ              	 L   L   <                    E  (   8  
+
+
+ 	     P           	       Ԁ              q d  d  <                     E @   @  
 
 
- 	     P                                                                                                                                           c       <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   4u       Ԁ              x d  d  <                    E @   ?  
 
 
- 	     P                                                                                                                                           *       <                     E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )y     <                    E    @  
 
 
- 	     P                                                                                                                                                  Ԁ                     <                P    E     ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           D}     <                    E    @  
 
 
- 	     P                                                                                                                                           a       <                P    E     ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i       Ԁ              s     <                    E    ?  
 
 
- 	     P                                                                                                                                                  Ԁ               L   L   <                `    E  (   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           -       Ԁ              ϟ L   L   <                    E  (   8  
 
 
- 	     yP                  Ԁ              %       Ԁ              Z& L   L   <                p    E  (   8  
-
-
- 	     P           j&       Ԁ              '	 d  d  <                     E @   @  
+ 	     P           ߟ       Ԁ              Y d  d  <                     E @   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   D+	       Ԁ              .	 d  d  <                    E @   ?  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |]       Ԁ              ` d  d  <                    E @   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   o/	 d  d  <                     E @   @  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a     <                0    E    @  
 
 
- 	  )   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   24	 d  d  <                     E @   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           e     <                0    E    @  
 
 
- 	  )   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   7	       Ԁ              !;	 d  d  <                    E @   ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i       Ԁ              l     <                    E    ?  
 
 
- 	  )   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;	       <                    E     @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              B L   L   <                    E  (   8  
+
+
+ 	     P           R       Ԁ                  d  d  <                @    E @   @  
 
 
- 	  A   P                                                                                                                                           X>	       <                    E     @  
+ 	  Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Ԁ                    <                P    E    @  
 
 
- 	  A   P                                                                                                                                           @	       <                    E     @  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <                P    E    @  
 
 
- 	  A   P                                                                                                                                           *B	       Ԁ              tC	       <                    E     ?  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+      <                P    E    @  
 
 
- 	  A   P                                                                                                                                           E	       <                    E     ?  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ԁ              H      <                     E    ?  
 
 
- 	  A   P                                                                                                                                           {	       Ԁ              {	 L   L   <                    E  (   8  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             T   T               `    E  0     
+
+      
+   
+         ;        Ԁ              3<  L   L   <                    E  (   8  
 
 
- 	     AP           {	       Ԁ              q d  d  <                     E @   @  
+ 	     qP           C<        Ԁ              ?  T   T                    E  0     
+
+      
+    
+           @   @               p           
+
+        @   @   <                0           
+     
+              Ԁ               d  d  <                    E @   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   4u       Ԁ              Vu d  d  <                0    E @   @  
+ 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ                   <                    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ay d  d  <                0    E @   @  
+ 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               @   @               @           
+
+              Ԁ              O d  d  <                P    E @   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ~ d  d  <                0    E @   @  
+ 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                `    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   "       Ԁ               d  d  <                    E @   ?  
-
+ 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @   @   <                p           
+     
+       E       Ԁ              a @   @                          
+
+        @   @   <                           
+     
+       0       Ԁ              Y L   L   <                    E  ( 	  8  
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   D       <                @    E     @  
+
+ 	     !YP           i       Ԁ               d  d  <                    E @   @  
 
 
- 	     P                                                                                                                                                  Ԁ                     <                    E     ?  
+ 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              ~ d  d  <                    E @   ?  
 
 
- 	     P                                                                                                                                                  <                    E     ?  
+ 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   -     <                    E    @  
 
 
- 	     P                                                                                                                                                  <                    E     ?  
+ 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $     <                    E    @  
 
 
- 	     P                                                                                                                                                  Ԁ               L   L   <                    E  ( 	  8  
+ 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           I       Ԁ              S     <                    E    ?  
+
 
-
- 	     P                  Ԁ              y       Ԁ               L   L   <                     E  ( 
+ 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              % L   L   <                    E  ( 
   8  
 
 
- 	     qP           +       Ԁ               d  d  <                P    E @   @  
+ 	     %AP           5       Ԁ              ظ d  d  <                    E @   @  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   $       Ԁ               d  d  <                    E @   ?  
+ 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \       Ԁ              ƿ d  d  <                    E @   ?  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   O d  d  <                `    E @   @  
+ 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   H     <                    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d  d  <                `    E @   @  
+ 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <                    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   F       Ԁ               d  d  <                     E @   ?  
+ 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          <                p    E     @  
+ 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           w       Ԁ               L   L   <                    E  (   8  
+
+
+ 	     ))P           )       Ԁ                d  d  <                    E @   @  
 
 
- 	     P                                                                                                                                                  <                p    E     @  
+ 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               d  d  <                     E @   ?  
 
 
- 	     P                                                                                                                                                  <                p    E     @  
+ 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ϩ     <                     E    @  
 
 
- 	     P                                                                                                                                                  Ԁ              ]       <                0    E     ?  
+ 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )     <                     E    @  
 
 
- 	     P                                                                                                                                                  <                0    E     ?  
+ 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           N       Ԁ              X     <                    E    ?  
 
 
- 	     P                                                                                                                                                  Ԁ              H L   L   <                @    E  (   8  
+ 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              q L   L   <                     E  (   8  
 
 
- 	     P           X       Ԁ                T   T                   E  0     
+ 	     -P                  Ԁ              h	 d  d  <                    E @   @  
 
-      
-   
-         ?  T   T               P    E  0     
-
-      
-    
-         O  d  d  <                    E @   @  
+
+ 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              V	 d  d  <                0    E @   ?  
 
 
- 	  !   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Ԁ              >  d  d  <                `    E @   ?  
+ 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                     E    @  
 
 
- 	  !   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     d  d  <                    E @   @  
+ 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           D	     <                     E    @  
 
 
- 	  9   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     d  d  <                    E @   @  
+ 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i	       Ԁ              s	     <                @    E    ?  
 
 
- 	  9   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   G        Ԁ                d  d  <                p    E @   ?  
+ 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           k	       Ԁ              	 L   L   <                P    E  (   8  
+
+
+ 	     0P           	       Ԁ              q d  d  <                0    E @   @  
 
 
- 	  9   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r        <                    E     @  
+ 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   4u       Ԁ              x d  d  <                `    E @   ?  
 
 
- 	   Q   P                                                                                                                                                   <                    E     @  
+ 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )y     <                @    E    @  
 
 
- 	   Q   P                                                                                                                                           y        <                    E     @  
+ 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           q}     <                @    E    @  
 
 
- 	   Q   P                                                                                                                                                   Ԁ              (        <                    E     ?  
+ 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                p    E    ?  
 
 
- 	   Q   P                                                                                                                                           ;        <                    E     ?  
+ 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "       Ԁ              Ĩ L   L   <                    E  (   8  
+
+
+ 	     4P           Ԩ       Ԁ              Y d  d  <                P    E @   @  
 
 
- 	   Q   P                                                                                                                                             @   @                          
-
-        @   @   <                           
-     
-              Ԁ               d  d  <                    E @   @  
+ 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |]       Ԁ              ` d  d  <                    E @   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   d       Ԁ              h @   @                          
-
-       7       Ԁ               d  d  <                    E @   ?  
+ 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a     <                `    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d  d  <                    E @   @  
+ 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           e     <                `    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   M       Ԁ               d  d  <                    E @   ?  
+ 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           h       Ԁ              k     <                    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
\ No newline at end of file
+ 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              + L   L   <                    E  (   8  
+
+
+ 	     8P           ;       Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/aodv/test/tcp-chain-test-9-0.pcap ns-3.20/src/aodv/test/tcp-chain-test-9-0.pcap
--- ns-3.19/src/aodv/test/tcp-chain-test-9-0.pcap	2014-06-17 10:34:00.452636553 -0700
+++ ns-3.20/src/aodv/test/tcp-chain-test-9-0.pcap	2014-06-17 10:33:13.784996803 -0700
@@ -30,7 +30,7 @@
 
   _       H        Ԁ              !  @   @   <                P            
 	     
-       4        Ԁ              D T   T               `     E  0     
+       5        Ԁ              D T   T               `     E  0     
 	
       
 	    
@@ -41,232 +41,330 @@
 
     
 
-         8       Ԁ              ڵ L   L   <                p     E  (   8  
+         9       Ԁ              ۵ L   L   <                p     E  (    8  
 
 
- 	        P                  Ԁ              2 @   @               0            
+ 	        P                  Ԁ              3 @   @               0            
 
 
 	       5 @   @   <                            
 	     
 
-       E       Ԁ               L   L   <                @     E  (   @  
+       E       Ԁ               L   L   <                @     E  (    @  
 
 
- 	       P           P       Ԁ               L   L   <                     E  (   ?  
+ 	       P           P       Ԁ               L   L   <                     E  (    ?  
 
 
- 	       P                  Ԁ              2 L   L   <                     E  (   8  
+ 	       P                  Ԁ              3 L   L   <                     E  (   8  
 
 
- 	      P           B       Ԁ              g       Ԁ              kj d  d  <                     E @   8  
+ 	      P           C       Ԁ              Y       Ԁ               d  d  <                     E @   8  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   {j       Ԁ              j L   L   <                P     E  (   @  
+ 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              !	 L   L   <                P     E  (   @  
 
 
- 	     P           k       Ԁ              Ll L   L   <                     E  (   ?  
+ 	     P           	       Ԁ              
+ L   L   <                     E  (   ?  
 
 
- 	     P                  Ԁ              ^ d  d  <                     E @   8  
+ 	     P           L+       Ԁ              V.     <                     E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   n       Ԁ                     Ԁ                     <                     E     8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           f.       Ԁ                     Ԁ               d  d  <                     E @   8  
 
 
- 	  1   P                                                                                                                                                  Ԁ              > L   L   <                `     E  (   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              i L   L   <                `     E  (   @  
 
 
- 	     P                  Ԁ               L   L   <                     E  (   ?  
+ 	     P           &       Ԁ               L   L   <                     E  (   ?  
 
 
- 	     P                  Ԁ              [ d  d  <                     E @   8  
+ 	     P                  Ԁ                   <                     E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   k       Ԁ              ;       Ԁ               d  d  <                    E @   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                     Ԁ              S d  d  <                    E @   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                p     E  (   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   c       Ԁ               L   L   <                p     E  (   @  
 
 
- 	     P                  Ԁ               L   L   <                     E  (   ?  
+ 	     	P           n       Ԁ              s L   L   <                     E  (   ?  
 
 
- 	     P            L   L   <                     E  (   ?  
+ 	     	P            L   L   <                     E  (   ?  
 
 
- 	     P                  Ԁ              :       <                0    E   	  8  
+ 	     	P            L   L   <                     E  (   ?  
+
+
+ 	     	P            L   L   <                     E  (   ?  
+
+
+ 	     	P           N L   L   <                     E  (   ?  
+
+
+ 	     	P            L   L   <                     E  (   ?  
+
+
+ 	     	P                  Ԁ               L   L   <                     E  (   ?  
+
+
+ 	     	P                <                0    E    8  
 
 
- 	     P                                                                                                                                           J       Ԁ                     Ԁ              K d  d  <                @    E @ 
-  8  
+ 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              1       Ԁ               d  d  <                @    E @   8  
 
 
- 	  	a   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   [       Ԁ               L   L   <                     E  (   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                     E  (   @  
 
 
- 	     yP           f       Ԁ              >  L   L   <                P    E  (   ?  
+ 	     P                  Ԁ              | L   L   <                P    E  (   ?  
 
 
- 	     yP           j L   L   <                P    E  (   ?  
+ 	     P            L   L   <                P    E  (   ?  
 
 
- 	     yP            L   L   <                P    E  (   ?  
+ 	     P            L   L   <                P    E  (   ?  
 
 
- 	     yP           { L   L   <                P    E  (   ?  
+ 	     P                  Ԁ               L   L   <                P    E  (   ?  
 
 
- 	     yP           m L   L   <                P    E  (   ?  
+ 	     P                <                `    E  	  8  
+
 
-
- 	     yP                  Ԁ              = L   L   <                P    E  (   ?  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )       Ԁ              y	       Ԁ              	 d  d  <                p    E @ 
+  8  
+
+
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              A	 L   L   <                     E  (   @  
 
 
- 	     yP                  Ԁ               L   L   <                P    E  (   ?  
+ 	     P           	       Ԁ              	 L   L   <                    E  (   ?  
 
 
- 	     yP            d  d  <                `    E @   8  
+ 	     P           		       Ԁ              	     <                    E    8  
 
 
- 	  y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              @       <                p    E     8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #	       Ԁ                     Ԁ              + d  d  <                    E @   8  
 
 
- 	     P                                                                                                                                           P       Ԁ               L   L   <                     E  (   @  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;       Ԁ               L   L   <                     E  (   @  
+
+
+ 	     P           F       Ԁ               L   L   <                    E  (   ?  
 
 
- 	     P           [       Ԁ              E  L   L   <                    E  (   ?  
+ 	     P            L   L   <                    E  (   ?  
 
 
- 	     P           D	       Ԁ              ;H	 d  d  <                    E @   8  
+ 	     P                  Ԁ                   <                    E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   KH	       Ԁ              IR	       Ԁ              U	 d  d  <                    E @   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           .       Ԁ              	w       Ԁ              sz d  d  <                    E @   8  
 
 
- 	  )   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   U	       Ԁ              V	 L   L   <                     E  (   @  
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   z       Ԁ              z L   L   <                     E  (   @  
 
 
- 	     AP           V	       Ԁ              W	 L   L   <                    E  (   ?  
+ 	     P           {       Ԁ              K| L   L   <                    E  (   ?  
 
 
- 	     AP           Y	 L   L   <                    E  (   ?  
+ 	     P           8} L   L   <                    E  (   ?  
 
 
- 	     AP           Z	 L   L   <                    E  (   ?  
+ 	     P           ~ L   L   <                    E  (   ?  
 
 
- 	     AP           k_	 L   L   <                    E  (   ?  
+ 	     P           n L   L   <                    E  (   ?  
 
 
- 	     AP            d	 L   L   <                    E  (   ?  
+ 	     P            L   L   <                    E  (   ?  
 
 
- 	     AP           r	       Ԁ              u	 L   L   <                    E  (   ?  
+ 	     P           p       Ԁ              - L   L   <                    E  (   ?  
 
 
- 	     AP           x	       <                    E     8  
+ 	     P           Ǜ     <                    E    8  
 
 
- 	  A   P                                                                                                                                           %x	       Ԁ                     Ԁ              + d  d  <                    E @   8  
+ 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           כ       Ԁ                      Ԁ              {   d  d  <                     E @   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;       Ԁ               L   L   <                     E  ( 	  @  
+ 	  Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Ԁ                 L   L   <                     E  (   @  
+
+
+ 	     qP           !        Ԁ              A"  L   L   <                    E  (   ?  
+
+
+ 	     qP           @#  L   L   <                    E  (   ?  
+
+
+ 	     qP           z%  L   L   <                    E  (   ?  
+
+
+ 	     qP           *  L   L   <                    E  (   ?  
+
+
+ 	     qP           +  L   L   <                    E  (   ?  
+
+
+ 	     qP           /  L   L   <                    E  (   ?  
 
 
- 	     P           F       Ԁ               L   L   <                    E  ( 	  ?  
+ 	     qP           7        Ԁ              :      <                     E    8  
+
+
+ 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           &:        Ԁ              ` T   T               0    E  0     
+	
+      
+	    
+	         `g T   T                    E  0     
 
 
- 	     P           L       Ԁ               d  d  <                    E @   8  
+      
+
+    
+
+         Ɨ @   @   <                @           
+	     
+              Ԁ               @   @               P           
+	
+
+        @   @   <                            
+
+     
+	       Q       Ԁ              Q d  d  <                `    E @   8  
+
+
+ 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a       Ԁ                     Ԁ                   <                p    E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ƶ       Ԁ                     Ԁ                     <                     E     8  
+ 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               @   @                           
+
+
+	       Ļ @   @   <                           
+	     
+
+       Ի       Ԁ              O L   L   <                     E  ( 	  @  
+
+
+ 	     !YP                  Ԁ               @   @                          
+	
+              Ԁ               L   L   <                    E  ( 	  ?  
+
+
+ 	     !YP                  Ԁ               d  d  <                    E @   8  
 
 
- 	     P                                                                                                                                                  Ԁ              ` L   L   <                     E  ( 
+ 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              i L   L   <                    E  ( 
   @  
 
 
- 	     qP                  Ԁ               L   L   <                    E  ( 
+ 	     %AP           &       Ԁ               L   L   <                    E  ( 
+  ?  
+
+
+ 	     %AP            L   L   <                    E  ( 
+  ?  
+
+
+ 	     %AP            L   L   <                    E  ( 
+  ?  
+
+
+ 	     %AP           J L   L   <                    E  ( 
+  ?  
+
+
+ 	     %AP           &       Ԁ               L   L   <                    E  ( 
   ?  
 
 
- 	     qP                  Ԁ               d  d  <                     E @   8  
+ 	     %AP           G     <                    E    8  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   +       Ԁ                     Ԁ              B d  d  <                0    E @   8  
+ 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           W       Ԁ                     Ԁ              S d  d  <                    E @   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   R       Ԁ               L   L   <                     E  (   @  
+ 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   c       Ԁ               L   L   <                     E  (   @  
 
 
- 	     P           ]       Ԁ               L   L   <                @    E  (   ?  
+ 	     ))P           n       Ԁ              | L   L   <                    E  (   ?  
 
 
- 	     P            L   L   <                @    E  (   ?  
+ 	     ))P            L   L   <                    E  (   ?  
 
 
- 	     P                  Ԁ              >       <                P    E     8  
+ 	     ))P                  Ԁ                   <                     E    8  
 
 
- 	     P                                                                                                                                           N       Ԁ                @   @   <                `           
-	     
-               Ԁ                @   @               p           
-	
+ 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              1       Ԁ               d  d  <                    E @   8  
+
 
-         @   @   <                            
+ 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                0    E  (   @  
 
-     
-	       d        Ԁ                d  d  <                    E @   8  
-
+
+ 	     -P                  Ԁ              j L   L   <                     E  (   ?  
 
- 	  !   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Ԁ              "  L   L   <                     E  (   @  
+
+ 	     -P            L   L   <                     E  (   ?  
 
 
- 	     9P           r  L   L   <                     E  (   @  
+ 	     -P           E L   L   <                     E  (   ?  
 
 
- 	     9P             L   L   <                     E  (   @  
+ 	     -P            L   L   <                     E  (   ?  
 
 
- 	     9P                   Ԁ              ^  @   @                          
-	
-              Ԁ              C d  d  <                    E @   8  
+ 	     -P                  Ԁ              '     <                0    E    8  
 
 
- 	  9   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   S       Ԁ              L       Ԁ                     <                    E     8  
+ 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           7       Ԁ              y	       Ԁ              	 d  d  <                @    E @   8  
 
 
- 	   Q   P                                                                                                                                                  Ԁ               L   L   <                     E  (   @  
+ 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              A	 L   L   <                @    E  (   @  
 
 
- 	      P                  Ԁ              ` T   T                   E  0     
-	
-      
-	    
-	         `g T   T                   E  0     
+ 	     0P           	       Ԁ              ֫	 L   L   <                P    E  (   ?  
 
 
-      
-
-    
+ 	     0P           ݴ	       Ԁ              	     <                `    E    8  
+
 
-         h       Ԁ              fl d  d  <                    E @   8  
+ 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	       Ԁ                     Ԁ              + d  d  <                p    E @   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   vl       Ԁ              փ @   @                           
+ 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;       Ԁ               L   L   <                P    E  (   @  
 
-
-	       ل @   @   <                           
-	     
+
+ 	     4P           F       Ԁ              ' L   L   <                    E  (   ?  
+
+
+ 	     4P            L   L   <                    E  (   ?  
 
-              Ԁ              v L   L   <                0    E  (   @  
+
+ 	     4P            L   L   <                    E  (   ?  
+
+
+ 	     4P           A L   L   <                    E  (   ?  
 
 
- 	      P           3       Ԁ                     Ԁ              D d  d  <                    E @   8  
+ 	     4P           C       Ԁ              M     <                    E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   T       Ԁ               L   L   <                @    E  (   @  
+ 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ]       Ԁ              	w       Ԁ              sz d  d  <                    E @   8  
+
+
+ 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   z       Ԁ              z L   L   <                `    E  (   @  
+
+
+ 	     8P           {       Ԁ              | L   L   <                    E  (   ?  
 
 
- 	      P           _       Ԁ           
\ No newline at end of file
+ 	     8P                  Ԁ              Ƈ     <                    E    8  
+
+
+ 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           և       Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/aodv/test/udp-chain-test-0-0.pcap ns-3.20/src/aodv/test/udp-chain-test-0-0.pcap
--- ns-3.19/src/aodv/test/udp-chain-test-0-0.pcap	2014-06-17 10:34:00.453636546 -0700
+++ ns-3.20/src/aodv/test/udp-chain-test-0-0.pcap	2014-06-17 10:33:13.785996795 -0700
@@ -18,192 +18,211 @@
 
       
     
-         Y X   X          	     	      E  4     
+          X   X          	     	      E  4     
 
     (     
 
     
-          y X   X          
+          H X   X          
      
       E  4     
 
     (    
 
     
-           @   @   <           
+          eA @   @   <           
      
 0            
 
      
-       x       Ԁ              | @   @          
+       B       Ԁ              J @   @          
      
 @            
 
 
-        @   @   <      
+       J @   @   <      
      	     	0            	
      
 
-       K       Ԁ       	       = T   T   <      	     
+       K       Ԁ       	       L T   T   <      	     
      
 P     E  0     
 
      
 
     
-  E       M       Ԁ       
-        @   @          	     	@            	
+  ^       L       Ԁ       
+       eT @   @          	     	@            	
 
-        @   @   <      	     
+       hU @   @   <      	     
      
 `            
 
      	
-               Ԁ       
-       w     <      
-     	     	P     E    @  
+       xU       Ԁ       
+       U (  (  <      
+     	     	P     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         c       Ԁ       	        @   @          
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 [       Ԁ       	       _ @   @          
      
 p            
 
 
-       N       Ԁ              2     <           
+       `       Ԁ              rf (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ߓ     <      
-     	     	`     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (  (  <      
+     	     	`     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ̚       Ԁ       	            <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 p       Ԁ       	       6 (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <      
-     	     	p     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
+     	     	p     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ       	            <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         '	     <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         .	       Ԁ       	       ~5	     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         q     <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x       Ԁ       	       n     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ       	       ^     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         O      <      
-     	     	     E  	  @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
+     	     	     E  	  @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <        Ԁ       	             <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
      
-     E  	  ?  
+     E  	  ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Y T   T          	     	     E  0 
-    
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (  (  <      
+     	     	     E  
+  @  
 
-      
-   
-         ^ T   T          
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	         (  (  <           
      
-     E  0     
-
-      
-    
-         ?     <      
-     	     	     E    @  
+     E  
+  ?  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ,       Ԁ       	            <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (       Ԁ       	        (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         [ @   @          	     	            	
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  T   T          	     	     E  0     
+
+      
+   
+          T   T          
+     
+    E  0     
+
+      
+    
+         x @   @          	     	            	
 
-       \ @   @   <      	     
+       z @   @   <      	     
      
-           
+            
 
      	
-       *\       Ԁ       
-       \     <      
-     	     	     E    @  
+              Ԁ       
+       D (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         wc       Ԁ       	        @   @          
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 %       Ԁ       	        @   @          
      
-            
+0           
 
 
-              Ԁ                   <           
+              Ԁ               (  (  <           
+     
+@    E    ?  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
+     	     	    E    @  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
      
-0    E    ?  
+P    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ       	       ޮ     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
      
-@    E    ?  
+`    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	     <      
-     	     	    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
+     	     	0    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	       Ԁ       	       	     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
      
-P    E    ?  
+p    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         4     <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
+     	     	@    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ;       Ԁ       	       B     <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
      
-`    E    ?  
+    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ~     <      
-     	     	0    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
+     	     	P    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ܅       Ԁ       	            <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
      
-p    E    ?  
+    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
\ No newline at end of file
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
\ No newline at end of file
diff -Naur ns-3.19/src/aodv/test/udp-chain-test-9-0.pcap ns-3.20/src/aodv/test/udp-chain-test-9-0.pcap
--- ns-3.19/src/aodv/test/udp-chain-test-9-0.pcap	2014-06-17 10:34:00.454636538 -0700
+++ ns-3.20/src/aodv/test/udp-chain-test-9-0.pcap	2014-06-17 10:33:13.786996787 -0700
@@ -20,88 +20,90 @@
 
     
 
-         c
- @   @                            
+          @   @                            
 	
 
-       
- @   @   <                             
+       ݨ @   @   <                             
 
      
-	       2       Ԁ              6 T   T   <                0     E  0     
+	              Ԁ               T   T   <                0     E  0     
 	
 
      
    
 
-  _       F       Ԁ               @   @               @            
+  _              Ԁ              [ @   @               @            
 	
-              Ԁ               T   T   <                P     E  0     
+       *       Ԁ               T   T   <                P     E  0     
 	
    @ 
 
     
-  E       4 @   @   <                `            
+  ^       Y @   @   <                `            
 	     
-       6       Ԁ              |i       Ԁ              Np     <                p     E    8  
+              Ԁ                     Ԁ               (  (  <                p     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ^p       Ԁ              1       Ԁ                   <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              !       Ԁ                   <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              `	       Ԁ              f	     <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         f	       Ԁ                     Ԁ              Ӱ     <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ                     Ԁ                   <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              u  T   T                    E  0     
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                     E  	  8  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              /        Ԁ              5  (  (  <                     E  
+  8  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 5        Ԁ              u  T   T                    E  0     
 	
       
 	    
-	                 Ԁ              s     <                     E  	  8  
-
-
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              8 T   T               0     E  0     
+	         8 T   T               0     E  0     
 
 
       
 
     
 
-         V @   @   <                            
+         9       Ԁ               (  (  <                     E    8  
+
+
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ               @   @   <                           
 	     
-       ^^       Ԁ              } @   @                           
+       g       Ԁ               @   @                           
 	
 
-       } @   @   <                @            
+        @   @   <                @            
 
      
-	       ~       Ԁ              ͅ     <                    E    8  
+	              Ԁ               (  (  <                0    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ݅       Ԁ              %!       Ԁ              '     <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                @    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (       Ԁ              q       Ԁ              C     <                0    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                P    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         S       Ԁ              a#
-       Ԁ              3*
-     <                @    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                `    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         C*
-       Ԁ              Qm       Ԁ              #t     <                P    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                p    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         3t       Ԁ              A       Ԁ                   <                `    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #       Ԁ           
\ No newline at end of file
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/aodv/waf ns-3.20/src/aodv/waf
--- ns-3.19/src/aodv/waf	2014-06-17 10:34:00.454636538 -0700
+++ ns-3.20/src/aodv/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../../waf "$@"
diff -Naur ns-3.19/src/applications/bindings/modulegen__gcc_ILP32.py ns-3.20/src/applications/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/applications/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.461636484 -0700
+++ ns-3.20/src/applications/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.793996733 -0700
@@ -155,7 +155,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## ping6-helper.h (module 'applications'): ns3::Ping6Helper [class]
@@ -174,6 +174,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -198,6 +200,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## packet-socket.h (module 'network'): ns3::DeviceNameTag [class]
@@ -514,32 +518,35 @@
     module.add_class('PacketProbe', import_from_module='ns.network', parent=root_module['ns3::Probe'])
     ## packetbb.h (module 'network'): ns3::PbbAddressTlv [class]
     module.add_class('PbbAddressTlv', import_from_module='ns.network', parent=root_module['ns3::PbbTlv'])
-    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::Socket > >', 'ns3::Ptr< ns3::Socket >', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::RadvdPrefix > >', 'ns3::Ptr< ns3::RadvdPrefix >', container_type='list')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
+    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::Socket > >', 'ns3::Ptr< ns3::Socket >', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::RadvdPrefix > >', 'ns3::Ptr< ns3::RadvdPrefix >', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -574,12 +581,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -671,6 +678,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1349,6 +1357,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1361,6 +1373,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3745,6 +3761,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -4101,61 +4125,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4163,6 +4143,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4203,6 +4185,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5861,12 +5845,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5892,6 +5878,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7081,10 +7072,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -8429,10 +8420,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PacketSink_methods(root_module, cls):
diff -Naur ns-3.19/src/applications/bindings/modulegen__gcc_LP64.py ns-3.20/src/applications/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/applications/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.468636430 -0700
+++ ns-3.20/src/applications/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.799996687 -0700
@@ -155,7 +155,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## ping6-helper.h (module 'applications'): ns3::Ping6Helper [class]
@@ -174,6 +174,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -198,6 +200,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## packet-socket.h (module 'network'): ns3::DeviceNameTag [class]
@@ -514,32 +518,35 @@
     module.add_class('PacketProbe', import_from_module='ns.network', parent=root_module['ns3::Probe'])
     ## packetbb.h (module 'network'): ns3::PbbAddressTlv [class]
     module.add_class('PbbAddressTlv', import_from_module='ns.network', parent=root_module['ns3::PbbTlv'])
-    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::Socket > >', 'ns3::Ptr< ns3::Socket >', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::RadvdPrefix > >', 'ns3::Ptr< ns3::RadvdPrefix >', container_type='list')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
+    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::Socket > >', 'ns3::Ptr< ns3::Socket >', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::RadvdPrefix > >', 'ns3::Ptr< ns3::RadvdPrefix >', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -574,12 +581,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -671,6 +678,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1349,6 +1357,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1361,6 +1373,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3745,6 +3761,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -4101,61 +4125,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4163,6 +4143,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4203,6 +4185,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5861,12 +5845,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5892,6 +5878,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7081,10 +7072,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -8429,10 +8420,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PacketSink_methods(root_module, cls):
diff -Naur ns-3.19/src/applications/model/application-packet-probe.cc ns-3.20/src/applications/model/application-packet-probe.cc
--- ns-3.19/src/applications/model/application-packet-probe.cc	2014-06-17 10:34:00.475636376 -0700
+++ ns-3.20/src/applications/model/application-packet-probe.cc	2014-06-17 10:33:13.806996633 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ApplicationPacketProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ApplicationPacketProbe);
 
 TypeId
 ApplicationPacketProbe::GetTypeId ()
diff -Naur ns-3.19/src/applications/model/bulk-send-application.cc ns-3.20/src/applications/model/bulk-send-application.cc
--- ns-3.19/src/applications/model/bulk-send-application.cc	2014-06-17 10:34:00.475636376 -0700
+++ ns-3.20/src/applications/model/bulk-send-application.cc	2014-06-17 10:33:13.807996625 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BulkSendApplication)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BulkSendApplication);
 
 TypeId
 BulkSendApplication::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/onoff-application.cc ns-3.20/src/applications/model/onoff-application.cc
--- ns-3.19/src/applications/model/onoff-application.cc	2014-06-17 10:34:00.476636368 -0700
+++ ns-3.20/src/applications/model/onoff-application.cc	2014-06-17 10:33:13.808996618 -0700
@@ -46,8 +46,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (OnOffApplication)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OnOffApplication);
 
 TypeId
 OnOffApplication::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/packet-loss-counter.cc ns-3.20/src/applications/model/packet-loss-counter.cc
--- ns-3.19/src/applications/model/packet-loss-counter.cc	2014-06-17 10:34:00.477636360 -0700
+++ ns-3.20/src/applications/model/packet-loss-counter.cc	2014-06-17 10:33:13.809996610 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PacketLossCounter")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PacketLossCounter");
 
 
 PacketLossCounter::PacketLossCounter (uint8_t bitmapSize)
diff -Naur ns-3.19/src/applications/model/packet-sink.cc ns-3.20/src/applications/model/packet-sink.cc
--- ns-3.19/src/applications/model/packet-sink.cc	2014-06-17 10:34:00.478636352 -0700
+++ ns-3.20/src/applications/model/packet-sink.cc	2014-06-17 10:33:13.809996610 -0700
@@ -34,10 +34,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PacketSink")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (PacketSink)
-  ;
+NS_LOG_COMPONENT_DEFINE ("PacketSink");
+NS_OBJECT_ENSURE_REGISTERED (PacketSink);
 
 TypeId 
 PacketSink::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/ping6.cc ns-3.20/src/applications/model/ping6.cc
--- ns-3.19/src/applications/model/ping6.cc	2014-06-17 10:34:00.479636345 -0700
+++ ns-3.20/src/applications/model/ping6.cc	2014-06-17 10:33:13.810996602 -0700
@@ -38,11 +38,9 @@
 namespace ns3 
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ping6Application")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ping6Application");
 
-NS_OBJECT_ENSURE_REGISTERED (Ping6)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ping6);
 
 TypeId Ping6::GetTypeId ()
 {
@@ -111,7 +109,6 @@
       NS_ASSERT (m_socket);
 
       m_socket->Bind (Inet6SocketAddress (m_localAddress, 0));
-      m_socket->Connect (Inet6SocketAddress (m_peerAddress, 0));
       m_socket->SetAttribute ("Protocol", UintegerValue (Ipv6Header::IPV6_ICMPV6));
       m_socket->SetRecvCallback (MakeCallback (&Ping6::HandleRead, this));
     }
@@ -173,13 +170,14 @@
       /* hack to have ifIndex in Ipv6RawSocketImpl
        * maybe add a SetIfIndex in Ipv6RawSocketImpl directly 
        */
-      Ipv6InterfaceAddress dstIa (m_peerAddress);
       for (uint32_t i = 0; i < GetNode ()->GetObject<Ipv6> ()->GetNAddresses (m_ifIndex); i++)
         {
-          src = GetNode ()->GetObject<Ipv6> ()->GetAddress (m_ifIndex, i).GetAddress ();
-          Ipv6InterfaceAddress srcIa (src);
-          if ( srcIa.GetScope() == dstIa.GetScope() )
+          Ipv6InterfaceAddress srcIa;
+          srcIa = GetNode ()->GetObject<Ipv6> ()->GetAddress (m_ifIndex, i);
+
+          if (srcIa.IsInSameSubnet (m_peerAddress))
             {
+              src = srcIa.GetAddress ();
               break;
             }
         }
@@ -223,7 +221,7 @@
       m_socket->SetAttribute ("Protocol", UintegerValue (Ipv6Header::IPV6_EXT_ROUTING));
     }
 
-  m_socket->Send (p, 0);
+  m_socket->SendTo (p, 0, Inet6SocketAddress (m_peerAddress, 0));
   ++m_sent;
 
   NS_LOG_INFO ("Sent " << p->GetSize () << " bytes to " << m_peerAddress);
@@ -248,6 +246,8 @@
         {
           Ipv6Header hdr;
           Icmpv6Echo reply (0);
+          Icmpv6DestinationUnreachable destUnreach;
+          Icmpv6TimeExceeded timeExceeded;
           Inet6SocketAddress address = Inet6SocketAddress::ConvertFrom (from);
 
           packet->RemoveHeader (hdr);
@@ -260,10 +260,23 @@
             case Icmpv6Header::ICMPV6_ECHO_REPLY:
               packet->RemoveHeader (reply);
 
-              NS_LOG_INFO ("Received Echo Reply size  = " << std::dec << packet->GetSize () << " bytes from " << address.GetIpv6 () << " id =  " << (uint16_t)reply.GetId () << " seq = " << (uint16_t)reply.GetSeq ());
+              NS_LOG_INFO ("Received Echo Reply size  = " << std::dec << packet->GetSize () <<
+                           " bytes from " << address.GetIpv6 () <<
+                           " id =  " << (uint16_t)reply.GetId () <<
+                           " seq = " << (uint16_t)reply.GetSeq () <<
+                           " Hop Count = " << (uint16_t) (64 - hdr.GetHopLimit ()));
+              break;
+            case Icmpv6Header::ICMPV6_ERROR_DESTINATION_UNREACHABLE:
+              packet->RemoveHeader (destUnreach);
+
+              NS_LOG_INFO ("Received Destination Unreachable from " << address.GetIpv6 ());
+              break;
+            case Icmpv6Header::ICMPV6_ERROR_TIME_EXCEEDED:
+              packet->RemoveHeader (timeExceeded);
+
+              NS_LOG_INFO ("Received Time Exceeded from " << address.GetIpv6 ());
               break;
             default:
-              /* other type, discard */
               break;
             }
         }
diff -Naur ns-3.19/src/applications/model/radvd.cc ns-3.20/src/applications/model/radvd.cc
--- ns-3.19/src/applications/model/radvd.cc	2014-06-17 10:34:00.481636330 -0700
+++ ns-3.20/src/applications/model/radvd.cc	2014-06-17 10:33:13.812996587 -0700
@@ -40,11 +40,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("RadvdApplication")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RadvdApplication");
 
-NS_OBJECT_ENSURE_REGISTERED (Radvd)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Radvd);
 
 TypeId Radvd::GetTypeId ()
 {
diff -Naur ns-3.19/src/applications/model/radvd-interface.cc ns-3.20/src/applications/model/radvd-interface.cc
--- ns-3.19/src/applications/model/radvd-interface.cc	2014-06-17 10:34:00.479636345 -0700
+++ ns-3.20/src/applications/model/radvd-interface.cc	2014-06-17 10:33:13.811996595 -0700
@@ -24,8 +24,7 @@
 namespace ns3 
 {
 
-NS_LOG_COMPONENT_DEFINE ("RadvdInterface")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RadvdInterface");
 
 RadvdInterface::RadvdInterface (uint32_t interface)
   : m_interface (interface)
diff -Naur ns-3.19/src/applications/model/radvd-prefix.cc ns-3.20/src/applications/model/radvd-prefix.cc
--- ns-3.19/src/applications/model/radvd-prefix.cc	2014-06-17 10:34:00.480636337 -0700
+++ ns-3.20/src/applications/model/radvd-prefix.cc	2014-06-17 10:33:13.812996587 -0700
@@ -24,8 +24,7 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("RadvdPrefix")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RadvdPrefix");
 
 RadvdPrefix::RadvdPrefix (Ipv6Address network, uint8_t prefixLength, uint32_t preferredLifeTime, uint32_t validLifeTime, bool onLinkFlag, bool autonomousFlag, bool routerAddrFlag)
   : m_network (network),
diff -Naur ns-3.19/src/applications/model/seq-ts-header.cc ns-3.20/src/applications/model/seq-ts-header.cc
--- ns-3.19/src/applications/model/seq-ts-header.cc	2014-06-17 10:34:00.482636322 -0700
+++ ns-3.20/src/applications/model/seq-ts-header.cc	2014-06-17 10:33:13.813996579 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SeqTsHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SeqTsHeader);
 
 SeqTsHeader::SeqTsHeader ()
   : m_seq (0),
diff -Naur ns-3.19/src/applications/model/udp-client.cc ns-3.20/src/applications/model/udp-client.cc
--- ns-3.19/src/applications/model/udp-client.cc	2014-06-17 10:34:00.482636322 -0700
+++ ns-3.20/src/applications/model/udp-client.cc	2014-06-17 10:33:13.814996571 -0700
@@ -35,10 +35,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("UdpClient")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UdpClient)
-  ;
+NS_LOG_COMPONENT_DEFINE ("UdpClient");
+NS_OBJECT_ENSURE_REGISTERED (UdpClient);
 
 TypeId
 UdpClient::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/udp-echo-client.cc ns-3.20/src/applications/model/udp-echo-client.cc
--- ns-3.19/src/applications/model/udp-echo-client.cc	2014-06-17 10:34:00.483636314 -0700
+++ ns-3.20/src/applications/model/udp-echo-client.cc	2014-06-17 10:33:13.815996564 -0700
@@ -31,10 +31,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("UdpEchoClientApplication")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UdpEchoClient)
-  ;
+NS_LOG_COMPONENT_DEFINE ("UdpEchoClientApplication");
+NS_OBJECT_ENSURE_REGISTERED (UdpEchoClient);
 
 TypeId
 UdpEchoClient::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/udp-echo-server.cc ns-3.20/src/applications/model/udp-echo-server.cc
--- ns-3.19/src/applications/model/udp-echo-server.cc	2014-06-17 10:34:00.484636306 -0700
+++ ns-3.20/src/applications/model/udp-echo-server.cc	2014-06-17 10:33:13.816996556 -0700
@@ -34,10 +34,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("UdpEchoServerApplication")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UdpEchoServer)
-  ;
+NS_LOG_COMPONENT_DEFINE ("UdpEchoServerApplication");
+NS_OBJECT_ENSURE_REGISTERED (UdpEchoServer);
 
 TypeId
 UdpEchoServer::GetTypeId (void)
diff -Naur ns-3.19/src/applications/model/udp-server.cc ns-3.20/src/applications/model/udp-server.cc
--- ns-3.19/src/applications/model/udp-server.cc	2014-06-17 10:34:00.485636299 -0700
+++ ns-3.20/src/applications/model/udp-server.cc	2014-06-17 10:33:13.816996556 -0700
@@ -36,10 +36,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("UdpServer")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UdpServer)
-  ;
+NS_LOG_COMPONENT_DEFINE ("UdpServer");
+NS_OBJECT_ENSURE_REGISTERED (UdpServer);
 
 
 TypeId
diff -Naur ns-3.19/src/applications/model/udp-trace-client.cc ns-3.20/src/applications/model/udp-trace-client.cc
--- ns-3.19/src/applications/model/udp-trace-client.cc	2014-06-17 10:34:00.486636291 -0700
+++ ns-3.20/src/applications/model/udp-trace-client.cc	2014-06-17 10:33:13.817996548 -0700
@@ -37,10 +37,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("UdpTraceClient")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UdpTraceClient)
-  ;
+NS_LOG_COMPONENT_DEFINE ("UdpTraceClient");
+NS_OBJECT_ENSURE_REGISTERED (UdpTraceClient);
 
 /**
  * \brief Default trace to send
@@ -188,8 +186,7 @@
 UdpTraceClient::LoadTrace (std::string filename)
 {
   NS_LOG_FUNCTION (this << filename);
-  uint32_t time, index, prevTime = 0;
-  uint16_t size;
+  uint32_t time, index, size, prevTime = 0;
   char frameType;
   TraceEntry entry;
   std::ifstream ifTraceFile;
@@ -329,7 +326,7 @@
   struct TraceEntry *entry = &m_entries[m_currentEntry];
   do
     {
-      for (int i = 0; i < entry->packetSize / m_maxPacketSize; i++)
+      for (uint32_t i = 0; i < entry->packetSize / m_maxPacketSize; i++)
         {
           SendPacket (m_maxPacketSize);
         }
diff -Naur ns-3.19/src/applications/model/udp-trace-client.h ns-3.20/src/applications/model/udp-trace-client.h
--- ns-3.19/src/applications/model/udp-trace-client.h	2014-06-17 10:34:00.486636291 -0700
+++ ns-3.20/src/applications/model/udp-trace-client.h	2014-06-17 10:33:13.817996548 -0700
@@ -150,7 +150,7 @@
   struct TraceEntry
   {
     uint32_t timeToSend; //!< Time to send the frame
-    uint16_t packetSize; //!< Size of the frame
+    uint32_t packetSize; //!< Size of the frame
     char frameType; //!< Frame type (I, P or B)
   };
 
diff -Naur ns-3.19/src/applications/model/v4ping.cc ns-3.20/src/applications/model/v4ping.cc
--- ns-3.19/src/applications/model/v4ping.cc	2014-06-17 10:34:00.486636291 -0700
+++ ns-3.20/src/applications/model/v4ping.cc	2014-06-17 10:33:13.818996541 -0700
@@ -28,10 +28,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("V4Ping")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (V4Ping)
-  ;
+NS_LOG_COMPONENT_DEFINE ("V4Ping");
+NS_OBJECT_ENSURE_REGISTERED (V4Ping);
 
 TypeId 
 V4Ping::GetTypeId (void)
diff -Naur ns-3.19/src/applications/waf ns-3.20/src/applications/waf
--- ns-3.19/src/applications/waf	2014-06-17 10:34:00.489636268 -0700
+++ ns-3.20/src/applications/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1,162 +0,0 @@
-#!/usr/bin/env python
-# encoding: ISO8859-1
-# Thomas Nagy, 2005-2010
-
-"""
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-"""
-
-import os, sys
-if sys.hexversion<0x203000f: raise ImportError("Waf requires Python >= 2.3")
-
-if 'PSYCOWAF' in os.environ:
-	try:import psyco;psyco.full()
-	except:pass
-
-VERSION="1.5.16"
-REVISION="e6d03192b5ddfa5ef2c8d65308e48e42"
-INSTALL=''
-C1='#5'
-C2='#,'
-cwd = os.getcwd()
-join = os.path.join
-
-WAF='waf'
-def b(x):
-	return x
-
-if sys.hexversion>0x300000f:
-	WAF='waf3'
-	def b(x):
-		return x.encode()
-
-def err(m):
-	print(('\033[91mError: %s\033[0m' % m))
-	sys.exit(1)
-
-def unpack_wafdir(dir):
-	f = open(sys.argv[0],'rb')
-	c = "corrupted waf (%d)"
-	while 1:
-		line = f.readline()
-		if not line: err("run waf-light from a folder containing wafadmin")
-		if line == b('#==>\n'):
-			txt = f.readline()
-			if not txt: err(c % 1)
-			if f.readline()!=b('#<==\n'): err(c % 2)
-			break
-	if not txt: err(c % 3)
-	txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r'))
-
-	import shutil, tarfile
-	try: shutil.rmtree(dir)
-	except OSError: pass
-	try:
-		for x in ['Tools', '3rdparty']:
-			os.makedirs(join(dir, 'wafadmin', x))
-	except OSError:
-		err("Cannot unpack waf lib into %s\nMove waf into a writeable directory" % dir)
-
-	os.chdir(dir)
-	tmp = 't.bz2'
-	t = open(tmp,'wb')
-	t.write(txt)
-	t.close()
-
-	t = None
-	try:
-		t = tarfile.open(tmp)
-	except:
-		try:
-			os.system('bunzip2 t.bz2')
-			t = tarfile.open('t')
-		except:
-			os.chdir(cwd)
-			try: shutil.rmtree(dir)
-			except OSError: pass
-			err("Waf cannot be unpacked, check that bzip2 support is present")
-
-	for x in t: t.extract(x)
-	t.close()
-
-	for x in ['Tools', '3rdparty']:
-		os.chmod(join('wafadmin',x), 493)
-
-	if sys.hexversion>0x300000f:
-		sys.path = [join(dir, 'wafadmin')] + sys.path
-		import py3kfixes
-		py3kfixes.fixdir(dir)
-
-	os.chdir(cwd)
-
-def test(dir):
-	try: os.stat(join(dir, 'wafadmin')); return os.path.abspath(dir)
-	except OSError: pass
-
-def find_lib():
-	name = sys.argv[0]
-	base = os.path.dirname(os.path.abspath(name))
-
-	#devs use $WAFDIR
-	w=test(os.environ.get('WAFDIR', ''))
-	if w: return w
-
-	#waf-light
-	if name.endswith('waf-light'):
-		w = test(base)
-		if w: return w
-		err("waf-light requires wafadmin -> export WAFDIR=/folder")
-
-	dir = "/lib/%s-%s-%s/" % (WAF, VERSION, REVISION)
-	for i in [INSTALL,'/usr','/usr/local','/opt']:
-		w = test(i+dir)
-		if w: return w
-
-	#waf-local
-	s = '.%s-%s-%s'
-	if sys.platform == 'win32': s = s[1:]
-	dir = join(base, s % (WAF, VERSION, REVISION))
-	w = test(dir)
-	if w: return w
-
-	#unpack
-	unpack_wafdir(dir)
-	return dir
-
-wafdir = find_lib()
-w = join(wafdir, 'wafadmin')
-t = join(w, 'Tools')
-f = join(w, '3rdparty')
-sys.path = [w, t, f] + sys.path
-
-if __name__ == '__main__':
-	import Scripting
-	Scripting.prepare(t, cwd, VERSION, wafdir)
-
-#==>
-#BZh91AY&SY< H JH0B ,ap                s#]vzW;-ʹV:.X{7ջknsVP^}m2kP7ȗl}Q;WT>vzځ˻vћo}| 1  @"; ;ey㷣iop4t [{lՃMO@z4٨" ]* T2((5C*-}ugsYqQgw- ʍ4Vxo;ڻȾom{tv뷯^K[#,y{ކۖw{0ѶuAZH5.;bH	VݷAX{jXUaMm۫YGn=u]}nnNuӝ!}7k֣xǭU}J7cbr⚠oEO>K.}>jEvwofz׎znݪUլUj|ן|>Ogwo}ٔ|旵{۾3ywn]:.%ݻtɖ=wz{̀V#,JK@nu[AQs-]N 2es6헃)}n۾PQWy׸mۺklFyWoUZwot|ܖϑ;rNF]k{}}jms 󎋱y=Mrs<wͱݶg׶}O{Ⱥ	fK}p#,yz#5py=	·xۊ#,E,{y|zy n+{%2'6ثom}O^^{zvw7v˻Chk۽ӯ;ð.}B@5G@`Yp qow>E)@rvDX>ϫ]ݺ޵kfǦngmȒkZ,mIݶ\h)ͭ۷ݗWZ+ӝ_ZzT:]5˞}=l[\esNA L&&M	2ddz=4A @4&='<502C  "d #5mh?Щ&4CLPFm@   	=RF2S3&5hF  C@      B@h M&LdhLL54iC #, MDB &h#5m2(Df$SM4h   9DW!0FP`J2YQʀ~k˕rmȒt=VK,	h{?_HPi <Hkڔ2Z,6ciY!j{FٜMXP/޷Fl㎇" o	0~@! #5@<C7}l ` EV8D#,UUAT`	fTSLFl	FT$JlFRY#5Mc)2eai&C#,&(Ee$̘#Rě[6DB%MXfXYL0&ɥfԑmS6S(U!4i4K4Y&F&MRda$BS(PbM2hfR%$M1,L3!l")(llɴHԑ3(%L+12$i4SDbhPţA6SK41-4[DD2bJf4# у4ihH)B"1	QDYK)%I`h"*IF&iDb!HTJHD #5%!#5cf%QҐiASAXf,MLLDMH #F1%āK2DedІI)I#&̴#,4c32RZM&E,ȊiifmJ"B)2TQ2Plf1,c046LAJ)dFh,j1(E%%ID,bFeH`f4BRfVa1i&F5эQHhE$cLh$6$c2),(*#5e,	Ʊ6M&P%2#5h#R(J Q54LRR")k642i1hJ0RJ" LIF2X,ij	*L>%Hh%eb*m5i,AX՚Ib#Fl#,&C4E)C5A"JeZl$	c+S i%"V%55M52KRljJIYdbMcJM"Y1eeQQThƪXI3Z-EZ#,H`ȖƃZ,!l[EDc4b(LX-MdڙIVRkMզMc635ҋ#lU4JQ&Zi1&lL*Vf#5Yjk$PM"4)$X--QF#,(FQP"d I$F6#6M`JlZ,2JfhY,e&K$24lRZLbllђjfً%$`FBPE3	64mdY(ٱ526-EŦAlʣ2b+hєhJ0PE3`X2֒A	-04"i%hSM&+%bZIFe	$ŋkƥ5meE4L,XSJ$S10)"C3")2Q dh6C[)0fDMQdȒi506Q2T,LF,Q4L(QV@2QҙF,,`eE11QbIKbb,2H Tڔ1EhjMبMbRYJi`iXf5%%&b[*4%QM0,b5$fQIQ3	#5K)VX[ҔL-&5i*[clUQd6H5Fm"mj#5-Df-H)4*h,!RhM%Q2 fF3 1P5%UMjCbF(%1YIPf2BR,@ P#m+id#5QQ#,#aM5!d(LѤj#T&幣$A&eF#)_{s]#5eX#50`bcn_yMJJW̾KxDy_y駣s!!I?k=+Cٳ3)]u#mihcgd*`h#,/&`4ZdFK]hT1(*twHr+jvBҚiuA ji!f<?kTf.Wl$(#5Mֲ% 2tWT^Ҫ<jNng83xpqN,MShm$Αqh;VXP'oٝ(@S:Ԗ\rMt<|칔4Onh9_gWm&SmA:̠suMB:xH޻!+!똍5R(W\sFki홵g17cm;bd	M7'QUwlѽּTjNk=t]qw(#,xo=J,hq+kד$x^{3ybc%`Qx+U*/vB(;-K}fA9!CwMbu!t\?=qxØRܳEh/urkJĈ:%134=8ïGݬ?4R$7QcT7VRn;`PM4TjrUk⛳1z<ur!58a<vepz]ykxrLbɊ)ak(][E)T+*Ӫ Ѷ2Qne#5_]qTGpAQw0_ɢjFH|l`d>M~;;QI)xbF#5։偷v'8n2qfm}w.nW6n#,̅blE8N]Db/qkM-TN9>q/\7:g`~Īߕ"YBo@#ӉcA!"5NcJ֔সB!kUKd6p3؜m+JՁ<zhmu:765[gM	'F7_+P	=h+K#(	:ެ-g"*g6WJ%K[am90;?Ș)/aGψ8@ecV?='j?c I5ݓ$Ƕu-}ۆaaY#5sX)$j^}7Nאi,m:>#,A58E3'w̓RO[hvcюȔȔNRJhZ7;/ݿ<6OUg&~N#,,!ܜ7T^nJNXYǺVb5JUM.V4zջmoKauʹU#5;$=ͥwc. JMDpdsC!ΨkX]M_GTV)RRuQhuZf IS?@v|o,tH~kŝ%i4FX>+&2 ~Fr4v%^p\s#ڇNT	 dׄ)&<w=~kL=TdMDvt<ppBdJ/70Q̩Bb贠EifZÐz"-ydb_EaZR|=K]+K91ŷ6Xƴmٝ,'kK<W]ggלᕴ@r)<X!Q8bVC)M؈Gbw0sfiƏJtyf^E)GW?jOe %2l8XBs:PFƊq+sp<\e	}*&}Kn46&\-ZV>F̭)_*򖴾gNtC*j4NGdg9?i%!	SS ɢ#58M*+k$P+wS4LiKWBg%#۹='-ln;/h͇<_+Jz(Kxq2EnLu֬>WǃqOl%$:a4{o#9#,bWJoZ]zn߂(kƉТmTr5E)GFXHUUtPvl"~`Onۤ9c>vb	!,KzCC|fg{=7钢I"8e_<kwݸNZo`{.?|Eʡvݡ7<<K<dh({zA0-0Vu6u4MXqС,aߏc~sc(F"h+s2n~8Ix¶/~w,aG'O8 xR`E( M(}ureN?[R ӶUYakhó+T~VT(l1_=('CI秝s67Ƴ1>`Ro:VQ~qݔew xymPP9e|[>n޸3w6Ns,np[",!H)'c	PHg_bO';z6B<ўipKi+;[ٹ)~3~+מyח@a>}!B!,=w0-]AjJkQfU#5dvsEQQfW_u]xjiaMqH|a.mil;ȶÂ[z3g*Qw?c#5Zwd'LXBMk)wM[gR0M84y+qa8(&d]0t-z>9GwYb)A]#2#aLջ`}ha:A3I*;Jl&I&HTR)WmzBGEPl?u6ndי^ԛS=PpL%zw/FįqPl̅$~6W'٘#,GuXlhg2#A8\lU+#Wš3tfHJQ=\N׉2#,x"i}TzwyYM@:J~1dxfjer;5NgLo<MbdZXF~V4+./G;I!웲G18|?>~bcEf4faC	8AՊZ$#ugkQ/u)2µөF#,ūRB#,"/PiI D<lLS$Dgg-ҍ;󭕄@)1Ƒhq"! Ƽgf6k==fKp7]֊gύ[?{YI(\8xQ6:PɫpH_|îF ?]/POʐwmWMvh#NMį) ,#̿YQdQQL:UCz㤷h[/<(0_!jkuXS>kl1)"#5{*?:pJMePRd.\7|7ܟǻWKfU/lS%	YyC+AlTqeBIYgH~#5ti領xd0f#,y.LtOj<&#,QX6Ѯq4<Mhˬݤwo<GZNN?q۫EfBTR!7txF5R^Ug"c4gMgvKKޛH7vcź)^_0*(v-,CK#IskPa+^-u}5rRTT\ 2MU-#˼ܽ6Fև6]8>#,i¬Z0@>.}#5GSӗtų!m֓n5턕ֹ6QXzBM|[;xQꤙp;穬^P)!""L۩]fqs1߳]Mfٟc:䲤ǅ/3.5닇;	|G1(%vyjg0H@倡{F]|SV_7{<W֢ 8ǦhG^ȍ@V	!vxL\6sJ|^:O/4	 ;GBOӋ2Y" V߫ʒHp"Te3>QNBԪ6[TH(C|L	!'ct,l(>MqŞx-;9<vyk,2˜p!g% +>Uo>8k.gkqQ#۷hE%oUaZbBȁ!Jt	e6	N,u0~3uQrX4ÂcI?Q*MeԩNmE"{wpk*<7~:f>IVYA#5G1*K:?z.`?[#5Lȭ@q2WsYٌ; uwÞ#[-T4wn^h y  v!	@B F@9y r$cmJ19NI[;nٹ9(qИwSW>l>h L0@=Q.JHo"O\`. )@WM	xieCPU2Jɩi?2 /	2y]gQ{đCJ$)M)TU26,N^'P;oa.6{V(wFߍd~,0@Qu8?>{w#,(g,hM}݇xT `n&+P>ٺi ƿByP;}I{zC鳗fn]'o??L)$Td)c}3^䃫-o)mu3`F~~eoqA_j-N5/llQbۼp˚	R;r	OWE:Pv,@^7#, !sV[ʆ$.t9=tzq#,CXro~y1U@sUҪbf {>ApD/[hF><C1.;[<4wշd?˜4j:qI92~k>,KWI/d_C$a~<G-N@F#j]9`dQ{tq#>qH1qr4:Qsd] (<uUZ'錫cs|wm)cJuU42s߫4.nlԮrt"P}oVKS#5ξ,KU9˥krbs9;gL׵MݣMMsѡHܓ(UZez^UYՐUE?>o8*{bkެAl]tQ'uDTTC޳5~Nd,s7߮tl/hʤG>pP~Kw6vpS$1)$`F2\{7Yoysύfns:6ny_E~Ѧxp0,;PH/7`rT#,v sS)>o5|bP&1stݫkk4 7g:k"<n	˘/eۖ29W|IgŨq/)ylZz_+CMMwM܎+(adVHE|t;k2l;=s<>ZS?+}F`x'Z]Q!?:BJuFLa2}"_8.h撺s;VT3c#-edS)#5OC'ƺi(*ۓwߌ1t4#,	̍1?+(BSyH7Jİ2GNC ȀTpQ5p#5sfyJ*gV@Q>m*gk~^ #5NUН̏Kb4fz؅?ڈɎU&a!&u铤F+]K͑`a-iV~u3@aU>[vGxŨ,(wP[xO;mmH~/kxAŢn)Cn*-~5^i\E1iyvU(3Mԛx%ޡI߽i9Ü{D`H#@С1+KA_^0؁Vxr>HbǟKlgW0{t!&獞qƠޜX.jh-t"*Woߣ}<2yQf#|Ax,P`D1QB}xNAjaLs=bLqgvmKTYCw;(,Y2ֱ]zRWK~|Ό#,E*)#Q;Tolq{#fDq@>RVMV/^v-7o<3VzGDXL${X94"28dPE8cZdmel'?ɫnxJi`84$!6%U0h؈db'0:I0Á1@J8&Xݖ,n,ZΛo4$ݕ60x'(KO`nJT:ud쫟Èv)|lA̡fde56iQCs)f={[ʿuwqsΡhPpL;-q~'.[#5ːȀ5:	#55"A pU	袌#_|٬SGO?B@A.kr@u"jMsgFLtBoCCtL$uOokScR1T7?#,VN+lYDMƻ_r L,hp>H,<#50;S!9$7GKqvL#5E9\@_Ϻڪ.9^(@4= -$r9XVnZJ)UDH!mTl_uZ}Sie11j-jhagP/-WiK!×)󆉙(?7t߰e2??#,{h~$&\ڛ8uK.ҿILj-x曈sc`t2BCѩ:Q%-u^,!ᵭchm/85guk\^ kTi+Q!B#5Nb݃dbWT-+"߷w	i]I><?͡¨Ic0>˕,cP@HPi9"Ɖ3WId 6ǚrM"XlI䉰4رY%kܒuztmĹNݴDeWLƱ(1F"|4wq㭁mBD쬴oTi8`b4#,\-s!ͺk2xC6i˙/SR!a2jA	"jU@XL!DvIax)f!dgT#64tKFa͛{t4D=1	vm5m7L5SMO70/x'"Vhϟĸx?N-3"	:5xV$X|Ry,5Ldi?-1hάRgq _lHD]0֯G.,eѹe3eVMw	d~?yп5 w-b>OfИe7znlz< 1>=ȋ@B6|BfRJ%$9ZkIۏR_qxKb낥;[ 28̬5ǟK0ɠ&gq!LrCٱn}_rUiГJ @m$r6u2 +ކiH0nM,bwZC[w #5kn;X#EtBFø/J4s ϴ=pu#,Ik_go#,iѠ.=װזgi>+"PwUACu}uG]}y`w'iO#,.ysi*Rg$k_C*bGrJ+5I8ř8,z7&-t@jA%=,#r&9j+]ғ )l5d| ML>\kry<H8ף@xr >msV4۾zo-O#5N[tQZGrG-]gv~ۣצtP| wdh#5<<c(sy_.irlajP$t/c|"-[*1cQv/+Ҏg?ϙ0_ۦQrTJfzPD^=#<l=:RǗzuKCvh*H!V?GHb5v?qy6Z{rֆQ4kw6,N8N#-~F&$kWK4\Oe+Wzgzb>`<b ˋ;mv{=8jB!@Ղ6OK.R8rGTyBՌyUV#5ԫ4+Ma5O]D%S0FeHa#,cN6aw<-SdWؚH#5 ƏH*7PŔwuy#"2)};kV*u#,RPvh4|BҐ1uΓo=O)¢]!M($0&=cLnӈ$H[_kIn@RZSTT]m2 d?I#,*)ܵ"*0(i3-q'e	Blc%IaK!Ǵj"O7nF`џ$j#5'!`LjE!P;<ꝸ*S=bsyI5м6s\ސPzް<8w~b:CIg[R:ȯPG#Lg൳P"!LBC4@TQ&pA<{ Ɛ2"oᗯsj5&Xb?b&YFq)QwMv>nQ){})~bot</Qh}[E4e};8]FLrJh!W49iSY4f%VӤPuQ#5g* l}&<c@TA{XQCtw~t6#,twZ#N/^aR	5Ts!HBS]3|H{,P-OrO4R},윃(!Co0grLq"&0PT,wM;92k}CץveuB?Yo>CxcTD;}U%eQhҡ>΂b~Yڣ'	Sqp,0C%$<$F&ϵctaV"kUR6~#5&;?G7v#,7~\P;]R(uTkuu"[~GO w	1NWbQ[FI.h]6#5HOa"FkG/H#5kℳWN[ңXzvmRj&yxo9OHsnz1*>N,rձ趺^O|O$e{wtY~M?(5Yw3nJFEG"c[WOFLs`A#5ܙcF\9olGGy]Z~;ƿ]2QX)?o]W!욻0󘺻hR_Bkc8lR)C^B$X^5T G5$ςh鯗ˢA*ӧ6x7_@?UewNB=[Ǣm.I|4'fkwIwhfs6FbζaճS^>͍E Hg|=e˭,W?[O?W(iiǃWv&%gn#5~j\Y-7{MpAr>8&?7DiBڕcV[BYZ>MjxP3k9G :N"˖_=89#PhQm'50jΑz[q?u߫|%˝ctEn)hϟ"Ԑ#J` '^!#,MUWFF^sӻ>yJy9;<ۺ;>x~"`|O~0r2}Z0|do<1ZDOģkk@{)@X2"pr=#5W^̱n-?BBf8㿎{"|ܜ%~? 9¯A#5ht{#,+ZB".#,FwY_~Ha7?|@BXT o3Ǘ@,(f|~ϗ:{z00,PU&$ci8aH(Yu{AD{D)#5hrE2af;GK?vfLQU;#p!?TTPQ#5r1nqi-1ӛP k@7o B@'X;-5?_ψGYD45GK,1vȟ$fەgZX-S^Kc0I&5WOyƯ!?:vR8_JL=];~957vYU{+H|uރVo'B#5/q*~1?|wڄTaM!>~]c8~-҃SA(҉5G@»n`4h ήӷ,dԽ8%)ϧsHJ=4,QUPKMnNT9{`($Pw~\lN|cs:dVׅ b#,f!yGa^\z!wl1Uwϒx&|0p4K?hj`,WΏ\=!@9(OVn/@'AY8xuu4Y]wM%fU	CxG#eܤJ!hH9;v)]^Z۷iȨwD(l%WhN?Vq}4i?{Gd{*LJZ@b#5%hB0Z",71eSAPvBTU0lQ)v]uIG4ѧK43V1l8<iA>rl}f1VQRXMs}}~{=C5=Fzs$hiTB2 4`Ȳ#,Qe)s#wAꭽ~zi{]#fl}Vb1j9e8,e?]>(碽~'|hGc4HѯkE5͟ysN~Zz_?+ SǴ##.zuy(U޿wγlh$X+?5Uݣw%a01f#5z8~!b<}C]+ݰ_x_sa~Oh:;#,EBnA=}[oZ?s}jJ*K$7QZhn'caV7@0A@Sl;VgȂ ]2FtnA+°cM ؘF$2;lnθe7`B2֤=X̦c"JC#N"4N:aVrh9KJ!řMoڂ80#,sFO-.u`ڶ\5X+B8611ƅ(dtUtXE%^k,0!7DhJBi1ī)[RFM	)wge$jw1#,KanF6Bee5FЃ1xyT4ٴp}w7-joS=((*~u@ʑH%DGԽӭSJP|O;o0S^0} S:bkx#ǄP`?hpP0Ngms9Swx<r>E9{QʜUb	!Ln#,yK߷\⛼X!-հ慜,TcoP")sޯ.ǙTI$,fBS_]Ɗ^3~̞\#5$"X"9뼙OÞ>eͶ*+=uh	.0,WNV	Nl"4F#&& @c;DIF@`@%oQ0|}?1Ǝϻa7nΚw+>2#,~rj6(+J(`D0U*IۻЇkֺ1cn`.sz<ov#cX7NQEvX)I -JGEz;#,O?ߒxnX5;^-K˞#Qz oFP&jEF:;lf6D`lh@6CQD (=6}o*źݏBJ 3fQ&iJj\g#,("b0]4\:]y	JD0ȕ:,iۄ|{&>Y***.	B0#7jQok}M-q\!Z/#, ^A5"@Үٙ(5!!f%LPIӣc۲v֗]w d;;x2:#,;P"jiVčmcZ#,XҦ<mg]$γkiٱi>30"Wa-2%-o-2IrdO016ޏ!_W:BCZĢo{&*#O!xIbU#, A`Y^Gͣvck[R	[8ETSC6=@3=l)"(D.l5zErUe/f#DlXbg,1VPJ։8E h5]d$ȨbpCw뿳H Έ#583W8k]۽:jjuR\,F{`miRk{ٖyI#54l\WN^	amVa=ǨOdJȢf9k"xt4dqllLhItPz26,H(#5EF홬)FP)Gv1RsӦ8l*004pαtbJL$*ğn~)ҸC52(/$dlʌ3݁t8/U#H~ GKtܓo-zqzUNV#䛬SN^-(cd7{0۫&7O֙f2YMwIaHpܓk^7Iy)(@zSr퇆wwVu8jQpMR(J6xCjINmBl8,0᫁"DY	tފU{,ؚY?Ezan<5['\iPiig׍\vâeK-\˫6M=zhmlSCUW#,#5&RS)'6M]-	$)M4+߮/v6n_bq򯶎spԝ#,KfA66:FLw	q?vHH;B\TY6BNAh6	b{e+MgN,PQ:H@>PnJ谍)IӒދ:6DDBN"8N4#,4eًr<X5RER|6~>&5Af~.!]m5{eUgoi)ef; /#jP7MUk)fELͪlÒrFo]8/B~UmmvgSQzDoX>O0﬒pBU%YNQJD.uv]mVM؊nNRȸ*͠uҦڶ,'MTWGv5_[Zv8MQV5~,AaK]S$C'_b\B;ÍVS*mƢeK#;Oy4tV^Q[Έ	5T!Yn1XJuߤЅyb̺[(+76<>J=O'#,K!\O"[lX-3C;q؉9$>=DMk(Q{3mIw!i٭H@9i='G90A.lZ$WsːwcwqOC29%1'T3pVî]e=.I۪bepɕy! !LG 76)%@$pK +$8(g^\I2RJ>fj4c߮ dz**PE~E"<xRhBijr:#,VIwT8s4>ʯ3^p}xz/ho Bo3:,&C0qmb2gDqP;/㴋'[~jX0gk$ZGwp]9af&ft"um	K)}v?w#fF*h	cAKn7|,8AYO.'{|4#,Df65aXi5#,Hk0{O1%{ɛ=RwEVխVWZMN8{liZclARD7*%LZGJsPFLʨ[0ze#A(&KA[r7Am x5sUn@a,{	{t咴',c#50v.4诤(݉M8!0釅M80_.#5jڃFvh>$#;.V?f"gOзqIh#}`)3+ʨw-z{h ίҪr,L]Ndgυ3":R)*~:uX<3;JQghaOyut<5+)8EU, =JOjJCdUG5}	W33C}Lb461 Xw-8!!fF,ZDMG'q9ijngb7|9vOY:gMq8#,ٛ*M#mɗһyƻKu#5c)IUzccukwI2MfRġdVΝva2kU~HלMJu R;bi+nO`H`kZHS\*ׂEYȟ&U?,:`[$X>zY1/_M,~*<gs<O]a]^^j)%;{v0ǊmIcvτĶ@/1KvbyYsR^o(oOw,Gu֠.ux+cr@K*u5lU/b+wU#5%fuWPys3Uz6"G?6:Th,t[DQ}x/6G!O(ֹ+HŞO6:037vl #,'{œk߲2tdq,.ӫ!xq7o(RO&vNOXSpak.dW&/[tC#+%۲.X0;c]dz]ܒ*+kWl6lu|N&]Tm[?KC?N&s7sU='\5V~A6ABr>Zo7cruc:Ut	CdBB5tH2.;gJF2;V/PA-6D!B HЁ"WT~:[W_<!d'3*TFP*`	#5w(W9B}mi1+VP֎{ j9f8åElL/0oXC?ɚmpt꜂o)ucQrlG~|8)-'/򄉯&yɕkPC=gjc#,ѺfԧWVVxUc43 b>eql"G]a:)Cǰk%ΊZvvZŵz_e-/Ba6qD<p]XE*%v&۲^?rڢw:Eѕ\tf<s114>	?t*s<wO˧%+sYLeJ5&p^:!󕔨svmAE4cfp#5_;Yɉfj/8oYZ,:6Zl^;}j嵻?K|3jL+!=EkiC̪}C5ᾏ1x&Hg\zF8T;Tn42,.r.gթP2nj4UmlF"_]}oΔgn(5㣧k'nsNxF+:,N맕U_9v;+m	m9Kv9FJd޸6.HV:{tش8n^)LmMɡ-l3W,ȕ_K%s`9p"=Iܮ6i~3ӺH6}1V'#5.hx}5p4:oO;leG2ڛ^|ۃAG-_엷yR>XU&\	9<e[]m\isĊb=;!V=k9sCM5|"qpsPoBTUö)Qhwºqg+܏{']$t4ZXꡄ{K]rӷ+BהOnM{>bvH,"Զ5Fl$rfZص[z[<>*ϭ-Z&|`cTpvd=E~W|;vne\AZ$)]i4Q?x/6ϼQ\J!!)BӢ4R4+5$3-@q7G>ovrSY4c3/3?n~l7~mM|:co1l+(Xl\K9c=N7Fr羇ypꅍu]灓+Et1ݡ[Q-F~)UmE3bNQqR7ѢJ1)(0J:fwάIŠYٖuE5:)@mR"{ʧ[.gEGp#5,v?Q#5YBCidv3XZ  _',8*,$si	ϰ#q}49w)SՐ[ǬȳCͲR%0%4oR*\x(|hBi}8	Q;F)LWs;jƆ75(ί@E6B(2ŋ+4-YGd]Si}r'"~|Y?)G<Nv/]"{J?\[.yIǕ~n+'o|u&#3=):XZsko8+ź7'oy6%ɽO|ҵR#,b)vyZ8XI?+#,M9̠46"`!2~"#,J#,|Q7d6[{#5[chvΨ|+xt:f+[K=|2D\NxxO:Yr{ͻduŗd{Ry[s׬YÝ /{"Dk/OK'Q3hJ_)ֻoǚ7G9WEE:{MN-fy3VKAF-ʺX,<dCEx~)dC,?28\ =㠹gUtfZmռ>RrE^m9*CZ/#f\#,TX 8p,dD?c%cNkJW'>)Վ|[0H[˚X]ZN4{RƗ^YQ'+U(NPTIeA-y%m*zOhf45:@E]Ud0r#,DzǶmQWlTʕFN#,#5sܧho|pb!YM*3#53Yy,KpԷƚm`sMǮr#,X7s>2GMw)5Ҧ*?EǞΛ?%r׾uP9a.m^	D_#5JF4w>Ǧ=:$gxƍz?noV&?_[SƿHOV8h:y.dNH:x^<nM7տeʺYת1V/\Ydu?\8ӳ4-	d@M!(>v!!i_oI5OAG?>Ɩ].|y6N*)奢CǿZaE"[}l#)M^RP;7Fc@4E]1F:VN? }T޹`K~>O>O4*fy]|{/樧ڸmˌL#_[Of&|f޳1'HMC TЍ#,5{L/<l~*{>Zv}FBר59s pP)Z<NbPAaҶȷղEG疭G-D|Jcu+ʚT;f`o3fJH(L67$VP#,4`E2ȗ<aEvÒаOg]r5<o+P _<yyF)iww!P٭G	SE&5-$n2;OE)WSlcLPOK<H$%Ap<>EǓ|ׂVZ=Da߯z>##~#W}Qfun|z[#5}mN՗P٣.]|f,n0U\`!QlC|?#5M#äǋSm{e##6?1./S6c(}p7`W;^X+X/+7U#;$u5Ζ@&~iI`Q̽q =Lqb9U{_b^.E&L]^7K-=2^06yZq.d0<UP<y#5܋-61EE|9eӉJ4?hR;Гkäo,Hm	cBK4g[n>Z=V/o	wo kNU[JbK*VSx`OTGD{l:a3Gwbk/lmKm9p"3uFgwGАsH[4$VX<iCJ$ˈF\z߉GS&y^Ux"s?y~6"@`?%Iŭk*pt'4X":n= +{	<:A!u0{bUA"&L>|l#5e1:5y3mi+rJ<M	n<c}CqeҤ~s0ka:ÄHr9T#3ŝEnJէ+ޯEM[+A?y!OC&ܩq	G\e Y	FUs$+x,%xSɣmQ4gՄE&	BMʥ0٢mǡ};"YX#+|xɿP9DjǹPyJ2"E}\9r<򿆛^ 8D~⹾r۹❠pd f\.P0a}Ђi8ۂ/f̨IlHOMtGv֓x1t%hq	ՙP@<lrC8/vqՆ)'zϭ"]yo1*/'?S}fexGQ_!0A-n9|P؂|fk"0혯w#5ϗ|iOCC\{|'/Z+r]%%󀡊mWL9:~kȉ?us%"NRUF#5N'㝍ZZ;qq.zr絬ƅ0p|;A[³tq1+_#,ex׭iubu0v$X {Mm #5]Ջ׷m.`S"ECEPnܫZ{8Pm+|NIϖ*y6rbuA@Sy;BH{s֗N`DȞ(;i#,!X6SNcY] d0 -k#FLOp6.8;f>._[|P|6̞HGy&n74󴣶b] ZtzClu E!(J95nv:ۿn섴-&rp]N6Nx&1>uGT~G$'fMtiG4='Ojzc=ÞԽ}0jV<[xeMø12L|O-?|BnYxm<!ejU#,0R t'fCD1QIB(8~r~y#,B=er].?rmz]׋p0mFA1wWH7+rێJ\;ѰxWO^xpK#,7_.mOP&')AHԢ=+;QP	q8S*<C^)Js6x=qsճR#5)z"88	ٶLՔ?>ɜFq]P1s,ԸhXC>m=Pm&f.GAw#,oz?7hZ@˶u>tUYwdaIfJM|8oǟw'Q;E<FL{4N븛{jF،T%{&`}kl8Qhۦ)b2wf}tѣߍ[:<s#,3qW[%x߫-ft͟_@9Mt%Oϐq6YYUi >sL-N#5"y\~wE oU]3:Q˙	푆&jeΘ.sC!d)o_T:l(ҍ=SttVyp֌γ@ogͮf_c"і~6t|s:>9?yS~qh<N9$r=P7vjLAP?7<2Ӻb1#,}w̢*&%xx'S;&t,a9ҙ{^̸Dsm5[`If|	.~Ka'#b(˚ZxG:4#:\e#,]k+@.(Y#54a9P֌DCI>H) ԣ&4T*T2qAݖsuXDzm EqTX3jh0Y! N=U)ͽ	uw;yGB7o2&G~hퟍ!k~7{vi0aIAD1Dg蛔I[k\-D=SF 5i	p͗$B":ȒJ)-&dLR@*	L-RABf`]b)&:N&)!X#5G8]#5.Ņ:m#5RB<2F_x#,F3_Uש䖯q`Cgt[ܱe;f|P}Ӧ"vcN|ͅZfSGYv=:|ihaFvUKyZ7nrͮtng\pVE;b2hp˛O:0{ڟgu]ηk_#,n?gg͉	B/Kx/nnKU(v"#54Lb#Y\'C3LԙTc͚6~M0Wb0ݖIK]&}]F_(Q`}㖱Ytj#, `GjhPJUxxX #5r3/Ķek=5\÷"RVw#,SךE2#'xGgM8}3C|Nqĳkn6FB^cX;	|'d<#дs#[;<*ΚҧCd|#54>dE"ߤ/!AE>ۣkymH\u@@c AbTqһl4?(1VHnKgM*gCgA;a<A'! L󑱇P"}%DA}UqRr`뀏Ax#5<D?Julw-:_+~`gJ&G`:DPQˎo"jөu=Y(+א1α{1XΤ܇3t$3Y>a䑬0`#,;?QK6L#5M]Ҕx%'SI.s Ċj{DP>*.p`T-+\OQP/1#5ՉXpߍ`RRsc$`5	=DtY'e ?؝`aߟIཪwqh5LB=V #,s"G`P44Q_$C	'2ðuKdꑳNDռAPA)~G:	~*r*I5Q[:T+Wt$>Mt3j[]&ab| Hg_Ԍ_9"s1KՕ*asT541TD<L⛅G$uhL~p`iDH(!;=#5ȨA&_|6k.F9ƔcJjFRDR&cY,]DW*f*Yc9ogZgl`_1uDO+\;]S&ú#({Q֥DwA	^EP;JA{	E\8_L h/ۑ(	T#5B0p(J2"Ķ`-uE3A#5#Uw0]6Wzː?g4tCɇrruK8 2dj]P@$hL#5	R'q]P4TpBRy Be'==:=-ľD8? <IrA!p9xTN;8Md޽sS{.0GǷ4{`4H<5l<(=Tl}_91fI!!_^##5	)} d&Ǩa8}'8<e'{hcdi/W,bܶr-EZ%MzQ{͵^Mm5&GZk##aٗ29KVW7ˬg>$3&;;4cVv4VN-i}8hӵ|*p,1l2iR9J	ѹ!3Ҷwae٫ILسJPs;tz:ۻ S"AӀCuؗx(kh2DF=vH%w	燴d:J4:rK%&6	eN*:.vdf"PNgqë57#5p#,g#58˼Spku(zZi9Hٚ!l")'(q<ˏy'?{ZqCoP7+#=W=X11q#5}+-H7"كL̯|a(2m	ܪ8xHSvA?̭و Φ+c#5r@̛׏<]Z	QD@ji:Wc֨޽zp@ǈt4>S@3I@/>"2	#o?_)6QK /#,ss*n3I}WPhqݨr9Y1#,Bx0gzBW\ښ;O͑;K	\#5P|.o6ö$HCYgy vb# :l⇧h8	9.®4<`8h}My,F(XAa0v]1$쥥^MY=XK)Kyf#%N	*#,!5J*mPǬ1q` !7)/[wuy݈\ѳ%ߪ5h;r1$">v1CZ×iBk'C\	viOK>R0ɱF,	<ТmXӞL=Χ歃 M1}O6}a0Y70/^↍oo6C9FK5I3yhӴ2=ӭrtyx{/փ֚IBk|c朐4q[CTaBuɯaP1l?.-rʑk(o5#,$CǁX'Wr}P$>vE705wLS(R@df2sX +\>~1眮N'gطpFU'&˯KvSgR|L1'ldH{Y2U]5μ9ܸ˷\ڹCLϫ.#,O`m|k0\j$aҙ;O>^߸>:x	ZXhN<ta	H{S*nsv֍>;a{˯<bx.x7q3㷆N	Lv=I'/%h4ӂ^Q=rV^|etID4i&UPi!{$ soO#Ilyk2㘀&@( @z|'ёDOu!+үFՍv0|%R!5Ym7+PP 		/LT/;*WŘ)	<3ر'G]u'{"3Kȸ88**F@[OEXFxDvWtVQo?,߷,M'710CT55۱ :O?{@@ _ߔiTkJ	"Ȱ1_3#*SeE0=&pCDl4WU;ș#5-Q@a9&m-2'pI*9?K($~yᝑ*dOE N_/ߍ#@~͌c%ܴQ*2BQNlqH	 ~$@J1T00ɬ`H''_v֣Xm깶n"zpW|.R BvBd2CF67֕QWǤQ얿#A2E~P&8U#.AZRIϸ2p{/]'fuך&I\3!C)o}ZFxr@	aiJ$] g'&E͊C#5A㞥~XO@UW07	lG#ៗ7 _XRצ5jllJf~baT0H a!ǿf6L280a;A/8uCB#bP	E:<]\))Ǡ1&T78ɵΙSH1c q)>2Oz{R6·'9REX_xUy	B,d xԨB xݢKxdi^ʅTHJiM]=*& ;7xR%}8 sDnȘ )B'<~J hzll<)Ô0}ٰ3_	i(QgJSar얷y(rpBxP?k#,B=W#wBvAj4T	\ $ώUPKy⯿ڜܪ'u3_*́GUtA펂H/րEuqң7;f]4_[_j'Pj@;_J	>P,AdHl~S<}:jLl?0]0#5uz_9}&#5r{{|t.A׼r)+T(@ UhAnn@CaCh0wb* P8w7v'P'A+κ陀R *qx"Z	)¶X߶#5r$>!r잯~C$OwcB˛ d6pt7;YHj1r1RIMx@Y*W|q'5aap)R"uOfײxs__Ԇjm¥I5P1/E=?S= z 묢\/A#5[ݰ#Ej956;^%d[HN_ɯۼ #,qGr87S}?} y噿oIS9lPRYFJ$`g9rt$"Vs$OCɑjhj:=BnNNY-g븾um=3GPw<˺CTu'x_K#6v!BJ10׏I˺AFxhR\~hy9[ZG!tߺwrĤWP(#,5 kBP08~':5X!l/'zWM"uQ7w+ڳ<kbev'e%GxjOW@$w_Guڟ#+fcϩ=rv>ڞm;yQ~fӘǌdYj7S83,#5]t]hFjfD)hD=2~:Gьn/i		×oa+Xnz_tf3<76jm )*ևvnxߕ0vkgFnK{/HI/vK[T9Z:q-U!qMS/g^q춑,)J&gF1؜BPzä~Oz0?(:+,%EHo٩#,/W8&N,Jَ`}v}_Ϧo׶sp}{8z"KL*{x[^ҵSGJ'S>5ľB{)NN=-`G#z/79=mNoTvOV0bTg4x*ۙ]4bDU2WTfWIl&KqǷ#_qȓO cj@#vZMd&QaEOuA) ᥚe5D=,4$3V盿ڬ2u]WVHGAy^M;^yRbgKyI鞗iQv/mb0KpQ6#me#5Kfg:][hu\6g˜E.*ۙXW'ƥY/Wث.Wz93t!hb31)#-pTj[l5i93;$ϵ'MI+*w[!.Bs!UJMhN#k"Wp5ELYH#,>*O{QR<ꮠM9S飔Gh|Lx@t1.#,B";71l&E <f&|iGtUUM/k8;n{lPz>J~Qq$5 q04Q|oz پ"=tL&JQ,@̯vV,QFA )P	wm]t.ۓ&pazg~yLipbUgO<48x0˄Lݤ{贳vrsΜ`<B FyuXs#,sw9]i􂗑{9Cazn$wdYNL=KЁuG(mJX~r.vB;i	AđN7Ϣ[yR=m]q)J2={kh #ӊ>1M>Gk4qf`BgVHwkstn|/˛u7wT0c᫭jx}x6 	n.`Ld'+&~#,#,U<*QCi;[l()Ͳ?,QOfs'r=<gD``pG~qaDs2`zGMpshB˨ǡfg˿ssP4HKzV{|$Cg8O"0x!,邁!i8ZQ(4SɈԣH-P}Z48Q0{+_~mL%Z;+AQБCRfUQ<b.#5IŒM8sD}-ow-CPŻgfDXpf+SNJ@\?},ՏJ?+HM$SS޿g/şD#5¿߆{hb#5D*wiQӑuƕ7?ڂx"e;"5k=۾< ΄Af\3|c?WP?JB:4Va\go*oo@\A2MU&*`\~-mNpq&bॾ-FHiVq|Hf?j{>emx|ydDLqOƆx=I-dΉX.GA"A.PU} 飿w<w/xP#sJIѠɾ`H=?z%®S; |u4}~7=zg<nIs`Qv54k^c4_AXkv1z#,;_Z.Z^%J+xj@ $n뫨Ǐںgh$$~],.|ūVmQ7-o#5j]Hhvc6S(W|17%~[߾V.sZw8CŹԛMy50ea0Նyo5=HS^C9(XE<eiza#,B6E[=1}n׊d"$'N5D{]9kHY[x55Xl`rN*/A8ɽ'C4@x2ܵlA,3gS^\&VEr1Q*ᱸjz=)2;ލgPW?VT&݉iE>>˖(9~Ho	hɻy_!Aف}5!GGRdfCvcu>ܾƧX5gs=E?-en𓄯FWfTȰYoiMH!&Nb#5^`$Wޣ7H`FRr#,KY 쐳#Y`3=r.ޡ	ϾkD_7g7Py퓳-ξ!PcdehD+f~|)MPVQ&ABf'_#5	!Dn/zO)uq#,.]#+#5-+wM`Mr)!s7ShcD;]S#+cԡ89 p!jJ?`|Q.\!Qf`G4XaxAT)=/Z^BO'W&I&/V3b4+x-hlgՉ)e<>ok^kml'5|Y#ntp]Hy!hB2SokjlН38D:eFZw_	!ϕפB#5SOTqNF#5G<_խ$*ӂeb`?_y>vWХ#5;b#,#,6^$O9e#lh#=(+?scY8u_ZZ(82F4ۚW[@VЩ#,FJ1f?&YẦPՂGɛs'~ǏJU4un+.YZ`Wk߰P%wGzCPgM%d$z{٦8|yNPO>އngaxVT5,HY_U\EJJxj3#,#5'*\JfcSY [УUV64]JP#,sL#`sl|hn뽠d^նUQy+#,O/>^t@a7:\t޻Q̡f3y&A¯_]7=Cchm)FA9&OQǓG3koY:bZ,$DjV:q1ETkX1dasQ)L]=Re99$[bz6#5 j0L'(㺺gDˈZ]ivFStEt P0C]V` d =Y?9o]Gsvڪi$i;4=QUmbHsG),яXV+<|QF^#vc +}7,*1\&;+vt=դFњzS#,iBAQ"mo#5n߻`'NAN8K<pP/t=BxȷRkm͔h#5#Tlgc"˘xt[!"{T)-@{4_8-LcP#5Z9!݈f|g5DNSギ$ioUc0N^	f^9~^LnߌzeUblƮ>/I6vfxk4!?ķun5mџCB!^EXꫬ^~)҉GB<fdyg^YةuQ4&>6źYˆ6LI|(?HMR0xBdu9IMoovf*Gç1]%	rZ|osUH~E-KzvBo RVi0ca*^@-$04@I.8y:m4$C l"B4g"L9mỀX$1|YQX*4AY?jd~׍/o,߃)tGD;p2t5i^@G6/5!@fY@28E׹ś]`1*Os#,E19#١F?(snƵ6Ivip:kC4<oj;C]_5#\={+_$b;H$T@'iW~#7 ptu?Aވ>,@BTBY-#5r?nxvH$({P2C "? æCs emZZY0kl0)L@vw'#Ihp|;yhq|P󋑱Fn"'p:XI8L{'|'3)W$s*wi?=E-&f8 4wn H}:jKT7I|N%</3MdC3Dt?cqOu߫6yS!6qcGOZAL.D[QϻpX\װ3n{CӷƝJqa+H?Xb\/j#5\QC_̯tm~!wXs,T	[[$GBf#5!OvŁχHE)RχaE5{:f`#5#53=p}'7v\I*,L,r#5]o :	4I(i"̧rg8Ox 2vV~B>|bZ(P`'@V8nFr#5/ܶNó5qm=.KIt>1{IvȲnKڵO_&j(pBv,dŔ~l$49D?'H1O@C`ykռ(ޒ]E{v*\J< v.Ir$)fft;#,ky=Dy"n{Q*(zskΨk1iI9	2#X鞎0ݴ|rI(R6#,3YsGB3w;76X.kFaTԗP	9=P! NίzASqãg(jW p1ʯT0Xcgn5w4cg:EQO|ye3Y}qs63AN໡aIkr	0^?j"l4p';\( ^#58CxgzǠ~.;˰7,>(~II#,geP	{CyaC_j}3w:ņc<!3SE	 / A}04CbArgxhjwʥ$f_   >_7xQ%oB!E,ܝpBB)A+#5vy4,rMHGZ5`F;#,8q5ןW_Fȹf]t(ޘu\msڲ6dW50d6c(Nwnkӓ.mP3Xjn8>n'{H,D"UUFp	/*JɎBcb'i G>yBR3#zwʉB$Ȥ%:HU-@T}2&!?oH^p{<˱2ļm[6,FkXn ЭN*6;;7I(ܙHYKfe$^Ba5Z8S	.s9?ccHN勣cQU	dx#,jq(!=^>Z`Y-<=!ۑ1U,O"E&U9x~ϿViwxw"{U#,cŰNԔ$>gOngYE{w#5>gfuŲŜ}U AUO廈~?/g1؀%'Os9^/g@g@&N}JA@=5&F|OLIf!Y3xg;h o` );9$#,Rx5qZ@W+ʿ*HKA&Mu聆F OO>{s>b|'0#,?q$ *AZaI%UIQKxMߠ#"x|@#PSrMOCMn4Ig] pώ4NV>䟅	D_^?X?q"O0yN'0G)ܑI&ӯ?wX3_+cs#,G?x?>/(с@Iχ6#H\zʊo1s #5)k;hBn @C@_,Fxs~-Gofșz]YD0DU&Thج,\lZEhD\#5wlfv5#,{{AS M<ITRDa#,ujeS#D[Fr\u8CۺTGT(T#,PljRpHLytda$!j.hbA0qe[Y-N |KgK[(+2QbiQaY硣{G/2 <NLT-R"5חp;6ΐO	%jrq$kbN'?>CTǟP{?}ƻQR?,me #,\sHmn> C.wO)#,Ojr 吚#,kicw؃D}ư\ۥ{mQhLG*ec"!<ןKqC׎>OҲz~Go*`},2Ѝ'gaGMC懩G狤rLn!}r9|R{V#,#kqa!4(vBʛN]@k2	c|-ُUu]w4BNW69'&=;z7olSb#5k<5VfJiCd&߫93ru#Tf]Љ4JR/y~50}'xT:2Y=E}yp43^߯FFg!a<@چ&H1 r eڊBEZ0L.=Ca!iNpo }aN^z#<SRp;O%CcңJ('Na{'{Ҥ8Ù=)Od!M~L4fJ,JNo9zH} W>XM<OO<Ntz~&Q^c-XI2Ý|3== hweKp$:ܣ'*2쓤ܴ2M4wi:I@17Or`>~x#,Ld噦F?q_M7cyr?5b|`dn^0ITύ%/glzNؽAK|=(tHed}ZLoݷ>_@HIYo6}LQO"2x*MXt<Cz*JUaH$A>ό@E-6OP$8{{H,"~{lyIױ=_埛}蒲+j|:l'gi(	<0#,w{wJ8,cC>^]?3[.>nQÔpٍ	@߻xȓ(&{υTeH-&,	af"s@!}a!K"Ɛl'8{d\bYH5gCY]@z}x0R&.PQ]TMǼ=	'[ӳ0@Åxݧ7<9>r$HBX''3f].At4ۡv {@ W1iC]y|flt6$O&Ÿlsk$zx'g DU`u{#,D !(:t	DHD@`4<9~Tʃ-~Ra@#5SP:{C7x>S,s.É.iA#54Ex|f=+t*#,3f54$dF҈ P;'יRT%>I7$brSx'l64 %^@!'~6S=C'`#5ORONAcNTTsX^rI0 {a	5(E.3;Lkgp) c꒥C0/{#]gb0>O`$2Pצ"$C8Ƴm׾o6/mZ]54DP<(cbHA>O,$PBf>]ɹPKI5yE!巄P'/YOr_Fx#,X.pl=_`.x~E?0۠\MhrGϏ|(*JHM>tћJfbr	!u$fUXLGpQПVf6ID7qϾUFc`Qcg/qטB K >I0o-iY7ƃo[r(~D]B:,@lcg{T gAxRr܋1C:kqBZ=  Po,DV)>3gRT._Ɩv1(22̱.AYH1	=;CX-9R0ٛvf4[H:^M@IH!R{LP԰|Gz;X'@ 6OHuˮtU)1')]^@Qa 	2	Z0%R5Nf%D@	 faр[bPսf~FY7g7R4B6a5q`2غI].d8:oX~U=ǲ#( t'CDnzr)& s\1BUR9S8H>S|!s+U??\@I_]FrnX.D}1ࠄpTT$TivGQ*M57-{NYkFQ);&38=\U:R1k?a P~sE;$6'c	yo37}|W~ u_}i`+Ҕ4Ö#,Ff@U50Ƚ.>$Iqgg/uCx;ew,T)gHyc/g~ڃ!yϊ	<XgBs	kB',rmx=x:|m@@0(w&G9AbK|G/:ZoxpÖ|AB$Lkۇ#(xܔ:LPeդa2d>TU{Rr7yѽ5jǦ#,oMNl/Pӵ|33Ǔ~WZYZ"5ŹxCޘy,ʪ#5q<a eԈqBVc	2Q@_룩⢏r9¯2?$ګOeDM`/1ϸUY'	ģa1'뭫(Q݆Ԃl*n5GwpN@:w8D"t@_"(Q!C`#.`W.Hg沞Vݏ7 *3ѭSYOCԐ}bQy{uSO8ՃuMU;35Ualu@sBǻ+(쩂j1(#5|IyospptQ@Fc\iBUȨ]9>jnfAKHqD<bT]yta6&uӢ_oᦗ &]O غ#mM_/(LKecd?9X>	LåD L4{uxl;ȳZy=֨h*L c[+1Jno[2آ?u|KF#,wrvA#,M|C#,>Rvګy{H:l߶,,(CK[DfVPQMyjܬ,<SZV6+'#5n9@E$A0Rߘ񏊟o|D--Ot+y.#5.#,<Z	W \ζX^m;^@$	OF;5?{>]H{1wo}}5kcuyO]<*-NBDN=syT4~XZOVᦖpS7wBGPpT&_ɲ./`tϾNѮg#5,7EqG"?l|Zus1F̼Y<Y8$-]$?;2<?O	GK?2y2@ïK+s\5;D:jSMG1Xx< 63ə(,9d4-RC:1o׏.6a΂KC4w.UŒTv]=OZCb`ukXo?i}WI9dsԻ%;9'vޝ:gؒCճ^a(#,5mG2QB0S?s.3K#,A>ru-I^?s荃:~#,jr[%hwyr'eP<ieC?P J 1*J"U\v4YHd#5BH<۴gԣ*M{?znO휫끆:t`Q8M"o4Ds)hɳ=7h̘{?b}"q7ma-ߌX[[HҘ*c%g9I:bĆ7nO3>B#,y$<{"|1+Bk`s7lfp:E !9bsOLf!9ǙфKo3r]0tfC7%`0CI*>'ttP@IQM<X{ jr,vGb֚#,BET D-ak`ê4xHl2`NGeةKe3{9=WfFG	SK4"70'Q':\@Aw|>\ա.yx+J(W_F5$Zb6h1,< 2E(jT}``W?UkPi5$ɕ#Tڊ(-?"Oޮs;KdD;B"K2v3m߇+ԁ{%5T_	8R>!lhY#,	M@rGzO	wΦM:#VF`cJK~;g7Qt'g%F!)v'AyU+:cl0#,la2a\pV($IGni4I/!jDo%X2ʫZr2$񛻭g`σ̌ eh6;`MDw1&d-6#|`٤N'pf};M! psYI~3OZbSyx`_Ah]z>35,ePF$?iEna{Txȏ)ly:Tܰ֍+DF'(Oilj@l]0~e>>>#Џ:\=hyQDV4,>K}t=>dO7ů崇e<ra*1<ٜ|աS$3M;?#r)vס,.#Rt/p`N{DyWxɍ {ĝ#,Ő 恵y@GW>D5M{zzdUES'rN;S;{Zo P#,]sr.ǧg^vkT*V4ۀY4,&өىD5/^RnRB[ Ap	{C6W;>mfok`dcݬ:[ql#Ȑ.c#,C&cچҜ'	!Cf\I9CKLKY1VǇxG3y{ڌQ6oYpsv=:2Bme5ٶf/9-pp9ӠE40Qy}_fW*F,:"db,30kǤmy7(&4+݂TN!85f;#,ò(,mܪ"NSg5(#dZ=TlErץnUUD77FW"oua될c{Ghz܍Fwx̑ہͦzY^dWBMuMXѹ8I*zLs!Պ#;`6Ӧ.2kE_TZNã+,P+a^,'2:S#5#ܴkSĽVW.o{/cB6t= q	CSXw4E-4mQ7OQMja}h'A ꃨ@`i{\	|<RT25XmP*kmDm#31=9oEѪXlaŖAzm]*P9xR#,2\ŐbOgX#5'ƍ`ۈנ>'ȡ*\U{aqE)k*x02J;,?j==%_0Є5w<60<AH;4,zS6l8uǘ!5ɣ'()bjPˈ#%:lqlUfuwo)1=RQ@O{ҾW`MPYi"6!7Y~qƽХO{UQ}Iέ7cc܀<#LrC`d|ëBi|{L'GoA0W iH3_S6f6Lvo^֛|\i@lcU}@ov u!8HW׸5zn攘x&cQl|x@7·Qm<tH#55"Evʉf3-i)HB&*(KǬQDݐ˿-dXc(	%%ťnJ_<qRrusKw=6Tb~=OeQ5#,yQ:@<}ཪ*p)827gs܅2_W@a0o	FM3#,ěqfܩ2wՆxujzDWƍ(=&Z]mQrIɃd$A+f#5ɑOP)"!bAU-.̉\MsF;'9"ŅHpT!-s};ifgB##,Cʺ.%ݻoA{X	HD(}\	L>SW:?tAkd"))Oy80gO$y|5!?uM%bb~gۦЭwDi` ML	P#,bS8mPh;)g! R3{h4*+covB&D#,#,ɓQLOٝGުkڧHhe<=\1bYYy# E9iNA#t	@V Jabq6"S~:ye䞠/`	CG61w4߯T4@"'gǴJ-aZ/-c[iFٰ.xz3ߟ^ƾK3*/B7=C>]TZ	n7}WdsRIPw#, n`F{	t* Jο<0|<|ρ#5HJNo A>XDqs!zN++@4 J ʆ|g$= .<nrWtESHf	nhM#4?i Nvo",(Sj#,f.)'QTZ,uq[cNɑ#!N@TLwŖcB&5*B(N"x \BPL@4ơ>)??U٣ͪyn_AkU@db:s;b2r<Q% aE")Ay}_/wp$!!t}5((\s1뻢""#,wF^jtDD]ۺ뻣u6666D)!$#,q,yA>OːJMj"AAZ%:#MP l`Q#,*ne'|$D'CI#5	h=x\.߱WUPK䜠yyOH0=-NӠK"7cOǿ/Ix!NUNT8D)2[PuG~n3!1u{Gc}BМ&v%C07{齙syGmtP)~#)CTX-)!< 02!iЊ9"H3zu>iTͦLY*~?υgӉM.Q4!@b (MFʣYY)QjѤP*ҋm('E<6t=P{	(RU#5PH}R`ȫCٝcUrBNL1w#,8,]ʠHK!sƓ&sF}^X023N;"6y(Tش0ks~ L# B1yN{(끃S[iܢA1G'DNOW|wh#5K '"375_LVLk".bJulWx-:GihBE#Jz0FN|o;TAV/>[)_<'ͩQF!T*Q ^'|PB&طog{%*jM3qb:{hivqÛ 81Ѐzl,qQWX$&, W:w2?hC *% zy5°htm/bvqVZ-3:~:~>)3tl .0<Ay%{A52l}Q>~aӷx低w#5n0\ tL2X㿟Ir?ªsӾ>#5uqyfR鸝2T(h.vnO!CiKMhգ,](ƓӉ++Z`ƈjy1nn80hrJ0o4klA8#,c#5_R!H	P/<ZHp__fݝݢ=q0 !7!w3zQb*ҕ;m?_wD*u*dm&ab)#5hT0׸xp!y! 3I!7q5˝ҍR(CsԒ2(Z:ؒ@4CJ -rL|3~p_Wa<(D&	I F#`vtApS:QdEk6(s!tE` W#5T^+l:<teo.І0<y^}}ey4V4Fw.,F1Z9xmL;[P/_ݳ~jJlnXW .N?٬Xc7kŵIhJpP}SBPwTmWaѕtȷL-m²6M\͂qӷO^0,4J3ϑnKܐ;dC,17uX寇c-&Bߥ*jxfeJ@"9t:WYҵt`Tɧ~tiHg:Ҧ@( <4!4-rra:8p7BB:߲muJc+zwcmg[M|bUSL``]>P휼!a0UdObLƛ#,mwfۢl3oJţ	cmRJ'pwsW=G~v>dɉ#5QSo^>\ۖ6k됮K`^軃񢴕% Kktq3q?ݾ,0gahfg."{11]=\yI$9F,0ew<ń&2MZ"F+Kt+<k8fd9cݛ"ռoL&oDk,jՖ{!<ćxc=N|`_$mP Y[ڮV*L"Afn;Uua`4Fb۞]&n0<vU!	Km0,bBq#y#,i8G:ti7	 0bJ%=1͔ |Aym7n88SCR+\WzA	qz&7dn	FAUU\ ӱ#,WufȘ#55Oqd@?#5}sM1q6'#5h,1#5V,Swz$0vdDڦ&#5~)&GX#5PE~~EGw#pz	b!,{2I==⟦Wt|ttX?B=	0s0#nNFx	BP4'uK><WEqF7bZ,UNQkG[t3=`	@MP@QΣ~ʳ~<; xV69@ȁq(>5~u&+kT%СlaPH^)ػl340͑"t٣v#,G; 0a		{*T38GopM:-1 4l}L:7{݄T[ejԏH09kڟ;g]?bH㯔IU_g63#59P]hc̶M"0dq!a%O_23Q#,|ZhdKf_5 1S<zS}a}H(%@<w11S2&zA=F $7mۍ`Ѳ6V`d4`V~fi֍<Č8|b$C+!*!hԌɊWnFNeUB∊qfj*W'qކ7	dpXᰉfTkḟa <@w{qMfu֐K=k?^F**%әXSM__@nOi<tJpA7톲rã1g PNCw.BBL쇉(!ۧ}!:u&u^4ZL |uhR/hQXVOH!=ʾ?>]_Otۿǧá2VcҞ܃P_5$&@%j!tۥP#5*n)\DT#56&46`65~8#,! $"!1 (:s g:yma$	al,}Fo{ZppcqK9wD(wM₌:u:B~z<ZOCabbS?;{A"P1AJ8?#S>ӳ<u_	>F7m5)vm]&$n͙#,z!#5=O~V-C{꣖Q=V1?{:oњL#]]ѣ0E)cBz)YDlJ(ufޅ--w8-&k--h#,MF,R͓\at;6#I΃IrCrF#!zҍQB'uS0o"4q{{;]1#,Z7&<k=Ǉ_osJRo&e褺1BBI	C5N!5^g{Yau^(`gLA=$s<4p.$6@)6DtB,"j<^a#5",ybā4VFa&`3	d5(<DMU1r1i4i.4W:f`;&SuɻQ3CvX61(6foɺq337_pbl"lig㭪86TWyx4#,$pjd,Iy##5B$SnCHx	bwli&v#xanT-<)JEےb&TiC" t;;kHq|mRJͳglbzmyIjYT0t17X&Nh}Yǳ'!V|qMESٴWAOV%F3%ZȧH&M?^iG^e7|`$t̉YPh7ZhcB)$ɸ@(D=&-#,tU`&#,`GCnI$idi,	;]'0:N7BI"H-szľ`K=WO><x#,{)9vS>G ܉:y2p!o2~?>ܬ91O.5}Ϸ^?afnޭ|4J׭)ڽptv{(gԂ)~z.GD%4{}{{t_N>]udf*u6Z*--dJ@u*08Nr|SJ@)AWyb[	Suށd&mϴsy$̽lèrX|eJaq}!BD0US8@m2JT4,Z)MT̍ b)lɠiFEdJH4dYCf0J&Ŗ3)Hhwk%*&&#3"$$"¼q:'CvCRC-Y4|wQuIT߆F#,4#,ZM+(7C^ttx.rYXf.Kd5`s#5iK(0cϻñ#5)ephf=J9i'EXIuan1OL{Gzk61JLWl2` ³+GRӳ53I͏T1ydi3q16dcHJ#lKHbfF	i*M)2&ys#5A(wŦ5Ɨ,٬k!"I3cK#,:+n<'i$C{f`sǪfcdb.xMj0O -7݋ff/|ڢ}NtZ;2j&5#5cJ_Vf/颩@	UXzZ5~&7Exmm<Q7摺H'$*"W57+W3EdK8sSݤ#	lO{mQþ|#%Z\.]S7i_˞sh9ѴblLFEZ#5M	zD¡,cUGlVaB}[{@=#4?sY6Fu\)}k6Z;Sfșc> _񟾼ӄq()LaB 5^$}J}4uŴRZ@$=l A<dFd*߂%}( F0	\4s333ENJ8BvuI ؃%)6GTyۦ8w>.Ŝ#5eGu߸vF3T.zPE{{I^PwWƊ/F,U`H,IsCy(pv^gvxDb%E6pa	P{٦MqfCqI>_O%$෌eEiu1Yfjy&cƍM-da]ѳfʙQ۹6Z>ScLGf3.zHG	rjY3drIVM[̘DfSL׻θrqC@Zi7.!fd֍U"ӓVW`guWqƚQNAd|K)!`7{3HF1yӵinۗv֍	@]Zt5R)ue":D5-CVOa8M|]!PfnNt	fvkśjUWN#,IUpKa=0J(d¸p?#~>5C1<͐NN>{Xqnx6Ɗ,S^Td.(fsXL,2Kc&MAq%dnVxє95N1mA.xvRߥ1}Wl%q0PκEtT[EcZRA^sUmy:4-wɲPAjV6~2YސΣ/7nԦM1dj(n0vS[2SUwCtS9.IHѻCPh^r#5%6ձXß1PLQf]ΜCrhKmD^#,p]3˦AhnqQYVrGîF4cvVQV9kq=5p#"ͻ]BB\p(I!1$2m}5&ţ< M,εZ2e21m}e.\aحlmYHϦ	f.}i?-aޘɒ!NDڤaۇ)fuAۆUa4{	Sp	>Prםf,&UjhtYdQȄ!	C(yBmp[Kp[[?`T[ÖWN!1r㻻l*_30ͅ\;\Id+CA.R%ҋ>soKrlYN6hxv6}r,-P!G>:J"iݨcL,.#oc&T6FkdfyM`ۂ-.ESч4>״]A2)Z/WeJU#i$V/6Cj7Ure501R`fÄ䛃.q\)#,,iV0kQ]YAxhrh$sLQ-#,+!uL'8pٛl\6usri^fӕ<D'HXH1fOcÜZ]zNfAA6,$U!wwĴsqM¾_/\etQ3c#,t9K7rܭЪ*ޜek8A1zL1@\6PۈVZb#5fKx6DЌ""Q(ީS#,@=#5	!Ж3fyhru;o67QM%zs}5 {:_Naϴiꂁ4`50;kÔnAN𨺂]$Zft})Ibjhk!&a!Jiv	vz ÍRdћF3:Q3+kY0"j-~Q1wpG$7NfVqaq\#S16T6²RhNۨS2cr5ɚ=05&P4sԡHCc:5|E{F)2XX˄[k4PT 2:@cOڮ}$ݛq3\>whCQ;yi&5j!$hU=r8h#V)Aeȁk,^j׺#,	0	&.@9D#giYqJI}05{-Dl|<r$/m#5R?ZT%[J\*އƭO8_.YC"S ȊqITF5aKZSNQ^{bƻXդ09B8vEJX,P߾hp,i(ee!K\-nˤא^SQ&/$a$ɵ2aj9ӭQGI1c<"!t`^H^Xj*H)(£	>KA4M&*]#,M9#,f`<A9WiW`;9	7黒GctZh":)#,&y0jq0XmQPmk+Fxnlh.ivS9TD2n(ixqNg9&wWscW!HT2(h@D}g܁'TROtVB6bӝyB'~"tv?gtI 	0GA)R"l#58{Af@ 0\y/41-HcLhc:\-u׶md]aejf(3$ׅ6oqc[;&gXCRϜk㌪CC`йM%EP|eg?go.ߺE%B>Bg|l	+=JDL(QQ 0"0TdG 60C0ۇ5߻wk;#C^J<*L5j#,q?tM!h⒊(=;ǘ_TѪ0Le+`)W'j?-ԏBW_Oj.{yC@N˺ ҜIĹ=œ;KϜ6?T$*ح=^ZYuG~#,a&تvQQ7kwf;w]+cbk:qwQfۼӋ(hTrMr@  7#5IиN[D3 oYأ!e4$?=SX (w#5AL	B P4}Ox@wD>v NOXCΡT'j#5DRJ I0I100`>Qw9I_8HAJ4K>uG!i<lV&AJjE:oM#DLlI$xwnwx4聁)Py+m6ƀ+dԃT#UjlĪi~DYc4~E)X#qDF8js'.bta#,0l&暬سK!EP~kImm*)AZQDNVViA(HՅV(:1&0czz:#\čID)2P	ɱ±4w(ӌmS2)`@xĽc#,ۜ6XWŁ3"Ct9	ɟJSB	mEBEؚѤgOt\#,L(~GsfMBanƯ&nF+UaG;QZF63iǖ:Á෽HYev_c}b#,oF3u 1Yk$l8k(brt1=74Tԫ`dCjGٚZBԵf½d:rd^YS8'u|Y-m<2jb00Ļ8ۄ_冗ckʰsC6d|6RnC4r0xw5t]\p"v4;n/ 4*H;={Nbʣ1)OzۂX|hhl]C jl#58I(3=W16]'gLVA̒~ŝUDAsJ/j-Fz1<pٯd`D|w6paMⴣ )I!c=gC~l_V3f'1|eD,Dd/a˨%a[%!џh҆!T&UsPexcƠ"|#M4&atԐ4ծ cgKƉZrn1Xy!u/N8pѭf|5l6ĦEvt77	D"ͩ!`Ƌj;l]Ir{Zx8j#5 uJQi YY$TМ#,WP뮓3D:nim(>ZmBz#,J(Ƙy7Q1Ry윏<5u>G@OGK s;<T$(Oa2բ@@"o$ѶPI' %jZ;y=4 q1%!!ũh'LŌ;}Վ6H1JzvYӮ8IS7+s]n]\u-g\]vUx#5˷Nu{dٺǷIWvM"e*ȬB$8)"S?/O[FacUdJi}g'EG\nP|6b7 LJ#," >mp'РoOsTyo!9`oJ&3 S22-dÇd;TtbBG_i;.~SN}e?Mp'#hl.D(4[smU<-F6IL;qm%C6~p:qU \UCw#k1y^ bu	#50O#5JPA#5	Z9>.jh#CI.tЦF2.K5MTݷ5˩mF c v{:|ss͓{0 B W0àGP"Y~ȅWwO1SP5#5P0J0RVz\^45SBShutٲTƣ*kQ/i53alJR)Vimo&gK}.ڔ=dem$S*U~2][URbzkK)h̕MdifDxZ{P#5!B	0jR&Qj:+nkRs]Hbm.]W]I%;pUH%1k*ds-iѤ-!lWc[  B#,P$R8'{L7{Lz5Qz50嘮AD^rQJE4%Yڻ`XK0 #,HPYCAR;Lt@Cl#5t0fmZSh5J]	2*ʐHҦ)QLATlcRJS2dYFmɐ4PQ%lKJd![2[c@ѤCQ$Ai !eF"MkB/ZcC! m( 1!ԫAMJ&;DP>SKMɻzaǞ{De^nD&Gc6>Go{3L;HǈF#⳹ʆ@X1>'R} !!۾=Jj{8%<SyO69x"ʺ͓"N|ԤBiGz2>[ yN'zp( z #ٞg2{/ .׃t>O CT6b0dGdx,ҽթ&wH/#,pIGneMr΄}.#,9ز	͗GgL;>ͶL7'P*5bvsȏM&蚮OHybq2<f^ZqYέi6ըۮ6˳]1#hp6;.Fuƥpd4O#=`}	y3=uR$UtĐ؇I$I$;d#5doRHƸV"$*`-p9ކE>GS٤,Y)ӝ3>cU>$:H#,v,4.Z[~B(l\6v}WNIa \CSRBؽjB'?"D}XDDchtȥ$`TK9j^rV3C2&BcZ#,Re.6"|4Mc@S#,3Y`uh"mrZN r()(4ڌT0`Ӄc%ʜ:@6~t'C& 'Ӥ#5b!t$lbi}Xf֥P|MgeM&ꞛI9C6SIs6Ayw髉K]KЌ	>iHo/E|G3.2?1*{M_m),wނdm4/[SWvÔi	$Ipѭ(셙b6sKs#nt	߭-A-3IxTQFS~Ȑ.(~-jVQ-D{28+PL5ia61#5KDojA<HPELyG42tzvlQURg"Q	͈;c#,+f+XƃPKİuu#,v^У@A `s9yhcђP{Ǉ屮RA9+ J8xIaM`0և9Ԟww]-U75x>@#,Ay)AKtˉ%#8ADTǟeUUUza#,=d3}͏6VK.e;yɰ惁1gyԝB,!BDY9<Q(LB	o~ ID8fy[yS'{x"kn̾oe>[zC0$uJd:0 mwsIXэH;J ]lC֋t* Zp8HF<j&,2&l#,&.SsY3*B/Kۈ׹ ĻAFRoD-_"Kh4A 1s@5_I19o?ٷN^%p.$r@*I *pC>Bv1Ot;Eas @	"Q/LikنAHFHmHfH1qEF<ʫ76"9C)%M6ƚgD:e6`&q>\=`rcuy#:`"" t i^5fW]7h	pNh&蝹fp'Ȩg绖rf]tJxW:&\A)(Nr0Ȫ()urPhl-GNi%hR)Y6$]A?|%x65*W&B JH o mCZF,b>4Ȯ$Yp1(hL2D@O:1>6#,+y;)Q>@#5ji%>:1+ ;L#5)6c^QXNSmD4 4yNyt`T2 _՛B7 F.; K;D m&"	@0!<'9|b#{)PZgTF@'`R`WNWkVv{TtQ "KH@IB=MsѕD׹UίTrcfAʃQ9[n5h[b|nFnͭo8?zSL t&ݸfJР~wONa܈HDʼ"J o.':QE*%0R`diyzG_!~?]g	l}=!bJd_75HH0 @g`2Cge'{!:"yW 8+]+~Oga\A;`T9Oz{\@P@@]p^[#Ddn4~ݍk !v(O6M_rd@ƓU?w[`6Y,O"1D:jҽە׶xƱ{Jf#ě#,h%Z1")7QT"Cf0HkjUQ,cJ#.8CvU$2"4݁So&QnUй!ę	LR;qbHokXdj7%#,#5GD6!VdFX6$M/KiÆL+3ybbⴥn#M#596l.ݍL'	rJ[2![#ۦ2Qcsns[oonz!m&ph#,E&#,D9J,$5`i0DFFQV(˔e&N4{x#5El1Al~ZEJRE):eOlRO8|>dL%Y88aA6)M:1I$#,_t*LI?{}UOv 	?J%H_F!Rb!$	I#5d^KۦRiQMo%	%2R	H	]@ 9BHˊJ>x#,	fHbvMFBr}QO_7#,Jk͎L)"J1#QNkir@e#,i,fw2gD,p[EFϼ?Le;)G-#,)	#,XmQT)l7N4̴( e	Tv:eNCixI-Lܪ$Sx)1q"ߞp]I:Ū(#,P?U!ZR@-}H1l L Gpۡiqrnb(\&iW	51^; &|v)~#,OY^Y@:2>@(Q^#5 8)C? 3j>w?-u7q]|^:7N}#5]zsfC	6~q̮fO$2|T>d/:h?|#5CFU*-HͶVZjVm)2IlJ!ddfNF'>'%u$ֱJ )R)Oka~&~oOi4=f$$>@ۉEvERfg#,6T#,3YS	 lL܄o 1H"j0pyL@I|C|{gҟ>]-$"RI$		!$ύ/UT,V	 I'HFZu7ʳIQӔFD@Ƴ%CQ8{.Gu9t9}[b	A`!!	$!~UA3ibJ6P<]Ia93,]Ll`a̺( #5$՝fir΅hC#,{->6$y-p1^e{W]f]	Ρ{7]6^ކ~o;Md0_h(q O1F,(b)&BfѬjlu)vb2e%VU6#5JMAf-&330̪iD#,L$A/3~*Rd4vRtT;#5ML4P*	JJd w:``_c`PCTi?J L$muظw1%0mDA~WAǄuПX @gg0(VbVFXS>p;$#5yđM2Л@:6[r6ӻ"E9"O<ʨ{ /NiDKF7>9brOW{TC^<>!7AɲiI7a,5!VnBl`#s#,LvOb~d#56~hCI&꜍Ét]NMt:}1\#5O*gZE<QǸ	/c#,Nx,l0҂=]N)?&Xz%3	LɁtO4rwEu@;Y)UOthjPӌБKdd`5^wT%Ɔu7>CQ$Ir-p8tvL[vQ>#cM;Fԛ;eKݫl_j#  I%#,̍ωN\`|`n"C:s1L{Ct-TG7+"2`&V0Y/^^νEΩ	@؂@C/~h3v`9@{4(.'Ȁ#,!(:>nߨgc*$4|'M9=~#58{=f9TW?=P9{|t"È)ߞfpyjȩ@zz'3~J|8MȴN"(&Tbd2ń8܍>[>YR\S.J$X}&Y9Z|>lp*,l|)5FJqlЈFc!a.q7ن@/1O5bfa	/;_!Sv_%*Y]3-suպusG#,rl	9	 cٝjv$hcfq1p?䮷"𙻋#5TX~lgPg;xNSB1hCrYNa#,eC0(Y6gɸ!%z%/|jCO!U@Dɺy}1ST0US#, 4"m<68҇C9H0f$<IJDg;B"Gb]+g!t %UCC.;QnlQNC7Oahs"qXy6].	2,".A6Ne~sh'8NKc= v}@{Y>%Yyyx7ǧva#5bP^޾A{Dvp<d1GqMO	c#;{ϝ=GR|H^,-\(#1̰	L	%"u6-bZVwWZu[ww:*#,#5݈00}8axB>#[XsT WpW$$#,e1cI?BȴD	F@DMǴgbg83oN\.UKei!$#52ثAhƇnιzWJ&h(ZXڐ$jB(+\<ębDb2f398+"%SPѸݑKQq-![Q"mؙbJa?1:r/͘#e#,)e`4E6* ?=؎w=!6UP Ţǐ:8a?1$<V]N2=xsaJYRVqny+2z56I,i4j#U)Nf	D8)ddG9Xh${Knh*p~pLkp1$h?0c%#52tb`5#,dTuuui^I64ɈWȽl!2vEjv&!5`L:>zmC5;geG猣9pǗ@X0DoRhH>xQ 5Ǚ.Jy1nI@has!jl~-fPu&[8|f<2qX0.C@t2Fb;$Bg\ِDMv}ҝn#5l,~Zp]ҵgqǿR<tQlkXSϰa' e)}ҪTD*9Y3V5mS#6͘PRv3~)RȚw"&}q'I(C.=r>ώ}N}CN=!=b6sޛK{0khii	kP{-#5R∁ 5JPIkQR4~όK|˄@p>DB%l,x=ϯa[n>,l'$ɊTC 1ALnJL1"FSIFd၂b!TL*3D'at1*ä:Axg3(SiI=Q12k 'ûCs_LNtevfHdR*U9/!T&E+j%u(u_`NB+>󻻶boC#,2EdV0W#(Ac}hR,JLȌ $XR[mi Q'B8QI! AJþW}S]$C=>ߊ-H,ÖfG ('S@&_uĹyjUL(\au-h>F$A}M^\iEFB	mvv;0D=!m	E/7 w:=>qy4*;xxkk{3>r|mi9f,ō#,?0|/\>,#5-ܿY.@PF&Qâ=#,s}kTMA!(Toā?=4 U91/uصa@"b͏!X#5o>~ʠeY#5Y9S|H}]e`RAn6,gd8f#,?nsm4x#l<Ėlj&0%cVa>g4x1O&TF*y:3n9Ns<M$XQ<^+I!x[_(n8Lq	D%zrN,0d˛u<ϲv#5||03wfM&'j~=KA-	`vcOve/o-]:kGbM%^_~jP&)~?Ȱկ2JC|-Lt$x2#5X#,!,5s-,re2oCbv69b~E)f}"5#5Is}6}/_;~QF`P_2V}ޛret4jr/DtBDБ @AJJURi1%LBϿсؑ3;.~I{%E߅vlhnh7"m <;rO&ٛ>R{ Oȸ٣_ ngפB/b4I#,{dٍ a>oϟ?gT!.,X^ZY<`S.#,yr>'U7i:!֍j`	/Sa*=|rGe`IZgKƁGC2јZ=89S`$4 jgQ_E__\_" }_͏)ufR>̑"!UzFX!'[8Ȕa0C HY ]%4HÞ0ilgW.R	eugƴ/h2qJ*PTn{;CұxF0Ԭ|gN]a7:V!q`Ӎta?OdUf W_c<=L|6>hCm23vRAC#Q ?V!8ԃ2Y#5i%UrB3kDP4R%!i&&aV>.Tiܳm.-Fw($s|2E#"i14BDmCPЛU=Pda#0F#5mlddmw ܞCpB(U Lq;]5%*VvkB())8P6^+f5R^tWZcPұe-"*MXJT͆LkdL:umۺщ07&8b.em!4(bT0cJ4LbA:700iXCc#5|Jd6XJbHkSdf69 Fӊ845aC^ډMӬAeE?KiڑHpg]MS]dz;#5J&Ҭ&2hWyzMċ102BW6Р44=8`Bb4`Ğz#5i]<aI9u	ՄZ(Pkc[xfE 30eGQzi҄cw!X#,if[g϶*άS#,sS4;LkTyֱ86ÖS"iܤpVtm'B-ѺlaNQo% 1P,~u2?!HMP8 >B𩈰]1ke<Bdt"jfZR:gcDƥԫtP6KaDV4-4VK\Hh:g#,XJG<:솶>F8QQ_)Y?7r88ե `ƊČ"Z`RTb8}\(a0%L 1pq4B0JUjPְi0~Uǿ%#57/Xa8};rf#,PpW4"LBoR=~Лo,J&&w!B1Ŏ"nwݸӯ>Yybv9.QGwQf%%tqKa/w|~"!@	&;.6tʱ>Pۛ:IWztd9ߡwt#,~2;a.$2n˦0/,eRqSzӯXV@Gwg[1tfnqi在ѿ׏RާqkKaFc2Ɋ7vd*PIhfO(tc*fz)fZwӶ<#HRghJmn Z.	Cbjb?g>t]Ud4e8rP͏$<zvw^#Gܯ˼<1 (X6<X4:6iCB	ގJbp/df*g	pGL۫]%DmUt!Ilk55!9hia3R]0AfkY;4Wɥi!luiټf_Ѱr (q	q"""PY4"0h\#,*#5)d+'y»3t4L2.<w		quЩJ)D3UnF#5bѪAJ6KmFљe-bݻ4FٱkECJ!ƶ%3cr`iSM%#5Dl}O`Nr#5KJ0=\ny<ES#5Ę/p33! 1L(Ѕ?6\_Y J8J[*ԯꕒ۪=T=c~H=n;%h0P!19JvnX N<G^^ Nw*07];cąQO~EQ?jvIi"46ͬg.$}ofPѬweRڪc$#@a}WH{#,݋m$3*oBMbdYsf4#|sCDݨ,PC͹bk X3|8ơNlWm?*̘WoYWxpHK5yZ*j;{E]ց2#I8<1id80|~{,s8y:}_P}s>䙀ctO|#,Z D4	]AQt6܃j6L#5W%  "HS }wY9c|>O*Q"뗆g۠4T&"#5BRj_gEٌ&68`zrg	2rD7PW :d 8P#,d D#c&sZWI4.Q(m I7`-MPI(1cqa3#5Um梆XFŻYF5`kl``%e?$5	T '"0IgH(A#,fFePtb m}/;R(x.b`(v1vl&'bÅd0"N0@8)UG@#,*+! w![ၗܠvv'@f`GZDvte	$!<~@bRӦCT<LT%<uۆv~s}:.c}}6ä҈,="<:buո;FH!;x^@.&*CdpQ	8DX=%d?W^ ǵh#65~<Q;f]C:m0j$d0s3OHR't;0z'p]aYFlyw몋>?sLߝ~a!20RL!~(J\Y31%SWbג;J7f,RlXr^;u\j]Jh!%!2EB*șK3mFs]#?⚅t(9p` O=#a}9vçɪO=R@<@ԱbZ((@CBϏ_AN'd0kܨl	 HY'_,+=D&9s"j@#5l@USJ5#,?쟟;>caT*XX	uAGc4PI6#	H~0*̊A-D4?~B/,2锯WxToj5D~W.IE's"UӘPŴ#ÿTLm%i1z?+hC}dPR	"bpK (A48:M`+!wkTCh 2+R:+s>v+1{GH %"US	l*n~3s"U X	,(b 	XP>tCGÁ= TE1LJQTHWZcpD5` 4_0~OA#,#,E⏈#,36=F'R\|uŀj1"~CO|LKL.(ڦ0 !+o:(ᙔNQD5#,'T"y|=8{5? ^3Ӏ.%#55F#cb%Y)/Rѷ:Z%"iuMvjVuZEm6!f6^4UebCuPQjDxϹa4\$!')Cn*AiLq$Pܩ mA*4$°4 JP71HCf.-WN=A1ݨk0|&c0.:O+E\%1"bW)" F1#,7#@,<#5=gfv$Đ{}uIP#,vo(&__~L3&Uly8ТsaapN'MƊ]c#,##, aIZ7E14ecCsQmLXu%#qWCTi $֛a#5Ƅ6n9XNK.6RSw#ʲ7Cd;SBqaG ~:I	ĂBf8BD~CD)#,H	H!LQ:z?&Q7_<>ikNtS2uXz$>,DT0? W)Cݸ('@,؟u^uRd v$JO FVZ3祱;*_uɋ9wQp;6	to9%~$)&XWmnK绩3?>izZe89]ZaĈVtLi1!q8_C8A~$:!J>ƃ,B~0`ة=̐&$ pgˏɆq$W>?.b5&.*ib#dGc6rdoW9#bz(KD`JݢIQ!iAP%'d,fqʵOF//9eE1̑#a2]Z3ţeafe{̣횡4ԣ3ǖN<ߎ|mOh8Of5(H'!CdQM9ꙙ:7V\p~|cMVqFs5轼̝'j}2^Ǒ6	lVCf$AKBT]IhY&N=;	zo|LUWQtw0t'v#,TTꌓ,  (w#	5ቷcc&ܩf:R~7@ꘔ&G)2r^"0qExyKKZciC`p4*ڶ-.;wvd\5﮾(dl]`fɪEoeZǔ32\|<3qy<Ò SuYf5c#,Hl6T{&5ȣHIbZ2˯NܮJ>vbJ]<"\oR&{GG/aȅp`ׇA9)y	q@⧟#-CI87#,xn+gLC G)aR!]iFzŷ[jAO²s{uKF[!!l[eMeŜZEM1;v*z0XW9U{Lˌ.G_VNo	T4VgrĬIN=FՂ2>&e!vGQ#z#,A#5ΒxyKJDP\B "3xuo->?#5#ݿ̚~5AP~L1H>}~X]>$BqN#,y5=eɞU~EO'Qq~yF38S5$'?1>j {d٘$n}_'	 IqE#YG21o@emx3c {I(+^#<ss#,D =ێPG ^ʭY@([ai5Ai#58 =4#=Q S(.sb~nSE	rA:f<mg|W{.qEYڂ^t{p7`M2eD=@p*2/!|;*R4/=wwy2.k^fСw8b1 Z`b#X|YW2JpX2;{-ÞG2#^ <#5SI}d[ R>:ve=#>t\{Ak=KGyGNt4s?m۰Grr{ Dpl(N]5dm!\,Fkw	3?~n~%i9Ht}^9	@:%V0AM%z ٿg+b#"s0@v$*.@Gl1M4h6&lLBA!!޸kရq\xE,U#,IdEiD7k@LK"S(@) "h2#,24dQ"Y/xWL-1#_l\?+fBbY`0#,a0b[3B'JqT@đ=0tl	9S!<=#,9%K`5#ϥռLp=VU7qT<2OraCGmy\K.qy2P3?w2`@!B`#5E2@  ##,(\"i43Pb[]Tj-.nw IFYY%\%UDBQVlKLH|aD{b4j1$1Aیi#fO詶F{S `THq)k#,:kVQF~.h85䵸o&3I\hì3u+b!SWcN]Il:hZlWJ(ZPf	ڎ$H18⎩a[iS)CQ46T4G]Rc`;h9`cPB2FIaH41tFB 2ar2d-WL441f+Y-k(ޖsC52=[Vo%MKy!=I8bG-4\#,2D͹fz:5%P}Fe0/ѣ1TU	&.(R4p#,Z1okT#527*V4֊@v+֘DS8T)mʰuPN2)˩#5L:f]9}I,Yy˻x)ݵڪLPRJACY7Q"lrp6#v0ʊ:cK#(4Z?(!MF!6=.u4dHt#5QѣLqb&R0Ra%(Ȓ&QʮFHk_0g)6GlgK+5'qa00Nf07GY;lRH1>i#Vd`!ɬ"Oqnn1b㞅ȸOeM)lȇ#t(pGSF&n c#i $02K*̂ CTl*O?UQJUB-jr	Pam#,Hp&X!Aaá}%E1T̬JA,Q3?_%:l}TNoj'4(Ct9x~_9l$*w;>v3G7p>R@!B);XBSC壕Dp ?҅3x acis)HJ66$@F B;AլN2]kyWRU_{)%_@{^UQ1MZB1!ج\43M)O1Nz7 56H%%Qʪ~'TDkS;$&	"χ#5]ꠑqI;aJ_#vct#,0L!`9}H.ƮS2(RgsE)Ӹ&w`mA!Jӥ5 R'$l7.S*svG7{U?_8Q|vשDj7J~߭ax6g>"h~Xb!kF5Ilĭ.{Cz%rQz3^>n{\KNO{S_ ext@TZ	kB'ti *iMJ dn:0A)B:f;tN(!#5""ϬZ9E6ꡣFw(}Y'Я'Ejh˩#,GGT/J醊DԷ"ط-͢מ]뷈EA5zi(4lUب7J^4\7457{v潼!L#5Soj[oC;xPC'h)6SˏYY5?@+DL   5ۀ}[n.gvg~_ ?5Cy'D%.@#,0n:.K1,Yf#XF2}c	)2 $`Fk!&W`;{$WR(B*T?~s:P=/z2m@Q<:PUφ	$ J0w㸟YwTWݎ\O@6U?,T4)1cXddmY)lLKClj#,+((pv5.1Alh*>2(h"61J6G^ZcmqDUtCQZFƂF1JJ)D0,6Lp3i` 2 %P]=BĠL+~yX`QE A	 Dπ1A	CH0pgY_+=џNT`YUP	I*!5YЏC!dI1cM8=$X&#9ĺ:nuzwI=CJ*j^s^^W1ٱQ`frV T!2))#,LYkR%T=-8iT隅IeǒN6#5F=>ߦ|ao3'jV'X.a3ESw.&Yfr[bWq'7F!$4v6.$P4thV!GAROearH贽&tAcRu}Xxk!䐖s$MX<*O^:rӑjzzx^JLfrf(Ikyzs.qM@ֻ1#,z#"9֣m6ZXWǽFWBcҺoOE <ݬzo!i<Ea<ͳ웮խ:x=#,G_&diYso'cA#]|`*aw%ꃢf~->|#5_\gyN LKHnU2dxu7}#/Cmna7Uk5~4N?/-cr9NOF,GDiZT)-o~&ͬ9:s;|2GmX{|Ao;*87]YrPm#,C#5vH.M i7	rnwA{.}|t%ªaɡ(IaP`gpݨJ#,V5YЋ$<׼t~F8ĺVrGX:'Qq#jrJYFHbmHV@22ɱdZ=^žIszo-m#,d"UlyjgcYmNb߮\wB'FkxӤ-͋lu:{M=TM-,r#5@ʹ6掘lqeaM1pAxraWB򻩸Vۋ-Z#,u{ިx=dHv[XQ^L ټ'vyIL/[МsI(B13dll~cMD'FSfu6Ss("Ϲa,4`bd/JQ2i:Qi@7b\mteu5ǁ%Dh`L8fs}]t:ӌkxׄ!qmp]cyƓ;jpN5OL(JY&64MkI==#5"8p2@#,0&X02	\&$-#l.s߷6tI0NjˁNTKMkdCjhS{xet *L&{S#,qׅזdx@(y-ݥ6M$c	#,|uI6 	,`eêwt컉Bl"M*;+twp6CKz1ޛe5EX}LiPA\paJzw#,CW/붡6#QR+8GwGq#,B߭+{w% |zsgl=ګon߸xWs|\ص'y9QEXzBnt6͸禨;˿?)kI<ըhH!.|=jk-y::vf19:]5_)Mr[\	V4>V(0mi;f'iԾ57sQ.kf^[XV:[=[WwӼ)/yeQ~˓ߓۤ6߳4QngLY/5WGcq^/JxwIg/BzXPu:c#5DO|=3M+ L]azpA]&"gQ箛:m6Ș;GZHOXR!;`0fh2&Si6-HQ?9Ø2tRNN^Tfe٤xٟ֍TӢed{CQ;ίm	8ŵЅM1/Sr퉝0hKZT#,gh9]r\.z6=|ψܒNg׵] E#گGx"<v;zvUБ(D;٠g_ԑES`Dp4M`7RmUvx!pEfaG+>'_c^LيfTyGb:z|uAѰ?A39<o)N=6TX?]@R4iRB~ppc/^^Y,9UܥݷFuwy9lʤ[u^J-m3дP#,)8Hl; ṽfu#,V:w6xhbCn!m]UДL1+\dJՃeM>F6ڮ8XJ#Y+	o](hczbΑ` 'iGHXC(:H~Ȫem VpgXwz(v1Z|0$)Mi)̨0ΆkdZȵL{$&Rss:5,s0`дa 2rb$#5B$5]\+DR)&Vddv#, pƄEf#,fG*s&g#+ղSpYbq#,8$r˷ə]X.I1p6/^mek ^֌7kD9X桙1S&`ƒOdaSYC,Lnp9Y`D[M[X#,b,V2%݆:qBA3PcdC"Lr&D2tfvsrZ1!tCCDiɤB(q6nqK켈|g.<c]55\$ Â+WGBc		S݊!!+Bm0NSySZ5	pj#wLXN{J**-JI.`Pz+!L:"QJ5xV9]fMWf\.UREJ[ɶTphf&Q{0sY-FFb`޹nms 섙;RH55K*k[P3Ź̲+?0rwRAE.%#5߼iϯωN"(qsSXØ2Ov>/mLgxsp階`[DQ;g9+[h9j'd-)Ó<FٓpkN8%>}+ϗ~Qszd	6$'<{@u_0wQ HoCTE,`H(,mّ7cۏM85i>H_z4`%sբO0Ba4;}>~$Nq(@K(HLeC*R>[B);6/Iؾ@@ -#fZԥ&2Q"ĄSM($R!Պɭ&dR64cPhb[aWV1D! %巟n-{$,X@=&:@##,4U]=HYR{EiIc|^hv0379[k`q4>^Y9qnw Ӹeӂ	0]5446f⹹g,nhV]q_-ʧ]<T=;= E}I B`ja1ddV#cEA#5d o85o5{!=UX>-$iҪN:B-C49C%,tYW!!Ilʹe]Bud@_8W1Ȉls7'%ĘVMXj:cD5BD$$;\Qd4GR}+[.ѨOy@6CN@J.mo$M&B87&^Mp	zJ4*ho02u%PL7h>'Cuݝ]΄6ݤ/ Z5ظ_vbyg5}}{hn*HYp$)(#,*ʣ",t 0Q?VOd*w`IgBk&C*4	)<zs6ч>a|Y4G'f.DS|8X)GwDOWJ^pBlMpRbHbiNcK[p8 AG֪9t;yt9WDWL'ӻa)x.fN}AMO;;H48Di;'CIk)g?<C_SWqԸJoF3DCgFQ#bP^(tv}=qhw1_>pΦM9<$(ߩb1i~b|n\	:.x=H^0j>$ $7Dz#,0b`>L	!IѤ<	J^ޙ-yeW;-#,1倞$+0#d˓FKkb8ֆ73j#G>l5dgr,Y!ĹH[6gY~gW[Ģ5Su$8z҄.ٳǉC脎M'f#0Z`S0N[3A TI@Dw#,v0!jD{4L1db)a`8ZFQA^i!H떵	k`1Ȅ^8z\udTo#,V2jSY7"d9I$ lbxƆCt"|II[!o7_:c8Ith:1HAAcIM/'w(Ԉ!$"2j[5pI<LI*jSS_ּa+	EnӥR%|t#XN^qm=#5/вm.xEmQ%k߇yƣ]&#e߾<g|4g,*ȄFTrb!95JևAԜg8Bj)#,B	IL"YSCݻUja|qmn7'AAme02p):~c!BZ5k1ij x{bǤj#y4*.FɃdQCK@a:e9ރءa,#gX#5gte<qUm}fD"ѴC^UڮMZ FN.mRb/#,qt#,b<5WUctiImzRT[6kY?zɄV"4<[fBe%	*\$rkC]2}>;^asǙY\w)SROWg}U62qN0##,[9VلсU!M\cSrT$V\9g2C*I1ە:7OU+㢹	P]wbFbgKd۴AƎ$mΪSjќ6A)vp#,^Y:ďsgmM\84jPȏn@bѢxrYNH.%1~iD&~f3lHhwk0,4tl(,f'޻zM&p`kn>#,F\J=NNDpwqt#>moiL#,b'LBJ2Ca)V+b2/xφ橌"L3D)2+*橩@dCxveӅ5ӦL' SI6)~|f&Q3;1d	2	VzY,[aY qDvоjá;e՜ӈ3<f[VY<k[+B94dVeȕC$/B#5x[J򊏔;tULy(9cZXWI[Vj=51jGsiթ~,pTQѓ|_;GfǆF#,y:L3I}ҥbC;bt(N*]a#,Le}丰;g\3.(4;-&+Lf)D"jE7DΥACh\SD{XP^tcgxv;!!yF :JU"T;N r!K2ɡ4&A%0 Ef7cٙL8aE@F 5` /(4;"mJ$uXy)"`:ڝ?ܢBٳ><#5'[&(zxiu!w.T(Dmm{#5a^Ob_;kF#uV49yg3r^3Hpr pqōkΛKY7Rzxu_$SN\ԄҬ5լpooj0Jv4ꨇVF׼E90^Iݪ۴6o\,ГW3 ]wpȈxk`JQȚObM\ETxsq$%u1m/z^.\ͻ6ʰ. 7aB+:#,Y`jqr<#WSS)bk#52ں*t{DWTz3S^uF0taf (,Hyf/G <b'`"& DL8e*pqER^PZ۶Ruw4k"2H4RLakxªPiX#50`D`"2" dQF#,ffǰg.i-=E3#2FfSO	h\=QH	xzS$xh|ZqzB~D'd	thM[hcF%\5TBvx,PqË&`Aer7z|7}L<\iP<MMx!=٤a %ȏNjd4Sx5J$;p}KӴd8QLilBq<M~PrT)5,^`5ICʆ0JЬPP#5P/%C )NápM( mr]"A)'#5(|${BHFqݾQ>I!t}w%US(I	Z@N?ü7kۏ $&#,~G%Y54p~L>N>M#M$2UҭKJ#,"Q`K Q:CBE9BM,#Fh#5ρӗ"""Qv>cմ;:72kAi,۳\?^{gmO(mƜ	H`at٠8Fv7u$]!vMPRGTn,'32?;׸!aoފ,Gqi aY5gbfj_LYd3X#5|{xdЖ#,JHSNpw)r y3.lDMBHlB 4ĤUB#,!I?!ś5#,Pg_ qAWI(jTJlKZIlTkW5WF"Jp;4|xD)=̉dMkxK@#h:]-]7$I٤3X¯0zI=)P-@NBhڰ&[Ǿd~kT3({H}ױ&|#a Ґ HSb3ë3CrY vhfѢdths몮d1#,ݨckݰV iÖ{B\.kMPP\+NJO.l}_@\-5hCy3kS(`a`T0XtA;h[7!1FMv  l*}{򿟫ä5;8CR	^HD>q~2➓exlvzVQT9:AKn2>ԒGFVL$.9^`cnpj}?߻p(d.Z?EȄz,čT0&B`6#$O)=u}@}Ȥv#& s䅳k+b2*Sio++<w^kז޵1I,hJflW],yFQ3&EUu#ۣM@?Bv}Hyğ2FvK׸glaH1)	7[k6-#,BwǗU4DRSPFґm4!Or_ts'ǟrndhî\3aԕS"CDs=تn!#,a:4< 5i/0=_# @(Zk$4}"Bi(jY˧g͍ FcܺP9.ۜ-첹jGXAIֻ~Lh"K`j40{~H]k3sElA%2 o$bG]e|][U-@b4(lOuDA:dILQX)MR`Q0݇0|jiQ/xc""}' 1^TK	b5+6Q$iˋbX5*6yџpjbg-J[}k->KݬqRwat¹`#,`~߹[pB^uT"L JY5&R@Қ1JPfVB|N<UV%/#5Qffrbā.<U$[o;R\20PBmkmhPBauqǖja2$"3A@q"mfΓ2p3 ؒa bxqsNJn G=G jC6?\&@SIlm*4#~6XFE%Hk~5ncA1;4hXa N h].uUyn,LC`VRF&qBd	0r*l\O6g@R6,#,h0bmfqƢfb$fTԎ6vB0{{?_NeaSthmrva>s"ܳ|^ex2 3Ez'bӅDX*\*4Ik6[:B'BCyDB!+AYpb߬z\}?cX7[eH5KT\}i9>^(ˇ Lu[8Pݚ PxcS'&@w10̩B`sp^lvi.#,ZVcdǗ (Hc_пlq4vWQaTBFguB$0fWԌ7<A3W1+w<I).Ú((0!PMY#5Wۆ;8ݴNV٘kWHEԁo4EYTb}M}v)c7,WPW8{)?#,+g!T-a,2dV6RؒBѷwCStT1:t#J+^1&#z#,TvL@ԏBI#|"zc-C(25%˖]@yC٘fǋ0k	{n֞noG?_8>O/??G>_[/z}Tݍ͇3Dl_'Px+ Ǐgr' 3ڡ%BV5^7~^_;H"x`rGl'S7}}z?]vBP}. 1\Ї2)8|AKRF4I$D&AmL׎>~y>!&GyDէBz&O|v??{.0F	.Lbk`lESw;_5+K5&Kti؟\ә)#57XYYe3(S45%9,e#5x'Ǹz<8d2"V']bS(7N#,%T`Dt4fPʭmcT6TR='Jny4vծPlnCRu8Sz]eNRto )C2؜uqrHS9JjM^/5x>#5Iy8uu֞.PJH#,#ذן=/NIuxPݐ䔜\	H$a`Oq#,3y2~MUU~7&%q^th`ꦆmf,9yo@=BU!0IY%1|(b(^	O<q#C.ʳ,&bn} ˪OBھ3k՟p]*iq8k81~66PQo9}I]YYl %3._<ďDFa4vz@ۙdpʷFvi_,'͵2FriOdJDdC!#5(S!Gq$`//fŅ F<`!,2<3;8eG('u}<#5l9$7		A7TiDO>Ѽr"(Np&\?nw<Pk}O <Q$BPb {:"1Tȱ!DF&h$Dp}PD2% '2}߰OD#,|~#,oY q]п7@H^_#5JCɁt}_#iyNMiՃ?ךz%P(@yg+OWhf_=C#5 ?W4K sUT#P;J"Pv%%?"JItڭӟC*7oύ=6;}(clbUwCI#54_8Ҙb֫9au˄#p?K*7%2 3,ҷTZ@Icl]{4ܧZ厑DT`$8`!D .p y
-#<==
diff -Naur ns-3.19/src/bridge/bindings/modulegen__gcc_ILP32.py ns-3.20/src/bridge/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/bridge/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.492636245 -0700
+++ ns-3.20/src/bridge/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.822996510 -0700
@@ -62,6 +62,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -74,6 +76,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -178,12 +182,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -221,6 +225,7 @@
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1177,6 +1182,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1374,62 +1387,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1438,6 +1407,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1478,6 +1449,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1619,13 +1592,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1652,6 +1627,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/bridge/bindings/modulegen__gcc_LP64.py ns-3.20/src/bridge/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/bridge/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.494636229 -0700
+++ ns-3.20/src/bridge/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.824996494 -0700
@@ -62,6 +62,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -74,6 +76,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -178,12 +182,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -221,6 +225,7 @@
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1177,6 +1182,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1374,62 +1387,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1438,6 +1407,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1478,6 +1449,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1619,13 +1592,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1652,6 +1627,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/bridge/model/bridge-channel.cc ns-3.20/src/bridge/model/bridge-channel.cc
--- ns-3.19/src/bridge/model/bridge-channel.cc	2014-06-17 10:34:00.496636214 -0700
+++ ns-3.20/src/bridge/model/bridge-channel.cc	2014-06-17 10:33:13.826996479 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BridgeChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BridgeChannel);
 
 TypeId 
 BridgeChannel::GetTypeId (void)
diff -Naur ns-3.19/src/bridge/model/bridge-net-device.cc ns-3.20/src/bridge/model/bridge-net-device.cc
--- ns-3.19/src/bridge/model/bridge-net-device.cc	2014-06-17 10:34:00.497636206 -0700
+++ ns-3.20/src/bridge/model/bridge-net-device.cc	2014-06-17 10:33:13.827996471 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BridgeNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BridgeNetDevice);
 
 
 TypeId
diff -Naur ns-3.19/src/bridge/waf ns-3.20/src/bridge/waf
--- ns-3.19/src/bridge/waf	2014-06-17 10:34:00.498636198 -0700
+++ ns-3.20/src/bridge/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/brite/helper/brite-topology-helper.cc ns-3.20/src/brite/helper/brite-topology-helper.cc
--- ns-3.19/src/brite/helper/brite-topology-helper.cc	2014-06-17 10:34:00.503636160 -0700
+++ ns-3.20/src/brite/helper/brite-topology-helper.cc	2014-06-17 10:33:13.833996425 -0700
@@ -456,7 +456,7 @@
       // Set the link delay
       // The brite value for delay is given in milliseconds
       m_britePointToPointHelper.SetChannelAttribute ("Delay",
-                                                     TimeValue (MilliSeconds ((*it).delay)));
+                                                     TimeValue (Seconds ((*it).delay/1000.0)));
 
       // The brite value for data rate is given in Mbps
       m_britePointToPointHelper.SetDeviceAttribute ("DataRate",
diff -Naur ns-3.19/src/brite/test/brite-test-topology.cc ns-3.20/src/brite/test/brite-test-topology.cc
--- ns-3.19/src/brite/test/brite-test-topology.cc	2014-06-17 10:34:00.504636152 -0700
+++ ns-3.20/src/brite/test/brite-test-topology.cc	2014-06-17 10:33:13.834996417 -0700
@@ -29,7 +29,7 @@
 #include <iostream>
 #include <fstream>
 
-namespace ns3 {
+using namespace ns3;
 
 class BriteTopologyStructureTestCase : public TestCase
 {
@@ -196,5 +196,3 @@
     AddTestCase (new BriteTopologyFunctionTestCase, TestCase::QUICK);
   }
 } g_briteTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/brite/wscript ns-3.20/src/brite/wscript
--- ns-3.19/src/brite/wscript	2014-06-17 10:34:00.505636144 -0700
+++ ns-3.20/src/brite/wscript	2014-06-17 10:33:13.835996409 -0700
@@ -14,33 +14,39 @@
 def configure(conf):
     conf.env['ENABLE_BRITE'] = False
 
+    lib_to_check = 'libbrite.so'
     if Options.options.with_brite:
-        if os.path.isdir(Options.options.with_brite):
-            conf.msg("Checking BRITE location", ("%s (given)" % Options.options.with_brite))
+        conf.msg("Checking BRITE location", ("%s (given)" % Options.options.with_brite))
+        brite_dir = Options.options.with_brite
+        if os.path.exists(os.path.join(brite_dir, lib_to_check)):
             conf.env['WITH_BRITE'] = os.path.abspath(Options.options.with_brite)
         else:
-            brite_dir = os.path.join('..','BRITE')
-            if os.path.isdir(brite_dir):
-                conf.msg("Checking for BRITE location", ("%s (guessed)" % brite_dir))
-                conf.env['WITH_BRITE'] = os.path.abspath(brite_dir)
-                del brite_dir
-            if not conf.env['WITH_BRITE']:
-                conf.msg("Checking for BRITE location", False)
-                conf.report_optional_feature("brite", "BRITE Integration", False,
-                                     "BRITE not found (see option --with-brite)")
-                # Add this module to the list of modules that won't be built
-                # if they are enabled.
-                conf.env['MODULES_NOT_BUILT'].append('brite')
-
-                return
+            conf.report_optional_feature("brite", "BRITE Integration", False,
+                                 "BRITE not found at requested location")
+            # Add this module to the list of modules that won't be built
+            # if they are enabled.
+            conf.env['MODULES_NOT_BUILT'].append('brite')
+            return
     else:
-        conf.report_optional_feature("brite", "BRITE Integration", False, 'BRITE not enabled (see option --with-brite)')
-
-        # Add this module to the list of modules that won't be built
-        # if they are enabled.
-        conf.env['MODULES_NOT_BUILT'].append('brite')
+        # No user specified '--with-brite' option, try to guess
+        # bake.py uses ../../build, while ns-3-dev uses ../click
+        brite_dir = os.path.join('..','BRITE')
+        brite_bake_build_dir = os.path.join('..', '..', 'build') 
+        brite_bake_lib_dir = os.path.join(brite_bake_build_dir, 'lib')
+        if os.path.exists(os.path.join(brite_dir, lib_to_check)):
+            conf.msg("Checking for BRITE location", ("%s (guessed)" % brite_dir))
+            conf.env['WITH_BRITE'] = os.path.abspath(brite_dir)
+# Below is not yet ready (bake does not install BRITE yet, just builds it)
+#        elif os.path.exists(os.path.join(brite_bake_lib_dir, lib_to_check)):
+#            conf.msg("Checking for BRITE location", ("%s (guessed)" % brite_bake_lib_dir))
+#            conf.env['WITH_BRITE'] = os.path.abspath(brite_bake_lib_dir)
+        else:
+            conf.report_optional_feature("brite", "BRITE Integration", False, 'BRITE not enabled (see option --with-brite)')
 
-        return
+            # Add this module to the list of modules that won't be built
+            # if they are enabled.
+            conf.env['MODULES_NOT_BUILT'].append('brite')
+            return
 
     test_code = '''
 #include "Brite.h"
diff -Naur ns-3.19/src/buildings/bindings/modulegen__gcc_ILP32.py ns-3.20/src/buildings/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/buildings/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.508636121 -0700
+++ ns-3.20/src/buildings/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.838996386 -0700
@@ -72,6 +72,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -88,6 +90,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -268,17 +272,17 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -302,12 +306,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -348,6 +352,7 @@
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1480,6 +1485,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1707,62 +1720,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1771,6 +1740,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1811,6 +1782,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -2324,13 +2297,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2357,6 +2332,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3398,12 +3378,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
diff -Naur ns-3.19/src/buildings/bindings/modulegen__gcc_LP64.py ns-3.20/src/buildings/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/buildings/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.511636098 -0700
+++ ns-3.20/src/buildings/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.841996363 -0700
@@ -72,6 +72,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -88,6 +90,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -268,17 +272,17 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -302,12 +306,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -348,6 +352,7 @@
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1480,6 +1485,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1707,62 +1720,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1771,6 +1740,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1811,6 +1782,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -2324,13 +2297,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2357,6 +2332,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3398,12 +3378,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
diff -Naur ns-3.19/src/buildings/helper/building-allocator.cc ns-3.20/src/buildings/helper/building-allocator.cc
--- ns-3.19/src/buildings/helper/building-allocator.cc	2014-06-17 10:34:00.516636059 -0700
+++ ns-3.20/src/buildings/helper/building-allocator.cc	2014-06-17 10:33:13.846996324 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (GridBuildingAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GridBuildingAllocator);
 
 GridBuildingAllocator::GridBuildingAllocator ()
   : m_current (0)
diff -Naur ns-3.19/src/buildings/helper/building-position-allocator.cc ns-3.20/src/buildings/helper/building-position-allocator.cc
--- ns-3.19/src/buildings/helper/building-position-allocator.cc	2014-06-17 10:34:00.518636044 -0700
+++ ns-3.20/src/buildings/helper/building-position-allocator.cc	2014-06-17 10:33:13.847996317 -0700
@@ -35,10 +35,9 @@
 
 NS_LOG_COMPONENT_DEFINE ("BuildingPositionAllocator");
 
-namespace ns3 {
+using namespace ns3;
 
-NS_OBJECT_ENSURE_REGISTERED (RandomBuildingPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomBuildingPositionAllocator);
 
 
 RandomBuildingPositionAllocator::RandomBuildingPositionAllocator ()
@@ -105,8 +104,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (RandomRoomPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomRoomPositionAllocator);
 
 
 RandomRoomPositionAllocator::RandomRoomPositionAllocator ()
@@ -194,8 +192,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (SameRoomPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SameRoomPositionAllocator);
 
 SameRoomPositionAllocator::SameRoomPositionAllocator ()
 {
@@ -285,8 +282,7 @@
   return 1;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (FixedRoomPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FixedRoomPositionAllocator);
 
 
 FixedRoomPositionAllocator::FixedRoomPositionAllocator (
@@ -348,6 +344,3 @@
   m_rand->SetStream (stream);
   return 1;
 }
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/buildings/model/building.cc ns-3.20/src/buildings/model/building.cc
--- ns-3.19/src/buildings/model/building.cc	2014-06-17 10:34:00.520636028 -0700
+++ ns-3.20/src/buildings/model/building.cc	2014-06-17 10:33:13.850996293 -0700
@@ -34,8 +34,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (Building)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Building);
 
 TypeId
 Building::GetTypeId (void)
diff -Naur ns-3.19/src/buildings/model/building-list.cc ns-3.20/src/buildings/model/building-list.cc
--- ns-3.19/src/buildings/model/building-list.cc	2014-06-17 10:34:00.520636028 -0700
+++ ns-3.20/src/buildings/model/building-list.cc	2014-06-17 10:33:13.849996301 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("BuildingList")
-  ;
+NS_LOG_COMPONENT_DEFINE ("BuildingList");
 
 /**
  * \brief private implementation detail of the BuildingList API.
@@ -58,8 +57,7 @@
   std::vector<Ptr<Building> > m_buildings;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (BuildingListPriv)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BuildingListPriv);
 
 TypeId
 BuildingListPriv::GetTypeId (void)
diff -Naur ns-3.19/src/buildings/model/buildings-propagation-loss-model.cc ns-3.20/src/buildings/model/buildings-propagation-loss-model.cc
--- ns-3.19/src/buildings/model/buildings-propagation-loss-model.cc	2014-06-17 10:34:00.521636021 -0700
+++ ns-3.20/src/buildings/model/buildings-propagation-loss-model.cc	2014-06-17 10:33:13.851996286 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BuildingsPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BuildingsPropagationLossModel);
 
 BuildingsPropagationLossModel::ShadowingLoss::ShadowingLoss ()
 {
diff -Naur ns-3.19/src/buildings/model/hybrid-buildings-propagation-loss-model.cc ns-3.20/src/buildings/model/hybrid-buildings-propagation-loss-model.cc
--- ns-3.19/src/buildings/model/hybrid-buildings-propagation-loss-model.cc	2014-06-17 10:34:00.522636013 -0700
+++ ns-3.20/src/buildings/model/hybrid-buildings-propagation-loss-model.cc	2014-06-17 10:33:13.851996286 -0700
@@ -41,8 +41,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (HybridBuildingsPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HybridBuildingsPropagationLossModel);
 
 
 
diff -Naur ns-3.19/src/buildings/model/itu-r-1238-propagation-loss-model.cc ns-3.20/src/buildings/model/itu-r-1238-propagation-loss-model.cc
--- ns-3.19/src/buildings/model/itu-r-1238-propagation-loss-model.cc	2014-06-17 10:34:00.523636005 -0700
+++ ns-3.20/src/buildings/model/itu-r-1238-propagation-loss-model.cc	2014-06-17 10:33:13.852996278 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ItuR1238PropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ItuR1238PropagationLossModel);
 
 
 TypeId
diff -Naur ns-3.19/src/buildings/model/mobility-building-info.cc ns-3.20/src/buildings/model/mobility-building-info.cc
--- ns-3.19/src/buildings/model/mobility-building-info.cc	2014-06-17 10:34:00.524635997 -0700
+++ ns-3.20/src/buildings/model/mobility-building-info.cc	2014-06-17 10:33:13.853996270 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MobilityBuildingInfo)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MobilityBuildingInfo);
 
 TypeId
 MobilityBuildingInfo::GetTypeId (void)
diff -Naur ns-3.19/src/buildings/model/oh-buildings-propagation-loss-model.cc ns-3.20/src/buildings/model/oh-buildings-propagation-loss-model.cc
--- ns-3.19/src/buildings/model/oh-buildings-propagation-loss-model.cc	2014-06-17 10:34:00.524635997 -0700
+++ ns-3.20/src/buildings/model/oh-buildings-propagation-loss-model.cc	2014-06-17 10:33:13.853996270 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (OhBuildingsPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OhBuildingsPropagationLossModel);
 
 
 
diff -Naur ns-3.19/src/buildings/test/building-position-allocator-test.cc ns-3.20/src/buildings/test/building-position-allocator-test.cc
--- ns-3.19/src/buildings/test/building-position-allocator-test.cc	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/buildings/test/building-position-allocator-test.cc	2014-06-17 10:33:13.854996262 -0700
@@ -34,8 +34,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("BuildingPositionAllocatorTest");
 
-namespace ns3 {
-
+using namespace ns3;
 
 
 struct Room
@@ -242,6 +241,3 @@
 }
 
 static BuildingPositionAllocatorTestSuite buildingsPositionAllocatorTestSuiteInstance;
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/buildings/test/buildings-helper-test.cc ns-3.20/src/buildings/test/buildings-helper-test.cc
--- ns-3.19/src/buildings/test/buildings-helper-test.cc	2014-06-17 10:34:00.526635982 -0700
+++ ns-3.20/src/buildings/test/buildings-helper-test.cc	2014-06-17 10:33:13.855996255 -0700
@@ -31,7 +31,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("BuildingsHelperTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 struct PositionInBuilding
@@ -325,6 +325,3 @@
 }
 
 static BuildingsHelperTestSuite buildingsHelperAntennaTestSuiteInstance;
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/buildings/test/buildings-pathloss-test.cc ns-3.20/src/buildings/test/buildings-pathloss-test.cc
--- ns-3.19/src/buildings/test/buildings-pathloss-test.cc	2014-06-17 10:34:00.526635982 -0700
+++ ns-3.20/src/buildings/test/buildings-pathloss-test.cc	2014-06-17 10:33:13.855996255 -0700
@@ -36,7 +36,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("BuildingsPathlossTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -271,7 +271,3 @@
   BuildingsHelper::MakeConsistent (mm); 
   return mm;
 }
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/buildings/test/buildings-pathloss-test.h ns-3.20/src/buildings/test/buildings-pathloss-test.h
--- ns-3.19/src/buildings/test/buildings-pathloss-test.h	2014-06-17 10:34:00.527635974 -0700
+++ ns-3.20/src/buildings/test/buildings-pathloss-test.h	2014-06-17 10:33:13.856996247 -0700
@@ -25,7 +25,7 @@
 #include <ns3/hybrid-buildings-propagation-loss-model.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
 /**
 * Test 1.1 pathloss calculation
@@ -58,6 +58,3 @@
 
 
 #endif /* BUILDING_PATHLOSS_TEST_H */
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/buildings/test/buildings-shadowing-test.cc ns-3.20/src/buildings/test/buildings-shadowing-test.cc
--- ns-3.19/src/buildings/test/buildings-shadowing-test.cc	2014-06-17 10:34:00.527635974 -0700
+++ ns-3.20/src/buildings/test/buildings-shadowing-test.cc	2014-06-17 10:33:13.856996247 -0700
@@ -36,7 +36,7 @@
 NS_LOG_COMPONENT_DEFINE ("BuildingsShadowingTest");
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 
@@ -228,8 +228,3 @@
   BuildingsHelper::MakeConsistent (mm); 
   return mm;
 }
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/buildings/test/buildings-shadowing-test.h ns-3.20/src/buildings/test/buildings-shadowing-test.h
--- ns-3.19/src/buildings/test/buildings-shadowing-test.h	2014-06-17 10:34:00.528635967 -0700
+++ ns-3.20/src/buildings/test/buildings-shadowing-test.h	2014-06-17 10:33:13.857996239 -0700
@@ -25,7 +25,7 @@
 
 
 
-namespace ns3 {
+using namespace ns3;
 
 /**
  * Test shadowing calculation
@@ -55,5 +55,3 @@
 };
 
 #endif /*BUILDINGS_SHADOWING_TEST_H*/
-
-} // namespace ns3
diff -Naur ns-3.19/src/click/bindings/modulegen__gcc_ILP32.py ns-3.20/src/click/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/click/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.533635928 -0700
+++ ns-3.20/src/click/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.861996209 -0700
@@ -46,8 +46,6 @@
     module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
     ## callback.h (module 'core'): ns3::CallbackBase [class]
     module.add_class('CallbackBase', import_from_module='ns.core')
-    ## event-id.h (module 'core'): ns3::EventId [class]
-    module.add_class('EventId', import_from_module='ns.core')
     ## hash.h (module 'core'): ns3::Hasher [class]
     module.add_class('Hasher', import_from_module='ns.core')
     ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
@@ -58,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -100,12 +70,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## log.h (module 'core'): ns3::LogComponent [class]
@@ -114,8 +78,6 @@
     module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
     ## object.h (module 'core'): ns3::ObjectDeleter [struct]
     module.add_class('ObjectDeleter', import_from_module='ns.core')
-    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
-    module.add_class('ObjectFactory', import_from_module='ns.core')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
     module.add_class('PacketMetadata', import_from_module='ns.network')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
@@ -136,22 +98,12 @@
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simulator.h (module 'core'): ns3::Simulator [class]
-    module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs [class]
     module.add_class('SystemWallClockMs', import_from_module='ns.core')
     ## tag.h (module 'network'): ns3::Tag [class]
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -162,8 +114,6 @@
     module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
     ## empty.h (module 'core'): ns3::empty [class]
     module.add_class('empty', import_from_module='ns.core')
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
-    module.add_class('int64x64_t', import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -174,10 +124,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -190,8 +136,6 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Hash::Implementation', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Hash::Implementation>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> > [class]
@@ -224,12 +168,6 @@
     module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
     ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
     module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
-    ## nstime.h (module 'core'): ns3::Time [class]
-    module.add_class('Time', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time [class]
-    root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
     module.add_class('TraceSourceAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
     ## trailer.h (module 'network'): ns3::Trailer [class]
@@ -248,12 +186,6 @@
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## event-impl.h (module 'core'): ns3::EventImpl [class]
-    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -278,8 +210,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -290,16 +220,10 @@
     module.add_enum('PacketType', ['PACKET_HOST', 'NS3_PACKET_HOST', 'PACKET_BROADCAST', 'NS3_PACKET_BROADCAST', 'PACKET_MULTICAST', 'NS3_PACKET_MULTICAST', 'PACKET_OTHERHOST', 'NS3_PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'], import_from_module='ns.network')
     ## nix-vector.h (module 'network'): ns3::NixVector [class]
     module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
-    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
-    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper [class]
     module.add_class('OutputStreamWrapper', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
     ## packet.h (module 'network'): ns3::Packet [class]
     module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    ## nstime.h (module 'core'): ns3::TimeValue [class]
-    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
     module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## type-id.h (module 'core'): ns3::TypeIdValue [class]
@@ -376,27 +300,17 @@
     register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
     register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
-    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3LogComponent_methods(root_module, root_module['ns3::LogComponent'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
-    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
     register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
     register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
@@ -405,28 +319,22 @@
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
     register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
-    register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
     register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
     register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
     register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
@@ -441,7 +349,6 @@
     register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
     register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
     register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
-    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
     register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
@@ -451,8 +358,6 @@
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
-    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -465,16 +370,12 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
     register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
-    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
-    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
     register_Ns3OutputStreamWrapper_methods(root_module, root_module['ns3::OutputStreamWrapper'])
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
-    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
     register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
@@ -965,51 +866,6 @@
                    is_static=True, visibility='protected')
     return
 
-def register_Ns3EventId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_binary_comparison_operator('==')
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
-    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
-    cls.add_constructor([])
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
-    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
-    cls.add_method('GetTs', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
-    cls.add_method('PeekEventImpl', 
-                   'ns3::EventImpl *', 
-                   [], 
-                   is_const=True)
-    return
-
 def register_Ns3Hasher_methods(root_module, cls):
     ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Hasher const &', 'arg0')])
@@ -1125,55 +981,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1510,10 +1317,11 @@
                    'bool', 
                    [param('ns3::Ipv6Address const &', 'other')], 
                    is_const=True)
-    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() [member function]
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
     cls.add_method('IsIpv4MappedAddress', 
                    'bool', 
-                   [])
+                   [], 
+                   is_const=True)
     ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
     cls.add_method('IsLinkLocal', 
                    'bool', 
@@ -1604,61 +1412,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -1720,8 +1473,8 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(char const * name) [constructor]
-    cls.add_constructor([param('char const *', 'name')])
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
+    cls.add_constructor([param('std::string const &', 'name')])
     ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
     cls.add_method('Disable', 
                    'void', 
@@ -1730,10 +1483,10 @@
     cls.add_method('Enable', 
                    'void', 
                    [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(char const * name) [member function]
+    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
     cls.add_method('EnvVarCheck', 
                    'void', 
-                   [param('char const *', 'name')])
+                   [param('std::string const &', 'name')])
     ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
@@ -1829,42 +1582,6 @@
                    is_static=True)
     return
 
-def register_Ns3ObjectFactory_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(std::string typeId) [constructor]
-    cls.add_constructor([param('std::string', 'typeId')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::Object >', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('char const *', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('std::string', 'tid')])
-    return
-
 def register_Ns3PacketMetadata_methods(root_module, cls):
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
     cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
@@ -2068,86 +1785,6 @@
                    is_static=True)
     return
 
-def register_Ns3Simulator_methods(root_module, cls):
-    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
-    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
-    cls.add_method('Destroy', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
-    cls.add_method('GetImplementation', 
-                   'ns3::Ptr< ns3::SimulatorImpl >', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
-    cls.add_method('GetMaximumSimulationTime', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
-    cls.add_method('GetSystemId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
-    cls.add_method('IsFinished', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
-    cls.add_method('Now', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
-    cls.add_method('SetImplementation', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
-    cls.add_method('SetScheduler', 
-                   'void', 
-                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [param('ns3::Time const &', 'time')], 
-                   is_static=True)
-    return
-
 def register_Ns3SystemWallClockMs_methods(root_module, cls):
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs::SystemWallClockMs(ns3::SystemWallClockMs const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SystemWallClockMs const &', 'arg0')])
@@ -2273,90 +1910,6 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2553,113 +2106,6 @@
     cls.add_constructor([param('ns3::empty const &', 'arg0')])
     return
 
-def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
-    cls.add_constructor([])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
-    cls.add_constructor([param('int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
-    cls.add_constructor([param('long int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long int v) [constructor]
-    cls.add_constructor([param('long long int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(unsigned int v) [constructor]
-    cls.add_constructor([param('unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long unsigned int v) [constructor]
-    cls.add_constructor([param('long unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long unsigned int v) [constructor]
-    cls.add_constructor([param('long long unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int64_t hi, uint64_t lo) [constructor]
-    cls.add_constructor([param('int64_t', 'hi'), param('uint64_t', 'lo')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(ns3::int64x64_t const & o) [copy constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'o')])
-    ## int64x64-double.h (module 'core'): double ns3::int64x64_t::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): int64_t ns3::int64x64_t::GetHigh() const [member function]
-    cls.add_method('GetHigh', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): uint64_t ns3::int64x64_t::GetLow() const [member function]
-    cls.add_method('GetLow', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): static ns3::int64x64_t ns3::int64x64_t::Invert(uint64_t v) [member function]
-    cls.add_method('Invert', 
-                   'ns3::int64x64_t', 
-                   [param('uint64_t', 'v')], 
-                   is_static=True)
-    ## int64x64-double.h (module 'core'): void ns3::int64x64_t::MulByInvert(ns3::int64x64_t const & o) [member function]
-    cls.add_method('MulByInvert', 
-                   'void', 
-                   [param('ns3::int64x64_t const &', 'o')])
-    return
-
 def register_Ns3Chunk_methods(root_module, cls):
     ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
     cls.add_constructor([])
@@ -2887,106 +2333,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -3101,18 +2447,6 @@
                    is_static=True)
     return
 
-def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
 def register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -3808,177 +3142,6 @@
                    is_const=True, is_virtual=True)
     return
 
-def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Time const &', 'o')])
-    ## nstime.h (module 'core'): ns3::Time::Time(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(int v) [constructor]
-    cls.add_constructor([param('int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long int v) [constructor]
-    cls.add_constructor([param('long int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long long int v) [constructor]
-    cls.add_constructor([param('long long int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(unsigned int v) [constructor]
-    cls.add_constructor([param('unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long unsigned int v) [constructor]
-    cls.add_constructor([param('long unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
-    cls.add_constructor([param('long long unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
-    cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
-    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::Time const &', 'o')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('From', 
-                   'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
-    cls.add_method('From', 
-                   'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromDouble', 
-                   'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromInteger', 
-                   'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
-    cls.add_method('GetFemtoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
-    cls.add_method('GetInteger', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
-    cls.add_method('GetMicroSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
-    cls.add_method('GetMilliSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
-    cls.add_method('GetNanoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
-    cls.add_method('GetPicoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
-    cls.add_method('GetResolution', 
-                   'ns3::Time::Unit', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
-    cls.add_method('GetSeconds', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
-    cls.add_method('GetTimeStep', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
-    cls.add_method('IsNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
-    cls.add_method('IsPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
-    cls.add_method('IsZero', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Max() [member function]
-    cls.add_method('Max', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Min() [member function]
-    cls.add_method('Min', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
-    cls.add_method('SetResolution', 
-                   'void', 
-                   [param('ns3::Time::Unit', 'resolution')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static bool ns3::Time::StaticInit() [member function]
-    cls.add_method('StaticInit', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('To', 
-                   'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('ToDouble', 
-                   'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('ToInteger', 
-                   'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    return
-
 def register_Ns3TraceSourceAccessor_methods(root_module, cls):
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor(ns3::TraceSourceAccessor const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TraceSourceAccessor const &', 'arg0')])
@@ -4199,87 +3362,6 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
-def register_Ns3EventImpl_methods(root_module, cls):
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
-    cls.add_constructor([])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
-    cls.add_method('IsCancelled', 
-                   'bool', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
-    cls.add_method('Notify', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -4565,10 +3647,10 @@
     cls.add_method('Send', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')])
-    ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetArpCache(ns3::Ptr<ns3::ArpCache> arg0) [member function]
+    ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetArpCache(ns3::Ptr<ns3::ArpCache> arpCache) [member function]
     cls.add_method('SetArpCache', 
                    'void', 
-                   [param('ns3::Ptr< ns3::ArpCache >', 'arg0')])
+                   [param('ns3::Ptr< ns3::ArpCache >', 'arpCache')])
     ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
     cls.add_method('SetDevice', 
                    'void', 
@@ -4835,151 +3917,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -5196,46 +4133,6 @@
                    is_const=True)
     return
 
-def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
-    return
-
-def register_Ns3ObjectFactoryValue_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::ObjectFactory', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::ObjectFactory const &', 'value')])
-    return
-
 def register_Ns3OutputStreamWrapper_methods(root_module, cls):
     ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(ns3::OutputStreamWrapper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::OutputStreamWrapper const &', 'arg0')])
@@ -5434,39 +4331,6 @@
                    [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
     return
 
-def register_Ns3TimeValue_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
-    cls.add_constructor([param('ns3::Time const &', 'value')])
-    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::Time const &', 'value')])
-    return
-
 def register_Ns3TypeIdChecker_methods(root_module, cls):
     ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
     cls.add_constructor([])
diff -Naur ns-3.19/src/click/bindings/modulegen__gcc_LP64.py ns-3.20/src/click/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/click/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.536635905 -0700
+++ ns-3.20/src/click/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.864996186 -0700
@@ -46,8 +46,6 @@
     module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
     ## callback.h (module 'core'): ns3::CallbackBase [class]
     module.add_class('CallbackBase', import_from_module='ns.core')
-    ## event-id.h (module 'core'): ns3::EventId [class]
-    module.add_class('EventId', import_from_module='ns.core')
     ## hash.h (module 'core'): ns3::Hasher [class]
     module.add_class('Hasher', import_from_module='ns.core')
     ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress [class]
@@ -58,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -100,12 +70,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## log.h (module 'core'): ns3::LogComponent [class]
@@ -114,8 +78,6 @@
     module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
     ## object.h (module 'core'): ns3::ObjectDeleter [struct]
     module.add_class('ObjectDeleter', import_from_module='ns.core')
-    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
-    module.add_class('ObjectFactory', import_from_module='ns.core')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
     module.add_class('PacketMetadata', import_from_module='ns.network')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
@@ -136,22 +98,12 @@
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simulator.h (module 'core'): ns3::Simulator [class]
-    module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs [class]
     module.add_class('SystemWallClockMs', import_from_module='ns.core')
     ## tag.h (module 'network'): ns3::Tag [class]
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -162,8 +114,6 @@
     module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
     ## empty.h (module 'core'): ns3::empty [class]
     module.add_class('empty', import_from_module='ns.core')
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
-    module.add_class('int64x64_t', import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -174,10 +124,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -190,8 +136,6 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Hash::Implementation', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Hash::Implementation>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> > [class]
@@ -224,12 +168,6 @@
     module.add_class('SocketIpv6TclassTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
     ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag [class]
     module.add_class('SocketSetDontFragmentTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
-    ## nstime.h (module 'core'): ns3::Time [class]
-    module.add_class('Time', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time [class]
-    root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
     module.add_class('TraceSourceAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
     ## trailer.h (module 'network'): ns3::Trailer [class]
@@ -248,12 +186,6 @@
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## event-impl.h (module 'core'): ns3::EventImpl [class]
-    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -278,8 +210,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -290,16 +220,10 @@
     module.add_enum('PacketType', ['PACKET_HOST', 'NS3_PACKET_HOST', 'PACKET_BROADCAST', 'NS3_PACKET_BROADCAST', 'PACKET_MULTICAST', 'NS3_PACKET_MULTICAST', 'PACKET_OTHERHOST', 'NS3_PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'], import_from_module='ns.network')
     ## nix-vector.h (module 'network'): ns3::NixVector [class]
     module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
-    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
-    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper [class]
     module.add_class('OutputStreamWrapper', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
     ## packet.h (module 'network'): ns3::Packet [class]
     module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    ## nstime.h (module 'core'): ns3::TimeValue [class]
-    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
     module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## type-id.h (module 'core'): ns3::TypeIdValue [class]
@@ -376,27 +300,17 @@
     register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
     register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
-    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3LogComponent_methods(root_module, root_module['ns3::LogComponent'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
-    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
     register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
     register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
@@ -405,28 +319,22 @@
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
     register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
-    register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
     register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
     register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
     register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
@@ -441,7 +349,6 @@
     register_Ns3SocketIpv6HopLimitTag_methods(root_module, root_module['ns3::SocketIpv6HopLimitTag'])
     register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
     register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
-    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
     register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
@@ -451,8 +358,6 @@
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
-    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -465,16 +370,12 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
     register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
-    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
-    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
     register_Ns3OutputStreamWrapper_methods(root_module, root_module['ns3::OutputStreamWrapper'])
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
-    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
     register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
@@ -965,51 +866,6 @@
                    is_static=True, visibility='protected')
     return
 
-def register_Ns3EventId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_binary_comparison_operator('==')
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
-    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
-    cls.add_constructor([])
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
-    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
-    cls.add_method('GetTs', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
-    cls.add_method('PeekEventImpl', 
-                   'ns3::EventImpl *', 
-                   [], 
-                   is_const=True)
-    return
-
 def register_Ns3Hasher_methods(root_module, cls):
     ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Hasher const &', 'arg0')])
@@ -1125,55 +981,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1510,10 +1317,11 @@
                    'bool', 
                    [param('ns3::Ipv6Address const &', 'other')], 
                    is_const=True)
-    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() [member function]
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
     cls.add_method('IsIpv4MappedAddress', 
                    'bool', 
-                   [])
+                   [], 
+                   is_const=True)
     ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
     cls.add_method('IsLinkLocal', 
                    'bool', 
@@ -1604,61 +1412,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -1720,8 +1473,8 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(char const * name) [constructor]
-    cls.add_constructor([param('char const *', 'name')])
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
+    cls.add_constructor([param('std::string const &', 'name')])
     ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
     cls.add_method('Disable', 
                    'void', 
@@ -1730,10 +1483,10 @@
     cls.add_method('Enable', 
                    'void', 
                    [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(char const * name) [member function]
+    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
     cls.add_method('EnvVarCheck', 
                    'void', 
-                   [param('char const *', 'name')])
+                   [param('std::string const &', 'name')])
     ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
@@ -1829,42 +1582,6 @@
                    is_static=True)
     return
 
-def register_Ns3ObjectFactory_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(std::string typeId) [constructor]
-    cls.add_constructor([param('std::string', 'typeId')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::Object >', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('char const *', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('std::string', 'tid')])
-    return
-
 def register_Ns3PacketMetadata_methods(root_module, cls):
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
     cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
@@ -2068,86 +1785,6 @@
                    is_static=True)
     return
 
-def register_Ns3Simulator_methods(root_module, cls):
-    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
-    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
-    cls.add_method('Destroy', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
-    cls.add_method('GetImplementation', 
-                   'ns3::Ptr< ns3::SimulatorImpl >', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
-    cls.add_method('GetMaximumSimulationTime', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
-    cls.add_method('GetSystemId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
-    cls.add_method('IsFinished', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
-    cls.add_method('Now', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
-    cls.add_method('SetImplementation', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
-    cls.add_method('SetScheduler', 
-                   'void', 
-                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [param('ns3::Time const &', 'time')], 
-                   is_static=True)
-    return
-
 def register_Ns3SystemWallClockMs_methods(root_module, cls):
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs::SystemWallClockMs(ns3::SystemWallClockMs const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SystemWallClockMs const &', 'arg0')])
@@ -2273,90 +1910,6 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2553,113 +2106,6 @@
     cls.add_constructor([param('ns3::empty const &', 'arg0')])
     return
 
-def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
-    cls.add_constructor([])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
-    cls.add_constructor([param('int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
-    cls.add_constructor([param('long int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long int v) [constructor]
-    cls.add_constructor([param('long long int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(unsigned int v) [constructor]
-    cls.add_constructor([param('unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long unsigned int v) [constructor]
-    cls.add_constructor([param('long unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long unsigned int v) [constructor]
-    cls.add_constructor([param('long long unsigned int', 'v')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int64_t hi, uint64_t lo) [constructor]
-    cls.add_constructor([param('int64_t', 'hi'), param('uint64_t', 'lo')])
-    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(ns3::int64x64_t const & o) [copy constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'o')])
-    ## int64x64-double.h (module 'core'): double ns3::int64x64_t::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): int64_t ns3::int64x64_t::GetHigh() const [member function]
-    cls.add_method('GetHigh', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): uint64_t ns3::int64x64_t::GetLow() const [member function]
-    cls.add_method('GetLow', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## int64x64-double.h (module 'core'): static ns3::int64x64_t ns3::int64x64_t::Invert(uint64_t v) [member function]
-    cls.add_method('Invert', 
-                   'ns3::int64x64_t', 
-                   [param('uint64_t', 'v')], 
-                   is_static=True)
-    ## int64x64-double.h (module 'core'): void ns3::int64x64_t::MulByInvert(ns3::int64x64_t const & o) [member function]
-    cls.add_method('MulByInvert', 
-                   'void', 
-                   [param('ns3::int64x64_t const &', 'o')])
-    return
-
 def register_Ns3Chunk_methods(root_module, cls):
     ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
     cls.add_constructor([])
@@ -2887,106 +2333,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -3101,18 +2447,6 @@
                    is_static=True)
     return
 
-def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
 def register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -3808,177 +3142,6 @@
                    is_const=True, is_virtual=True)
     return
 
-def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Time const &', 'o')])
-    ## nstime.h (module 'core'): ns3::Time::Time(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(int v) [constructor]
-    cls.add_constructor([param('int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long int v) [constructor]
-    cls.add_constructor([param('long int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long long int v) [constructor]
-    cls.add_constructor([param('long long int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(unsigned int v) [constructor]
-    cls.add_constructor([param('unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long unsigned int v) [constructor]
-    cls.add_constructor([param('long unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
-    cls.add_constructor([param('long long unsigned int', 'v')])
-    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
-    cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
-    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::Time const &', 'o')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('From', 
-                   'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
-    cls.add_method('From', 
-                   'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromDouble', 
-                   'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromInteger', 
-                   'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
-    cls.add_method('GetFemtoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
-    cls.add_method('GetInteger', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
-    cls.add_method('GetMicroSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
-    cls.add_method('GetMilliSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
-    cls.add_method('GetNanoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
-    cls.add_method('GetPicoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
-    cls.add_method('GetResolution', 
-                   'ns3::Time::Unit', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
-    cls.add_method('GetSeconds', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
-    cls.add_method('GetTimeStep', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
-    cls.add_method('IsNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
-    cls.add_method('IsPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
-    cls.add_method('IsZero', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Max() [member function]
-    cls.add_method('Max', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Min() [member function]
-    cls.add_method('Min', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
-    cls.add_method('SetResolution', 
-                   'void', 
-                   [param('ns3::Time::Unit', 'resolution')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static bool ns3::Time::StaticInit() [member function]
-    cls.add_method('StaticInit', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('To', 
-                   'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('ToDouble', 
-                   'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
-    cls.add_method('ToInteger', 
-                   'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
-                   is_const=True)
-    return
-
 def register_Ns3TraceSourceAccessor_methods(root_module, cls):
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor(ns3::TraceSourceAccessor const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TraceSourceAccessor const &', 'arg0')])
@@ -4199,87 +3362,6 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
-def register_Ns3EventImpl_methods(root_module, cls):
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
-    cls.add_constructor([])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
-    cls.add_method('IsCancelled', 
-                   'bool', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
-    cls.add_method('Notify', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -4565,10 +3647,10 @@
     cls.add_method('Send', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')])
-    ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetArpCache(ns3::Ptr<ns3::ArpCache> arg0) [member function]
+    ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetArpCache(ns3::Ptr<ns3::ArpCache> arpCache) [member function]
     cls.add_method('SetArpCache', 
                    'void', 
-                   [param('ns3::Ptr< ns3::ArpCache >', 'arg0')])
+                   [param('ns3::Ptr< ns3::ArpCache >', 'arpCache')])
     ## ipv4-interface.h (module 'internet'): void ns3::Ipv4Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
     cls.add_method('SetDevice', 
                    'void', 
@@ -4835,151 +3917,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -5196,46 +4133,6 @@
                    is_const=True)
     return
 
-def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
-    return
-
-def register_Ns3ObjectFactoryValue_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::ObjectFactory', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::ObjectFactory const &', 'value')])
-    return
-
 def register_Ns3OutputStreamWrapper_methods(root_module, cls):
     ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(ns3::OutputStreamWrapper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::OutputStreamWrapper const &', 'arg0')])
@@ -5434,39 +4331,6 @@
                    [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
     return
 
-def register_Ns3TimeValue_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
-    cls.add_constructor([param('ns3::Time const &', 'value')])
-    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::Time const &', 'value')])
-    return
-
 def register_Ns3TypeIdChecker_methods(root_module, cls):
     ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
     cls.add_constructor([])
diff -Naur ns-3.19/src/click/model/ipv4-click-routing.cc ns-3.20/src/click/model/ipv4-click-routing.cc
--- ns-3.19/src/click/model/ipv4-click-routing.cc	2014-06-17 10:34:00.543635851 -0700
+++ ns-3.20/src/click/model/ipv4-click-routing.cc	2014-06-17 10:33:13.871996131 -0700
@@ -45,8 +45,7 @@
 #define INTERFACE_ID_FIRST 1
 #define INTERFACE_ID_FIRST_DROP 33
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4ClickRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4ClickRouting);
 
 std::map < simclick_node_t *, Ptr<Ipv4ClickRouting> > Ipv4ClickRouting::m_clickInstanceFromSimNode;
 
diff -Naur ns-3.19/src/click/model/ipv4-click-routing.h ns-3.20/src/click/model/ipv4-click-routing.h
--- ns-3.19/src/click/model/ipv4-click-routing.h	2014-06-17 10:34:00.544635843 -0700
+++ ns-3.20/src/click/model/ipv4-click-routing.h	2014-06-17 10:33:13.872996124 -0700
@@ -37,6 +37,10 @@
 #include <map>
 #include <string>
 
+class ClickTrivialTest;
+class ClickIfidFromNameTest;
+class ClickIpMacAddressFromNameTest;
+
 namespace ns3 {
 
 /**
@@ -56,9 +60,9 @@
 #ifdef NS3_CLICK
 public:
   // Allow test cases to access private members
-  friend class ClickTrivialTest;
-  friend class ClickIfidFromNameTest;
-  friend class ClickIpMacAddressFromNameTest;
+  friend class ::ClickTrivialTest;
+  friend class ::ClickIfidFromNameTest;
+  friend class ::ClickIpMacAddressFromNameTest;
 
   static TypeId GetTypeId (void);
 
diff -Naur ns-3.19/src/click/model/ipv4-l3-click-protocol.cc ns-3.20/src/click/model/ipv4-l3-click-protocol.cc
--- ns-3.19/src/click/model/ipv4-l3-click-protocol.cc	2014-06-17 10:34:00.544635843 -0700
+++ ns-3.20/src/click/model/ipv4-l3-click-protocol.cc	2014-06-17 10:33:13.873996116 -0700
@@ -44,8 +44,7 @@
 const uint16_t Ipv4L3ClickProtocol::PROT_NUMBER = 0x0800;
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4L3ClickProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4L3ClickProtocol);
 
 TypeId
 Ipv4L3ClickProtocol::GetTypeId (void)
diff -Naur ns-3.19/src/click/test/ipv4-click-routing-test.cc ns-3.20/src/click/test/ipv4-click-routing-test.cc
--- ns-3.19/src/click/test/ipv4-click-routing-test.cc	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/click/test/ipv4-click-routing-test.cc	2014-06-17 10:33:13.874996108 -0700
@@ -30,7 +30,7 @@
 
 #include <click/simclick.h>
 
-namespace ns3 {
+using namespace ns3;
 
 static void
 AddClickInternetStack (Ptr<Node> node)
@@ -203,6 +203,4 @@
   }
 } g_ipv4ClickRoutingTestSuite;
 
-} // namespace ns3
-
 #endif // NS3_CLICK
diff -Naur ns-3.19/src/click/waf ns-3.20/src/click/waf
--- ns-3.19/src/click/waf	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/click/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/config-store/bindings/modulegen__gcc_ILP32.py ns-3.20/src/config-store/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/config-store/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.548635812 -0700
+++ ns-3.20/src/config-store/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.876996093 -0700
@@ -102,12 +102,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
diff -Naur ns-3.19/src/config-store/bindings/modulegen__gcc_LP64.py ns-3.20/src/config-store/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/config-store/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.549635804 -0700
+++ ns-3.20/src/config-store/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.877996085 -0700
@@ -102,12 +102,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
diff -Naur ns-3.19/src/config-store/examples/config-store-save.cc ns-3.20/src/config-store/examples/config-store-save.cc
--- ns-3.19/src/config-store/examples/config-store-save.cc	2014-06-17 10:34:00.550635797 -0700
+++ ns-3.20/src/config-store/examples/config-store-save.cc	2014-06-17 10:33:13.878996077 -0700
@@ -22,8 +22,7 @@
   int16_t m_int16;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (ConfigExample)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConfigExample);
 
 // Assign a new default value to A::TestInt16 (-5)
 // Configure a TestInt16 value for a special instance of A (to -3)
diff -Naur ns-3.19/src/config-store/model/config-store.cc ns-3.20/src/config-store/model/config-store.cc
--- ns-3.19/src/config-store/model/config-store.cc	2014-06-17 10:34:00.552635781 -0700
+++ ns-3.20/src/config-store/model/config-store.cc	2014-06-17 10:33:13.880996062 -0700
@@ -23,8 +23,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (ConfigStore)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConfigStore);
 
 TypeId 
 ConfigStore::GetTypeId (void)
diff -Naur ns-3.19/src/config-store/model/gtk-config-store.cc ns-3.20/src/config-store/model/gtk-config-store.cc
--- ns-3.19/src/config-store/model/gtk-config-store.cc	2014-06-17 10:34:00.554635766 -0700
+++ ns-3.20/src/config-store/model/gtk-config-store.cc	2014-06-17 10:33:13.882996046 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("GtkconfigStore")
-  ;
+NS_LOG_COMPONENT_DEFINE ("GtkconfigStore");
 
 
 GtkConfigStore::GtkConfigStore ()
diff -Naur ns-3.19/src/core/bindings/core.py ns-3.20/src/core/bindings/core.py
--- ns-3.19/src/core/bindings/core.py	2014-06-17 10:34:00.558635735 -0700
+++ ns-3.20/src/core/bindings/core.py	2014-06-17 10:33:13.886996016 -0700
@@ -1,10 +1,10 @@
-
+from __future__ import absolute_import
 # "from _core import *" doesn't work here because symbols starting
 # with underscore would not be imported.  But they are needed because
 # other modules depend on them...
-import _core
+from . import _core
 g = globals()
-for k,v in _core.__dict__.iteritems():
+for k,v in _core.__dict__.items():
     g[k] = v
 del g, k, v, _core
 
diff -Naur ns-3.19/src/core/bindings/modulegen_customizations.py ns-3.20/src/core/bindings/modulegen_customizations.py
--- ns-3.19/src/core/bindings/modulegen_customizations.py	2014-06-17 10:34:00.567635665 -0700
+++ ns-3.20/src/core/bindings/modulegen_customizations.py	2014-06-17 10:33:13.895995946 -0700
@@ -13,77 +13,6 @@
 from pybindgen.typehandlers.base import CodeGenerationError
 
 
-# class SmartPointerTransformation(typehandlers.TypeTransformation):
-#     """
-#     This class provides a "type transformation" that tends to support
-#     NS-3 smart pointers.  Parameters such as "Ptr<Foo> foo" are
-#     transformed into something like Parameter.new("Foo*", "foo",
-#     transfer_ownership=False).  Return values such as Ptr<Foo> are
-#     transformed into ReturnValue.new("Foo*",
-#     caller_owns_return=False).  Since the underlying objects have
-#     reference counting, PyBindGen does the right thing.
-#     """
-#     def __init__(self):
-#         super(SmartPointerTransformation, self).__init__()
-#         self.rx = re.compile(r'(ns3::|::ns3::|)Ptr<([^>]+)>\s*$')
-
-#     def _get_untransformed_type_traits(self, name):
-#         m = self.rx.match(name)
-#         is_const = False
-#         if m is None:
-#             return None, False
-#         else:
-#             name1 = m.group(2).strip()
-#             if name1.startswith('const '):
-#                 name1 = name1[len('const '):]
-#                 is_const = True
-#             if name1.endswith(' const'):
-#                 name1 = name1[:-len(' const')]
-#                 is_const = True
-#             new_name = name1+' *'
-
-#             if new_name.startswith('::'):
-#                 new_name = new_name[2:]
-#             return new_name, is_const
-
-#     def get_untransformed_name(self, name):
-#         new_name, dummy_is_const = self._get_untransformed_type_traits(name)
-#         return new_name
-
-#     def create_type_handler(self, type_handler, *args, **kwargs):
-#         if issubclass(type_handler, Parameter):
-#             kwargs['transfer_ownership'] = False
-#         elif issubclass(type_handler, ReturnValue):
-#             kwargs['caller_owns_return'] = False
-#         else:
-#             raise AssertionError
-
-#         ## fix the ctype, add ns3:: namespace
-#         orig_ctype, is_const = self._get_untransformed_type_traits(args[0])
-#         if is_const:
-#             correct_ctype = 'ns3::Ptr< %s const >' % orig_ctype[:-2]
-#         else:
-#             correct_ctype = 'ns3::Ptr< %s >' % orig_ctype[:-2]
-#         args = tuple([correct_ctype] + list(args[1:]))
-
-#         handler = type_handler(*args, **kwargs)
-#         handler.set_tranformation(self, orig_ctype)
-#         return handler
-
-#     def untransform(self, type_handler, declarations, code_block, expression):
-#         return 'const_cast<%s> (ns3::PeekPointer (%s))' % (type_handler.untransformed_ctype, expression)
-
-#     def transform(self, type_handler, declarations, code_block, expression):
-#         assert type_handler.untransformed_ctype[-1] == '*'
-#         return 'ns3::Ptr< %s > (%s)' % (type_handler.untransformed_ctype[:-1], expression)
-
-# ## register the type transformation
-# transf = SmartPointerTransformation()
-# typehandlers.return_type_matcher.register_transformation(transf)
-# typehandlers.param_type_matcher.register_transformation(transf)
-# del transf
-
-
 class ArgvParam(Parameter):
     """
     Converts a python list-of-strings argument to a pair of 'int argc,
@@ -123,11 +52,21 @@
 ''' % vars())
         #wrapper.before_call.write_error_check('item == NULL')
         wrapper.before_call.write_error_check(
-            '!PyString_Check(item)',
+            '\n'
+            '#if PY_VERSION_HEX >= 0x03000000\n'
+            '!PyUnicode_Check(item)\n'
+            '#else\n'
+            '!PyString_Check(item)\n'
+            '#endif\n',
             failure_cleanup=('PyErr_SetString(PyExc_TypeError, '
                              '"argument %s must be a list of strings");') % self.name)
         wrapper.before_call.write_code(
-            '%s[%s] = PyString_AsString(item);' % (name, idx))
+            '#if PY_VERSION_HEX >= 0x03000000\n'
+            '{var}[{idx}] = PyUnicode_AsUTF8(item);\n'
+            '#else\n'
+            '{var}[{idx}] = PyString_AsString(item);\n'
+            '#endif\n'
+            .format(var=name, idx=idx))
         wrapper.before_call.sink.unindent()
         wrapper.before_call.write_code('}')
         wrapper.before_call.write_code('%s = PyList_Size(%s);' % (argc_var, py_name))
@@ -136,165 +75,6 @@
         wrapper.call_params.append(name)
 
 
-# class CallbackImplProxyMethod(typehandlers.ReverseWrapperBase):
-#     """
-#     Class that generates a proxy virtual method that calls a similarly named python method.
-#     """
-
-#     def __init__(self, return_value, parameters):
-#         super(CallbackImplProxyMethod, self).__init__(return_value, parameters)
-
-#     def generate_python_call(self):
-#         """code to call the python method"""
-#         build_params = self.build_params.get_parameters(force_tuple_creation=True)
-#         if build_params[0][0] == '"':
-#             build_params[0] = '(char *) ' + build_params[0]
-#         args = self.before_call.declare_variable('PyObject*', 'args')
-#         self.before_call.write_code('%s = Py_BuildValue(%s);'
-#                                     % (args, ', '.join(build_params)))
-#         self.before_call.add_cleanup_code('Py_DECREF(%s);' % args)
-#         self.before_call.write_code('py_retval = PyObject_CallObject(m_callback, %s);' % args)
-#         self.before_call.write_error_check('py_retval == NULL')
-#         self.before_call.add_cleanup_code('Py_DECREF(py_retval);')
-
-
-
-
-# def generate_callback_classes(out, callbacks):
-#     for callback_impl_num, template_parameters in enumerate(callbacks):
-#         sink = MemoryCodeSink()
-#         cls_name = "ns3::Callback< %s >" % ', '.join(template_parameters)
-#         #print >> sys.stderr, "***** trying to register callback: %r" % cls_name
-#         class_name = "PythonCallbackImpl%i" % callback_impl_num
-#         sink.writeln('''
-# class %s : public ns3::CallbackImpl<%s>
-# {
-# public:
-#     PyObject *m_callback;
-#     %s(PyObject *callback)
-#     {
-#         Py_INCREF(callback);
-#         m_callback = callback;
-#     }
-#     virtual ~%s()
-#     {
-#         Py_DECREF(m_callback);
-#         m_callback = NULL;
-#     }
-
-#     virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
-#     {
-#         const %s *other = dynamic_cast<const %s*> (ns3::PeekPointer (other_base));
-#         if (other != NULL)
-#             return (other->m_callback == m_callback);
-#         else
-#             return false;
-#     }
-
-# ''' % (class_name, ', '.join(template_parameters), class_name, class_name, class_name, class_name))
-#         sink.indent()
-#         callback_return = template_parameters[0]
-#         return_ctype = ctypeparser.parse_type(callback_return)
-#         if ('const' in return_ctype.remove_modifiers()):
-#             kwargs = {'is_const': True}
-#         else:
-#             kwargs = {}
-#         try:
-#             return_type = ReturnValue.new(str(return_ctype), **kwargs)
-#         except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
-#             warnings.warn("***** Unable to register callback; Return value '%s' error (used in %s): %r"
-#                           % (callback_return, cls_name, ex),
-#                           Warning)
-#             continue
-
-#         arguments = []
-#         ok = True
-#         callback_parameters = [arg for arg in template_parameters[1:] if arg != 'ns3::empty']
-#         for arg_num, arg_type in enumerate(callback_parameters):
-#             arg_name = 'arg%i' % (arg_num+1)
-
-#             param_ctype = ctypeparser.parse_type(arg_type)
-#             if ('const' in param_ctype.remove_modifiers()):
-#                 kwargs = {'is_const': True}
-#             else:
-#                 kwargs = {}
-#             try:
-#                 arguments.append(Parameter.new(str(param_ctype), arg_name, **kwargs))
-#             except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
-#                 warnings.warn("***** Unable to register callback; parameter '%s %s' error (used in %s): %r"
-#                               % (arg_type, arg_name, cls_name, ex),
-#                               Warning)
-#                 ok = False
-#         if not ok:
-#             continue
-
-#         wrapper = CallbackImplProxyMethod(return_type, arguments)
-#         wrapper.generate(sink, 'operator()', decl_modifiers=[])
-            
-#         sink.unindent()
-#         sink.writeln('};\n')
-#         sink.flush_to(out)
-        
-#         class PythonCallbackParameter(Parameter):
-#             "Class handlers"
-#             CTYPES = [cls_name]
-#             #print >> sys.stderr, "***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name)
-#             DIRECTIONS = [Parameter.DIRECTION_IN]
-#             PYTHON_CALLBACK_IMPL_NAME = class_name
-#             TEMPLATE_ARGS = template_parameters
-
-#             def convert_python_to_c(self, wrapper):
-#                 "parses python args to get C++ value"
-#                 assert isinstance(wrapper, typehandlers.ForwardWrapperBase)
-
-#                 if self.default_value is None:
-#                     py_callback = wrapper.declarations.declare_variable('PyObject*', self.name)
-#                     wrapper.parse_params.add_parameter('O', ['&'+py_callback], self.name)
-#                     wrapper.before_call.write_error_check(
-#                         '!PyCallable_Check(%s)' % py_callback,
-#                         'PyErr_SetString(PyExc_TypeError, "parameter \'%s\' must be callbale");' % self.name)
-#                     callback_impl = wrapper.declarations.declare_variable(
-#                         'ns3::Ptr<%s>' % self.PYTHON_CALLBACK_IMPL_NAME,
-#                         '%s_cb_impl' % self.name)
-#                     wrapper.before_call.write_code("%s = ns3::Create<%s> (%s);"
-#                                                    % (callback_impl, self.PYTHON_CALLBACK_IMPL_NAME, py_callback))
-#                     wrapper.call_params.append(
-#                         'ns3::Callback<%s> (%s)' % (', '.join(self.TEMPLATE_ARGS), callback_impl))
-#                 else:
-#                     py_callback = wrapper.declarations.declare_variable('PyObject*', self.name, 'NULL')
-#                     wrapper.parse_params.add_parameter('O', ['&'+py_callback], self.name, optional=True)
-#                     value = wrapper.declarations.declare_variable(
-#                         'ns3::Callback<%s>' % ', '.join(self.TEMPLATE_ARGS),
-#                         self.name+'_value',
-#                         self.default_value)
-
-#                     wrapper.before_call.write_code("if (%s) {" % (py_callback,))
-#                     wrapper.before_call.indent()
-
-#                     wrapper.before_call.write_error_check(
-#                         '!PyCallable_Check(%s)' % py_callback,
-#                         'PyErr_SetString(PyExc_TypeError, "parameter \'%s\' must be callbale");' % self.name)
-
-#                     wrapper.before_call.write_code("%s = ns3::Callback<%s> (ns3::Create<%s> (%s));"
-#                                                    % (value, ', '.join(self.TEMPLATE_ARGS),
-#                                                       self.PYTHON_CALLBACK_IMPL_NAME, py_callback))
-
-#                     wrapper.before_call.unindent()
-#                     wrapper.before_call.write_code("}") # closes: if (py_callback) {
-                                        
-#                     wrapper.call_params.append(value)
-                    
-
-#             def convert_c_to_python(self, wrapper):
-#                 raise typehandlers.NotSupportedError("Reverse wrappers for ns3::Callback<...> types "
-#                                                      "(python using callbacks defined in C++) not implemented.")
-
-
-# def write_preamble(out):
-#     pybindgen.write_preamble(out)
-#     out.writeln("#include \"ns3/everything.h\"")
-
-
 
 def Simulator_customizations(module):
     Simulator = module['ns3::Simulator']
@@ -327,76 +107,6 @@
                                           flags=["METH_VARARGS", "METH_KEYWORDS"])
 
 
-# def Object_customizations(module):
-#     ## ---------------------------------------------------------------------
-#     ## Here we generate custom constructor code for all classes that
-#     ## derive from ns3::Object.  The custom constructors are needed in
-#     ## order to support kwargs only and to translate kwargs into ns3
-#     ## attributes, etc.
-#     ## ---------------------------------------------------------------------
-#     Object = module['ns3::Object']
-
-
-#     ## add a GetTypeId method to all generatd helper classes
-#     def helper_class_hook(helper_class):
-#         decl = """
-# static ns3::TypeId GetTypeId (void)
-# {
-#   static ns3::TypeId tid = ns3::TypeId ("%s")
-#     .SetParent< %s > ()
-#     ;
-#   return tid;
-# }"""  % (helper_class.name, helper_class.class_.full_name)
-
-#         helper_class.add_custom_method(decl)
-#         helper_class.add_post_generation_code(
-#             "NS_OBJECT_ENSURE_REGISTERED (%s);" % helper_class.name)
-#     Object.add_helper_class_hook(helper_class_hook)
-
-#     def ns3_object_instance_creation_function(cpp_class, code_block, lvalue,
-#                                               parameters, construct_type_name):
-#         assert lvalue
-#         assert not lvalue.startswith('None')
-#         if cpp_class.cannot_be_constructed:
-#             raise CodeGenerationError("%s cannot be constructed (%s)"
-#                                       % cpp_class.full_name)
-#         if cpp_class.incomplete_type:
-#             raise CodeGenerationError("%s cannot be constructed (incomplete type)"
-#                                       % cpp_class.full_name)
-#         code_block.write_code("%s = new %s(%s);" % (lvalue, construct_type_name, parameters))
-#         code_block.write_code("%s->Ref ();" % (lvalue))
-
-#     def ns3_object_post_instance_creation_function(cpp_class, code_block, lvalue,
-#                                                    parameters, construct_type_name):
-#         code_block.write_code("ns3::CompleteConstruct(%s);" % (lvalue, ))
-
-#     Object.set_instance_creation_function(ns3_object_instance_creation_function)
-#     Object.set_post_instance_creation_function(ns3_object_post_instance_creation_function)
-
-
-# def Attribute_customizations(module):
-#     # Fix up for the "const AttributeValue &v = EmptyAttribute()"
-#     # case, as used extensively by helper classes.
-
-#     # Here's why we need to do this: pybindgen.gccxmlscanner, when
-#     # scanning parameter default values, is only provided with the
-#     # value as a simple C expression string.  (py)gccxml does not
-#     # report the type of the default value.
-
-#     # As a workaround, here we iterate over all parameters of all
-#     # methods of all classes and tell pybindgen what is the type of
-#     # the default value for attributes.
-
-#     for cls in module.classes:
-#         for meth in cls.get_all_methods():
-#             for param in meth.parameters:
-#                 if isinstance(param, cppclass.CppClassRefParameter):
-#                     if param.cpp_class.name == 'AttributeValue' \
-#                             and param.default_value is not None \
-#                             and param.default_value_type is None:
-#                         param.default_value_type = 'ns3::EmptyAttributeValue'
-
-
 def TypeId_customizations(module):
     TypeId = module['ns3::TypeId']
     TypeId.add_custom_method_wrapper("LookupByNameFailSafe", "_wrap_TypeId_LookupByNameFailSafe",
diff -Naur ns-3.19/src/core/bindings/modulegen__gcc_ILP32.py ns-3.20/src/core/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/core/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.563635696 -0700
+++ ns-3.20/src/core/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.891995977 -0700
@@ -78,6 +78,8 @@
     module.add_class('ObjectDeleter')
     ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
     module.add_class('ObjectFactory')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger')
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable')
     ## random-variable-stream-helper.h (module 'core'): ns3::RandomVariableStreamHelper [class]
@@ -98,6 +100,8 @@
     module.add_class('SystemMutex')
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs [class]
     module.add_class('SystemWallClockMs')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -134,6 +138,8 @@
     module.add_class('empty')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'])
     ## random-variable.h (module 'core'): ns3::ConstantVariable [class]
     module.add_class('ConstantVariable', parent=root_module['ns3::RandomVariable'])
     ## random-variable.h (module 'core'): ns3::DeterministicVariable [class]
@@ -316,35 +322,35 @@
     module.add_class('Vector3DChecker', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
-    typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
-    typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager', u'ns3::SeedManager')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager*', u'ns3::SeedManager*')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager&', u'ns3::SeedManager&')
     module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectVectorValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectVectorValue*')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectVectorValue&')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue', u'ns3::ObjectVectorValue')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue*', u'ns3::ObjectVectorValue*')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue&', u'ns3::ObjectVectorValue&')
     module.add_typedef(root_module['ns3::ObjectPtrContainerValue'], 'ObjectVectorValue')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectMapValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectMapValue*')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectMapValue&')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue', u'ns3::ObjectMapValue')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue*', u'ns3::ObjectMapValue*')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue&', u'ns3::ObjectMapValue&')
     module.add_typedef(root_module['ns3::ObjectPtrContainerValue'], 'ObjectMapValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace CommandLineHelper
@@ -392,8 +398,8 @@
     
     ## config.h (module 'core'): ns3::Config::MatchContainer [class]
     module.add_class('MatchContainer')
-    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
 
 def register_types_ns3_FatalImpl(module):
     root_module = module.get_root()
@@ -404,12 +410,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -432,7 +438,7 @@
 def register_types_ns3_SystemPath(module):
     root_module = module.get_root()
     
-    module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    module.add_container('std::list< std::string >', 'std::string', container_type=u'list')
 
 def register_types_ns3_internal(module):
     root_module = module.get_root()
@@ -460,6 +466,7 @@
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RandomVariableStreamHelper_methods(root_module, root_module['ns3::RandomVariableStreamHelper'])
     register_Ns3RngSeedManager_methods(root_module, root_module['ns3::RngSeedManager'])
@@ -470,6 +477,7 @@
     register_Ns3SystemCondition_methods(root_module, root_module['ns3::SystemCondition'])
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
@@ -641,6 +649,7 @@
     return
 
 def register_Ns3CommandLine_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## command-line.h (module 'core'): ns3::CommandLine::CommandLine() [constructor]
     cls.add_constructor([])
     ## command-line.h (module 'core'): ns3::CommandLine::CommandLine(ns3::CommandLine const & cmd) [copy constructor]
@@ -878,29 +887,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -912,6 +917,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3Names_methods(root_module, cls):
@@ -1075,6 +1084,13 @@
                    [param('std::string', 'tid')])
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -1325,6 +1341,14 @@
                    [])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -1709,62 +1733,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1773,6 +1753,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1813,6 +1795,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3ConstantVariable_methods(root_module, cls):
@@ -1945,7 +1929,7 @@
     cls.add_method('GetObject', 
                    'ns3::Ptr< ns3::Object >', 
                    [param('ns3::TypeId', 'tid')], 
-                   is_const=True, template_parameters=['ns3::Object'], custom_template_method_name='GetObject')
+                   is_const=True, template_parameters=['ns3::Object'], custom_template_method_name=u'GetObject')
     ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -2501,13 +2485,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2534,6 +2520,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/core/bindings/modulegen__gcc_LP64.py ns-3.20/src/core/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/core/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.566635673 -0700
+++ ns-3.20/src/core/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.894995954 -0700
@@ -78,6 +78,8 @@
     module.add_class('ObjectDeleter')
     ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
     module.add_class('ObjectFactory')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger')
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable')
     ## random-variable-stream-helper.h (module 'core'): ns3::RandomVariableStreamHelper [class]
@@ -98,6 +100,8 @@
     module.add_class('SystemMutex')
     ## system-wall-clock-ms.h (module 'core'): ns3::SystemWallClockMs [class]
     module.add_class('SystemWallClockMs')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -134,6 +138,8 @@
     module.add_class('empty')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'])
     ## random-variable.h (module 'core'): ns3::ConstantVariable [class]
     module.add_class('ConstantVariable', parent=root_module['ns3::RandomVariable'])
     ## random-variable.h (module 'core'): ns3::DeterministicVariable [class]
@@ -316,35 +322,35 @@
     module.add_class('Vector3DChecker', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
-    typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
-    typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager', u'ns3::SeedManager')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager*', u'ns3::SeedManager*')
+    typehandlers.add_type_alias(u'ns3::RngSeedManager&', u'ns3::SeedManager&')
     module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectVectorValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectVectorValue*')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectVectorValue&')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue', u'ns3::ObjectVectorValue')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue*', u'ns3::ObjectVectorValue*')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue&', u'ns3::ObjectVectorValue&')
     module.add_typedef(root_module['ns3::ObjectPtrContainerValue'], 'ObjectVectorValue')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectMapValue')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectMapValue*')
-    typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectMapValue&')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue', u'ns3::ObjectMapValue')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue*', u'ns3::ObjectMapValue*')
+    typehandlers.add_type_alias(u'ns3::ObjectPtrContainerValue&', u'ns3::ObjectMapValue&')
     module.add_typedef(root_module['ns3::ObjectPtrContainerValue'], 'ObjectMapValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace CommandLineHelper
@@ -392,8 +398,8 @@
     
     ## config.h (module 'core'): ns3::Config::MatchContainer [class]
     module.add_class('MatchContainer')
-    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
 
 def register_types_ns3_FatalImpl(module):
     root_module = module.get_root()
@@ -404,12 +410,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -432,7 +438,7 @@
 def register_types_ns3_SystemPath(module):
     root_module = module.get_root()
     
-    module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    module.add_container('std::list< std::string >', 'std::string', container_type=u'list')
 
 def register_types_ns3_internal(module):
     root_module = module.get_root()
@@ -460,6 +466,7 @@
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RandomVariableStreamHelper_methods(root_module, root_module['ns3::RandomVariableStreamHelper'])
     register_Ns3RngSeedManager_methods(root_module, root_module['ns3::RngSeedManager'])
@@ -470,6 +477,7 @@
     register_Ns3SystemCondition_methods(root_module, root_module['ns3::SystemCondition'])
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
@@ -641,6 +649,7 @@
     return
 
 def register_Ns3CommandLine_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## command-line.h (module 'core'): ns3::CommandLine::CommandLine() [constructor]
     cls.add_constructor([])
     ## command-line.h (module 'core'): ns3::CommandLine::CommandLine(ns3::CommandLine const & cmd) [copy constructor]
@@ -878,29 +887,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -912,6 +917,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3Names_methods(root_module, cls):
@@ -1075,6 +1084,13 @@
                    [param('std::string', 'tid')])
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -1325,6 +1341,14 @@
                    [])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -1709,62 +1733,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1773,6 +1753,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1813,6 +1795,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3ConstantVariable_methods(root_module, cls):
@@ -1945,7 +1929,7 @@
     cls.add_method('GetObject', 
                    'ns3::Ptr< ns3::Object >', 
                    [param('ns3::TypeId', 'tid')], 
-                   is_const=True, template_parameters=['ns3::Object'], custom_template_method_name='GetObject')
+                   is_const=True, template_parameters=['ns3::Object'], custom_template_method_name=u'GetObject')
     ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -2501,13 +2485,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2534,6 +2520,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/core/bindings/module_helpers.cc ns-3.20/src/core/bindings/module_helpers.cc
--- ns-3.19/src/core/bindings/module_helpers.cc	2014-06-17 10:34:00.559635727 -0700
+++ ns-3.20/src/core/bindings/module_helpers.cc	2014-06-17 10:33:13.887996008 -0700
@@ -2,6 +2,10 @@
 #include "ns3/ref-count-base.h"
 #include <unistd.h>
 
+#if PY_VERSION_HEX >= 0x03000000
+# define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
+# define PyString_FromStringAndSize PyUnicode_FromStringAndSize
+#endif
 
 namespace {
 
diff -Naur ns-3.19/src/core/model/abort.h ns-3.20/src/core/model/abort.h
--- ns-3.19/src/core/model/abort.h	2014-06-17 10:34:00.574635611 -0700
+++ ns-3.20/src/core/model/abort.h	2014-06-17 10:33:13.902995892 -0700
@@ -24,7 +24,8 @@
 #include "fatal-error.h"
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief Abnormal program termination
  *
  * \param msg message to output when this macro is hit.
@@ -48,7 +49,8 @@
 
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief Abnormal program termination if cond is true.
  *
  * \param cond condition to be evaluated.
@@ -76,7 +78,8 @@
     } while (false)
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief Abnormal program termination if cond is true.
  *
  * \param cond condition to be evaluated.
@@ -105,7 +108,8 @@
     } while (false)
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief Abnormal program termination if cond is false.
  *
  * \param cond condition to be evaluated.
@@ -118,7 +122,8 @@
   NS_ABORT_IF (!(cond))
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief Abnormal program termination if cond is false.
  *
  * \param cond condition to be evaluated.
diff -Naur ns-3.19/src/core/model/assert.h ns-3.20/src/core/model/assert.h
--- ns-3.19/src/core/model/assert.h	2014-06-17 10:34:00.574635611 -0700
+++ ns-3.20/src/core/model/assert.h	2014-06-17 10:33:13.902995892 -0700
@@ -21,21 +21,11 @@
 #ifndef NS_ASSERT_H
 #define NS_ASSERT_H
 
-#ifdef NS3_ASSERT_ENABLE
-
-#include <iostream>
-
-#include "fatal-error.h"
-
-/**
- * \ingroup core
- * \defgroup debugging Debugging
- */
 /**
  * \ingroup debugging
- * \defgroup assert Assert
+ * \defgroup assert Assertions
  *
- * \brief assert functions and macros
+ * \brief Assert functions and macros
  *
  * The assert macros are used to verify
  * at runtime that a certain condition is true. If it is
@@ -53,13 +43,20 @@
  * builds, use NS_ABORT_UNLESS and NS_ABORT_MSG_UNLESS.
  */
 
+#ifdef NS3_ASSERT_ENABLE
+
+#include <iostream>
+
+#include "fatal-error.h"
+
 /**
  * \ingroup assert
- * \param condition condition to verify.
  *
  * At runtime, in debugging builds, if this condition is not
  * true, the program prints the source file, line number and 
  * unverified condition and halts by calling std::terminate
+ *
+ * \param condition condition to verify.
  */
 #define NS_ASSERT(condition)                                    \
   do                                                            \
@@ -76,12 +73,13 @@
 
 /**
  * \ingroup assert
- * \param condition condition to verify.
- * \param message message to output
  *
  * At runtime, in debugging builds, if this condition is not
  * true, the program prints the message to output and
  * halts by calling std::terminate.
+ *
+ * \param condition condition to verify.
+ * \param message message to output
  */
 #define NS_ASSERT_MSG(condition, message)             \
   do                                                  \
diff -Naur ns-3.19/src/core/model/attribute-accessor-helper.h ns-3.20/src/core/model/attribute-accessor-helper.h
--- ns-3.19/src/core/model/attribute-accessor-helper.h	2014-06-17 10:34:00.574635611 -0700
+++ ns-3.20/src/core/model/attribute-accessor-helper.h	2014-06-17 10:33:13.902995892 -0700
@@ -28,6 +28,7 @@
  * \ingroup AttributeHelper
  */
 template <typename V, typename T1>
+inline
 Ptr<const AttributeAccessor>
 MakeAccessorHelper (T1 a1);
 
@@ -35,6 +36,7 @@
  * \ingroup AttributeHelper
  */
 template <typename V, typename T1, typename T2>
+inline
 Ptr<const AttributeAccessor>
 MakeAccessorHelper (T1 a1, T2 a2);
 
@@ -94,6 +96,7 @@
 };
 
 template <typename V, typename T, typename U>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperOne (U T::*memberVariable)
 {
@@ -132,6 +135,7 @@
 }
 
 template <typename V, typename T, typename U>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperOne (U (T::*getter)(void) const)
 {
@@ -163,6 +167,7 @@
 
 
 template <typename V, typename T, typename U>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperOne (void (T::*setter)(U))
 {
@@ -199,6 +204,7 @@
 }
 
 template <typename W, typename T, typename U, typename V>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperTwo (void (T::*setter)(U),
                          V (T::*getter)(void) const)
@@ -240,6 +246,7 @@
 }
 
 template <typename W, typename T, typename U, typename V>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperTwo (V (T::*getter)(void) const,
                          void (T::*setter)(U))
@@ -248,6 +255,7 @@
 }
 
 template <typename W, typename T, typename U, typename V>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperTwo (bool (T::*setter)(U),
                          V (T::*getter)(void) const)
@@ -289,6 +297,7 @@
 }
 
 template <typename W, typename T, typename U, typename V>
+inline
 Ptr<const AttributeAccessor>
 DoMakeAccessorHelperTwo (bool (T::*getter)(void) const,
                          void (T::*setter)(U))
@@ -297,6 +306,7 @@
 }
 
 template <typename V, typename T1>
+inline
 Ptr<const AttributeAccessor>
 MakeAccessorHelper (T1 a1)
 {
@@ -304,6 +314,7 @@
 }
 
 template <typename V, typename T1, typename T2>
+inline
 Ptr<const AttributeAccessor>
 MakeAccessorHelper (T1 a1, T2 a2)
 {
diff -Naur ns-3.19/src/core/model/attribute-construction-list.cc ns-3.20/src/core/model/attribute-construction-list.cc
--- ns-3.19/src/core/model/attribute-construction-list.cc	2014-06-17 10:34:00.575635604 -0700
+++ ns-3.20/src/core/model/attribute-construction-list.cc	2014-06-17 10:33:13.903995884 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE("AttributeConstructionList")
-  ;
+NS_LOG_COMPONENT_DEFINE("AttributeConstructionList");
 
 AttributeConstructionList::AttributeConstructionList ()
 {
diff -Naur ns-3.19/src/core/model/attribute-helper.h ns-3.20/src/core/model/attribute-helper.h
--- ns-3.19/src/core/model/attribute-helper.h	2014-06-17 10:34:00.575635604 -0700
+++ ns-3.20/src/core/model/attribute-helper.h	2014-06-17 10:33:13.903995884 -0700
@@ -37,10 +37,10 @@
  * the user class can then effectively be made an attribute.
  *
  * There are two kinds of helper macros:
- *  1) The simple macros.
- *    - ATTRIBUTE_HELPER_HEADER(type)
- *    - ATTRIBUTE_HELPER_CPP
- *  2) The more complex macros.
+ *   -# The simple macros.
+ *     - ATTRIBUTE_HELPER_HEADER(type)
+ *     - ATTRIBUTE_HELPER_CPP(type)
+ *   -# The more complex macros.
  *
  * The simple macros are implemented in terms of the complex
  * macros and should generally be preferred over the complex macros.
@@ -98,125 +98,180 @@
 
 /**
  * \ingroup attributehelper
+ *
+ * Define the attribute accessor functions \c MakeTypeAccessor
+ * for class \pname{type}.
+ *
  * \param type the name of the class
  *
  * This macro defines and generates the code for the implementation 
- * of the \c Make<type>Accessor template functions. This macro is typically
+ * of the \c MakeTypeAccessor template functions. This macro is typically
  * invoked in a class header to allow users of this class to view and
  * use the template functions defined here. This macro is implemented
  * through the helper templates functions ns3::MakeAccessorHelper<>.
  */
 #define ATTRIBUTE_ACCESSOR_DEFINE(type)                                 \
   template <typename T1>                                                \
-  Ptr<const AttributeAccessor> Make ## type ## Accessor (T1 a1)             \
+  Ptr<const AttributeAccessor> Make ## type ## Accessor (T1 a1)         \
   {                                                                     \
-    return MakeAccessorHelper<type ## Value> (a1);                        \
+    return MakeAccessorHelper<type ## Value> (a1);                      \
   }                                                                     \
   template <typename T1, typename T2>                                   \
-  Ptr<const AttributeAccessor> Make ## type ## Accessor (T1 a1, T2 a2)      \
+  Ptr<const AttributeAccessor> Make ## type ## Accessor (T1 a1, T2 a2)  \
   {                                                                     \
-    return MakeAccessorHelper<type ## Value> (a1, a2);                    \
+    return MakeAccessorHelper<type ## Value> (a1, a2);                  \
   }
 
 /**
  * \ingroup attributehelper
- * \internal
+ *
+ * Declare the attribute value class \pname{name}Value
+ * for underlying class \pname{type}.
+ *
+ * \param type The underlying type name
+ * \param name The token to use in defining the accessor name.
+ *
+ * This macro declares the class \c TypeValue associated with class \c type.
+ * This macro is typically invoked in the class header file.
+ *
+ * This can be used directly for things like plain old data,
+ * such as \c std::string, to create the attribute value class
+ * StringValue.
  */
 #define ATTRIBUTE_VALUE_DEFINE_WITH_NAME(type,name)                     \
-  class name ## Value : public AttributeValue                             \
+  class name ## Value : public AttributeValue                           \
   {                                                                     \
-public:                                                               \
-    name ## Value ();                                                     \
-    name ## Value (const type &value);                                    \
+  public:                                                               \
+    name ## Value ();                                                   \
+    name ## Value (const type &value);                                  \
     void Set (const type &value);                                       \
     type Get (void) const;                                              \
     template <typename T>                                               \
-    bool GetAccessor (T &value) const {                                 \
+      bool GetAccessor (T &value) const {                               \
       value = T (m_value);                                              \
       return true;                                                      \
     }                                                                   \
     virtual Ptr<AttributeValue> Copy (void) const;                      \
-    virtual std::string SerializeToString (Ptr<const AttributeChecker> checker) const; \
-    virtual bool DeserializeFromString (std::string value, Ptr<const AttributeChecker> checker); \
-private:                                                              \
+    virtual std::string                                                 \
+      SerializeToString (Ptr<const AttributeChecker> checker) const;    \
+    virtual bool                                                        \
+      DeserializeFromString (std::string value,                         \
+                             Ptr<const AttributeChecker> checker);      \
+  private:                                                              \
     type m_value;                                                       \
   };
 
 
 /**
  * \ingroup attributehelper
- * \param type the name of the class.
  *
- * This macro defines the class \c typeValue associated to class \c type.
+ * Declare the attribute value class \pname{Name}Value
+ * for the class \pname{Name}
+ *
+ * \param Name the name of the class.
+ *
+ * This macro declares the class \c NameValue associated to class \c Name.
  * This macro is typically invoked in the class header file.
  */
-#define ATTRIBUTE_VALUE_DEFINE(type)                                    \
-  ATTRIBUTE_VALUE_DEFINE_WITH_NAME (type,type)
+#define ATTRIBUTE_VALUE_DEFINE(Name)                                    \
+  ATTRIBUTE_VALUE_DEFINE_WITH_NAME (Name,Name)
 
 
 /**
  * \ingroup attributehelper
+ *
+ * Define the conversion operators class \pname{type} and
+ * Attribute instances.
+ *
  * \param type the name of the class
  *
  * This macro defines the conversion operators for class \c type to and
  * from instances of type Attribute.
  * Typically invoked in the class header file.
+ *
+ * \internal
+ * This appears to be unused.
  */
 #define ATTRIBUTE_CONVERTER_DEFINE(type)
 
 /**
  * \ingroup attributehelper
+ *
+ * Declare the AttributeChecker class \pname{type}Checker
+ * and the \c MakeTypeChecker function for class \pname{type}.
+ *
  * \param type the name of the class
  *
- * This macro defines the \c typeChecker class and the associated
- * \c Make<type>Checker function.
- * Typically invoked in the class header file..
- */
-#define ATTRIBUTE_CHECKER_DEFINE(type)                          \
-  class type ## Checker : public AttributeChecker {};             \
-  Ptr<const AttributeChecker> Make ## type ## Checker (void);       \
+ * This macro declares the \pname{type}Checker class and the associated
+ * \c MakeTypeChecker function.
+ *
+ * (Note that the \pname{type}Checker class needs no implementation
+ * since it just inherits all its implementation from AttributeChecker.)
+ *
+ * Typically invoked in the class header file.
+ */
+#define ATTRIBUTE_CHECKER_DEFINE(type)                                  \
+  class type ## Checker : public AttributeChecker {};                   \
+  Ptr<const AttributeChecker> Make ## type ## Checker (void)
 
 
 /**
  * \ingroup attributehelper
- * \internal
+ *
+ * Define the class methods belonging to
+ * the attribute value class \pname{name}Value 
+ * of the underlying class \pname{type}.
+ *
+ * \param type The underlying type name
+ * \param name The token to use in defining the accessor name.
+ *
+ * This macro implements the \pname{type}Value class methods
+ * (including the \pname{type}Value::SerializeToString
+ * and \pname{type}Value::DeserializeFromString methods).
+ *
+ * Typically invoked in the source file.
  */
 #define ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME(type,name)                  \
-  name ## Value::name ## Value ()                                           \
+  name ## Value::name ## Value ()                                       \
     : m_value () {}                                                     \
-  name ## Value::name ## Value (const type &value)                          \
-    : m_value (value) {}                                                  \
-  void name ## Value::Set (const type &v) {                               \
+  name ## Value::name ## Value (const type &value)                      \
+    : m_value (value) {}                                                \
+  void name ## Value::Set (const type &v) {                             \
     m_value = v;                                                        \
   }                                                                     \
-  type name ## Value::Get (void) const {                                  \
+  type name ## Value::Get (void) const {                                \
     return m_value;                                                     \
   }                                                                     \
   Ptr<AttributeValue>                                                   \
-  name ## Value::Copy (void) const {                                      \
-    return ns3::Create<name ## Value> (*this);                            \
+  name ## Value::Copy (void) const {                                    \
+    return ns3::Create<name ## Value> (*this);                          \
+  }                                                                     \
+  std::string name ## Value::SerializeToString                          \
+    (Ptr<const AttributeChecker> checker) const {                       \
+      std::ostringstream oss;                                           \
+      oss << m_value;                                                   \
+      return oss.str ();                                                \
   }                                                                     \
-  std::string                                                           \
-    name ## Value::SerializeToString (Ptr<const AttributeChecker> checker) const { \
-    std::ostringstream oss;                                             \
-    oss << m_value;                                                     \
-    return oss.str ();                                                  \
-  }                                                                     \
-  bool                                                                  \
-    name ## Value::DeserializeFromString (std::string value, Ptr<const AttributeChecker> checker) { \
-    std::istringstream iss;                                             \
-    iss.str (value);                                                    \
-    iss >> m_value;                                                     \
-    return !iss.bad () && !iss.fail ();                                 \
+  bool name ## Value::DeserializeFromString                             \
+    (std::string value, Ptr<const AttributeChecker> checker) {          \
+      std::istringstream iss;                                           \
+      iss.str (value);                                                  \
+      iss >> m_value;                                                   \
+      return !iss.bad () && !iss.fail ();                               \
   }
 
 /**
  * \ingroup attributehelper
+ *
+ * Define the class methods belonging to
+ * attribute value class \pname{type}Value for class \pname{type}.
+ *
  * \param type the name of the class.
  *
- * This macro implements the \c typeValue class (including the 
- * \c typeValue::SerializeToString and \c typeValue::DeserializeFromString 
- * methods).
+ * This macro implements the \pname{type}Value class methods
+ * (including the \pname{type}Value::SerializeToString
+ * and \pname{type}Value::DeserializeFromString methods).
+ *
  * Typically invoked in the source file.
  */
 #define ATTRIBUTE_VALUE_IMPLEMENT(type)                                 \
@@ -225,31 +280,58 @@
 
 /**
  * \ingroup attributehelper
+ *
+ * Define the \c MakeTypeChecker function for class \pname{type}.
+ *
  * \param type the name of the class
  *
- * This macro implements the \c Make<type>Checker function.
+ * This macro implements the \c MakeTypeChecker function.
+ *
  * Typically invoked in the source file..
  */
 #define ATTRIBUTE_CHECKER_IMPLEMENT(type)                               \
-  Ptr<const AttributeChecker> Make ## type ## Checker (void)                \
-  {                                                                     \
-    return MakeSimpleAttributeChecker<type ## Value,type ## Checker> (# type "Value", # type); \
+  Ptr<const AttributeChecker> Make ## type ## Checker (void) {          \
+    return MakeSimpleAttributeChecker<type ## Value,type ## Checker>    \
+      (# type "Value", # type);                                         \
   }                                                                     \
 
 /**
  * \ingroup attributehelper
- * \internal
+ *
+ * Define the \c MakeTypeChecker function for class \pname{type}.
+ *
+ * \param type the name of the class.
+ * \param name the string name of the underlying type.
+ *
+ * This macro implements the \c MakeTypeChecker function
+ * for class \pname{type}.
+ *
+ * Typically invoked in the source file..
  */
-#define ATTRIBUTE_CHECKER_IMPLEMENT_WITH_NAME(type,name)                    \
-  Ptr<const AttributeChecker> Make ## type ## Checker (void)                \
-  {                                                                     \
-    return MakeSimpleAttributeChecker<type ## Value,type ## Checker> (# type "Value", name); \
+#define ATTRIBUTE_CHECKER_IMPLEMENT_WITH_NAME(type,name)                \
+  Ptr<const AttributeChecker> Make ## type ## Checker (void) {          \
+    return MakeSimpleAttributeChecker<type ## Value,type ## Checker>    \
+      (# type "Value", name);                                           \
   }                                                                     \
 
 /**
  * \ingroup attributehelper
+ *
+ * Declare the attribute value, accessor and checkers for class \pname{type}
+ *
  * \param type the name of the class
  *
+ * This macro declares:
+ *
+ *   - The attribute value class \pname{type}Value,
+ *
+ *   - The attribute accessor functions \c MakeTypeAccessor,
+ *
+ *   - The AttributeChecker class \pname{type}Checker
+ *     and the \c MakeTypeChecker function,
+ *
+ * for class \pname{type}.
+ *
  * This macro should be invoked outside of the class
  * declaration in its public header.
  */
@@ -260,8 +342,19 @@
 
 /**
  * \ingroup attributehelper
+ *
+ * Define the attribute value, accessor and checkers for class \pname{type}
+ *
  * \param type the name of the class
  *
+ * This macro implements
+ *
+ *   - The \pname{type}Value class methods,
+ *
+ *   - The \c MakeTypeChecker function,
+ *
+ * for class \pname{type}.
+ *
  * This macro should be invoked from the class implementation file.
  */
 #define ATTRIBUTE_HELPER_CPP(type)                                      \
diff -Naur ns-3.19/src/core/model/breakpoint.h ns-3.20/src/core/model/breakpoint.h
--- ns-3.19/src/core/model/breakpoint.h	2014-06-17 10:34:00.577635588 -0700
+++ ns-3.20/src/core/model/breakpoint.h	2014-06-17 10:33:13.905995869 -0700
@@ -36,10 +36,17 @@
 
 /**
  * \ingroup debugging
+ * \defgroup breakpoint Breakpoints
+ *
+ * \brief Trigger a debugger breakpoint.
+ */
+
+/**
+ * \ingroup breakpoint
  *
  * Inserts a breakpoint instruction (or equivalent system call) into
- * the code for selected machines.  When an NS_ASSERT cannot verify its condition, 
- * this macro is used. Falls back to calling
+ * the code for selected machines.  When an NS_ASSERT cannot verify
+ * its condition, this macro is used. Falls back to calling
  * AssertBreakpoint() for architectures where breakpoint assembly
  * instructions are not supported.
  */
@@ -57,7 +64,7 @@
 #endif
 
 /**
- * \ingroup debugging
+ * \ingroup breakpoint
  *
  * \brief fallback breakpoint function
  *
diff -Naur ns-3.19/src/core/model/cairo-wideint.c ns-3.20/src/core/model/cairo-wideint.c
--- ns-3.19/src/core/model/cairo-wideint.c	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/core/model/cairo-wideint.c	2014-06-17 10:33:13.906995861 -0700
@@ -32,6 +32,8 @@
 
 #if HAVE_UINT64_T
 
+const char * cairo_impl64 = "uint64_t";
+
 #define _cairo_uint32s_to_uint64(h,l) ((uint64_t) (h) << 32 | (l))
 
 cairo_uquorem64_t
@@ -46,6 +48,8 @@
 
 #else
 
+const char * cairo_impl64 = "uint32_t";
+
 cairo_uint64_t
 _cairo_uint32_to_uint64 (uint32_t i)
 {
@@ -312,6 +316,8 @@
 
 #if HAVE_UINT128_T
 
+const char * cairo_impl128 = "uint128_t";
+
 cairo_uquorem128_t
 _cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den)
 {
@@ -324,6 +330,8 @@
 
 #else
 
+const char * cairo_impl128 = "cairo_uint64_t";
+
 cairo_uint128_t
 _cairo_uint32_to_uint128 (uint32_t i)
 {
@@ -610,16 +618,16 @@
     return qr;
 }
 
-cairo_int128_t
-_cairo_int128_negate (cairo_int128_t a)
+cairo_uint128_t
+_cairo_uint128_negate (cairo_uint128_t a)
 {
     a.lo = _cairo_uint64_not (a.lo);
     a.hi = _cairo_uint64_not (a.hi);
     return _cairo_uint128_add (a, _cairo_uint32_to_uint128 (1));
 }
 
-cairo_int128_t
-_cairo_int128_not (cairo_int128_t a)
+cairo_uint128_t
+_cairo_uint128_not (cairo_uint128_t a)
 {
     a.lo = _cairo_uint64_not (a.lo);
     a.hi = _cairo_uint64_not (a.hi);
@@ -659,7 +667,7 @@
  * dividend and 64 bit divisor.  If the quotient doesn't fit into 32
  * bits then the returned remainder is equal to the divisor, and the
  * quotient is the largest representable 64 bit integer.  It is an
- * error to call this function with the high 32 bits of @num being
+ * error to call this function with the high 32 bits of `num' being
  * non-zero. */
 cairo_uquorem64_t
 _cairo_uint_96by64_32x64_divrem (cairo_uint128_t num,
diff -Naur ns-3.19/src/core/model/cairo-wideint-private.h ns-3.20/src/core/model/cairo-wideint-private.h
--- ns-3.19/src/core/model/cairo-wideint-private.h	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/core/model/cairo-wideint-private.h	2014-06-17 10:33:13.906995861 -0700
@@ -32,9 +32,14 @@
 #ifndef CAIRO_WIDEINT_H
 #define CAIRO_WIDEINT_H
 
+// Adapt to ns-3 environment
 #include "ns3/core-config.h"
 #define cairo_private 
 #define HAVE_UINT64_T 1
+// Implementation tags added below and in cairo-wideint.c:
+// extern const char * cairo_impl64;
+// extern const char * cairo_impl128;
+
 
 /*for compatibility with MacOS and Cygwin*/
 #ifndef HAVE_STDINT_H
@@ -90,6 +95,8 @@
 
 #if !HAVE_UINT64_T
 
+extern const char * cairo_impl64;
+
 typedef struct _cairo_uint64 {
   uint32_t    lo, hi;
 } cairo_uint64_t, cairo_int64_t;
@@ -129,6 +136,8 @@
 
 #else
 
+extern const char * cairo_impl64;
+
 typedef uint64_t    cairo_uint64_t;
 typedef int64_t     cairo_int64_t;
 
@@ -209,6 +218,8 @@
 
 #if !HAVE_UINT128_T
 
+extern const char * cairo_impl128;
+
 typedef struct cairo_uint128 {
   cairo_uint64_t      lo, hi;
 } cairo_uint128_t, cairo_int128_t;
@@ -252,6 +263,8 @@
 
 #else   /* !HAVE_UINT128_T */
 
+extern const char * cairo_impl128;
+
 typedef uint128_t       cairo_uint128_t;
 typedef int128_t        cairo_int128_t;
 
diff -Naur ns-3.19/src/core/model/calendar-scheduler.cc ns-3.20/src/core/model/calendar-scheduler.cc
--- ns-3.19/src/core/model/calendar-scheduler.cc	2014-06-17 10:34:00.579635573 -0700
+++ ns-3.20/src/core/model/calendar-scheduler.cc	2014-06-17 10:33:13.907995853 -0700
@@ -28,11 +28,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("CalendarScheduler")
-  ;
+NS_LOG_COMPONENT_DEFINE ("CalendarScheduler");
 
-NS_OBJECT_ENSURE_REGISTERED (CalendarScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CalendarScheduler);
 
 TypeId
 CalendarScheduler::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/callback.h ns-3.20/src/core/model/callback.h
--- ns-3.19/src/core/model/callback.h	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/core/model/callback.h	2014-06-17 10:33:13.908995846 -0700
@@ -35,6 +35,10 @@
 /**
  * \ingroup core
  * \defgroup callback Callbacks
+ * \brief Wrap functions, objects, and arguments into self contained callbacks.
+ *
+ * Wrapped callbacks are at the heart of scheduling events in the
+ * simulator.
  */
 /**
  * \ingroup callback
@@ -68,7 +72,7 @@
 /**
  * \ingroup callback
  * \defgroup callbackimpl Callback Implementation
- * CallbackImpl classes
+ * Callback implementation classes
  */
 /**
  * \ingroup callbackimpl
@@ -1658,12 +1662,14 @@
 class CallbackValue : public AttributeValue
 {
 public:
+  /** Constructor */
   CallbackValue ();
   /**
    * Copy constructor
    * \param base Callback to copy
    */
-  CallbackValue (const CallbackBase &base);  
+  CallbackValue (const CallbackBase &base);
+  /** Destructor */
   virtual ~CallbackValue ();
   /** \param base the Callbackbase to use */
   void Set (CallbackBase base);
@@ -1695,10 +1701,8 @@
   CallbackBase m_value;                 //!< the CallbackBase
 };
 
-/** Attribute helpers @{ */
 ATTRIBUTE_ACCESSOR_DEFINE (Callback);
 ATTRIBUTE_CHECKER_DEFINE (Callback);
-/**@}*/
 
 } // namespace ns3
 
diff -Naur ns-3.19/src/core/model/command-line.cc ns-3.20/src/core/model/command-line.cc
--- ns-3.19/src/core/model/command-line.cc	2014-06-17 10:34:00.581635557 -0700
+++ ns-3.20/src/core/model/command-line.cc	2014-06-17 10:33:13.909995838 -0700
@@ -457,4 +457,11 @@
     }
 }
 
+std::ostream &
+operator << (std::ostream & os, const CommandLine & cmd)
+{
+  cmd.PrintHelp (os);
+  return os;
+}
+
 } // namespace ns3
diff -Naur ns-3.19/src/core/model/command-line.h ns-3.20/src/core/model/command-line.h
--- ns-3.19/src/core/model/command-line.h	2014-06-17 10:34:00.581635557 -0700
+++ ns-3.20/src/core/model/command-line.h	2014-06-17 10:33:13.910995830 -0700
@@ -91,7 +91,7 @@
  *   --SchedulerType=HeapScheduler
  * \endcode
  *
- * A simple example is in \c src/core/example/command-line-example.cc
+ * A simple example is in `src/core/example/ command-line-example.cc`
  * The heart of that example is this code:
  *
  * \code
@@ -110,7 +110,7 @@
  *  cmd.Parse (argc, argv);
  * \endcode
  * after which it prints the values of each variable.  (The \c SetCbArg function
- * is not shown.)
+ * is not shown here; see `src/core/example/ command-line-example.cc`)
  *
  * Here is the output from a few runs of that program:
  *
@@ -148,6 +148,31 @@
  *       --PrintAttributes=[typeid]:  Print all attributes of typeid.
  *       --PrintHelp:                 Print this help message.
  * \endcode
+ *
+ * Having parsed the arguments, some programs will need to perform
+ * some additional validation of the received values.  A common issue at this
+ * point is to discover that the supplied arguments are incomplete or
+ * incompatible.  Suggested best practice is to supply an error message
+ * and the complete usage message.  For example,
+ *
+ * \code
+ *   int value1;
+ *   int value2;
+ *   
+ *   CommandLine cmd;
+ *   cmd.Usage ("...");
+ *   cmd.AddValue ("value1", "first value", value1);
+ *   cmd.AddValue ("value2", "second value", value1);
+ *
+ *   cmd.Parse (argc, argv);
+ *
+ *   if (value1 * value2 < 0)
+ *     {
+ *       std::cerr << "value1 and value2 must have the same sign!" << std::endl;
+ *       std::cerr << cmd;
+ *       exit (-1);
+ *     }
+ * \endcode
  */
 class CommandLine
 {
@@ -328,12 +353,14 @@
   /**
    * Handler for \c \-\-PrintAttributes:  print the attributes for a given type.
    *
+   * \param os the output stream.
    * \param type the TypeId whose Attributes should be displayed
    */
   void PrintAttributes (std::ostream &os, const std::string &type) const;
   /**
    * Handler for \c \-\-PrintGroup:  print all types belonging to a given group.
    *
+   * \param os the output stream.
    * \param group the name of the TypeId group to display
    */
   void PrintGroup (std::ostream &os, const std::string &group) const;
@@ -463,6 +490,23 @@
   return !iss.bad () && !iss.fail ();
 }
 
+/**
+ * Overloaded operator << to print program usage
+ * (shortcut for CommandLine::PrintHelper)
+ *
+ * \see CommandLine::PrintHelper
+ *
+ * Example usage:
+ * \code
+ *    CommandLine cmd;
+ *    cmd.Parse (argc, argv);
+ *    ...
+ *    
+ *    std::cerr << cmd;
+ * \endcode
+ */
+std::ostream & operator << (std::ostream & os, const CommandLine & cmd);
+
 } // namespace ns3
 
 #endif /* COMMAND_LINE_H */
diff -Naur ns-3.19/src/core/model/default-simulator-impl.cc ns-3.20/src/core/model/default-simulator-impl.cc
--- ns-3.19/src/core/model/default-simulator-impl.cc	2014-06-17 10:34:00.584635534 -0700
+++ ns-3.20/src/core/model/default-simulator-impl.cc	2014-06-17 10:33:13.912995815 -0700
@@ -38,8 +38,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DefaultSimulatorImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DefaultSimulatorImpl);
 
 TypeId
 DefaultSimulatorImpl::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/fatal-error.h ns-3.20/src/core/model/fatal-error.h
--- ns-3.19/src/core/model/fatal-error.h	2014-06-17 10:34:00.587635511 -0700
+++ ns-3.20/src/core/model/fatal-error.h	2014-06-17 10:33:13.915995792 -0700
@@ -28,7 +28,29 @@
 #include "fatal-impl.h"
 
 /**
- * \ingroup debugging
+ * \ingroup core
+ * \defgroup fatal Fatal Error Handlers
+ *
+ * \brief Functions to help clean up when a fatal error
+ * is encountered.
+ *
+ * The functions in this group are used to perform
+ * limited clean up, like flushing active streams, when
+ * fatal errors are encountered (through assertion fail,
+ * calls to NS_ABORT_* or calls to NS_FATAL_ERROR).
+ *
+ * Currently, other than flushing active ostreams, these
+ * functions does not interfere with outside memory.  There
+ * is still a residual risk that invalid ostream
+ * pointers may be present, and may corrupt the memory
+ * on the attempt to execute the flush() function.
+ */
+
+
+/**
+ * \ingroup fatal
+ * \private
+ *
  * \brief fatal error handling
  *
  * When this macro is hit at runtime, details of filename
@@ -52,7 +74,8 @@
   while (false)
 
 /**
- * \ingroup debugging
+ * \ingroup fatal
+ *
  * \brief fatal error handling
  *
  * \param msg message to output when this macro is hit.
diff -Naur ns-3.19/src/core/model/fatal-impl.h ns-3.20/src/core/model/fatal-impl.h
--- ns-3.19/src/core/model/fatal-impl.h	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/core/model/fatal-impl.h	2014-06-17 10:33:13.916995784 -0700
@@ -23,30 +23,11 @@
 
 #include <ostream>
 
-/**
- * \ingroup debugging
- * \defgroup fatalHandler Fatal Error Handler 
- *
- * \brief Functions to help clean up when fatal error
- * is encountered.
- *
- * The functions in this group are used to perform
- * limited clean up, like flushing active streams, when
- * fatal error are encountered (through assertion fail,
- * calls to NS_ABORT_* and calls to NS_FATAL_ERROR.
- *
- * Currently, other than flushing active ostreams, these
- * functions does not interfere with outside memory. There
- * is still a residual risk that may be invalid ostream
- * pointers may be present, and may corrupt the memory
- * on the attempt to execute the flush() function.
- */
-
 namespace ns3 {
 namespace FatalImpl {
 
 /**
- * \ingroup fatalHandler
+ * \ingroup fatal
  * \param stream The stream to be flushed on abnormal exit.
  *
  * \brief Register a stream to be flushed on abnormal exit.
@@ -60,7 +41,7 @@
 void RegisterStream (std::ostream* stream);
 
 /**
- * \ingroup fatalHandler
+ * \ingroup fatal
  * \param stream The stream to be unregistered.
  *
  * \brief Unregister a stream for flushing on abnormal exit.
@@ -74,7 +55,7 @@
 void UnregisterStream (std::ostream* stream);
 
 /**
- * \ingroup fatalHandler
+ * \ingroup fatal
  *
  * \brief Flush all currently registered streams.
  *
diff -Naur ns-3.19/src/core/model/global-value.cc ns-3.20/src/core/model/global-value.cc
--- ns-3.19/src/core/model/global-value.cc	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/core/model/global-value.cc	2014-06-17 10:33:13.917995777 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("GlobalValue")
-  ;
+NS_LOG_COMPONENT_DEFINE ("GlobalValue");
 
 GlobalValue::GlobalValue (std::string name, std::string help,
                           const AttributeValue &initialValue,
diff -Naur ns-3.19/src/core/model/global-value.h ns-3.20/src/core/model/global-value.h
--- ns-3.19/src/core/model/global-value.h	2014-06-17 10:34:00.589635496 -0700
+++ ns-3.20/src/core/model/global-value.h	2014-06-17 10:33:13.917995777 -0700
@@ -25,6 +25,7 @@
 #include "ptr.h"
 #include "attribute.h"
 
+class GlobalValueTestCase;
 
 namespace ns3 {
 
@@ -141,7 +142,7 @@
 
 
 private:
-  friend class GlobalValueTestCase;
+  friend class ::GlobalValueTestCase;
 
   static Vector *GetVector (void);
   void InitializeFromEnv (void);
diff -Naur ns-3.19/src/core/model/hash.cc ns-3.20/src/core/model/hash.cc
--- ns-3.19/src/core/model/hash.cc	2014-06-17 10:34:00.592635472 -0700
+++ ns-3.20/src/core/model/hash.cc	2014-06-17 10:33:13.920995753 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Hash")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Hash");
 
 Hasher::Hasher ()
 {
diff -Naur ns-3.19/src/core/model/hash-fnv.cc ns-3.20/src/core/model/hash-fnv.cc
--- ns-3.19/src/core/model/hash-fnv.cc	2014-06-17 10:34:00.589635496 -0700
+++ ns-3.20/src/core/model/hash-fnv.cc	2014-06-17 10:33:13.918995769 -0700
@@ -38,8 +38,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Hash-Fnv")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Hash-Fnv");
 
 namespace Hash {
 
diff -Naur ns-3.19/src/core/model/hash-function.cc ns-3.20/src/core/model/hash-function.cc
--- ns-3.19/src/core/model/hash-function.cc	2014-06-17 10:34:00.590635488 -0700
+++ ns-3.20/src/core/model/hash-function.cc	2014-06-17 10:33:13.918995769 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("HashFunction")
-  ;
+NS_LOG_COMPONENT_DEFINE ("HashFunction");
 
 namespace Hash {
 
diff -Naur ns-3.19/src/core/model/hash.h ns-3.20/src/core/model/hash.h
--- ns-3.19/src/core/model/hash.h	2014-06-17 10:34:00.592635472 -0700
+++ ns-3.20/src/core/model/hash.h	2014-06-17 10:33:13.921995745 -0700
@@ -35,6 +35,8 @@
 /**
  * \ingroup core
  * \defgroup hash Hash Functions
+ *
+ *  \brief Generic Hash function interface
  */
 /**
  *  \ingroup hash
@@ -70,7 +72,7 @@
  *  offer \c unsigned.
  *
  *  Longer hashes require returning a byte buffer of some sort,
- *  but our \ref buffer class seems a bit overkill for this case.
+ *  but our \ref Buffer class seems a bit overkill for this case.
  *
  */
 class Hasher
diff -Naur ns-3.19/src/core/model/hash-murmur3.cc ns-3.20/src/core/model/hash-murmur3.cc
--- ns-3.19/src/core/model/hash-murmur3.cc	2014-06-17 10:34:00.591635480 -0700
+++ ns-3.20/src/core/model/hash-murmur3.cc	2014-06-17 10:33:13.919995761 -0700
@@ -36,8 +36,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Hash-Murmur3")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Hash-Murmur3");
 
 namespace Hash {
 
diff -Naur ns-3.19/src/core/model/heap-scheduler.cc ns-3.20/src/core/model/heap-scheduler.cc
--- ns-3.19/src/core/model/heap-scheduler.cc	2014-06-17 10:34:00.592635472 -0700
+++ ns-3.20/src/core/model/heap-scheduler.cc	2014-06-17 10:33:13.921995745 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (HeapScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HeapScheduler);
 
 TypeId
 HeapScheduler::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/int64x64-128.cc ns-3.20/src/core/model/int64x64-128.cc
--- ns-3.19/src/core/model/int64x64-128.cc	2014-06-17 10:34:00.593635465 -0700
+++ ns-3.20/src/core/model/int64x64-128.cc	2014-06-17 10:33:13.922995738 -0700
@@ -11,40 +11,40 @@
 
 namespace ns3 {
 
-#define OUTPUT_SIGN(sa,sb,ua,ub)                                        \
-  ({ bool negA, negB;                                                    \
-     negA = sa < 0;                                                      \
-     negB = sb < 0;                                                      \
-     ua = negA ? -sa : sa;                                                   \
-     ub = negB ? -sb : sb;                                                   \
-     (negA && !negB) || (!negA && negB); })
-
-
-#define MASK_LO ((((int128_t)1)<<64)-1)
-#define MASK_HI (~MASK_LO)
+static inline  
+bool
+output_sign (const int128_t sa,
+             const int128_t sb,
+             uint128_t & ua,
+             uint128_t & ub)
+{
+  bool negA = sa < 0;
+  bool negB = sb < 0;
+  ua = negA ? -sa : sa;
+  ub = negB ? -sb : sb;
+  return (negA && !negB) || (!negA && negB);
+}
 
 void
-int64x64_t::Mul (int64x64_t const &o)
+int64x64_t::Mul (const int64x64_t & o)
 {
-  bool negResult;
   uint128_t a, b;
-  negResult = OUTPUT_SIGN (_v, o._v, a, b);
-  int128_t result = Umul (a, b);
-  // add the sign to the result
-  result = negResult ? -result : result;
-  _v = result;
+  bool negative = output_sign (_v, o._v, a, b);
+  uint128_t result = Umul (a, b);
+  _v = negative ? -result : result;
 }
 
 uint128_t
-int64x64_t::Umul (uint128_t a, uint128_t b)
+int64x64_t::Umul (const uint128_t a, const uint128_t b)
 {
-  uint128_t aL = a & MASK_LO;
-  uint128_t bL = b & MASK_LO;
-  uint128_t aH = (a >> 64) & MASK_LO;
-  uint128_t bH = (b >> 64) & MASK_LO;
+  uint128_t aL = a & HP_MASK_LO;
+  uint128_t bL = b & HP_MASK_LO;
+  uint128_t aH = (a >> 64) & HP_MASK_LO;
+  uint128_t bH = (b >> 64) & HP_MASK_LO;
 
   uint128_t result;
-  uint128_t hiPart,loPart,midPart;
+  uint128_t hiPart, loPart, midPart;
+  uint128_t res1, res2;
 
   // Multiplying (a.h 2^64 + a.l) x (b.h 2^64 + b.l) =
   //			2^128 a.h b.h + 2^64*(a.h b.l+b.h a.l) + a.l b.l
@@ -53,53 +53,107 @@
   loPart = aL * bL;
   // compute the middle part 2^64*(a.h b.l+b.h a.l)
   midPart = aL * bH + aH * bL;
-  // truncate the low part
-  result = (loPart >> 64) + (midPart & MASK_LO);
   // compute the high part 2^128 a.h b.h
   hiPart = aH * bH;
-  // truncate the high part and only use the low part
-  result |= ((hiPart & MASK_LO) << 64) + (midPart & MASK_HI);
   // if the high part is not zero, put a warning
-  NS_ABORT_MSG_IF ((hiPart & MASK_HI) != 0,
+  NS_ABORT_MSG_IF ((hiPart & HP_MASK_HI) != 0,
                    "High precision 128 bits multiplication error: multiplication overflow.");
+  
+  // Adding 64-bit terms to get 128-bit results, with carries
+  res1 = loPart >> 64;
+  res2 = midPart & HP_MASK_LO;
+  result = res1 + res2;
+
+  res1 = midPart >> 64;
+  res2 = hiPart & HP_MASK_LO;
+  res1 += res2;
+  res1 <<= 64;
+
+  result += res1;
+
   return result;
 }
+
 void
-int64x64_t::Div (int64x64_t const &o)
+int64x64_t::Div (const int64x64_t & o)
 {
-  bool negResult;
   uint128_t a, b;
-  negResult = OUTPUT_SIGN (_v, o._v, a, b);
-  int128_t result = Divu (a, b);
-  result = negResult ? -result : result;
-  _v = result;
+  bool negative = output_sign (_v, o._v, a, b);
+  int128_t result = Udiv (a, b);
+  _v = negative ? -result : result;
 }
 
 uint128_t
-int64x64_t::Divu (uint128_t a, uint128_t b)
+int64x64_t::Udiv (const uint128_t a, const uint128_t b)
 {
-  uint128_t quo = a / b;
-  uint128_t rem = (a % b);
-  uint128_t result = quo << 64;
+  
+  uint128_t rem = a;
+  uint128_t den = b;
+  uint128_t quo = rem / den;
+  rem = rem % den;
+  uint128_t result = quo;
+
   // Now, manage the remainder
-  uint128_t tmp = rem >> 64;
-  uint128_t div;
-  if (tmp == 0)
+  const uint64_t DIGITS = 64;  // Number of fraction digits (bits) we need
+  const uint128_t ZERO = 0;
+  
+  NS_ASSERT_MSG (rem < den,
+                 "Remainder not less than divisor");
+  
+  uint64_t digis = 0;          // Number of digits we have already
+  uint64_t shift = 0;          // Number we are going to get this round
+  
+    // Skip trailing zeros in divisor
+  while ( (shift < DIGITS) && !(den & 0x1))
+    {
+      ++shift;
+      den >>= 1;
+    }
+  
+  while ( (digis < DIGITS) && (rem != ZERO) )
     {
-      rem = rem << 64;
-      div = b;
+      // Skip leading zeros in remainder
+      while ( (digis + shift < DIGITS) &&
+              !(rem & HP128_MASK_HI_BIT))
+        {      
+          ++shift;
+          rem <<= 1;
+        }
+
+      // Cast off denominator bits if:
+      //   Need more digits and
+      //     LSB is zero or 
+      //     rem < den
+      while ( (digis + shift < DIGITS) &&
+              ( !(den & 0x1) || (rem < den) ) )
+        {
+          ++shift;
+          den >>= 1;
+        }
+
+      // Do the division
+      quo = rem / den;
+      rem = rem % den;
+
+      // Add in the quotient as shift bits of the fraction
+      result <<= shift;
+      result += quo;
+
+      digis += shift;
+      shift = 0;
     }
-  else
+  // Did we run out of remainder?
+  if (digis < DIGITS)
     {
-      div = b >> 64;
+      shift = DIGITS - digis;
+      result <<= shift;
     }
-  quo = rem / div;
-  result = result + quo;
+  
   return result;
 }
 
 void 
-int64x64_t::MulByInvert (const int64x64_t &o)
+int64x64_t::MulByInvert (const int64x64_t & o)
 {
   bool negResult = _v < 0;
   uint128_t a = negResult ? -_v : _v;
@@ -107,30 +161,32 @@
 
   _v = negResult ? -result : result;
 }
+
 uint128_t
-int64x64_t::UmulByInvert (uint128_t a, uint128_t b)
+int64x64_t::UmulByInvert (const uint128_t a, const uint128_t b)
 {
   uint128_t result, ah, bh, al, bl;
   uint128_t hi, mid;
   ah = a >> 64;
   bh = b >> 64;
-  al = a & MASK_LO;
-  bl = b & MASK_LO;
+  al = a & HP_MASK_LO;
+  bl = b & HP_MASK_LO;
   hi = ah * bh;
   mid = ah * bl + al * bh;
   mid >>= 64;
   result = hi + mid;
   return result;
 }
+
 int64x64_t 
-int64x64_t::Invert (uint64_t v)
+int64x64_t::Invert (const uint64_t v)
 {
   NS_ASSERT (v > 1);
   uint128_t a;
   a = 1;
   a <<= 64;
   int64x64_t result;
-  result._v = Divu (a, v);
+  result._v = Udiv (a, v);
   int64x64_t tmp = int64x64_t (v, false);
   tmp.MulByInvert (result);
   if (tmp.GetHigh () != 1)
diff -Naur ns-3.19/src/core/model/int64x64-128.h ns-3.20/src/core/model/int64x64-128.h
--- ns-3.19/src/core/model/int64x64-128.h	2014-06-17 10:34:00.594635457 -0700
+++ ns-3.20/src/core/model/int64x64-128.h	2014-06-17 10:33:13.922995738 -0700
@@ -2,212 +2,404 @@
 #if !defined(INT64X64_128_H) && defined (INT64X64_USE_128) && !defined(PYTHON_SCAN)
 #define INT64X64_128_H
 
-#include "ns3/core-config.h"
 #include <stdint.h>
-#include <cmath>
+#include <cmath>  // pow
 
 #if defined(HAVE___UINT128_T) && !defined(HAVE_UINT128_T)
 typedef __uint128_t uint128_t;
 typedef __int128_t int128_t;
 #endif
 
-namespace ns3 {
 
-#define HP128_MAX_64 18446744073709551615.0
-#define HP128_MASK_LO ((((int128_t)1)<<64)-1)
+namespace ns3 {
 
+/**
+ * \internal
+ * The implementation documented here is based on native 128-bit integers.
+ */
 class int64x64_t
 {
+  /// uint128_t high bit (sign bit)
+  static const uint128_t   HP128_MASK_HI_BIT = (((int128_t)1)<<127);
+  /// Mask for fraction part
+  static const uint64_t    HP_MASK_LO = 0xffffffffffffffffULL;
+  /// Mask for sign + integer part
+  static const uint64_t    HP_MASK_HI = ~HP_MASK_LO;
+  /**
+   * Floating point value of HP_MASK_LO + 1
+   * We really want:
+   * \code
+   *   static const long double HP_MAX_64 = std:pow (2.0L, 64);
+   * \endcode
+   * but we can't call functions in const definitions,
+   * We could make this a static and initialize in int64x64-128.cc or
+   * int64x64.cc, but this requires handling static initialization order
+   * when most of the implementation is inline.  Instead, we resort to
+   * this define.
+   */
+#define HP_MAX_64    (std::pow (2.0L, 64))
+
 public:
+  /**
+   * Type tag for the underlying implementation.
+   *
+   * A few testcases are are sensitive to implementation,
+   * specifically the double implementation.  To handle this,
+   * we expose the underlying implementation type here.
+   */
+  enum impl_type {
+    int128_impl,  //!< Native int128_t implementation.
+    cairo_impl,   //!< cairo wideint implementation
+    ld_impl,      //!< long double implementation
+  };
+
+  /// Type tag for this implementation.
+  static const enum impl_type implementation = int128_impl;
+
+  /// Default constructor
   inline int64x64_t ()
-    : _v (0)
-  {}
-  inline int64x64_t (double value)
-  {
-    bool is_negative = value < 0;
-    value = is_negative ? -value : value;
-    double hi = std::floor (value);
-    double lo = (value - hi) * HP128_MAX_64;
-    _v = (int128_t)hi;
-    _v <<= 64;
-    _v += (int128_t)lo;
-    _v = is_negative ? -_v : _v;
-  }
-  inline int64x64_t (int v)
+    : _v (0)  {}
+  /**@{*/
+  /**
+   * Construct from a floating point value.
+   *
+   * \param [in] value floating value to represent
+   */
+  inline int64x64_t (const double value)
+  {
+    const int64x64_t tmp ((long double)value);
+    _v = tmp._v;
+  }
+  inline int64x64_t (const long double value)
+  {
+    const bool negative = value < 0;
+    const long double v = negative ? -value : value;
+
+    long double fhi;
+    long double flo = std::modf (v, &fhi);
+    // Add 0.5 to round, which improves the last count
+    // This breaks these tests:
+    //   TestSuite devices-mesh-dot11s-regression
+    //   TestSuite devices-mesh-flame-regression
+    //   TestSuite routing-aodv-regression
+    //   TestSuite routing-olsr-regression
+    // Setting round = 0; breaks:
+    //   TestSuite int64x64
+    const long double round = 0.5;
+    flo = flo * HP_MAX_64 + round;
+    int128_t hi = fhi;
+    const uint64_t lo = flo;
+    if (flo >= HP_MAX_64)
+      {
+	// conversion to uint64 rolled over
+	++hi;
+      }
+    _v = hi << 64;
+    _v |= lo;
+    _v = negative ? -_v : _v;
+  }
+  /**@}*/
+
+  /**@{*/
+  /**
+   * Construct from an integral type.
+   *
+   * \param [in] v integer value to represent
+   */
+  inline int64x64_t (const int v)
     : _v (v)
   {
     _v <<= 64;
   }
-  inline int64x64_t (long int v)
+  inline int64x64_t (const long int v)
     : _v (v) 
   {
     _v <<= 64;
   }
-  inline int64x64_t (long long int v)
+  inline int64x64_t (const long long int v)
     : _v (v) 
   {
     _v <<= 64;
   }
-  inline int64x64_t (unsigned int v)
+  inline int64x64_t (const unsigned int v)
     : _v (v)
   {
     _v <<= 64;
   }
-  inline int64x64_t (unsigned long int v)
+  inline int64x64_t (const unsigned long int v)
     : _v (v) 
   {
     _v <<= 64;
   }
-  inline int64x64_t (unsigned long long int v)
+  inline int64x64_t (const unsigned long long int v)
     : _v (v) 
   {
     _v <<= 64;
   }
-  explicit inline int64x64_t (int64_t hi, uint64_t lo)
-  {
-    bool is_negative = hi<0;
-    _v = is_negative ? -hi : hi;
-    _v <<= 64;
-    _v += lo;
-    _v = is_negative ? -_v : _v;
-  }
-
-  inline int64x64_t (const int64x64_t &o)
+  /**@}*/
+  /**
+   * Construct from explicit high and low values.
+   *
+   * \param [in] hi Integer portion.
+   * \param [in] lo Fractional portion, already scaled to HP_MAX_64.
+   */
+  explicit inline int64x64_t (const int64_t hi, const uint64_t lo)
+  {
+    _v = (int128_t)hi << 64;
+    _v |= lo;
+  }
+
+  /**
+   * Copy constructor.
+   *
+   * \param [in] o Value to copy.
+   */
+  inline int64x64_t (const int64x64_t & o)
     : _v (o._v) {}
-  inline int64x64_t &operator = (const int64x64_t &o)
+  /**
+   * Assignment.
+   *
+   * \param [in] o Value to assign to this int64x64_t.
+   */
+  inline int64x64_t & operator = (const int64x64_t & o)
   {
     _v = o._v;
     return *this;
   }
 
+  /**
+   * Get this value as a double.
+   *
+   * \return This value in floating form.
+   */
   inline double GetDouble (void) const
   {
-    bool is_negative = _v < 0;
-    uint128_t value = is_negative ? -_v : _v;
-    uint64_t hi = value >> 64;
-    uint64_t lo = value;
-    double flo = lo;
-    flo /= HP128_MAX_64;
-    double retval = hi;
+    const bool negative = _v < 0;
+    const uint128_t value = negative ? -_v : _v;
+    const long double fhi = value >> 64;
+    const long double flo = (value & HP_MASK_LO) / HP_MAX_64;
+    long double retval = fhi;
     retval += flo;
-    retval = is_negative ? -retval : retval;
+    retval = negative ? -retval : retval;
     return retval;
   }
+  /**
+   * Get the integer portion.
+   *
+   * \return The integer portion of this value.
+   */
   inline int64_t GetHigh (void) const
   {
-    bool negative = _v < 0;
-    int128_t v = negative ? -_v : _v;
-    v >>= 64;
-    int64_t retval = v;
-    return negative ? -retval : retval;
+    const int128_t retval = _v >> 64;
+    return retval;
   }
+  /**
+   * Get the fractional portion of this value, unscaled.
+   *
+   * \return The fractional portion, unscaled, as an integer.
+   */
   inline uint64_t GetLow (void) const
   {
-    bool negative = _v < 0;
-    int128_t v = negative ? -_v : _v;
-    int128_t low = v & HP128_MASK_LO;
-    uint64_t retval = low;
+    const uint128_t retval = _v & HP_MASK_LO;
     return retval;
   }
-#undef HP128_MAX_64
-#undef HP128_MASK_LO
 
-  void MulByInvert (const int64x64_t &o);
-
-  static int64x64_t Invert (uint64_t v);
+  /**
+   * Multiply this value by a Q0.128 value, presumably representing an inverse,
+   * completing a division operation.
+   *
+   * \param [in] o The inverse operand.
+   *
+   * \see Invert
+   */
+  void MulByInvert (const int64x64_t & o);
+
+  /**
+   * Compute the inverse of an integer value.
+   *
+   * Ordinary division by an integer would be limited to 64 bits of precsion.
+   * Instead, we multiply by the 128-bit inverse of the divisor.
+   * This function computes the inverse to 128-bit precision.
+   * MulByInvert() then completes the division.
+   *
+   * (Really this should be a separate type representing Q0.128.)
+   *
+   * \param [in] v The value to compute the inverse of.
+   * \return A Q0.128 representation of the inverse.
+   */
+  static int64x64_t Invert (const uint64_t v);
 
 private:
-  friend bool operator == (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator != (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator < (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator > (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator + (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator - (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator * (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator / (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator + (const int64x64_t &lhs);
-  friend int64x64_t operator - (const int64x64_t &lhs);
-  friend int64x64_t operator ! (const int64x64_t &lhs);
-  void Mul (const int64x64_t &o);
-  void Div (const int64x64_t &o);
-  static uint128_t UmulByInvert (uint128_t a, uint128_t b);
-  static uint128_t Umul (uint128_t a, uint128_t b);
-  static uint128_t Divu (uint128_t a, uint128_t b);
-  inline int64x64_t (int128_t v)
+  friend bool         operator == (const int64x64_t & lhs, const int64x64_t & rhs);
+
+  friend bool         operator <  (const int64x64_t & lhs, const int64x64_t & rhs);
+  friend bool         operator >  (const int64x64_t & lhs, const int64x64_t & rhs);
+  
+  friend int64x64_t & operator += (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator -= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator *= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator /= (      int64x64_t & lhs, const int64x64_t & rhs);
+
+  friend int64x64_t   operator -  (const int64x64_t & lhs);
+  friend int64x64_t   operator !  (const int64x64_t & lhs);
+
+  /**
+   * Implement `*=`.
+   *
+   * \param [in] o The other factor.
+   */   
+  void Mul (const int64x64_t & o);
+  /**
+   * Implement `/=`.
+   *
+   * \param [in] o The divisor.
+   */
+  void Div (const int64x64_t & o);
+  /**
+   * Unsigned multiplication of Q64.64 values.
+   *
+   * Mathematically this should produce a Q128.128 value;
+   * we keep the central 128 bits, representing the Q64.64 result.
+   * We assert on integer overflow beyond the 64-bit integer portion.
+   *
+   * \param [in] a First factor.
+   * \param [in] b Second factor.
+   * \return The Q64.64 product.
+   *
+   * \internal
+   *
+   * It might be tempting to just use \pname{a} `*` \pname{b}
+   * and be done with it, but it's not that simple.  With \pname{a}
+   * and \pname{b} as 128-bit integers, \pname{a} `*` \pname{b}
+   * mathematically produces a 256-bit result, which the computer
+   * truncates to the lowest 128 bits.  In our case, where \pname{a}
+   * and \pname{b} are interpreted as Q64.64 fixed point numbers,
+   * the multiplication mathematically produces a Q128.128 fixed point number.
+   * We want the middle 128 bits from the result, truncating both the
+   * high and low 64 bits.  To achieve this, we carry out the multiplication
+   * explicitly with 64-bit operands and 128-bit intermediate results.
+   */
+  static uint128_t Umul         (const uint128_t a, const uint128_t b);
+  /**
+   * Unsigned division of Q64.64 values.
+   *
+   * \param [in] a Numerator.
+   * \param [in] b Denominator.
+   * \return The Q64.64 representation of `a / b`
+   */
+  static uint128_t Udiv         (const uint128_t a, const uint128_t b);
+  /**
+   * Unsigned multiplication of Q64.64 and Q0.128 values.
+   *
+   * \param [in] a The numerator, a Q64.64 value.
+   * \param [in] b The inverse of the denominator, a Q0.128 value
+   * \return The product `a * b`, representing the ration `a / b^-1`
+   *
+   * \see Invert
+   */
+  static uint128_t UmulByInvert (const uint128_t a, const uint128_t b);
+
+  /**
+   * Construct from an integral type.
+   *
+   * \param [in] v integer value to represent
+   */
+  inline int64x64_t (const int128_t v)
     : _v (v) {}
 
-  int128_t _v;
-};
+  int128_t _v;  //!< The Q64.64 value.
 
-inline bool operator == (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v == rhs._v;
-}
+};  // class int64x64_t
 
-inline bool operator != (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v != rhs._v;
-}
 
-inline bool operator < (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v < rhs._v;
-}
-inline bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Equality operator.
+ */
+inline bool operator == (const int64x64_t & lhs, const int64x64_t & rhs)
 {
-  return lhs._v <= rhs._v;
+  return lhs._v == rhs._v;
 }
-
-inline bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Less than operator
+ */
+inline bool operator < (const int64x64_t & lhs, const int64x64_t & rhs)
 {
-  return lhs._v >= rhs._v;
+  return lhs._v < rhs._v;
 }
-inline bool operator > (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Greater operator
+ */
+inline bool operator > (const int64x64_t & lhs, const int64x64_t & rhs)
 {
   return lhs._v > rhs._v;
 }
-inline int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs)
+
+/**
+ * \ingroup highprec
+ * Compound addition operator
+ */
+inline int64x64_t & operator += (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs._v += rhs._v;
   return lhs;
 }
-inline int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound subtraction operator
+ */
+inline int64x64_t & operator -= (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs._v -= rhs._v;
   return lhs;
 }
-inline int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound multiplication operator
+ */
+inline int64x64_t & operator *= (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs.Mul (rhs);
   return lhs;
 }
-inline int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound division operator
+ */
+inline int64x64_t & operator /= (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs.Div (rhs);
   return lhs;
 }
 
-inline int64x64_t operator + (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary plus operator
+ */
+inline int64x64_t operator + (const int64x64_t & lhs)
 {
   return lhs;
 }
-
-inline int64x64_t operator - (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary negation operator (change sign operator)
+ */
+inline int64x64_t operator - (const int64x64_t & lhs)
 {
   return int64x64_t (-lhs._v);
 }
-
-inline int64x64_t operator ! (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Logical not operator
+ */
+inline int64x64_t operator ! (const int64x64_t & lhs)
 {
   return int64x64_t (!lhs._v);
 }
 
+
 } // namespace ns3
 
 #endif /* INT64X64_128_H */
diff -Naur ns-3.19/src/core/model/int64x64-cairo.cc ns-3.20/src/core/model/int64x64-cairo.cc
--- ns-3.19/src/core/model/int64x64-cairo.cc	2014-06-17 10:34:00.594635457 -0700
+++ ns-3.20/src/core/model/int64x64-cairo.cc	2014-06-17 10:33:13.923995730 -0700
@@ -17,13 +17,13 @@
  *
  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
  */
-#include "int64x64-cairo.h"
 #include "test.h"
 #include "abort.h"
 #include "assert.h"
 #include "log.h"
 #include <cmath>
 #include <iostream>
+#include "int64x64-cairo.h"
 
 // Note:  Logging in this file is largely avoided due to the
 // number of calls that are made to these functions and the possibility
@@ -31,38 +31,45 @@
 
 NS_LOG_COMPONENT_DEFINE ("int64x64-cairo");
 
+// Include directly to allow optimizations within this compilation unit.
+extern "C" {
+#include "cairo-wideint.c"
+}
+
+
 namespace ns3 {
 
-#define OUTPUT_SIGN(sa,sb,ua,ub)                                        \
-  ({ bool negA, negB;                                                    \
-     negA = _cairo_int128_negative (sa);                                   \
-     negB = _cairo_int128_negative (sb);                                   \
-     ua = _cairo_int128_to_uint128 (sa);                                   \
-     ub = _cairo_int128_to_uint128 (sb);                                   \
-     ua = negA ? _cairo_uint128_negate (ua) : ua;                          \
-     ub = negB ? _cairo_uint128_negate (ub) : ub;                          \
-     (negA && !negB) || (!negA && negB); })
+static inline  
+bool
+output_sign (const cairo_int128_t sa,
+             const cairo_int128_t sb,
+             cairo_uint128_t & ua,
+             cairo_uint128_t & ub)
+{
+  bool negA = _cairo_int128_negative (sa);
+  bool negB = _cairo_int128_negative (sb);
+  ua = _cairo_int128_to_uint128 (sa);
+  ub = _cairo_int128_to_uint128 (sb);
+  ua = negA ? _cairo_uint128_negate (ua) : ua;
+  ub = negB ? _cairo_uint128_negate (ub) : ub;
+  return (negA && !negB) || (!negA && negB);
+}
 
 void
-int64x64_t::Mul (int64x64_t const &o)
+int64x64_t::Mul (const int64x64_t & o)
 {
-  cairo_uint128_t a, b, result;
-  bool sign = OUTPUT_SIGN (_v, o._v, a, b);
-  result = Umul (a, b);
+  cairo_uint128_t a, b;
+  bool sign = output_sign (_v, o._v, a, b);
+  cairo_uint128_t result = Umul (a, b);
   _v = sign ? _cairo_uint128_negate (result) : result;
 }
 
-/**
- * this function multiplies two 128 bits fractions considering
- * the high 64 bits as the integer part and the low 64 bits
- * as the fractional part. It takes into account the sign
- * of the operands to produce a signed 128 bits result.
- */
 cairo_uint128_t
-int64x64_t::Umul (cairo_uint128_t a, cairo_uint128_t b)
+int64x64_t::Umul (const cairo_uint128_t a, const cairo_uint128_t b)
 {
   cairo_uint128_t result;
-  cairo_uint128_t hiPart,loPart,midPart;
+  cairo_uint128_t hiPart, loPart, midPart;
+  cairo_uint128_t res1, res2;
 
   // Multiplying (a.h 2^64 + a.l) x (b.h 2^64 + b.l) =
   //			2^128 a.h b.h + 2^64*(a.h b.l+b.h a.l) + a.l b.l
@@ -72,62 +79,114 @@
   // compute the middle part 2^64*(a.h b.l+b.h a.l)
   midPart = _cairo_uint128_add (_cairo_uint64x64_128_mul (a.lo, b.hi),
                                 _cairo_uint64x64_128_mul (a.hi, b.lo));
-  // truncate the low part
-  result.lo = _cairo_uint64_add (loPart.hi,midPart.lo);
   // compute the high part 2^128 a.h b.h
   hiPart = _cairo_uint64x64_128_mul (a.hi, b.hi);
-  // truncate the high part and only use the low part
-  result.hi = _cairo_uint64_add (hiPart.lo,midPart.hi);
   // if the high part is not zero, put a warning
   NS_ABORT_MSG_IF (hiPart.hi != 0,
                    "High precision 128 bits multiplication error: multiplication overflow.");
+
+  // Adding 64-bit terms to get 128-bit results, with carries
+  res1 = _cairo_uint64_to_uint128 (loPart.hi);
+  res2 = _cairo_uint64_to_uint128 (midPart.lo);
+  result  = _cairo_uint128_add (res1, res2);
+
+  res1 = _cairo_uint64_to_uint128 (midPart.hi);
+  res2 = _cairo_uint64_to_uint128 (hiPart.lo);
+  res1 = _cairo_uint128_add (res1, res2);
+  res1 = _cairo_uint128_lsl (res1, 64);
+  
+  result  = _cairo_uint128_add (result, res1);
+  
   return result;
 }
 
 void
-int64x64_t::Div (int64x64_t const &o)
+int64x64_t::Div (const int64x64_t & o)
 {
-  cairo_uint128_t a, b, result;
-  bool sign = OUTPUT_SIGN (_v, o._v, a, b);
-  result = Udiv (a, b);
+  cairo_uint128_t a, b;
+  bool sign = output_sign (_v, o._v, a, b);
+  cairo_uint128_t result = Udiv (a, b);
   _v = sign ? _cairo_uint128_negate (result) : result;
 }
 
 cairo_uint128_t
-int64x64_t::Udiv (cairo_uint128_t a, cairo_uint128_t b)
+int64x64_t::Udiv (const cairo_uint128_t a, const cairo_uint128_t b)
 {
+  cairo_uint128_t den = b;
   cairo_uquorem128_t qr = _cairo_uint128_divrem (a, b);
-  cairo_uint128_t result = _cairo_uint128_lsl (qr.quo, 64);
+  cairo_uint128_t result = qr.quo;
+  cairo_uint128_t rem = qr.rem;
+
   // Now, manage the remainder
-  cairo_uint128_t tmp = _cairo_uint128_rsl (qr.rem, 64);
-  cairo_uint128_t zero = _cairo_uint64_to_uint128 (0);
-  cairo_uint128_t rem, div;
-  if (_cairo_uint128_eq (tmp, zero))
+  const uint64_t DIGITS = 64;  // Number of fraction digits (bits) we need
+  const cairo_uint128_t ZERO = _cairo_uint32_to_uint128 ((uint32_t)0);
+  
+  NS_ASSERT_MSG (_cairo_uint128_lt (rem, den),
+                 "Remainder not less than divisor");
+  
+  uint64_t digis = 0;          // Number of digits we have already
+  uint64_t shift = 0;          // Number we are going to get this round
+  
+    // Skip trailing zeros in divisor
+  while ( (shift < DIGITS) && !(den.lo & 0x1))
     {
-      rem = _cairo_uint128_lsl (qr.rem, 64);
-      div = b;
+      ++shift;
+      den = _cairo_uint128_rsl (den, 1);
     }
-  else
+  
+  while ( (digis < DIGITS) && !(_cairo_uint128_eq(rem, ZERO)) )
     {
+      // Skip leading zeros in remainder
+      while ( (digis + shift < DIGITS) &&
+              !(rem.hi & HPCAIRO_MASK_HI_BIT) )
+        {      
+          ++shift;
+          rem = _cairo_int128_lsl (rem, 1);
+        }
+
+      // Cast off denominator bits if:
+      //   Need more digits and
+      //     LSB is zero or 
+      //     rem < den
+      while ( (digis + shift < DIGITS) &&
+              ( !(den.lo & 0x1) || _cairo_uint128_lt (rem, den) ) )
+        {
+          ++shift;
+          den = _cairo_uint128_rsl (den, 1);
+        }
+
+      // Do the division
+      qr = _cairo_uint128_divrem (rem, den);
+
+      // Add in the quotient as shift bits of the fraction
+      result = _cairo_uint128_lsl (result, shift);
+      result = _cairo_uint128_add (result, qr.quo);
       rem = qr.rem;
-      div = _cairo_uint128_rsl (b, 64);
+      digis += shift;
+      shift = 0;
     }
-  qr = _cairo_uint128_divrem (rem, div);
-  result = _cairo_uint128_add (result, qr.quo);
+  // Did we run out of remainder?
+  if (digis < DIGITS)
+    {
+      shift = DIGITS - digis;
+      result = _cairo_uint128_lsl (result, shift);
+    }
+  
   return result;
 }
 
 void 
-int64x64_t::MulByInvert (const int64x64_t &o)
+int64x64_t::MulByInvert (const int64x64_t & o)
 {
-  bool negResult = _cairo_int128_negative (_v);
-  cairo_uint128_t a = negResult ? _cairo_int128_negate (_v) : _v;
+  bool sign = _cairo_int128_negative (_v);
+  cairo_uint128_t a = sign ? _cairo_int128_negate (_v) : _v;
   cairo_uint128_t result = UmulByInvert (a, o._v);
 
-  _v = negResult ? _cairo_int128_negate (result) : result;
+  _v = sign ? _cairo_int128_negate (result) : result;
 }
+  
 cairo_uint128_t
-int64x64_t::UmulByInvert (cairo_uint128_t a, cairo_uint128_t b)
+int64x64_t::UmulByInvert (const cairo_uint128_t a, const cairo_uint128_t b)
 {
   cairo_uint128_t result;
   cairo_uint128_t hi, mid;
@@ -139,8 +198,9 @@
   result = _cairo_uint128_add (hi,mid);
   return result;
 }
+
 int64x64_t 
-int64x64_t::Invert (uint64_t v)
+int64x64_t::Invert (const uint64_t v)
 {
   NS_ASSERT (v > 1);
   cairo_uint128_t a, factor;
@@ -162,8 +222,3 @@
 
 
 } // namespace ns3
-
-// include directly to allow optimizations within the compilation unit.
-extern "C" {
-#include "cairo-wideint.c"
-}
diff -Naur ns-3.19/src/core/model/int64x64-cairo.h ns-3.20/src/core/model/int64x64-cairo.h
--- ns-3.19/src/core/model/int64x64-cairo.h	2014-06-17 10:34:00.594635457 -0700
+++ ns-3.20/src/core/model/int64x64-cairo.h	2014-06-17 10:33:13.924995722 -0700
@@ -2,254 +2,393 @@
 #if !defined(INT64X64_CAIRO_H) && defined (INT64X64_USE_CAIRO) && !defined(PYTHON_SCAN)
 #define INT64X64_CAIRO_H
 
-#include <stdint.h>
-#include <cmath>
+#include <cmath>  // pow
 
 #include "cairo-wideint-private.h"
 
-#ifdef __i386__
-// this assembly code does not appear to work right yet.
-#define noInt64x64_CAIRO_ASM 1
-#endif
 
 namespace ns3 {
 
+/**
+ * \internal
+ * The implementation documented here uses cairo 128-bit integers.
+ */
 class int64x64_t
 {
+  /// High bit of fractional part
+  static const uint64_t    HPCAIRO_MASK_HI_BIT = (((uint64_t)1)<<63);
+  /// Mask for fraction part
+  static const uint64_t    HP_MASK_LO = 0xffffffffffffffffULL;
+  /**
+   * Floating point value of HP_MASK_LO + 1
+   * We really want:
+   * \code
+   *   static const long double HP_MAX_64 = std:pow (2.0L, 64);
+   * \endcode
+   * but we can't call functions in const definitions,
+   * We could make this a static and initialize in int64x64-cairo.cc or
+   * int64x64.cc, but this requires handling static initialization order
+   * when most of the implementation is inline.  Instead, we resort to
+   * this define.
+   */
+#define HP_MAX_64    (std::pow (2.0L, 64))
+
 public:
+  /**
+   * Type tag for the underlying implementation.
+   *
+   * A few testcases are sensitive to implementation,
+   * specifically the double implementation.  To handle this,
+   * we expose the underlying implementation type here.
+   */
+  enum impl_type {
+    int128_impl,  //!< Native int128_t implementation.
+    cairo_impl,   //!< cairo wideint implementation
+    ld_impl,      //!< long double implementation
+  };
+
+  /// Type tag for this implementation.
+  static const enum impl_type implementation = cairo_impl;
+
+  /// Default constructor
   inline int64x64_t ()
   {
     _v.hi = 0;
     _v.lo = 0;
   }
-  inline int64x64_t (double value)
-  {
-#define HPCAIRO_MAX_64 18446744073709551615.0
-    double fhi = std::floor (value);
-    int64_t hi = lround (fhi);
-    uint64_t lo = (uint64_t)((value - fhi) * HPCAIRO_MAX_64);
+  /**@{*/
+  /**
+   * Construct from a floating point value.
+   *
+   * \param [in] value floating value to represent
+   */
+  inline int64x64_t (const double value)
+  {
+    const int64x64_t tmp ((long double)value);
+    _v = tmp._v;
+  }
+  inline int64x64_t (const long double value)
+  {
+    const bool negative = value < 0;
+    const long double v = negative ? -value : value;
+
+    long double fhi;
+    long double flo = std::modf (v, &fhi);
+    // Add 0.5 to round, which improves the last count
+    // This breaks these tests:
+    //   TestSuite devices-mesh-dot11s-regression
+    //   TestSuite devices-mesh-flame-regression
+    //   TestSuite routing-aodv-regression
+    //   TestSuite routing-olsr-regression
+    // Setting round = 0; breaks:
+    //   TestSuite int64x64
+    const long double round = 0.5;
+    flo = flo * HP_MAX_64 + round;
+    cairo_int64_t  hi = fhi;
+    const cairo_uint64_t lo = flo;
+    if (flo >= HP_MAX_64)
+      {
+	// conversion to uint64 rolled over
+	++hi;
+      }
     _v.hi = hi;
     _v.lo = lo;
-#undef HPCAIRO_MAX_64
+    _v = negative ? _cairo_int128_negate (_v) : _v;
   }
-  inline int64x64_t (int v)
+  /**@}*/
+
+  /**@{*/
+  /**
+   * Construct from an integral type.
+   *
+   * \param [in] v integer value to represent
+   */
+  inline int64x64_t (const int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (long int v)
+  inline int64x64_t (const long int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (long long int v)
+  inline int64x64_t (const long long int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (unsigned int v)
+  inline int64x64_t (const unsigned int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (unsigned long int v)
+  inline int64x64_t (const unsigned long int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (unsigned long long int v)
+  inline int64x64_t (const unsigned long long int v)
   {
     _v.hi = v;
     _v.lo = 0;
   }
-  inline int64x64_t (int64_t hi, uint64_t lo)
+  /**@}*/
+  /**
+   * Construct from explicit high and low values.
+   *
+   * \param [in] hi Integer portion.
+   * \param [in] lo Fractional portion, already scaled to HP_MAX_64.
+   */
+  explicit inline int64x64_t (const int64_t hi, const uint64_t lo)
   {
     _v.hi = hi;
     _v.lo = lo;
   }
 
-  inline int64x64_t (const int64x64_t &o)
+  /**
+   * Copy constructor.
+   *
+   * \param [in] o Value to copy.
+   */
+  inline int64x64_t (const int64x64_t & o)
     : _v (o._v) {}
-  inline int64x64_t &operator = (const int64x64_t &o)
+  /**
+   * Assignment.
+   *
+   * \param [in] o Value to assign to this int64x64_t.
+   */
+  inline int64x64_t & operator = (const int64x64_t & o)
   {
     _v = o._v;
     return *this;
   }
 
+  /**
+   * Get this value as a double.
+   *
+   * \return This value in floating form.
+   */
   inline double GetDouble (void) const
   {
-#define HPCAIRO_MAX_64 18446744073709551615.0
-    bool is_negative = IsNegative ();
-    cairo_int128_t value = is_negative ? _cairo_int128_negate (_v) : _v;
-    double flo = value.lo;
-    flo /= HPCAIRO_MAX_64;
-    double retval = value.hi;
+    const bool negative = _cairo_int128_negative (_v);
+    const cairo_int128_t value = negative ? _cairo_int128_negate (_v) : _v;
+    const long double fhi = value.hi;
+    const long double flo = value.lo / HP_MAX_64;
+    long double retval = fhi;
     retval += flo;
-    retval = is_negative ? -retval : retval;
+    retval = negative ? -retval : retval;
     return retval;
-#undef HPCAIRO_MAX_64
   }
+  /**
+   * Get the integer portion.
+   *
+   * \return The integer portion of this value.
+   */
   inline int64_t GetHigh (void) const
   {
     return (int64_t)_v.hi;
   }
+  /**
+   * Get the fractional portion of this value, unscaled.
+   *
+   * \return The fractional portion, unscaled, as an integer.
+   */
   inline uint64_t GetLow (void) const
   {
     return _v.lo;
   }
 
-  void MulByInvert (const int64x64_t &o);
-
-  static int64x64_t Invert (uint64_t v);
+  /**
+   * Multiply this value by a Q0.128 value, presumably representing an inverse,
+   * completing a division operation.
+   *
+   * \param [in] o The inverse operand.
+   *
+   * \see Invert
+   */
+  void MulByInvert (const int64x64_t & o);
+
+  /**
+   * Compute the inverse of an integer value.
+   *
+   * Ordinary division by an integer would be limited to 64 bits of precsion.
+   * Instead, we multiply by the 128-bit inverse of the divisor.
+   * This function computes the inverse to 128-bit precision.
+   * MulByInvert() then completes the division.
+   *
+   * (Really this should be a separate type representing Q0.128.)
+   *
+   * \param [in] v The value to compute the inverse of.
+   * \return A Q0.128 representation of the inverse.
+   */
+  static int64x64_t Invert (const uint64_t v);
 
 private:
-  friend bool operator == (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator != (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator < (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator > (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator + (const int64x64_t &lhs);
-  friend int64x64_t operator - (const int64x64_t &lhs);
-  friend int64x64_t operator ! (const int64x64_t &lhs);
-  void Mul (const int64x64_t &o);
-  void Div (const int64x64_t &o);
-  static cairo_uint128_t  Umul (cairo_uint128_t a, cairo_uint128_t b);
-  static cairo_uint128_t Udiv (cairo_uint128_t a, cairo_uint128_t b);
-  static cairo_uint128_t UmulByInvert (cairo_uint128_t a, cairo_uint128_t b);
-  inline bool IsNegative (void) const
-  {
-    int64_t hi = _v.hi;
-    return hi < 0;
-  }
-  inline void Negate (void)
-  {
-    _v.lo = ~_v.lo;
-    _v.hi = ~_v.hi;
-    if (++_v.lo == 0)
-      {
-        ++_v.hi;
-      }
-  }
-  inline int Compare (const int64x64_t &o) const
-  {
-    int status;
-    int64x64_t tmp = *this;
-    tmp -= o;
-    status = (((int64_t)(tmp)._v.hi) < 0) ? -1 :
-      (((tmp)._v.hi == 0 && (tmp)._v.lo == 0)) ? 0 : 1;
-    return status;
-  }
-  cairo_int128_t _v;
-};
-
-inline bool operator == (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v.hi == rhs._v.hi && lhs._v.lo == lhs._v.lo;
-}
+  friend bool         operator == (const int64x64_t & lhs, const int64x64_t & rhs);
 
-inline bool operator != (const int64x64_t &lhs, const int64x64_t &rhs)
+  friend bool         operator <  (const int64x64_t & lhs, const int64x64_t & rhs);
+  friend bool         operator >  (const int64x64_t & lhs, const int64x64_t & rhs);
+  
+  friend int64x64_t & operator += (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator -= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator *= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator /= (      int64x64_t & lhs, const int64x64_t & rhs);
+
+  friend int64x64_t   operator -  (const int64x64_t & lhs);
+  friend int64x64_t   operator !  (const int64x64_t & lhs);
+
+  /**
+   * Implement `*=`.
+   *
+   * \param [in] o The other factor.
+   */   
+  void Mul (const int64x64_t & o);
+  /**
+   * Implement `/=`.
+   *
+   * \param [in] o The divisor.
+   */
+  void Div (const int64x64_t & o);
+  /**
+   * Unsigned multiplication of Q64.64 values.
+   *
+   * Mathematically this should produce a Q128.128 value;
+   * we keep the central 128 bits, representing the Q64.64 result.
+   * We assert on integer overflow beyond the 64-bit integer portion.
+   *
+   * \param [in] a First factor.
+   * \param [in] b Second factor.
+   * \return The Q64.64 product.
+   *
+   * \internal
+   *
+   * It might be tempting to just use \pname{a} `*` \pname{b}
+   * and be done with it, but it's not that simple.  With \pname{a}
+   * and \pname{b} as 128-bit integers, \pname{a} `*` \pname{b}
+   * mathematically produces a 256-bit result, which the computer
+   * truncates to the lowest 128 bits.  In our case, where \pname{a}
+   * and \pname{b} are interpreted as Q64.64 fixed point numbers,
+   * the multiplication mathematically produces a Q128.128 fixed point number.
+   * We want the middle 128 bits from the result, truncating both the
+   * high and low 64 bits.  To achieve this, we carry out the multiplication
+   * explicitly with 64-bit operands and 128-bit intermediate results.
+   */
+  static cairo_uint128_t Umul (const cairo_uint128_t a, const cairo_uint128_t b);
+  /**
+   * Unsigned division of Q64.64 values.
+   *
+   * \param [in] a Numerator.
+   * \param [in] b Denominator.
+   * \return The Q64.64 representation of `a / b`
+   */
+  static cairo_uint128_t Udiv (const cairo_uint128_t a, const cairo_uint128_t b);
+  /**
+   * Unsigned multiplication of Q64.64 and Q0.128 values.
+   *
+   * \param [in] a The numerator, a Q64.64 value.
+   * \param [in] b The inverse of the denominator, a Q0.128 value
+   * \return The product `a * b`, representing the ration `a / b^-1`
+   *
+   * \see Invert
+   */
+  static cairo_uint128_t UmulByInvert (const cairo_uint128_t a, const cairo_uint128_t b);
+
+  cairo_int128_t _v;  //!< The Q64.64 value.
+
+};  // class int64x64_t
+
+
+/**
+ * \ingroup highprec
+ * Equality operator.
+ */
+inline bool operator == (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return _cairo_int128_eq (lhs._v, rhs._v);
+}
+/**
+ * \ingroup highprec
+ * Less than operator
+ */
+inline bool operator < (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return _cairo_int128_lt (lhs._v, rhs._v);
+}
+/**
+ * \ingroup highprec
+ * Greater operator
+ */
+inline bool operator > (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return _cairo_int128_gt (lhs._v, rhs._v);
+}
+
+/**
+ * \ingroup highprec
+ * Compound addition operator
+ */
+inline int64x64_t & operator += (int64x64_t & lhs, const int64x64_t & rhs)
 {
-  return !(lhs == rhs);
-}
-
-inline bool operator < (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs.Compare (rhs) < 0;
-}
-inline bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs.Compare (rhs) <= 0;
-}
-
-inline bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs.Compare (rhs) >= 0;
-}
-inline bool operator > (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs.Compare (rhs) > 0;
-}
-inline int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs)
-{
-#if Int64x64_CAIRO_ASM
-  asm ("mov 0(%1),%%eax\n\t"
-       "add %%eax,0(%0)\n\t"
-       "mov 4(%1),%%eax\n\t"
-       "adc %%eax,4(%0)\n\t"
-       "mov 8(%1),%%eax\n\t"
-       "adc %%eax,8(%0)\n\t"
-       "mov 12(%1),%%eax\n\t"
-       "adc %%eax,12(%0)\n\t"
-       : 
-       : "r" (&lhs._v), "r" (&rhs._v) 
-       : "%eax", "cc");
-#else
-  lhs._v.hi += rhs._v.hi;
-  lhs._v.lo += rhs._v.lo;
-  if (lhs._v.lo < rhs._v.lo)
-    {
-      lhs._v.hi++;
-    }
-#endif
+  lhs._v = _cairo_int128_add( lhs._v, rhs._v );
   return lhs;
 }
-inline int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound subtraction operator
+ */
+inline int64x64_t & operator -= (int64x64_t & lhs, const int64x64_t & rhs)
 {
-#if Int64x64_CAIRO_ASM
-  asm ("mov 0(%1),%%eax\n\t"
-       "sub %%eax,0(%0)\n\t"
-       "mov 4(%1),%%eax\n\t"
-       "sbb %%eax,4(%0)\n\t"
-       "mov 8(%1),%%eax\n\t"
-       "sbb %%eax,8(%0)\n\t"
-       "mov 12(%1),%%eax\n\t"
-       "sbb %%eax,12(%0)\n\t"
-       : 
-       : "r" (&lhs._v), "r" (&rhs._v) 
-       : "%eax", "cc");
-#else
-  lhs._v.hi -= rhs._v.hi;
-  lhs._v.lo -= rhs._v.lo;
-  if (lhs._v.lo > rhs._v.lo)
-    {
-      lhs._v.hi--;
-    }
-#endif
+  lhs._v = _cairo_int128_sub( lhs._v, rhs._v );
   return lhs;
 }
-inline int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound multiplication operator
+ */
+inline int64x64_t & operator *= (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs.Mul (rhs);
   return lhs;
 }
-inline int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound division operator
+ */
+inline int64x64_t & operator /= (int64x64_t & lhs, const int64x64_t & rhs)
 {
   lhs.Div (rhs);
   return lhs;
 }
 
-inline int64x64_t operator + (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary plus operator
+ */
+inline int64x64_t operator + (const int64x64_t & lhs)
 {
   return lhs;
 }
-
-inline int64x64_t operator - (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary negation operator (change sign operator)
+ */
+inline int64x64_t operator - (const int64x64_t & lhs)
 {
   int64x64_t tmp = lhs;
-  tmp.Negate ();
+  tmp._v = _cairo_int128_negate (tmp._v);
   return tmp;
 }
-
-inline int64x64_t operator ! (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Logical not operator
+ */
+inline int64x64_t operator ! (const int64x64_t & lhs)
 {
-  return (lhs._v.hi == 0 && lhs._v.lo == 0) ? int64x64_t (1, 0) : int64x64_t ();
+  return (lhs == int64x64_t ()) ? int64x64_t (1, 0) : int64x64_t ();
 }
 
+
 } // namespace ns3
 
 #endif /* INT64X64_CAIRO_H */
diff -Naur ns-3.19/src/core/model/int64x64.cc ns-3.20/src/core/model/int64x64.cc
--- ns-3.19/src/core/model/int64x64.cc	2014-06-17 10:34:00.595635449 -0700
+++ ns-3.20/src/core/model/int64x64.cc	2014-06-17 10:33:13.925995715 -0700
@@ -14,77 +14,159 @@
 
 namespace ns3 {
 
-static uint8_t MostSignificantDigit (uint64_t value)
-{
-  uint8_t n = 0;
-  do
-    {
-      n++;
-      value /= 10;
-    } while (value != 0);
-  return n;
-}
-
-static uint64_t PowerOfTen (uint8_t n)
-{
-  uint64_t retval = 1;
-  while (n > 0)
-    {
-      retval *= 10;
-      n--;
-    }
-  return retval;
-}
-
+/**
+ * \internal
+ * This algorithm is exact to the precision requested, up to the full
+ * 64 decimal digits required to exactly represent a 64-bit fraction.
+ *
+ * Proper rounding turns out to be surprisingly hard.
+ * In `y.xxxx5|6`, where the `|` marks follows the last output digit,
+ * rounding the `5|6` to `6|` is straightforward.  However,
+ * rounding `y.xxx99|6` should result in `y.xx100|`.  Notice the
+ * effect of rounding percolates to higher digits.
+ * We accumulate the output digits in a string, then carry out
+ * the rounding in the string directly.
+ */
 std::ostream &operator << (std::ostream &os, const int64x64_t &value)
 {
-  int64_t hi = value.GetHigh ();
+  const bool negative = (value < 0);
+  const int64x64_t absVal = (negative ? -value : value);
+  
+  int64_t hi = absVal.GetHigh ();
 
   // Save stream format flags
+  const std::streamsize precision = os.precision ();
   std::ios_base::fmtflags ff = os.flags ();
+  const bool floatfield = os.flags () & std::ios_base::floatfield;
+  os << std::setw (1) << std::noshowpos;
+  
+  os << std::right << (negative ? "-" : "+");
+
+  std::ostringstream oss;
+  oss << hi << ".";  // collect the digits here so we can round properly
+
 
-  { /// \internal
-    /// See \bugid{1737}:  gcc libstc++ 4.2 bug
-    if (hi == 0)
-      { 
-	os << '+';
-      }
-    else
-      {
-	os << std::showpos;
-      }
-  }
+  int64x64_t low(0, absVal.GetLow ());
+  int places = 0;    // Number of decimal places printed so far
+  bool more = true;  // Should we print more digits?
+
+#define HEXHILOW(hi, lo) \
+  std::hex << std::setfill ('0') << std::right << " (0x"		\
+	   << std::setw (16) << hi << " "				\
+	   << std::setw (16) << lo					\
+	   << std::dec << std::setfill (' ') << std::left << ")"
+
+  
+  NS_LOG_LOGIC (std::endl
+		<< (floatfield ? " f" : "  ")
+		<< "[" << precision << "] " << hi << ". "
+		<< HEXHILOW (hi, low.GetLow ())
+		);
+
+  int64_t digit;
+  do 
+    {
+      low *= 10;
+      digit = low.GetHigh ();
+      NS_ASSERT_MSG ( (0 <= digit) && (digit <= 9),
+		      "digit " << digit << " out of range [0,9] "
+		      << " streaming out "
+		      << HEXHILOW (value.GetHigh (), value.GetLow ()) );
+      low -= digit;
+
+      oss << std::setw (1) << digit;
+
+      ++places;
+      if (floatfield)
+	{
+	  more = places < precision;
+	}
+      else  // default
+	{
+	  // Full resolution is 20 decimal digits
+	  more = low.GetLow () && (places < 20);
+	}
+
+      NS_LOG_LOGIC ((more ? "+" : " ")
+		    << (floatfield ? "f" : " ")
+		    << "[" << places << "] " << digit
+		    << HEXHILOW (low.GetHigh (), low.GetLow ())
+		    << std::dec << std::setfill (' ' ) << std::left);
+
+    } while (more);
+
+  // Check if we need to round the last printed digit,
+  // based on the first unprinted digit
+  std::string digits = oss.str ();
+  low *= 10;
+  int64_t nextDigit = low.GetHigh ();
+  if ( (nextDigit > 5) || ((nextDigit == 5) && (digit % 2 == 1)) )
+    {
+      // Walk backwards with the carry
+      bool carry = true;
+      for (std::string::reverse_iterator rit = digits.rbegin ();
+	   rit != digits.rend ();
+	   ++rit)
+	{
+	  if (*rit == '.')  // Skip over the decimal point
+	    {
+	      continue ;
+	    }
+	  
+	  ++(*rit);         // Add the carry
+	  if (*rit <= '9')  // Relies on character order...
+	    {
+	      carry = false;
+	      break ;       // Carry complete
+	    }
+	  else
+	    {
+	      *rit = '0';     // Continue carry to next higher digit
+	    }
+	}
+      if (carry)            // If we still have a carry...
+	{
+	  digits.insert (digits.begin (), '1');
+	}
+    }
+  os << digits;
   
-  os << hi << ".";
   os.flags (ff);  // Restore stream flags
-
-  uint64_t low = value.GetLow ();
-  uint8_t msd = MostSignificantDigit (~((uint64_t)0));
-  do
-    {
-      msd--;
-      uint64_t pow = PowerOfTen (msd);
-      uint8_t digit = low / pow;
-      NS_ASSERT (digit < 10);
-      os << (uint16_t) digit;
-      low -= digit * pow;
-    } while (msd > 0 && low > 0);
   return os;
 }
 
-static uint64_t ReadDigits (std::string str)
+static uint64_t ReadHiDigits (std::string str)
 {
   const char *buf = str.c_str ();
   uint64_t retval = 0;
   while (*buf != 0)
     {
       retval *= 10;
-      retval += *buf - 0x30;
+      retval += *buf - '0';
       buf++;
     }
   return retval;
 }
 
+static uint64_t ReadLoDigits (std::string str)
+{
+  int64x64_t low;
+  const int64x64_t round (0, 5);  // Round last place in division
+
+  for (std::string::const_reverse_iterator rit = str.rbegin ();
+       rit != str.rend ();
+       ++rit)
+    {
+      int digit = *rit - '0';
+      NS_ASSERT_MSG ( (0 <= digit) && (digit <= 9),
+		      "digit " << digit << " out of range [0,9]"
+		      << " streaming in low digits \"" << str << "\"");
+      low = (low + digit + round) / 10; 
+    }
+  
+  return low.GetLow ();
+}
+    
 std::istream &operator >> (std::istream &is, int64x64_t &value)
 {
   std::string str;
@@ -121,16 +203,23 @@
   next = str.find (".", cur);
   if (next != std::string::npos)
     {
-      hi = ReadDigits (str.substr (cur, next-cur));
-      lo = ReadDigits (str.substr (next+1, str.size ()-(next+1)));
+      hi = ReadHiDigits (str.substr (cur, next-cur));
+      lo = ReadLoDigits (str.substr (next+1, str.size ()-(next+1)));
+    }
+  else if (cur != std::string::npos)
+    {
+      hi = ReadHiDigits (str.substr (cur, str.size ()-cur));
+      lo = 0;
     }
   else
     {
-      hi = ReadDigits (str.substr (cur, str.size ()-cur));
+      hi = 0;
       lo = 0;
     }
-  hi = negative ? -hi : hi;
+  
   value = int64x64_t (hi, lo);
+  value = negative ? -value : value;
+
   return is;
 }
 
diff -Naur ns-3.19/src/core/model/int64x64-double.h ns-3.20/src/core/model/int64x64-double.h
--- ns-3.19/src/core/model/int64x64-double.h	2014-06-17 10:34:00.595635449 -0700
+++ ns-3.20/src/core/model/int64x64-double.h	2014-06-17 10:33:13.924995722 -0700
@@ -2,18 +2,73 @@
 #if !defined(INT64X64_DOUBLE_H) && (defined (INT64X64_USE_DOUBLE) || defined(PYTHON_SCAN))
 #define INT64X64_DOUBLE_H
 
-#include <iostream>
-#include <cmath>
+#include <stdint.h>
+#include <cmath>  // pow
+#include <utility>  // pair
+
 
 namespace ns3 {
 
+/**
+ * \internal
+ * The implementation documented here uses native long double.
+ */
 class int64x64_t
 {
+  /// Mask for fraction part
+  static const uint64_t    HP_MASK_LO = 0xffffffffffffffffULL;
+  /**
+   * Floating point value of HP_MASK_LO + 1
+   * We really want:
+   * \code
+   *   static const long double HP_MAX_64 = std:pow (2.0L, 64);
+   * \endcode
+   * but we can't call functions in const definitions,
+   * We could make this a static and initialize in int64x64-double.cc or
+   * int64x64.cc, but this requires handling static initialization order
+   * when most of the implementation is inline.  Instead, we resort to
+   * this define.
+   */
+#define HP_MAX_64    (std::pow (2.0L, 64))
+
 public:
+  /**
+   * Type tag for the underlying implementation.
+   *
+   * A few testcases are are sensitive to implementation,
+   * specifically the double implementation.  To handle this,
+   * we expose the underlying implementation type here.
+   */
+  enum impl_type {
+    int128_impl,  //!< Native int128_t implementation.
+    cairo_impl,   //!< cairo wideint implementation
+    ld_impl,      //!< long double implementation
+  };
+
+  /// Type tag for this implementation.
+  static const enum impl_type implementation = ld_impl;
+
+  /// Default constructor
   inline int64x64_t ()
     : _v (0) {}
+  /**@{*/
+  /**
+   * Construct from a floating point value.
+   *
+   * \param [in] v floating value to represent
+   */
   inline int64x64_t (double v)
     : _v (v) {}
+  inline int64x64_t (long double v)
+    : _v (v) {}
+  /**@}*/
+
+  /**@{*/
+  /**
+   * Construct from an integral type.
+   *
+   * \param [in] v integer value to represent
+   */
   inline int64x64_t (int v)
     : _v (v) {}
   inline int64x64_t (long int v)
@@ -26,135 +81,244 @@
     : _v (v) {}
   inline int64x64_t (unsigned long long int v)
     : _v (v) {}
-  inline int64x64_t (int64_t hi, uint64_t lo)
-    : _v (hi) { /** \todo add in lo? */}
+  /**@}*/
+  /**
+   * Construct from explicit high and low values.
+   *
+   * \param [in] hi Integer portion.
+   * \param [in] lo Fractional portion, already scaled to HP_MAX_64.
+   */
+  explicit inline int64x64_t (int64_t hi, uint64_t lo)
+  {
+    const bool negative = hi < 0;
+    const long double fhi = negative ? -hi : hi;
+    const long double flo = lo / HP_MAX_64;
+    _v = negative ? - fhi : fhi;
+    _v += flo;
+    // _v = negative ? -_v : _v;
+  }
 
-  inline int64x64_t (const int64x64_t &o)
+  /**
+   * Copy constructor.
+   *
+   * \param [in] o Value to copy.
+   */
+  inline int64x64_t (const int64x64_t & o)
     : _v (o._v) {}
-  inline int64x64_t &operator = (const int64x64_t &o)
+  /**
+   * Assignment.
+   *
+   * \param [in] o Value to assign to this int64x64_t.
+   */
+  inline int64x64_t & operator = (const int64x64_t & o)
   {
     _v = o._v;
     return *this;
   }
 
+  /**
+   * Get this value as a double.
+   *
+   * \return This value in floating form.
+   */
   inline double GetDouble (void) const
   {
-    return _v;
+    return (double)_v;
   }
+private:
+  /**
+   * Get the high and low portions of this value.
+   *
+   * \return a pair of the high and low words
+   */
+  std::pair<int64_t, uint64_t> GetHighLow (void) const
+    {
+    const bool negative = _v < 0;
+    const long double v = negative ? -_v : _v;
+
+    long double fhi;
+    long double flo = std::modf (v, &fhi);
+    // Add 0.5 to round, which improves the last count
+    // This breaks these tests:
+    //   TestSuite devices-mesh-dot11s-regression
+    //   TestSuite devices-mesh-flame-regression
+    //   TestSuite routing-aodv-regression
+    //   TestSuite routing-olsr-regression
+    // Setting round = 0; breaks:
+    //   TestSuite int64x64
+    const long double round = 0.5;
+    flo = flo * HP_MAX_64 + round;
+    int64_t  hi = fhi;
+    uint64_t lo = flo;
+    if (flo >= HP_MAX_64)
+      {
+	// conversion to uint64 rolled over
+	++hi;
+      }
+    if (negative)
+      {
+	lo = ~lo;
+	hi = ~hi;
+	if (++lo == 0)
+	  {
+	    ++hi;
+	  }
+      }
+    return std::make_pair (hi, lo);
+    }
+public:
+  /**
+   * Get the integer portion.
+   *
+   * \return The integer portion of this value.
+   */
   inline int64_t GetHigh (void) const
   {
-    return (int64_t)std::floor (_v);
+    return GetHighLow ().first;
   }
+  /**
+   * Get the fractional portion of this value, unscaled.
+   *
+   * \return The fractional portion, unscaled, as an integer.
+   */
   inline uint64_t GetLow (void) const
   {
-    /// \todo Generate lo?
-    return 0;
+    return GetHighLow ().second;
   }
 
-  inline void MulByInvert (const int64x64_t &o)
+  /**
+   * Multiply this value by a Q0.128 value, presumably representing an inverse,
+   * completing a division operation.
+   *
+   * \param [in] o The inverse operand.
+   *
+   * \note There is no difference between Q64.64 and Q0.128 in this implementation,
+   * so this function is a simple multiply.
+   */
+  inline void MulByInvert (const int64x64_t & o)
   {
     _v *= o._v;
   }
 
+  /**
+   * Compute the inverse of an integer value.
+   *
+   * \param [in] v The value to compute the inverse of.
+   * \return The inverse.
+   */
   static inline int64x64_t Invert (uint64_t v)
   {
-    double d = v;
-    return int64x64_t (1/d);
+    int64x64_t tmp ((long double)1 / v);
+    return tmp;
   }
 
 private:
-  friend bool operator == (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator != (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator < (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend bool operator > (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator + (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator - (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator * (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator / (const int64x64_t &lhs, const int64x64_t &rhs);
-  friend int64x64_t operator + (const int64x64_t &lhs);
-  friend int64x64_t operator - (const int64x64_t &lhs);
-  friend int64x64_t operator ! (const int64x64_t &lhs);
+  friend bool         operator == (const int64x64_t & lhs, const int64x64_t & rhs);
 
-  double _v;
-};
+  friend bool         operator <  (const int64x64_t & lhs, const int64x64_t & rhs);
+  friend bool         operator >  (const int64x64_t & lhs, const int64x64_t & rhs);
+  
+  friend int64x64_t & operator += (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator -= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator *= (      int64x64_t & lhs, const int64x64_t & rhs);
+  friend int64x64_t & operator /= (      int64x64_t & lhs, const int64x64_t & rhs);
 
-inline bool operator == (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v == rhs._v;
-}
+  friend int64x64_t   operator -  (const int64x64_t & lhs);
+  friend int64x64_t   operator !  (const int64x64_t & lhs);
 
-inline bool operator != (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v != rhs._v;
-}
+  long double _v;  //!< The Q64.64 value.
+
+};  // class int64x64_t
 
-inline bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs)
-{
-  return lhs._v <= rhs._v;
-}
 
-inline bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Equality operator.
+ */
+inline bool operator == (const int64x64_t & lhs, const int64x64_t & rhs)
 {
-  return lhs._v >= rhs._v;
+  return lhs._v == rhs._v;
 }
-inline bool operator < (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Less than operator
+ */
+inline bool operator < (const int64x64_t & lhs, const int64x64_t & rhs)
 {
   return lhs._v < rhs._v;
 }
-inline bool operator > (const int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Greater operator
+ */
+inline bool operator > (const int64x64_t & lhs, const int64x64_t & rhs)
 {
   return lhs._v > rhs._v;
 }
-inline int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs)
+
+/**
+ * \ingroup highprec
+ * Compound addition operator
+ */
+inline int64x64_t & operator += (int64x64_t & lhs, const int64x64_t & rhs)
 {
-  double tmp = lhs._v;
-  tmp += rhs._v;
-  lhs = int64x64_t (tmp);
+  lhs._v += rhs._v;
   return lhs;
 }
-inline int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound subtraction operator
+ */
+inline int64x64_t & operator -= (int64x64_t & lhs, const int64x64_t & rhs)
 {
-  double tmp = lhs._v;
-  tmp -= rhs._v;
-  lhs = int64x64_t (tmp);
+  lhs._v -= rhs._v;
   return lhs;
 }
-inline int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound multiplication operator
+ */
+inline int64x64_t & operator *= (int64x64_t & lhs, const int64x64_t & rhs)
 {
-  double tmp = lhs._v;
-  tmp *= rhs._v;
-  lhs = int64x64_t (tmp);
+  lhs._v *= rhs._v;
   return lhs;
 }
-inline int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs)
+/**
+ * \ingroup highprec
+ * Compound division operator
+ */
+inline int64x64_t & operator /= (int64x64_t & lhs, const int64x64_t & rhs)
 {
-  double tmp = lhs._v;
-  tmp /= rhs._v;
-  lhs = int64x64_t (tmp);
+  lhs._v /= rhs._v;
   return lhs;
 }
 
-inline int64x64_t operator + (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary plus operator
+ */
+inline int64x64_t operator + (const int64x64_t & lhs)
 {
   return lhs;
 }
-
-inline int64x64_t operator - (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Unary negation operator (change sign operator)
+ */
+inline int64x64_t operator - (const int64x64_t & lhs)
 {
   return int64x64_t (-lhs._v);
 }
-
-inline int64x64_t operator ! (const int64x64_t &lhs)
+/**
+ * \ingroup highprec
+ * Logical not operator
+ */
+inline int64x64_t operator ! (const int64x64_t & lhs)
 {
   return int64x64_t (!lhs._v);
 }
 
+
 } // namespace ns3
 
 #endif /* INT64X64_DOUBLE_H */
diff -Naur ns-3.19/src/core/model/int64x64.h ns-3.20/src/core/model/int64x64.h
--- ns-3.19/src/core/model/int64x64.h	2014-06-17 10:34:00.596635442 -0700
+++ ns-3.20/src/core/model/int64x64.h	2014-06-17 10:33:13.925995715 -0700
@@ -3,95 +3,204 @@
 
 #include "ns3/core-config.h"
 
-#if defined (INT64X64_USE_DOUBLE) || defined (PYTHON_SCAN)
-#include "int64x64-double.h"
-#elif defined (INT64X64_USE_CAIRO)
-#include "int64x64-cairo.h"
-#elif defined (INT64X64_USE_128)
+// Order is important here, as it determines which implementation
+// will generate doxygen API docs.  This order mimics the
+// selection logic in wscript, so we generate docs from the
+// implementation actually chosen by the configuration.
+#if defined (INT64X64_USE_128) && !defined (PYTHON_SCAN)
 #include "int64x64-128.h"
+#elif defined (INT64X64_USE_CAIRO) && !defined (PYTHON_SCAN)
+#include "int64x64-cairo.h"
+#elif defined (INT64X64_USE_DOUBLE) || defined (PYTHON_SCAN)
+#include "int64x64-double.h"
 #endif
 
 #include <iostream>
 
 namespace ns3 {
 
-#define INT64X64_OP_ARITH_TYPE(op,type)                                 \
-  inline int64x64_t operator op (const int64x64_t &lhs, const type rhs) \
-  {                                                                     \
-    int64x64_t tmp = lhs;                                               \
-    tmp op ## = int64x64_t (rhs);                                         \
-    return tmp;                                                         \
-  }                                                                     \
-  inline int64x64_t operator op (const type lhs, const int64x64_t &rhs) \
-  {                                                                     \
-    int64x64_t tmp = int64x64_t (lhs);                                  \
-    tmp op ## = rhs;                                                      \
-    return tmp;                                                         \
-  }
-
-#define INT64X64_OP_ARITH(op)                                           \
-  inline int64x64_t operator op (const int64x64_t &lhs, const int64x64_t &rhs) \
-  {                                                                     \
-    int64x64_t tmp = lhs;                                               \
-    tmp op ## = rhs;                                                      \
-    return tmp;                                                         \
-  }                                                                     \
-  INT64X64_OP_ARITH_TYPE (op,double)                                     \
-  INT64X64_OP_ARITH_TYPE (op,signed char)                              \
-  INT64X64_OP_ARITH_TYPE (op,signed short)                             \
-  INT64X64_OP_ARITH_TYPE (op,signed int)                               \
-  INT64X64_OP_ARITH_TYPE (op,signed long int)                          \
-  INT64X64_OP_ARITH_TYPE (op,signed long long int)                     \
-  INT64X64_OP_ARITH_TYPE (op,unsigned char)                            \
-  INT64X64_OP_ARITH_TYPE (op,unsigned short)                           \
-  INT64X64_OP_ARITH_TYPE (op,unsigned int)                             \
-  INT64X64_OP_ARITH_TYPE (op,unsigned long int)                        \
-  INT64X64_OP_ARITH_TYPE (op,unsigned long long int)
-
-#define INT64X64_OP_CMP_TYPE(op,type)                                   \
-  inline bool operator op (const int64x64_t &lhs, const type &rhs)      \
-  {                                                                     \
-    return lhs op int64x64_t (rhs);                                     \
-  }                                                                     \
-  inline bool operator op (const type &lhs, const int64x64_t &rhs)      \
-  {                                                                     \
-    return int64x64_t (lhs) op rhs;                                     \
-  }
-
-#define INT64X64_OP_CMP(op)                                             \
-  INT64X64_OP_CMP_TYPE (op,double)                                       \
-  INT64X64_OP_CMP_TYPE (op,signed int)                                 \
-  INT64X64_OP_CMP_TYPE (op,signed long int)                            \
-  INT64X64_OP_CMP_TYPE (op,signed long long int)                       \
-  INT64X64_OP_CMP_TYPE (op,unsigned int)                               \
-  INT64X64_OP_CMP_TYPE (op,unsigned long int)                          \
-  INT64X64_OP_CMP_TYPE (op,unsigned long long int)
-
-
-INT64X64_OP_ARITH (+)
-INT64X64_OP_ARITH (-)
-INT64X64_OP_ARITH (*)
-INT64X64_OP_ARITH (/)
-INT64X64_OP_CMP (==)
-INT64X64_OP_CMP (!=)
-INT64X64_OP_CMP (<)
-INT64X64_OP_CMP (<=)
-INT64X64_OP_CMP (>)
-INT64X64_OP_CMP (>=)
-
+/**
+ * \ingroup core
+ * \defgroup highprec High Precision Q64.64
+ *
+ * Functions and class for high precision Q64.64 fixed point arithmetic.
+ */
+  
+/**
+ * \ingroup highprec
+ * \class int64x64_t
+ * 
+ * High precision numerical type, implementing Q64.64 fixed precision.
+ *
+ * A Q64.64 fixed precision number consists of:
+ *
+ *   Bits | Function
+ *   ---- | --------
+ *     1  | Sign bit
+ *    63  | Integer portion
+ *    64  | Fractional portion
+ *
+ * The `high` word consists of the sign bit and integer value;
+ * the `low` word is the fractional part, unscaled.
+ *
+ * All standard arithmetic operations are supported:
+ *
+ *   Category    | Operators
+ *   ----------- | ---------
+ *   Computation | `+`, `+=`, `-`, `-=`, `*`, `*=`, `/`, `/=`
+ *   Comparison  | `==`, `!=`, `<`, `<=`, `>`, `>=`
+ *   Unary       | `+`, `-`, `!`
+ */
+
+
+/**
+ * \ingroup core
+ * \defgroup highprec High Precision Q64.64
+ *
+ * Functions and class for high precision Q64.64 fixed point arithmetic.
+ */
+  
+/**
+ * \ingroup highprec
+ * \class int64x64_t
+ * 
+ * High precision numerical type, implementing Q64.64 fixed precision.
+ *
+ * A Q64.64 fixed precision number consists of:
+ *
+ *   Bits | Function
+ *   ---- | --------
+ *     1  | Sign bit
+ *    63  | Integer portion
+ *    64  | Fractional portion
+ *
+ * The `high` word consists of the sign bit and integer value;
+ * the `low` word is the fractional part, unscaled.
+ *
+ * All standard arithmetic operations are supported:
+ *
+ *   Category    | Operators
+ *   ----------- | ---------
+ *   Computation | `+`, `+=`, `-`, `-=`, `*`, `*=`, `/`, `/=`
+ *   Comparison  | `==`, `!=`, `<`, `<=`, `>`, `>=`
+ *   Unary       | `+`, `-`, `!`
+ */
+
+
+/**
+ * \ingroup highprec
+ * Addition operator.
+ */
+inline
+int64x64_t operator + (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  int64x64_t tmp = lhs;
+  tmp += rhs;
+  return tmp;
+}
+/**
+ * \ingroup highprec
+ * Subtraction operator.
+ */
+inline
+int64x64_t operator - (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  int64x64_t tmp = lhs;
+  tmp -= rhs;
+  return tmp;
+}
+/**
+ * \ingroup highprec
+ * Multiplication operator.
+ */
+inline
+int64x64_t operator * (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  int64x64_t tmp = lhs;
+  tmp *= rhs;
+  return tmp;
+}
+/**
+ * \ingroup highprec
+ * Division operator.
+ */
+inline
+int64x64_t operator / (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  int64x64_t tmp = lhs;
+  tmp /= rhs;
+  return tmp;
+}
+/**
+ * \ingroup highprec
+ * Inequality operator
+ */
+inline bool operator != (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return !(lhs == rhs);
+}
+/**
+ * \ingroup highprec
+ * Less or equal operator
+ */
+inline bool operator <= (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return !(lhs > rhs);
+}
+/**
+ * \ingroup highprec
+ * Greater or equal operator
+ */
+inline bool operator >= (const int64x64_t & lhs, const int64x64_t & rhs)
+{
+  return !(lhs < rhs);
+}
+/**
+ * \ingroup highprec
+ * Output streamer for int64x64_t
+ *
+ * Values are printed with the following format flags
+ * (independent of the the stream flags):
+ *   - `showpos`
+ *   - `left`
+ *
+ * The stream `width` is ignored.  If `floatfield` is set,
+ * `precision` decimal places are printed.  If `floatfield` is not set,
+ * all digits of the fractional part are printed, up to the
+ * representation limit of 20 digits; trailing zeros are omitted.
+ */
 std::ostream &operator << (std::ostream &os, const int64x64_t &val);
+/**
+ * \ingroup highprec
+ * Input streamer for int64x64_t
+ */
 std::istream &operator >> (std::istream &is, int64x64_t &val);
 
+/**
+ * \ingroup highprec
+ * Absolute value.
+ */
 inline int64x64_t Abs (const int64x64_t &value)
 {
   return (value < 0) ? -value : value;
 }
 
+/**
+ * \ingroup highprec
+ * Minimum.
+ *
+ * \return The smaller of the arguments.
+ */
 inline int64x64_t Min (const int64x64_t &a, const int64x64_t &b)
 {
   return (a < b) ? a : b;
 }
-
+/**
+ * \ingroup highprec
+ * Maximum.
+ *
+ * \return The larger of the arguments.
+ */
 inline int64x64_t Max (const int64x64_t &a, const int64x64_t &b)
 {
   return (a > b) ? a : b;
diff -Naur ns-3.19/src/core/model/list-scheduler.cc ns-3.20/src/core/model/list-scheduler.cc
--- ns-3.19/src/core/model/list-scheduler.cc	2014-06-17 10:34:00.596635442 -0700
+++ ns-3.20/src/core/model/list-scheduler.cc	2014-06-17 10:33:13.926995707 -0700
@@ -30,8 +30,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (ListScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ListScheduler);
 
 TypeId
 ListScheduler::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/log.cc ns-3.20/src/core/model/log.cc
--- ns-3.19/src/core/model/log.cc	2014-06-17 10:34:00.597635434 -0700
+++ ns-3.20/src/core/model/log.cc	2014-06-17 10:33:13.928995691 -0700
@@ -36,8 +36,8 @@
 
 namespace ns3 {
 
-LogTimePrinter g_logTimePrinter = 0;
-LogNodePrinter g_logNodePrinter = 0;
+static LogTimePrinter g_logTimePrinter = 0;
+static LogNodePrinter g_logNodePrinter = 0;
 
 typedef std::map<std::string, LogComponent *> ComponentList;
 typedef std::map<std::string, LogComponent *>::iterator ComponentListI;
@@ -84,10 +84,11 @@
 }
 
 
-LogComponent::LogComponent (const std::string & name)
-  : m_levels (0), m_name (name)
+LogComponent::LogComponent (const std::string & name,
+                            const enum LogLevel mask /* = 0 */)
+  : m_levels (0), m_mask (mask), m_name (name)
 {
-  EnvVarCheck (name);
+  EnvVarCheck ();
 
   ComponentList *components = GetComponentList ();
   for (ComponentListI i = components->begin ();
@@ -103,7 +104,7 @@
 }
 
 void
-LogComponent::EnvVarCheck (const std::string & name)
+LogComponent::EnvVarCheck (void)
 {
 #ifdef HAVE_GETENV
   char *envVar = getenv ("NS_LOG");
@@ -112,7 +113,6 @@
       return;
     }
   std::string env = envVar;
-  std::string myName = name;
 
   std::string::size_type cur = 0;
   std::string::size_type next = 0;
@@ -125,7 +125,7 @@
       if (equal == std::string::npos)
         {
           component = tmp;
-          if (component == myName || component == "*" || component == "***")
+          if (component == m_name || component == "*" || component == "***")
             {
               int level = LOG_LEVEL_ALL | LOG_PREFIX_ALL;
               Enable ((enum LogLevel)level);
@@ -135,7 +135,7 @@
       else
         {
           component = tmp.substr (0, equal);
-          if (component == myName || component == "*")
+          if (component == m_name || component == "*")
             {
               int level = 0;
               std::string::size_type cur_lev;
@@ -242,7 +242,7 @@
 
 
 bool 
-LogComponent::IsEnabled (enum LogLevel level) const
+LogComponent::IsEnabled (const enum LogLevel level) const
 {
   //  LogComponentEnableEnvVar ();
   return (level & m_levels) ? 1 : 0;
@@ -254,14 +254,20 @@
   return m_levels == 0;
 }
 
+void
+LogComponent::SetMask (const enum LogLevel level)
+{
+  m_mask |= level;
+}
+
 void 
-LogComponent::Enable (enum LogLevel level)
+LogComponent::Enable (const enum LogLevel level)
 {
-  m_levels |= level;
+  m_levels |= (level & ~m_mask);
 }
 
 void 
-LogComponent::Disable (enum LogLevel level)
+LogComponent::Disable (const enum LogLevel level)
 {
   m_levels &= ~level;
 }
@@ -272,8 +278,9 @@
   return m_name.c_str ();
 }
 
+/* static */
 std::string
-LogComponent::GetLevelLabel(const enum LogLevel level) const
+LogComponent::GetLevelLabel(const enum LogLevel level)
 {
   if (level == LOG_ERROR)
     {
@@ -580,8 +587,7 @@
 
 
 ParameterLogger::ParameterLogger (std::ostream &os)
-  : std::basic_ostream<char> (os.rdbuf ()),  //!< \bugid{1792}
-    m_itemNumber (0),
+  : m_first (true),
     m_os (os)
 {
 }
diff -Naur ns-3.19/src/core/model/log.h ns-3.20/src/core/model/log.h
--- ns-3.19/src/core/model/log.h	2014-06-17 10:34:00.598635426 -0700
+++ ns-3.20/src/core/model/log.h	2014-06-17 10:33:13.928995691 -0700
@@ -26,11 +26,15 @@
 #include <stdint.h>
 #include <map>
 
+#include "log-macros-enabled.h"
+#include "log-macros-disabled.h"
+
 namespace ns3 {
 
 /**
  * \ingroup debugging
  * \defgroup logging Logging
+ *
  * \brief Logging functions and macros
  *
  * LOG functionality: macros which allow developers to
@@ -59,85 +63,90 @@
  * Use NS_LOG_FUNCTION_NOARGS() only in static functions.
  */
 
-
 /**
  *  \ingroup logging
  *
  *  Logging severity classes and levels.
  */
 enum LogLevel {
-  LOG_NONE           = 0x00000000, // no logging
+  LOG_NONE           = 0x00000000, //!< no logging
 
-  LOG_ERROR          = 0x00000001, // serious error messages only
+  LOG_ERROR          = 0x00000001, //!< serious error messages only
   LOG_LEVEL_ERROR    = 0x00000001,
 
-  LOG_WARN           = 0x00000002, // warning messages
+  LOG_WARN           = 0x00000002, //!< warning messages
   LOG_LEVEL_WARN     = 0x00000003,
 
-  LOG_DEBUG          = 0x00000004, // rare ad-hoc debug messages
+  LOG_DEBUG          = 0x00000004, //!< rare ad-hoc debug messages
   LOG_LEVEL_DEBUG    = 0x00000007,
 
-  LOG_INFO           = 0x00000008, // informational messages (e.g., banners)
+  LOG_INFO           = 0x00000008, //!< informational messages (e.g., banners)
   LOG_LEVEL_INFO     = 0x0000000f,
 
-  LOG_FUNCTION       = 0x00000010, // function tracing
+  LOG_FUNCTION       = 0x00000010, //!< function tracing
   LOG_LEVEL_FUNCTION = 0x0000001f, 
 
-  LOG_LOGIC          = 0x00000020, // control flow tracing within functions
+  LOG_LOGIC          = 0x00000020, //!< control flow tracing within functions
   LOG_LEVEL_LOGIC    = 0x0000003f,
 
-  LOG_ALL            = 0x0fffffff, // print everything
+  LOG_ALL            = 0x0fffffff, //!< print everything
   LOG_LEVEL_ALL      = LOG_ALL,
 
-  LOG_PREFIX_FUNC    = 0x80000000, // prefix all trace prints with function
-  LOG_PREFIX_TIME    = 0x40000000, // prefix all trace prints with simulation time
-  LOG_PREFIX_NODE    = 0x20000000, // prefix all trace prints with simulation node
-  LOG_PREFIX_LEVEL   = 0x10000000, // prefix all trace prints with log level (severity)
-  LOG_PREFIX_ALL     = 0xf0000000  // all prefixes
+  LOG_PREFIX_FUNC    = 0x80000000, //!< prefix all trace prints with function
+  LOG_PREFIX_TIME    = 0x40000000, //!< prefix all trace prints with simulation time
+  LOG_PREFIX_NODE    = 0x20000000, //!< prefix all trace prints with simulation node
+  LOG_PREFIX_LEVEL   = 0x10000000, //!< prefix all trace prints with log level (severity)
+  LOG_PREFIX_ALL     = 0xf0000000  //!< all prefixes
 };
 
 /**
- * \param name a log component name
- * \param level a logging level
  * \ingroup logging
  *
  * Enable the logging output associated with that log component.
+ *
  * The logging output can be later disabled with a call
  * to ns3::LogComponentDisable.
  *
  * Same as running your program with the NS_LOG environment
  * variable set as NS_LOG='name=level'
+ *
+ * \param name a log component name
+ * \param level a logging level
  */
 void LogComponentEnable (char const *name, enum LogLevel level);
 
 /**
- * \param level a logging level
  * \ingroup logging
  *
  * Enable the logging output for all registered log components.
  *
  * Same as running your program with the NS_LOG environment
  * variable set as NS_LOG='*=level'
+ *
+ * \param level a logging level
  */
 void LogComponentEnableAll (enum LogLevel level);
 
 
 /**
- * \param name a log component name
- * \param level a logging level
  * \ingroup logging
  *
  * Disable the logging output associated with that log component.
+ *
  * The logging output can be later re-enabled with a call
  * to ns3::LogComponentEnable.
+ *
+ * \param name a log component name
+ * \param level a logging level
  */
 void LogComponentDisable (char const *name, enum LogLevel level);
 
 /**
- * \param level a logging level
  * \ingroup logging
  *
  * Disable all logging for all components.
+ *
+ * \param level a logging level
  */
 void LogComponentDisableAll (enum LogLevel level);
 
@@ -146,7 +155,6 @@
 
 /**
  * \ingroup logging
- * \param name a string
  *
  * Define a Log component with a specific name.
  *
@@ -157,143 +165,60 @@
  * ns3::LogComponentDisable functions or with the NS_LOG
  * environment variable.
  *
- * To create a log component Foo, at the top of foo.cc:
- *
- * \code
- *   NS_LOG_COMPONENT_DEFINE ("Foo")
- *     ;
- * \endcode
- *
- * Note the closing ';' is not on the same line;  this prevents 
- * Doxygen from spuriously warning that the macro invocation is undocumented.
- 
+ * \param name a string
  */
 #define NS_LOG_COMPONENT_DEFINE(name)                           \
   static ns3::LogComponent g_log = ns3::LogComponent (name)
 
 /**
  * \ingroup logging
- * Append the simulation time to a log message.
- */
-#define NS_LOG_APPEND_TIME_PREFIX                               \
-  if (g_log.IsEnabled (ns3::LOG_PREFIX_TIME))                   \
-    {                                                           \
-      ns3::LogTimePrinter printer = ns3::LogGetTimePrinter ();  \
-      if (printer != 0)                                         \
-        {                                                       \
-          (*printer)(std::clog);                                \
-          std::clog << " ";                                     \
-        }                                                       \
-    }
-
-/**
- * \ingroup logging
- * Append the simulation node id to a log message.
- */
-#define NS_LOG_APPEND_NODE_PREFIX                               \
-  if (g_log.IsEnabled (ns3::LOG_PREFIX_NODE))                   \
-    {                                                           \
-      ns3::LogNodePrinter printer = ns3::LogGetNodePrinter ();  \
-      if (printer != 0)                                         \
-        {                                                       \
-          (*printer)(std::clog);                                \
-          std::clog << " ";                                     \
-        }                                                       \
-    }
-
-/**
- * \ingroup logging
- * Append the function name to a log message.
- */
-#define NS_LOG_APPEND_FUNC_PREFIX                               \
-  if (g_log.IsEnabled (ns3::LOG_PREFIX_FUNC))                   \
-    {                                                           \
-      std::clog << g_log.Name () << ":" <<                      \
-      __FUNCTION__ << "(): ";                                   \
-    }                                                           \
-
-/**
- * \ingroup logging
- * Append the log severity level to a log message.
- */
-#define NS_LOG_APPEND_LEVEL_PREFIX(level)                       \
-  if (g_log.IsEnabled (ns3::LOG_PREFIX_LEVEL))                  \
-    {                                                           \
-      std::clog << "[" << g_log.GetLevelLabel (level) << "] ";  \
-    }                                                           \
-  
-
-#ifndef NS_LOG_APPEND_CONTEXT
-#define NS_LOG_APPEND_CONTEXT
-#endif /* NS_LOG_APPEND_CONTEXT */
-
-
-
-#ifdef NS3_LOG_ENABLE
-
-
-
-/**
- * \ingroup logging
- * \param level the log level
- * \param msg the message to log
  *
- * This macro allows you to log an arbitrary message at a specific
- * log level. The log message is expected to be a C++ ostream
- * message such as "my string" << aNumber << "my oth stream".
- *
- * Typical usage looks like:
- * \code
- * NS_LOG (LOG_DEBUG, "a number="<<aNumber<<", anotherNumber="<<anotherNumber);
- * \endcode
- */
-#define NS_LOG(level, msg)                                      \
-  do                                                            \
-    {                                                           \
-      if (g_log.IsEnabled (level))                              \
-        {                                                       \
-          NS_LOG_APPEND_TIME_PREFIX;                            \
-          NS_LOG_APPEND_NODE_PREFIX;                            \
-          NS_LOG_APPEND_CONTEXT;                                \
-          NS_LOG_APPEND_FUNC_PREFIX;                            \
-          NS_LOG_APPEND_LEVEL_PREFIX (level);                   \
-          std::clog << msg << std::endl;                        \
-        }                                                       \
-    }                                                           \
-  while (false)
+ * Define a logging component with a mask.
+ *
+ * See LogComponent().
+ *
+ * \param name a string
+ * \param mask the default mask
+ */
+#define NS_LOG_COMPONENT_DEFINE_MASK(name, mask)                \
+  static ns3::LogComponent g_log = ns3::LogComponent (name, mask)
 
 /**
  * \ingroup logging
- * \param msg the message to log
  *
  * Use \ref NS_LOG to output a message of level LOG_ERROR.
+ *
+ * \param msg the message to log
  */
 #define NS_LOG_ERROR(msg) \
   NS_LOG (ns3::LOG_ERROR, msg)
 
 /**
  * \ingroup logging
- * \param msg the message to log
  *
  * Use \ref NS_LOG to output a message of level LOG_WARN.
+ *
+ * \param msg the message to log
  */
 #define NS_LOG_WARN(msg) \
   NS_LOG (ns3::LOG_WARN, msg)
 
 /**
  * \ingroup logging
- * \param msg the message to log
  *
  * Use \ref NS_LOG to output a message of level LOG_DEBUG.
+ *
+ * \param msg the message to log
  */
 #define NS_LOG_DEBUG(msg) \
   NS_LOG (ns3::LOG_DEBUG, msg)
 
 /**
  * \ingroup logging
- * \param msg the message to log
  *
  * Use \ref NS_LOG to output a message of level LOG_INFO.
+ *
+ * \param msg the message to log
  */
 #define NS_LOG_INFO(msg) \
   NS_LOG (ns3::LOG_INFO, msg)
@@ -301,99 +226,13 @@
 /**
  * \ingroup logging
  *
- * Output the name of the function.
+ * Use \ref NS_LOG to output a message of level LOG_LOGIC
  *
- * This should be used only in static functions; most member functions
- * should instead use NS_LOG_FUNCTION().
- */
-#define NS_LOG_FUNCTION_NOARGS()                                \
-  do                                                            \
-    {                                                           \
-      if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
-        {                                                       \
-          NS_LOG_APPEND_TIME_PREFIX;                            \
-          NS_LOG_APPEND_NODE_PREFIX;                            \
-          NS_LOG_APPEND_CONTEXT;                                \
-          std::clog << g_log.Name () << ":"                     \
-                    << __FUNCTION__ << "()" << std::endl;       \
-        }                                                       \
-    }                                                           \
-  while (false)
-
-
-/**
- * \ingroup logging
- * \param parameters the parameters to output.
- *
- * If log level LOG_FUNCTION is enabled, this macro will output
- * all input parameters separated by ", ".
- *
- * Typical usage looks like:
- * \code
- * NS_LOG_FUNCTION (aNumber<<anotherNumber);
- * \endcode
- * And the output will look like:
- * \code
- * Component:Function (aNumber, anotherNumber)
- * \endcode
- *
- * To facilitate function tracing, most functions should begin with
- * (at least) NS_LOG_FUNCTION(this).  Static functions should use
- * NS_LOG_FUNCTION_NOARGS() instead.
- *
- */
-#define NS_LOG_FUNCTION(parameters)                             \
-  do                                                            \
-    {                                                           \
-      if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
-        {                                                       \
-          NS_LOG_APPEND_TIME_PREFIX;                            \
-          NS_LOG_APPEND_NODE_PREFIX;                            \
-          NS_LOG_APPEND_CONTEXT;                                \
-          std::clog << g_log.Name () << ":"                     \
-                    << __FUNCTION__ << "(";                     \
-          ns3::ParameterLogger (std::clog) << parameters;       \
-          std::clog << ")" << std::endl;                        \
-        }                                                       \
-    }                                                           \
-  while (false)
-
-
-/**
- * \ingroup logging
  * \param msg the message to log
- *
- * Use \ref NS_LOG to output a message of level LOG_LOGIC
  */
 #define NS_LOG_LOGIC(msg) \
   NS_LOG (ns3::LOG_LOGIC, msg)
 
-/**
- * \ingroup logging
- * \param msg the message to log
- *
- * Output the requested message unconditionaly.
- */
-#define NS_LOG_UNCOND(msg)              \
-  do                                    \
-    {                                   \
-      std::clog << msg << std::endl;    \
-    }                                   \
-  while (false)
-
-#else /* LOG_ENABLE */
-
-#define NS_LOG(level, msg)
-#define NS_LOG_ERROR(msg)
-#define NS_LOG_WARN(msg)
-#define NS_LOG_DEBUG(msg)
-#define NS_LOG_INFO(msg)
-#define NS_LOG_FUNCTION_NOARGS()
-#define NS_LOG_FUNCTION(msg)
-#define NS_LOG_LOGIC(msg)
-#define NS_LOG_UNCOND(msg)
-
-#endif /* LOG_ENABLE */
 
 namespace ns3 {
 
@@ -416,41 +255,115 @@
 LogNodePrinter LogGetNodePrinter (void);
 
 
-class LogComponent {
+/**
+ * \ingroup logging
+ *
+ * A single log component configuration.
+ */
+class LogComponent
+{
 public:
-  LogComponent (const std::string & name);
-  void EnvVarCheck (const std::string & name);
-  bool IsEnabled (enum LogLevel level) const;
+  /**
+   * Constructor
+   *
+   * \param [in] name the user-visible name for this component.
+   * \param [in] mask LogLevels blocked for this LogComponent.  Blocking
+   *                  a log level helps prevent recursion by logging in
+   *                  functions which help implement the logging facility.
+   */
+  LogComponent (const std::string & name, const enum LogLevel mask = LOG_NONE);
+  /**
+   * Check if this LogComponent is enabled for \pname{level}
+   *
+   * \param [in] level the level to check for.
+   * \return true if \pname{level} is enabled.
+   */
+  bool IsEnabled (const enum LogLevel level) const;
+  /**
+   * Check if all levels are disabled.
+   *
+   * \return true if all levels are disabled.
+   */
   bool IsNoneEnabled (void) const;
-  void Enable (enum LogLevel level);
-  void Disable (enum LogLevel level);
+  /**
+   * Enable this LogComponent at \pname{level}
+   *
+   * \param [in] level the LogLevel to enable.
+   */
+  void Enable (const enum LogLevel level);
+  /**
+   * Disable logging at \pname{level} for this LogComponent.
+   *
+   * \param [in] level the LogLevel to disable.
+   */
+  void Disable (const enum LogLevel level);
+  /**
+   * Get the name of this LogComponent.
+   *
+   * \return the name of this LogComponent.
+   */
   char const *Name (void) const;
-  std::string GetLevelLabel(const enum LogLevel level) const;
+  /**
+   * Get the string label for the given LogLevel.
+   *
+   * \param [in] level the LogLevel to get the label for.
+   * \return the string label for \pname{level}
+   */
+  static std::string GetLevelLabel(const enum LogLevel level);
+  /**
+   * Prevent the enabling of a specific LogLevel.
+   *
+   * \param level the LogLevel to block
+   */
+  void SetMask (const enum LogLevel level);
 private:
-  int32_t     m_levels;
-  std::string m_name;
-};
+  /**
+   * Parse the `NS_LOG` environment variable for options relating to this
+   * LogComponent.
+   */
+  void EnvVarCheck (void);
+  
+  int32_t     m_levels;  //!< Enabled LogLevels
+  int32_t     m_mask;    //!< Blocked LogLevels
+  std::string m_name;    //!< LogComponent name
+
+};  // class LogComponent
 
-class ParameterLogger : public std::ostream
+/**
+ * \ingroup logging
+ *
+ * Insert `, ` when streaming function arguments.
+ */
+class ParameterLogger
 {
-  int m_itemNumber;
-  std::ostream &m_os;
+  bool m_first;        //!< First argument flag, doesn't get `, `.
+  std::ostream &m_os;  //!< Underlying output stream.
 public:
+  /**
+   * Constructor.
+   *
+   * \param [in] os Underlying output stream.
+   */
   ParameterLogger (std::ostream &os);
 
+  /**
+   * Write a function parameter on the output stream,
+   * separating paramters after the first by `,` strings.
+   *
+   * \param [in] param the function parameter
+   */
   template<typename T>
   ParameterLogger& operator<< (T param)
   {
-    switch (m_itemNumber)
+    if (m_first)
       {
-      case 0: // first parameter
         m_os << param;
-        break;
-      default: // parameter following a previous parameter
+        m_first = false;
+      }
+    else
+      {
         m_os << ", " << param;
-        break;
       }
-    m_itemNumber++;
     return *this;
   }
 };
diff -Naur ns-3.19/src/core/model/log-macros-disabled.h ns-3.20/src/core/model/log-macros-disabled.h
--- ns-3.19/src/core/model/log-macros-disabled.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/core/model/log-macros-disabled.h	2014-06-17 10:33:13.927995699 -0700
@@ -0,0 +1,50 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Andrey Mazo
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Andrey Mazo <ahippo@yandex.com>
+ */
+
+#ifndef NS3_LOG_MACROS_DISABLED_H
+#define NS3_LOG_MACROS_DISABLED_H
+
+#ifndef NS3_LOG_ENABLE
+
+#define NS_LOG_NOOP_INTERNAL(msg)           \
+  do                                        \
+    {                                       \
+      if (false)                            \
+        {                                   \
+          std::clog << msg;                 \
+        }                                   \
+    }                                       \
+  while (false)
+
+#define NS_LOG(level, msg) \
+        NS_LOG_NOOP_INTERNAL (msg)
+
+#define NS_LOG_FUNCTION_NOARGS()
+
+#define NS_LOG_FUNCTION(parameters) \
+        NS_LOG_NOOP_INTERNAL (parameters)
+
+#define NS_LOG_UNCOND(msg) \
+        NS_LOG_NOOP_INTERNAL (msg)
+
+
+#endif /* !NS3_LOG_ENABLE */
+
+#endif /* NS3_LOG_MACROS_DISABLED_H */
diff -Naur ns-3.19/src/core/model/log-macros-enabled.h ns-3.20/src/core/model/log-macros-enabled.h
--- ns-3.19/src/core/model/log-macros-enabled.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/core/model/log-macros-enabled.h	2014-06-17 10:33:13.927995699 -0700
@@ -0,0 +1,224 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2006,2007 INRIA
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#ifndef NS3_LOG_MACROS_ENABLED_H
+#define NS3_LOG_MACROS_ENABLED_H
+
+#ifdef NS3_LOG_ENABLE
+
+
+/**
+ * \ingroup logging
+ * Append the simulation time to a log message.
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ */
+#define NS_LOG_APPEND_TIME_PREFIX                               \
+  if (g_log.IsEnabled (ns3::LOG_PREFIX_TIME))                   \
+    {                                                           \
+      ns3::LogTimePrinter printer = ns3::LogGetTimePrinter ();  \
+      if (printer != 0)                                         \
+        {                                                       \
+          (*printer)(std::clog);                                \
+          std::clog << " ";                                     \
+        }                                                       \
+    }
+
+/**
+ * \ingroup logging
+ * Append the simulation node id to a log message.
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ */
+#define NS_LOG_APPEND_NODE_PREFIX                               \
+  if (g_log.IsEnabled (ns3::LOG_PREFIX_NODE))                   \
+    {                                                           \
+      ns3::LogNodePrinter printer = ns3::LogGetNodePrinter ();  \
+      if (printer != 0)                                         \
+        {                                                       \
+          (*printer)(std::clog);                                \
+          std::clog << " ";                                     \
+        }                                                       \
+    }
+
+/**
+ * \ingroup logging
+ * Append the function name to a log message.
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ */
+#define NS_LOG_APPEND_FUNC_PREFIX                               \
+  if (g_log.IsEnabled (ns3::LOG_PREFIX_FUNC))                   \
+    {                                                           \
+      std::clog << g_log.Name () << ":" <<                      \
+      __FUNCTION__ << "(): ";                                   \
+    }                                                           \
+
+/**
+ * \ingroup logging
+ * Append the log severity level to a log message.
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ */
+#define NS_LOG_APPEND_LEVEL_PREFIX(level)                       \
+  if (g_log.IsEnabled (ns3::LOG_PREFIX_LEVEL))                  \
+    {                                                           \
+      std::clog << "[" << g_log.GetLevelLabel (level) << "] ";  \
+    }                                                           \
+
+
+#ifndef NS_LOG_APPEND_CONTEXT
+/**
+ * \ingroup logging
+ * Append the node id to a log message.
+ *
+ * This is implemented locally in `.cc` files because
+ * the the relevant variable is only known there.
+ *
+ * Preferred format is something like (assuming the node id is
+ * accessible from `var`:
+ * \code
+ *   if (var)
+ *     {
+ *       std::clog << "[node " << var->GetObject<Node> ()->GetId () << "] ";
+ *     }
+ * \endcode
+ *
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ *
+ */
+#define NS_LOG_APPEND_CONTEXT
+#endif /* NS_LOG_APPEND_CONTEXT */
+
+
+/**
+ * \ingroup logging
+ *
+ * This macro allows you to log an arbitrary message at a specific
+ * log level.
+ *
+ * The log message is expected to be a C++ ostream
+ * message such as "my string" << aNumber << "my oth stream".
+ *
+ * Typical usage looks like:
+ * \code
+ * NS_LOG (LOG_DEBUG, "a number="<<aNumber<<", anotherNumber="<<anotherNumber);
+ * \endcode
+ *
+ * \param level the log level
+ * \param msg the message to log
+ * \internal
+ * Logging implementation macro; should not be called directly.
+ */
+#define NS_LOG(level, msg)                                      \
+  do                                                            \
+    {                                                           \
+      if (g_log.IsEnabled (level))                              \
+        {                                                       \
+          NS_LOG_APPEND_TIME_PREFIX;                            \
+          NS_LOG_APPEND_NODE_PREFIX;                            \
+          NS_LOG_APPEND_CONTEXT;                                \
+          NS_LOG_APPEND_FUNC_PREFIX;                            \
+          NS_LOG_APPEND_LEVEL_PREFIX (level);                   \
+          std::clog << msg << std::endl;                        \
+        }                                                       \
+    }                                                           \
+  while (false)
+
+/**
+ * \ingroup logging
+ *
+ * Output the name of the function.
+ *
+ * This should be used only in static functions; most member functions
+ * should instead use NS_LOG_FUNCTION().
+ */
+#define NS_LOG_FUNCTION_NOARGS()                                \
+  do                                                            \
+    {                                                           \
+      if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
+        {                                                       \
+          NS_LOG_APPEND_TIME_PREFIX;                            \
+          NS_LOG_APPEND_NODE_PREFIX;                            \
+          NS_LOG_APPEND_CONTEXT;                                \
+          std::clog << g_log.Name () << ":"                     \
+                    << __FUNCTION__ << "()" << std::endl;       \
+        }                                                       \
+    }                                                           \
+  while (false)
+
+
+/**
+ * \ingroup logging
+ *
+ * If log level LOG_FUNCTION is enabled, this macro will output
+ * all input parameters separated by ", ".
+ *
+ * Typical usage looks like:
+ * \code
+ * NS_LOG_FUNCTION (aNumber<<anotherNumber);
+ * \endcode
+ * And the output will look like:
+ * \code
+ * Component:Function (aNumber, anotherNumber)
+ * \endcode
+ *
+ * To facilitate function tracing, most functions should begin with
+ * (at least) NS_LOG_FUNCTION(this).  Static functions should use
+ * NS_LOG_FUNCTION_NOARGS() instead.
+ *
+ * \param parameters the parameters to output.
+ */
+#define NS_LOG_FUNCTION(parameters)                             \
+  do                                                            \
+    {                                                           \
+      if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
+        {                                                       \
+          NS_LOG_APPEND_TIME_PREFIX;                            \
+          NS_LOG_APPEND_NODE_PREFIX;                            \
+          NS_LOG_APPEND_CONTEXT;                                \
+          std::clog << g_log.Name () << ":"                     \
+                    << __FUNCTION__ << "(";                     \
+          ns3::ParameterLogger (std::clog) << parameters;       \
+          std::clog << ")" << std::endl;                        \
+        }                                                       \
+    }                                                           \
+  while (false)
+
+
+/**
+ * \ingroup logging
+ *
+ * Output the requested message unconditionaly.
+ *
+ * \param msg the message to log
+ */
+#define NS_LOG_UNCOND(msg)              \
+  do                                    \
+    {                                   \
+      std::clog << msg << std::endl;    \
+    }                                   \
+  while (false)
+
+
+#endif /* NS3_LOG_ENABLE */
+
+#endif /* NS3_LOG_MACROS_ENABLED_H */
diff -Naur ns-3.19/src/core/model/map-scheduler.cc ns-3.20/src/core/model/map-scheduler.cc
--- ns-3.19/src/core/model/map-scheduler.cc	2014-06-17 10:34:00.599635419 -0700
+++ ns-3.20/src/core/model/map-scheduler.cc	2014-06-17 10:33:13.929995684 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MapScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MapScheduler);
 
 TypeId
 MapScheduler::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/names.cc ns-3.20/src/core/model/names.cc
--- ns-3.19/src/core/model/names.cc	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/core/model/names.cc	2014-06-17 10:33:13.930995676 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Names")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Names");
 
 class NameNode
 {
diff -Naur ns-3.19/src/core/model/names.h ns-3.20/src/core/model/names.h
--- ns-3.19/src/core/model/names.h	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/core/model/names.h	2014-06-17 10:33:13.931995668 -0700
@@ -370,7 +370,7 @@
    *
    * \brief Non-templated internal version of Names::Find
    *
-   * \param name A string containing the path of the object to look for.
+   * \param path A string containing the path of the object to look for.
    *
    * \returns a smart pointer to the named object.
    */
@@ -381,7 +381,7 @@
    *
    * \brief Non-templated internal version of Names::Find
    *
-   * \param context A string containing the path to search for the object in.
+   * \param path A string containing the path to search for the object in.
    * \param name A string containing the name of the object to look for.
    *
    * \returns a smart pointer to the named object.
diff -Naur ns-3.19/src/core/model/nstime.h ns-3.20/src/core/model/nstime.h
--- ns-3.19/src/core/model/nstime.h	2014-06-17 10:34:00.602635395 -0700
+++ ns-3.20/src/core/model/nstime.h	2014-06-17 10:33:13.932995661 -0700
@@ -33,13 +33,11 @@
 
 namespace ns3 {
 
+class TimeWithUnit;
+  
 /**
  * \ingroup core
- * \defgroup time Time
- */
-/**
- * \ingroup time
- * \brief keep track of time values and allow control of global simulation resolution
+ * \brief Simulation virtual time values and global simulation resolution.
  *
  * This class defines all the classic C++ addition/subtraction
  * operators: +, -, +=, -=; and all the classic comparison operators:
@@ -99,7 +97,7 @@
     LAST = 10
   };
 
-  inline Time &operator = (const Time &o)
+  inline Time & operator = (const Time & o)
   {
     m_data = o.m_data;
     return *this;
@@ -112,7 +110,7 @@
 	Mark (this);
       }
   }
-  inline Time(const Time &o)
+  inline Time(const Time & o)
     : m_data (o.m_data)
   {
     if (g_markingTimes)
@@ -262,7 +260,7 @@
   /**
    *  \return -1,0,+1 if `this < o`, `this == o`, or `this > o`
    */
-  inline int Compare (const Time &o) const
+  inline int Compare (const Time & o) const
   {
     return (m_data < o.m_data) ? -1 : (m_data == o.m_data) ? 0 : 1;
   }
@@ -445,7 +443,7 @@
   {
     return To (timeUnit).GetDouble ();
   }
-  static inline Time From (const int64x64_t &from, enum Unit timeUnit)
+  static inline Time From (const int64x64_t & from, enum Unit timeUnit)
   {
     struct Information *info = PeekInformation (timeUnit);
     // DO NOT REMOVE this temporary variable. It's here
@@ -479,7 +477,7 @@
   {
     return int64x64_t (m_data);
   }
-  explicit inline Time (const int64x64_t &value)
+  explicit inline Time (const int64x64_t & value)
     : m_data (value.GetHigh ())
   {
     if (g_markingTimes)
@@ -487,11 +485,25 @@
 	Mark (this);
       }
   }
-  inline static Time From (const int64x64_t &value)
+  inline static Time From (const int64x64_t & value)
   {
     return Time (value);
   }
 
+  /**
+   * Attach a unit to a Time, to facilitate output in a specific unit.
+   *
+   * For example,
+   * \code
+   *   Time t (3.14e9);  // Pi seconds
+   *   std::cout << t.As (Time::MS) << std::endl;
+   * \endcode
+   * will print ``+3140.0ms``
+   *
+   * \param unit [in] The unit to use.
+   */
+  TimeWithUnit As (const enum Unit unit) const;
+
 private:
   /**
    * How to convert between other units and the current unit
@@ -516,11 +528,11 @@
   static inline struct Resolution *PeekResolution (void)
   {
     static struct Time::Resolution resolution = SetDefaultNsResolution ();
-    return &resolution;
+    return & resolution;
   }
   static inline struct Information *PeekInformation (enum Unit timeUnit)
   {
-    return &(PeekResolution ()->info[timeUnit]);
+    return & (PeekResolution ()->info[timeUnit]);
   }
 
   static struct Resolution SetDefaultNsResolution (void);
@@ -531,7 +543,7 @@
    *  Record all instances of Time, so we can rescale them when
    *  the resolution changes.
    *
-   *  \intern
+   *  \internal
    *
    *  We use a std::set so we can remove the record easily when
    *  ~Time() is called.
@@ -543,7 +555,7 @@
    *  [Stack Overflow](http://stackoverflow.com/questions/5526019/compile-errors-stdset-with-const-members)
    *  says otherwise, quoting the standard:
    *
-   *  > &sect;23.1/3 states that std::set key types must be assignable
+   *  > & sect;23.1/3 states that std::set key types must be assignable
    *  > and copy constructable; clearly a const type will not be assignable.
    */
   typedef std::set< Time * > MarkedTimes;
@@ -551,7 +563,7 @@
    *  Record of outstanding Time objects which will need conversion
    *  when the resolution is set.
    *
-   *  \intern
+   *  \internal
    *
    *  Use a classic static variable so we can check in Time ctors
    *  without a function call.
@@ -576,7 +588,7 @@
   /**
    *  Remove all MarkedTimes.
    *
-   *  \intern
+   *  \internal
    *  Has to be visible to the Simulator class, hence the friending.
    */
   static void ClearMarkedTimes ();
@@ -593,19 +605,23 @@
    */
   static void ConvertTimes (const enum Unit unit);
 
-  friend bool operator == (const Time &lhs, const Time &rhs);
-  friend bool operator != (const Time &lhs, const Time &rhs);
-  friend bool operator <= (const Time &lhs, const Time &rhs);
-  friend bool operator >= (const Time &lhs, const Time &rhs);
-  friend bool operator < (const Time &lhs, const Time &rhs);
-  friend bool operator > (const Time &lhs, const Time &rhs);
-  friend Time operator + (const Time &lhs, const Time &rhs);
-  friend Time operator - (const Time &lhs, const Time &rhs);
-  friend Time &operator += (Time &lhs, const Time &rhs);
-  friend Time &operator -= (Time &lhs, const Time &rhs);
-  friend Time Abs (const Time &time);
-  friend Time Max (const Time &ta, const Time &tb);
-  friend Time Min (const Time &ta, const Time &tb);
+  friend bool operator == (const Time & lhs, const Time & rhs);
+  friend bool operator != (const Time & lhs, const Time & rhs);
+  friend bool operator <= (const Time & lhs, const Time & rhs);
+  friend bool operator >= (const Time & lhs, const Time & rhs);
+  friend bool operator < (const Time & lhs, const Time & rhs);
+  friend bool operator > (const Time & lhs, const Time & rhs);
+  friend Time operator + (const Time & lhs, const Time & rhs);
+  friend Time operator - (const Time & lhs, const Time & rhs);
+  friend Time operator * (const Time & lhs, const int64_t & rhs);
+  friend Time operator * (const int64_t & lhs, const Time & rhs);
+  friend int64_t operator / (const Time & lhs, const Time & rhs);
+  friend Time operator / (const Time & lhs, const int64_t & rhs);
+  friend Time & operator += (Time & lhs, const Time & rhs);
+  friend Time & operator -= (Time & lhs, const Time & rhs);
+  friend Time Abs (const Time & time);
+  friend Time Max (const Time & ta, const Time & tb);
+  friend Time Min (const Time & ta, const Time & tb);
 
 
   int64_t m_data;                   //!< Virtual time value, in the current unit.
@@ -613,105 +629,136 @@
 };  // class Time
 
 
-// Force static initialization of Time
+/// Force static initialization of Time
 static bool NS_UNUSED_GLOBAL (g_TimeStaticInit) = Time::StaticInit ();
 
 inline bool
-operator == (const Time &lhs, const Time &rhs)
+operator == (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data == rhs.m_data;
 }
 inline bool
-operator != (const Time &lhs, const Time &rhs)
+operator != (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data != rhs.m_data;
 }
 inline bool
-operator <= (const Time &lhs, const Time &rhs)
+operator <= (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data <= rhs.m_data;
 }
 inline bool
-operator >= (const Time &lhs, const Time &rhs)
+operator >= (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data >= rhs.m_data;
 }
 inline bool
-operator < (const Time &lhs, const Time &rhs)
+operator < (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data < rhs.m_data;
 }
 inline bool
-operator > (const Time &lhs, const Time &rhs)
+operator > (const Time & lhs, const Time & rhs)
 {
   return lhs.m_data > rhs.m_data;
 }
-inline Time operator + (const Time &lhs, const Time &rhs)
+inline Time operator + (const Time & lhs, const Time & rhs)
 {
   return Time (lhs.m_data + rhs.m_data);
 }
-inline Time operator - (const Time &lhs, const Time &rhs)
+inline Time operator - (const Time & lhs, const Time & rhs)
 {
   return Time (lhs.m_data - rhs.m_data);
 }
-inline Time &operator += (Time &lhs, const Time &rhs)
+inline Time
+operator * (const Time & lhs, const int64_t & rhs)
+{
+  Time res = lhs;
+  res.m_data *= rhs;
+  return res;
+}
+inline Time
+operator * (const int64_t & lhs, const Time & rhs)
+{
+  Time res = rhs;
+  res.m_data *= lhs;
+  return res;
+}
+inline int64_t
+operator / (const Time & lhs, const Time & rhs)
+{
+  int64_t res = lhs.m_data / rhs.m_data;
+  return res;
+}
+inline Time
+operator / (const Time & lhs, const int64_t & rhs)
+{
+  Time res = lhs;
+  res.m_data /= rhs;
+  return res;
+}
+inline Time & operator += (Time & lhs, const Time & rhs)
 {
   lhs.m_data += rhs.m_data;
   return lhs;
 }
-inline Time &operator -= (Time &lhs, const Time &rhs)
+inline Time & operator -= (Time & lhs, const Time & rhs)
 {
   lhs.m_data -= rhs.m_data;
   return lhs;
 }
 
 /**
- * \anchor ns3-Time-Abs
- * \relates ns3::TimeUnit
- * Absolute value function for Time
- * \param time the input value
- * \returns the absolute value of the input value.
- */
-inline Time Abs (const Time &time)
-{
-  return Time ((time.m_data < 0) ? -time.m_data : time.m_data);
-}
-/**
- * \anchor ns3-Time-Max
- * \relates ns3::TimeUnit
+ * Max function for Time.
  * \param ta the first value
  * \param tb the seconds value
  * \returns the max of the two input values.
  */
-inline Time Max (const Time &ta, const Time &tb)
+inline Time Max (const Time & ta, const Time & tb)
 {
   return Time ((ta.m_data < tb.m_data) ? tb : ta);
 }
 /**
+ * Min function for Time.
  * \param ta the first value
  * \param tb the seconds value
  * \returns the min of the two input values.
  */
-inline Time Min (const Time &ta, const Time &tb)
+inline Time Min (const Time & ta, const Time & tb)
 {
   return Time ((ta.m_data > tb.m_data) ? tb : ta);
 }
 
+/**
+ * Absolute value function for Time
+ * \param time the input value
+ * \returns the absolute value of the input value.
+ */
+inline Time Abs (const Time & time)
+{
+  return Time ((time.m_data < 0) ? -time.m_data : time.m_data);
+}
 
 /**
  * \brief Time output streamer.
  * 
- * Generates output such as "3.96ns"
- * \relates ns3::Time
+ * Generates output such as "3.96ns".  Times are printed with the
+ * following format flags (independent of the stream flags):
+ *   - `showpos`
+ *   - `fixed`
+ *   - `left`
+ * The stream `width` and `precision` are ignored; Time output always
+ * includes ".0".
+ * \relates Time
  */
-std::ostream& operator<< (std::ostream& os, const Time & time);
+std::ostream & operator<< (std::ostream & os, const Time & time);
 /**
  * \brief Time input streamer
  *
  * Uses the Time::Time (const std::string &) constructor
- * \relates ns3::Time
+ * \relates Time
  */
-std::istream& operator>> (std::istream& is, Time & time);
+std::istream & operator>> (std::istream & is, Time & time);
 
 /**
  * \brief create ns3::Time instances in units of seconds.
@@ -722,7 +769,7 @@
  * Simulator::Schedule (Seconds (5.0), ...);
  * \endcode
  * \param seconds seconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Seconds (double seconds)
 {
@@ -738,7 +785,7 @@
  * Simulator::Schedule (MilliSeconds (5), ...);
  * \endcode
  * \param ms milliseconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time MilliSeconds (uint64_t ms)
 {
@@ -753,7 +800,7 @@
  * Simulator::Schedule (MicroSeconds (5), ...);
  * \endcode
  * \param us microseconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time MicroSeconds (uint64_t us)
 {
@@ -768,7 +815,7 @@
  * Simulator::Schedule (NanoSeconds (5), ...);
  * \endcode
  * \param ns nanoseconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time NanoSeconds (uint64_t ns)
 {
@@ -783,7 +830,7 @@
  * Simulator::Schedule (PicoSeconds (5), ...);
  * \endcode
  * \param ps picoseconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time PicoSeconds (uint64_t ps)
 {
@@ -798,7 +845,7 @@
  * Simulator::Schedule (FemtoSeconds (5), ...);
  * \endcode
  * \param fs femtoseconds value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time FemtoSeconds (uint64_t fs)
 {
@@ -813,7 +860,7 @@
  * Simulator::Schedule (Minutes (5.0), ...);
  * \endcode
  * \param minutes mintues value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Minutes (double minutes)
 {
@@ -828,7 +875,7 @@
  * Simulator::Schedule (Hours (5.0), ...);
  * \endcode
  * \param hours hours value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Hours (double hours)
 {
@@ -843,7 +890,7 @@
  * Simulator::Schedule (Days (5.0), ...);
  * \endcode
  * \param days days value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Days (double days)
 {
@@ -858,7 +905,7 @@
  * Simulator::Schedule (Years (5.0), ...);
  * \endcode
  * \param years years value
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Years (double years)
 {
@@ -867,7 +914,7 @@
 
 /**
  * \see Seconds(double)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Seconds (int64x64_t seconds)
 {
@@ -875,7 +922,7 @@
 }
 /**
  * \see MilliSeconds(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time MilliSeconds (int64x64_t ms)
 {
@@ -883,7 +930,7 @@
 }
 /**
  * \see MicroSeconds(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time MicroSeconds (int64x64_t us)
 {
@@ -891,7 +938,7 @@
 }
 /**
  * \see NanoSeconds(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time NanoSeconds (int64x64_t ns)
 {
@@ -899,7 +946,7 @@
 }
 /**
  * \see PicoSeconds(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time PicoSeconds (int64x64_t ps)
 {
@@ -907,7 +954,7 @@
 }
 /**
  * \see FemtoSeconds(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time FemtoSeconds (int64x64_t fs)
 {
@@ -915,7 +962,7 @@
 }
 /**
  * \see Minutes(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Minutes (int64x64_t minutes)
 {
@@ -923,7 +970,7 @@
 }
 /**
  * \see Minutes(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Hours (int64x64_t hours)
 {
@@ -931,7 +978,7 @@
 }
 /**
  * \see Minutes(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Days (int64x64_t days)
 {
@@ -939,7 +986,7 @@
 }
 /**
  * \see Minutes(uint64_t)
- * \relates ns3::Time
+ * \relates Time
  */
 inline Time Years (int64x64_t years)
 {
@@ -991,6 +1038,32 @@
   return MakeTimeChecker (min, Time::Max ());
 }
 
+/**
+ * \ingroup time
+ * \brief A Time with attached unit, to facilitate output in that unit.
+ */
+class TimeWithUnit
+{
+public:
+  /**
+   * Attach a unit to a Time
+   *
+   * \param [in] time The time.
+   * \param [in] unit The unit to use for output
+   */
+  TimeWithUnit (const Time time, const Time::Unit unit)
+    : m_time (time),
+      m_unit (unit)
+  { };
+
+private:
+  Time m_time;        //!< The time
+  Time::Unit m_unit;  //!< The unit to use in output
+
+  /// Output streamer
+  friend std::ostream & operator << (std::ostream & os, const TimeWithUnit & time);
+
+};  // class TimeWithUnit
 
 } // namespace ns3
 
diff -Naur ns-3.19/src/core/model/object-base.cc ns-3.20/src/core/model/object-base.cc
--- ns-3.19/src/core/model/object-base.cc	2014-06-17 10:34:00.602635395 -0700
+++ ns-3.20/src/core/model/object-base.cc	2014-06-17 10:33:13.933995653 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ObjectBase)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ObjectBase);
 
 static TypeId
 GetObjectIid (void)
@@ -76,13 +75,29 @@
           struct TypeId::AttributeInformation info = tid.GetAttribute(i);
           NS_LOG_DEBUG ("try to construct \""<< tid.GetName ()<<"::"<<
                         info.name <<"\"");
+          // is this attribute stored in this AttributeConstructionList instance ?
+          Ptr<AttributeValue> value = attributes.Find(info.checker);
+          // See if this attribute should not be set here in the
+          // constructor.
           if (!(info.flags & TypeId::ATTR_CONSTRUCT))
             {
-              continue;
+              // Handle this attribute if it should not be 
+              // set here.
+              if (value == 0)
+                {
+                  // Skip this attribute if it's not in the
+                  // AttributeConstructionList.
+                  continue;
+                }              
+              else
+                {
+                  // This is an error because this attribute is not
+                  // settable in its constructor but is present in
+                  // the AttributeConstructionList.
+                  NS_FATAL_ERROR ("Attribute name="<<info.name<<" tid="<<tid.GetName () << ": initial value cannot be set using attributes");
+                }
             }
           bool found = false;
-          // is this attribute stored in this AttributeConstructionList instance ?
-          Ptr<AttributeValue> value = attributes.Find(info.checker);
           if (value != 0)
             {
               // We have a matching attribute value.
diff -Naur ns-3.19/src/core/model/object-base.h ns-3.20/src/core/model/object-base.h
--- ns-3.19/src/core/model/object-base.h	2014-06-17 10:34:00.602635395 -0700
+++ ns-3.20/src/core/model/object-base.h	2014-06-17 10:33:13.933995653 -0700
@@ -26,23 +26,14 @@
 #include <list>
 
 /**
+ * \ingroup object
  * \brief Register the class in the ns-3 factory.
  *
  * This macro should be invoked once for every class which
  * defines a new GetTypeId method.
  *
- * Given a class Foo, the .cc implementation should begin
- *
- * \code
- *   NS_OBJECT_ENSURE_REGISTERED (Foo)
- *     ;
- * \endcode
- *
  * If the class is in a namespace, then the macro call should also be
  * in the namespace.
- *
- * Note the closing ';' is not on the same line;  this prevents 
- * Doxygen from spuriously warning that the macro invocation is undocumented.
  */
 #define NS_OBJECT_ENSURE_REGISTERED(type)       \
   static struct X ## type ## RegistrationClass      \
diff -Naur ns-3.19/src/core/model/object.cc ns-3.20/src/core/model/object.cc
--- ns-3.19/src/core/model/object.cc	2014-06-17 10:34:00.605635372 -0700
+++ ns-3.20/src/core/model/object.cc	2014-06-17 10:33:13.936995630 -0700
@@ -41,8 +41,7 @@
  *         The Object implementation
  *********************************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (Object)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Object);
 
 Object::AggregateIterator::AggregateIterator ()
   : m_object (0),
diff -Naur ns-3.19/src/core/model/object-factory.cc ns-3.20/src/core/model/object-factory.cc
--- ns-3.19/src/core/model/object-factory.cc	2014-06-17 10:34:00.603635387 -0700
+++ ns-3.20/src/core/model/object-factory.cc	2014-06-17 10:33:13.933995653 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE("ObjectFactory")
-  ;
+NS_LOG_COMPONENT_DEFINE("ObjectFactory");
 
 ObjectFactory::ObjectFactory ()
 {
diff -Naur ns-3.19/src/core/model/object.h ns-3.20/src/core/model/object.h
--- ns-3.19/src/core/model/object.h	2014-06-17 10:34:00.606635364 -0700
+++ ns-3.20/src/core/model/object.h	2014-06-17 10:33:13.936995630 -0700
@@ -46,6 +46,7 @@
 /**
  * \ingroup core
  * \defgroup object Object
+ * \brief Base classes which provides memory management and object aggregation.
  */
 /**
  * \ingroup object
diff -Naur ns-3.19/src/core/model/ptr.h ns-3.20/src/core/model/ptr.h
--- ns-3.19/src/core/model/ptr.h	2014-06-17 10:34:00.607635357 -0700
+++ ns-3.20/src/core/model/ptr.h	2014-06-17 10:33:13.937995622 -0700
@@ -30,6 +30,7 @@
 /**
  * \ingroup core
  * \defgroup ptr Smart Pointer
+ * \brief Heap memory management.
  */
 /**
  * \ingroup ptr
diff -Naur ns-3.19/src/core/model/random-variable.cc ns-3.20/src/core/model/random-variable.cc
--- ns-3.19/src/core/model/random-variable.cc	2014-06-17 10:34:00.610635334 -0700
+++ ns-3.20/src/core/model/random-variable.cc	2014-06-17 10:33:13.940995599 -0700
@@ -44,8 +44,7 @@
 // -----------------------------------------------------------------------------
 // RandomVariableBase methods
 
-NS_LOG_COMPONENT_DEFINE ("RandomVariable")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RandomVariable");
 
 /** \ingroup legacyrandom */
 class RandomVariableBase
@@ -1362,7 +1361,7 @@
    * \brief Constructor
    *
    * Creates a generator that returns successive elements of the d array
-   * on successive calls to ::Value().  Note that the d pointer is copied
+   * on successive calls to GetValue().  Note that the d pointer is copied
    * for use by the generator (shallow-copy), not its contents, so the
    * contents of the array d points to have to remain unchanged for the use
    * of DeterministicVariableImpl to be meaningful.
@@ -1861,7 +1860,7 @@
   ZipfVariableImpl (long n, double alpha);
 
   /**
-   * \A zipf variable with N=1 and alpha=0
+   * A zipf variable with N=1 and alpha=0
    */
   ZipfVariableImpl ();
 
@@ -1953,7 +1952,7 @@
   ZetaVariableImpl (double alpha);
 
   /**
-   * \A zipf variable with alpha=1.1
+   * A zipf variable with alpha=1.1
    */
   ZetaVariableImpl ();
 
diff -Naur ns-3.19/src/core/model/random-variable-stream.cc ns-3.20/src/core/model/random-variable-stream.cc
--- ns-3.19/src/core/model/random-variable-stream.cc	2014-06-17 10:34:00.608635349 -0700
+++ ns-3.20/src/core/model/random-variable-stream.cc	2014-06-17 10:33:13.938995614 -0700
@@ -40,8 +40,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RandomVariableStream)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomVariableStream);
 
 TypeId 
 RandomVariableStream::GetTypeId (void)
@@ -131,8 +130,7 @@
   return m_rng;
 }
 
-NS_OBJECT_ENSURE_REGISTERED(UniformRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(UniformRandomVariable);
 
 TypeId 
 UniformRandomVariable::GetTypeId (void)
@@ -202,8 +200,7 @@
   return (uint32_t)GetValue (m_min, m_max + 1);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ConstantRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ConstantRandomVariable);
 
 TypeId 
 ConstantRandomVariable::GetTypeId (void)
@@ -257,8 +254,7 @@
   return (uint32_t)GetValue (m_constant);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(SequentialRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(SequentialRandomVariable);
 
 TypeId 
 SequentialRandomVariable::GetTypeId (void)
@@ -357,8 +353,7 @@
   return (uint32_t)GetValue ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ExponentialRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ExponentialRandomVariable);
 
 TypeId 
 ExponentialRandomVariable::GetTypeId (void)
@@ -439,8 +434,7 @@
   return (uint32_t)GetValue (m_mean, m_bound);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ParetoRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ParetoRandomVariable);
 
 TypeId 
 ParetoRandomVariable::GetTypeId (void)
@@ -535,8 +529,7 @@
   return (uint32_t)GetValue (m_mean, m_shape, m_bound);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(WeibullRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(WeibullRandomVariable);
 
 TypeId 
 WeibullRandomVariable::GetTypeId (void)
@@ -629,8 +622,7 @@
   return (uint32_t)GetValue (m_scale, m_shape, m_bound);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(NormalRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(NormalRandomVariable);
 
 const double NormalRandomVariable::INFINITE_VALUE = 1e307;
 
@@ -749,8 +741,7 @@
   return (uint32_t)GetValue (m_mean, m_variance, m_bound);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(LogNormalRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(LogNormalRandomVariable);
 
 TypeId 
 LogNormalRandomVariable::GetTypeId (void)
@@ -869,8 +860,7 @@
   return (uint32_t)GetValue (m_mu, m_sigma);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(GammaRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(GammaRandomVariable);
 
 TypeId 
 GammaRandomVariable::GetTypeId (void)
@@ -1045,8 +1035,7 @@
     }
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ErlangRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ErlangRandomVariable);
 
 TypeId 
 ErlangRandomVariable::GetTypeId (void)
@@ -1157,8 +1146,7 @@
     }
 }
 
-NS_OBJECT_ENSURE_REGISTERED(TriangularRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(TriangularRandomVariable);
 
 TypeId 
 TriangularRandomVariable::GetTypeId (void)
@@ -1252,8 +1240,7 @@
   return (uint32_t)GetValue (m_mean, m_min, m_max);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ZipfRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ZipfRandomVariable);
 
 TypeId 
 ZipfRandomVariable::GetTypeId (void)
@@ -1343,8 +1330,7 @@
   return (uint32_t)GetValue (m_n, m_alpha);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(ZetaRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(ZetaRandomVariable);
 
 TypeId 
 ZetaRandomVariable::GetTypeId (void)
@@ -1427,8 +1413,7 @@
   return (uint32_t)GetValue (m_alpha);
 }
 
-NS_OBJECT_ENSURE_REGISTERED(DeterministicRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(DeterministicRandomVariable);
 
 TypeId 
 DeterministicRandomVariable::GetTypeId (void)
@@ -1500,8 +1485,7 @@
   return (uint32_t)GetValue ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED(EmpiricalRandomVariable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(EmpiricalRandomVariable);
 
 // ValueCDF methods
 EmpiricalRandomVariable::ValueCDF::ValueCDF ()
diff -Naur ns-3.19/src/core/model/realtime-simulator-impl.cc ns-3.20/src/core/model/realtime-simulator-impl.cc
--- ns-3.19/src/core/model/realtime-simulator-impl.cc	2014-06-17 10:34:00.611635326 -0700
+++ ns-3.20/src/core/model/realtime-simulator-impl.cc	2014-06-17 10:33:13.942995584 -0700
@@ -43,8 +43,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RealtimeSimulatorImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RealtimeSimulatorImpl);
 
 TypeId
 RealtimeSimulatorImpl::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/scheduler.cc ns-3.20/src/core/model/scheduler.cc
--- ns-3.19/src/core/model/scheduler.cc	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/core/model/scheduler.cc	2014-06-17 10:33:13.944995568 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Scheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Scheduler);
 
 Scheduler::~Scheduler ()
 {
diff -Naur ns-3.19/src/core/model/scheduler.h ns-3.20/src/core/model/scheduler.h
--- ns-3.19/src/core/model/scheduler.h	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/core/model/scheduler.h	2014-06-17 10:33:13.945995560 -0700
@@ -31,6 +31,7 @@
 /**
  * \ingroup core
  * \defgroup scheduler Scheduler and Events
+ * \brief Manage the event list by creating and scheduling events.
  */
 /**
  * \ingroup scheduler
diff -Naur ns-3.19/src/core/model/simulator.cc ns-3.20/src/core/model/simulator.cc
--- ns-3.19/src/core/model/simulator.cc	2014-06-17 10:34:00.616635287 -0700
+++ ns-3.20/src/core/model/simulator.cc	2014-06-17 10:33:13.947995545 -0700
@@ -45,15 +45,15 @@
 
 namespace ns3 {
 
-GlobalValue g_simTypeImpl = GlobalValue ("SimulatorImplementationType", 
-                                         "The object class to use as the simulator implementation",
-                                         StringValue ("ns3::DefaultSimulatorImpl"),
-                                         MakeStringChecker ());
+static GlobalValue g_simTypeImpl = GlobalValue ("SimulatorImplementationType",
+                                                "The object class to use as the simulator implementation",
+                                                StringValue ("ns3::DefaultSimulatorImpl"),
+                                                MakeStringChecker ());
 
-GlobalValue g_schedTypeImpl = GlobalValue ("SchedulerType", 
-                                           "The object class to use as the scheduler implementation",
-                                           TypeIdValue (MapScheduler::GetTypeId ()),
-                                           MakeTypeIdChecker ());
+static GlobalValue g_schedTypeImpl = GlobalValue ("SchedulerType",
+                                                  "The object class to use as the scheduler implementation",
+                                                  TypeIdValue (MapScheduler::GetTypeId ()),
+                                                  MakeTypeIdChecker ());
 
 static void
 TimePrinter (std::ostream &os)
diff -Naur ns-3.19/src/core/model/simulator.h ns-3.20/src/core/model/simulator.h
--- ns-3.19/src/core/model/simulator.h	2014-06-17 10:34:00.616635287 -0700
+++ ns-3.20/src/core/model/simulator.h	2014-06-17 10:33:13.947995545 -0700
@@ -40,6 +40,7 @@
 /**
  * \ingroup core
  * \defgroup simulator Simulator
+ * \brief Control the virtual time and the execution of simulation events. 
  */
 /**
  * \ingroup simulator
diff -Naur ns-3.19/src/core/model/string.h ns-3.20/src/core/model/string.h
--- ns-3.19/src/core/model/string.h	2014-06-17 10:34:00.617635279 -0700
+++ ns-3.20/src/core/model/string.h	2014-06-17 10:33:13.948995537 -0700
@@ -15,7 +15,6 @@
  * This class can be used to hold variables of type string,
  * that is, either char * or std::string.
  */
-
 ATTRIBUTE_VALUE_DEFINE_WITH_NAME (std::string, String);
 ATTRIBUTE_ACCESSOR_DEFINE (String);
 ATTRIBUTE_CHECKER_DEFINE (String);
diff -Naur ns-3.19/src/core/model/synchronizer.cc ns-3.20/src/core/model/synchronizer.cc
--- ns-3.19/src/core/model/synchronizer.cc	2014-06-17 10:34:00.618635272 -0700
+++ ns-3.20/src/core/model/synchronizer.cc	2014-06-17 10:33:13.948995537 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Synchronizer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Synchronizer);
 
 TypeId 
 Synchronizer::GetTypeId (void)
diff -Naur ns-3.19/src/core/model/test.cc ns-3.20/src/core/model/test.cc
--- ns-3.19/src/core/model/test.cc	2014-06-17 10:34:00.621635249 -0700
+++ ns-3.20/src/core/model/test.cc	2014-06-17 10:33:13.952995506 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Test")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Test");
 
 bool
 TestDoubleIsEqual (const double x1, const double x2, const double epsilon)
@@ -73,6 +72,18 @@
   std::string file;
   int32_t line;
 };
+std::ostream & operator << (std::ostream & os, const TestCaseFailure & failure)
+{
+  os << "    test=\""  << failure.cond
+     << "\" actual=\"" << failure.actual
+     << "\" limit=\""  << failure.limit
+     << "\" in=\""     << failure.file
+     << ":"            << failure.line 
+     << "\" "          << failure.message;
+
+  return os;
+}
+
 struct TestCase::Result
 {
   Result ();
@@ -244,6 +255,12 @@
   NS_LOG_FUNCTION (this);
   return m_name;
 }
+TestCase *
+TestCase::GetParent () const
+{
+  return m_parent;
+}
+
 void
 TestCase::ReportTestFailure (std::string cond, std::string actual, 
                              std::string limit, std::string message, 
@@ -592,10 +609,7 @@
         {
           for (uint32_t i = 0; i < test->m_result->failure.size (); i++)
             {
-              TestCaseFailure failure = test->m_result->failure[i];
-              *os << Indent (level) << "    got=\"" << failure.cond << "\" expected=\"" 
-                  << failure.actual << "\" in=\"" << failure.file << ":" << failure.line 
-                  << "\" " << failure.message << std::endl;
+              *os << Indent (level) << test->m_result->failure[i] << std::endl;
             }
           for (uint32_t i = 0; i < test->m_children.size (); i++)
             {
diff -Naur ns-3.19/src/core/model/test.h ns-3.20/src/core/model/test.h
--- ns-3.19/src/core/model/test.h	2014-06-17 10:34:00.622635241 -0700
+++ ns-3.20/src/core/model/test.h	2014-06-17 10:33:13.953995499 -0700
@@ -31,6 +31,12 @@
 #include "system-wall-clock-ms.h"
 #include "deprecated.h"
 
+/**
+ * \ingroup core
+ * \defgroup testing Testing
+ * \brief Tools to define and execute unit tests.
+ */
+
 // 
 // Note on below macros:
 //
@@ -42,9 +48,9 @@
 //
 
 /**
+ * \ingroup testing
+ * \brief Check if we should assert on errors, and do so
  * \internal
- *
- * Check if we should assert on errors, and do so
  */
 #define ASSERT_ON_FAILURE                       \
   do {                                          \
@@ -55,9 +61,9 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ * \brief If we shouldn't continue on errors, return
  * \internal
- *
- * If we shouldn't continue on errors, return
  */
 #define CONTINUE_ON_FAILURE                                             \
   do {                                                                  \
@@ -68,9 +74,9 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ * \brief If we shouldn't continue on errors, return test status
  * \internal
- *
- * If we shouldn't continue on errors, return test status
  */
 #define CONTINUE_ON_FAILURE_RETURNS_BOOL                                \
   do {                                                                  \
@@ -87,6 +93,9 @@
 // ===========================================================================
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are equal and report
+ * and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_EQ_INTERNAL(actual, limit, msg, file, line)  \
@@ -109,6 +118,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are equal and report
  * and abort if not.
  *
@@ -138,6 +149,9 @@
   NS_TEST_ASSERT_MSG_EQ_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are equal and report
+ * and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_EQ_RETURNS_BOOL_INTERNAL(actual, limit, msg, file, line) \
@@ -160,6 +174,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are equal and report
  * and abort if not.
  *
@@ -192,10 +208,13 @@
   NS_TEST_ASSERT_MSG_EQ_RETURNS_BOOL_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
- * \internal
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are equal and report
+ * if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
  * (esp. callbacks) returning void.
+ * \internal
  */
 #define NS_TEST_EXPECT_MSG_EQ_INTERNAL(actual, limit, msg, file, line)  \
   do {                                                                  \
@@ -216,6 +235,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are equal and report
  * if not.
  *
@@ -250,6 +271,9 @@
 // ===========================================================================
 
 /**
+ * \ingroup testing
+ * \brief Test that actual and expected (limit) values are equal to plus
+ * or minus some tolerance and report and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_EQ_TOL_INTERNAL(actual, limit, tol, msg, file, line) \
@@ -276,18 +300,21 @@
   } while (false)
 
 /**
- * \brief Test that actual and expected (limit) values are equal to plus or minus
- * some tolerance and report and abort if not.
+ * \ingroup testing
+ *
+ * \brief Test that actual and expected (limit) values are equal to plus
+ * or minus some tolerance and report and abort if not.
  *
  * Check to see if the expected (limit) value is equal to the actual value found
  * in a test case to some tolerance.  This is not the same thing as asking if
  * two floating point are equal to within some epsilon, but is useful for that
- * case.  This assertion is geared toward more of a measurement problem.  Consider
- * measuring a physical rod of some kind that you have ordered.  You need to 
- * determine if it is "good."  You won't measure the rod to an arbitrary precision
- * of sixteen significant figures, you will measure the rod to determine if its 
- * length is within the tolerances you provided.  For example, 12.00 inches plus
- * or minus .005 inch may be just fine.
+ * case.  This assertion is geared toward more of a measurement problem.
+ * Consider measuring a physical rod of some kind that you have ordered.
+ * You need to determine if it is "good."  You want to measure the rod
+ * to an arbitrary precision of sixteen significant figures, you will
+ * measure the rod to determine if its length is within the tolerances
+ * you provided.  For example, 12.00 inches plus or minus .005 inch
+ * may be just fine.
  * 
  * In ns-3, you might want to measure a signal to noise ratio and check to see
  * if the answer is what you expect.  If you naively measure (double)1128.93 and
@@ -297,18 +324,20 @@
  * probably quickly find that is not what you want either.  It may turn out to
  * be the case that when you measured an snr that printed as 1128.93, what was 
  * actually measured was something more like 1128.9287653857625442 for example.
- * Given that the double epsilon is on the order of 0.0000000000000009, you would
- * need to provide sixteen significant figures of expected value for this kind of
- * test to pass even with a typical test for floating point "approximate equality."
- * That is clearly not required or desired.  You really want to be able to provide 
- * 1128.93 along with a tolerance just like you provided 12 inches +- 0.005 inch 
- * above.
+ * Given that the double epsilon is on the order of 0.0000000000000009,
+ * you would need to provide sixteen significant figures of expected value
+ * for this kind of test to pass even with a typical test for floating point
+ * "approximate equality."  That is clearly not required or desired.
+ * You really want to be able to provide 1128.93 along with a tolerance
+ * just like you provided 12 inches +- 0.005 inch above.
  *
  * This assertion is designed for real measurements by taking into account
  * measurement tolerances.  By doing so it also automatically compensates for 
  * floating point rounding errors.    If you really want to check floating point
- * equality down to the numeric_limits<double>::epsilon () range, consider using 
- * ns3::TestDoubleIsEqual().
+ * equality down to the numeric_limits<double>::epsilon () range, consider
+ * using ns3::TestDoubleIsEqual().
+ *
+ * \note Mixing signed and unsigned types can lead to misleading results.
  *
  * The message is interpreted as a stream, for example:
  *
@@ -327,6 +356,9 @@
   NS_TEST_ASSERT_MSG_EQ_TOL_INTERNAL (actual, limit, tol, msg, __FILE__, __LINE__)
 
 /**
+ * \ingroup testing
+ * \brief Test that actual and expected (limit) values are equal to plus
+ * or minus some tolerance and report and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_EQ_TOL_RETURNS_BOOL_INTERNAL(actual, limit, tol, msg, file, line) \
@@ -353,18 +385,21 @@
   } while (false)
 
 /**
- * \brief Test that actual and expected (limit) values are equal to plus or minus
- * some tolerance and report and abort if not.
+ * \ingroup testing
+ *
+ * \brief Test that actual and expected (limit) values are equal to plus
+ * or minus some tolerance and report and abort if not.
  *
  * Check to see if the expected (limit) value is equal to the actual value found
  * in a test case to some tolerance.  This is not the same thing as asking if
  * two floating point are equal to within some epsilon, but is useful for that
- * case.  This assertion is geared toward more of a measurement problem.  Consider
- * measuring a physical rod of some kind that you have ordered.  You need to 
- * determine if it is "good."  You won't measure the rod to an arbitrary precision
- * of sixteen significant figures, you will measure the rod to determine if its 
- * length is within the tolerances you provided.  For example, 12.00 inches plus
- * or minus .005 inch may be just fine.
+ * case.  This assertion is geared toward more of a measurement problem.
+ * Consider measuring a physical rod of some kind that you have ordered.
+ * You need to determine if it is "good."  You want to measure the rod
+ * to an arbitrary precision of sixteen significant figures, you will
+ * measure the rod to determine if its length is within the tolerances
+ * you provided.  For example, 12.00 inches plus or minus .005 inch
+ * may be just fine.
  * 
  * In ns-3, you might want to measure a signal to noise ratio and check to see
  * if the answer is what you expect.  If you naively measure (double)1128.93 and
@@ -374,18 +409,20 @@
  * probably quickly find that is not what you want either.  It may turn out to
  * be the case that when you measured an snr that printed as 1128.93, what was 
  * actually measured was something more like 1128.9287653857625442 for example.
- * Given that the double epsilon is on the order of 0.0000000000000009, you would
- * need to provide sixteen significant figures of expected value for this kind of
- * test to pass even with a typical test for floating point "approximate equality."
- * That is clearly not required or desired.  You really want to be able to provide 
- * 1128.93 along with a tolerance just like you provided 12 inches +- 0.005 inch 
- * above.
+ * Given that the double epsilon is on the order of 0.0000000000000009,
+ * you would need to provide sixteen significant figures of expected value
+ * for this kind of test to pass even with a typical test for floating point
+ * "approximate equality."  That is clearly not required or desired.
+ * You really want to be able to provide  1128.93 along with a tolerance
+ * just like you provided 12 inches +- 0.005 inch above.
  *
  * This assertion is designed for real measurements by taking into account
  * measurement tolerances.  By doing so it also automatically compensates for 
  * floating point rounding errors.    If you really want to check floating point
- * equality down to the numeric_limits<double>::epsilon () range, consider using 
- * ns3::TestDoubleIsEqual().
+ * equality down to the numeric_limits<double>::epsilon () range,
+ * consider using ns3::TestDoubleIsEqual().
+ *
+ * \note Mixing signed and unsigned types can lead to misleading results.
  *
  * The message is interpreted as a stream, for example:
  *
@@ -407,10 +444,13 @@
   NS_TEST_ASSERT_MSG_EQ_TOL_RETURNS_BOOL_INTERNAL (actual, limit, tol, msg, __FILE__, __LINE__)
 
 /**
- * \internal
+ * \ingroup testing
+ * \brief Test that actual and expected (limit) values are equal to plus or minus
+ * some tolerance and report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
  * (esp. callbacks) returning void.
+ * \internal
  */
 #define NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL(actual, limit, tol, msg, file, line) \
   do {                                                                  \
@@ -435,17 +475,20 @@
   } while (false)
 
 /**
- * \brief Test that actual and expected (limit) values are equal to plus or minus
- * some tolerance and report if not.
+ * \ingroup testing
+ *
+ * \brief Test that actual and expected (limit) values are equal to plus
+ * or minus some tolerance and report if not.
  *
  * Check to see if the expected (limit) value is equal to the actual value found
  * in a test case to some tolerance.  This is not the same thing as asking if
  * two floating point are equal to within some epsilon, but is useful for that
- * case.  This assertion is geared toward more of a measurement problem.  Consider
- * measuring a physical rod of some kind that you have ordered.  You need to 
- * determine if it is "good."  You won't measure the rod to an arbitrary precision
- * of sixteen significant figures, you will measure the rod to determine if its 
- * length is within the tolerances you provided.  For example, 12.00 inches plus
+ * case.  This assertion is geared toward more of a measurement problem.
+ * Consider measuring a physical rod of some kind that you have ordered.
+ * You need to  determine if it is "good."  You want to measure the rod
+ * to an arbitrary precision  of sixteen significant figures,
+ * you will measure the rod to determine if its length is within
+ * the tolerances you provided.  For example, 12.00 inches plus 
  * or minus .005 inch may be just fine.
  * 
  * In ns-3, you might want to measure a signal to noise ratio and check to see
@@ -456,18 +499,20 @@
  * probably quickly find that is not what you want either.  It may turn out to
  * be the case that when you measured an snr that printed as 1128.93, what was 
  * actually measured was something more like 1128.9287653857625442 for example.
- * Given that the double epsilon is on the order of 0.0000000000000009, you would
- * need to provide sixteen significant figures of expected value for this kind of
- * test to pass even with a typical test for floating point "approximate equality."
- * That is clearly not required or desired.  You really want to be able to provide 
- * 1128.93 along with a tolerance just like you provided 12 inches +- 0.005 inch 
- * above.
+ * Given that the double epsilon is on the order of 0.0000000000000009,
+ * you would  need to provide sixteen significant figures of expected value
+ * for this kind of test to pass even with a typical test for floating point
+ * "approximate equality."  That is clearly not required or desired.
+ * You really want to be able to provide 1128.93 along with a tolerance
+ * just like you provided 12 inches +- 0.005 inch above.
  *
  * This assertion is designed for real measurements by taking into account
  * measurement tolerances.  By doing so it also automatically compensates for 
  * floating point rounding errors.    If you really want to check floating point
- * equality down to the numeric_limits<double>::epsilon () range, consider using 
- * ns3::TestDoubleIsEqual().
+ * equality down to the numeric_limits<double>::epsilon () range,
+ * consider using ns3::TestDoubleIsEqual().
+ *
+ * \note Mixing signed and unsigned types can lead to misleading results.
  *
  * The message is interpreted as a stream, for example:
  *
@@ -490,6 +535,9 @@
 // ===========================================================================
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are not equal and 
+ * report and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_NE_INTERNAL(actual, limit, msg, file, line)  \
@@ -512,6 +560,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are not equal and 
  * report and abort if not.
  *
@@ -540,6 +590,9 @@
   NS_TEST_ASSERT_MSG_NE_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are not equal and 
+ * report and abort if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_NE_RETURNS_BOOL_INTERNAL(actual, limit, msg, file, line) \
@@ -562,6 +615,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are not equal and 
  * report and abort if not.
  *
@@ -593,10 +648,13 @@
   NS_TEST_ASSERT_MSG_NE_RETURNS_BOOL_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
- * \internal
+ * \ingroup testing
+ * \brief Test that an actual and expected (limit) value are not equal and 
+ * report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
  * (callbacks) returning void.
+ * \internal
  */
 #define NS_TEST_EXPECT_MSG_NE_INTERNAL(actual, limit, msg, file, line)  \
   do {                                                                  \
@@ -617,6 +675,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual and expected (limit) value are not equal and 
  * report if not.
  *
@@ -649,6 +709,9 @@
 // ===========================================================================
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual value is less than a limit and report and abort
+ * if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_LT_INTERNAL(actual, limit, msg, file, line)  \
@@ -671,6 +734,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual value is less than a limit and report and abort
  * if not.
  *
@@ -689,10 +754,12 @@
   NS_TEST_ASSERT_MSG_LT_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
- * \internal
+ * \ingroup testing
+ * \brief Test that an actual value is less than a limit and report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
  * (callbacks) returning void.
+ * \internal
  */
 #define NS_TEST_EXPECT_MSG_LT_INTERNAL(actual, limit, msg, file, line)  \
   do {                                                                  \
@@ -713,6 +780,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual value is less than a limit and report if not.
  *
  * Check to see if the actual value found in a test case is less than the 
@@ -734,6 +803,9 @@
 // ===========================================================================
 
 /**
+ * \ingroup testing
+ * \brief Test that an actual value is greater than a limit and report and abort
+ * if not.
  * \internal
  */
 #define NS_TEST_ASSERT_MSG_GT_INTERNAL(actual, limit, msg, file, line)  \
@@ -756,6 +828,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual value is greater than a limit and report and abort
  * if not.
  *
@@ -774,10 +848,12 @@
   NS_TEST_ASSERT_MSG_GT_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
 /**
- * \internal
+ * \ingroup testing
+ * \brief Test that an actual value is greater than a limit and report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
  * (callbacks) returning void.
+ * \internal
  */
 #define NS_TEST_EXPECT_MSG_GT_INTERNAL(actual, limit, msg, file, line)  \
   do {                                                                  \
@@ -798,6 +874,8 @@
   } while (false)
 
 /**
+ * \ingroup testing
+ *
  * \brief Test that an actual value is greater than a limit and report if not.
  *
  * Check to see if the actual value found in a test case is greater than the 
@@ -840,6 +918,8 @@
 class TestRunnerImpl;
 
 /**
+ * \ingroup testing
+ *
  * \brief encapsulates test code
  *
  * To allow a new test to be run within the ns-3 test framework, users
@@ -864,6 +944,11 @@
    */
   virtual ~TestCase ();
 
+  /**
+   * \return name of this test
+   */
+  std::string GetName (void) const;  
+
 protected:
   /**
    * \param name the name of the new TestCase created
@@ -917,47 +1002,43 @@
   bool IsStatusSuccess (void) const;
 
   /**
-   * \return name of this test
+   * \return a pointer to the parent of this test
    */
-  std::string GetName (void) const;
-  
-  // The methods below are used only by test macros and should not
-  // be used by normal users.
+  TestCase * GetParent () const;
 
   /**
+   * @{
    * \internal
-   *
+   * The methods below are used only by test macros and should not
+   * be used by normal users.
+   */
+  /**
    * Log the failure of this TestCase.
    */
   void ReportTestFailure (std::string cond, std::string actual, 
                       std::string limit, std::string message, 
                       std::string file, int32_t line);
   /**
-   * \internal
-   *
    * \return should we assert on failure, per the TestSuite configuration
    */
   bool MustAssertOnFailure (void) const;
   /**
-   * \internal
-   *
    * \return should we continue on failure, per the TestSuite configuration
    */
   bool MustContinueOnFailure (void) const;
   /**
-   * \internal
    * \param filename the bare (no path) file name
    * \return the full path to filename in the data directory
    */
   std::string CreateDataDirFilename (std::string filename);
   /**
-   * \internal
    * \param filename the bare (no path) file name
    * \return the full path to filename in the temporary directory.
    *  If the TestRunner is invoked with "--update-data", this will be
    *  the data directory instead.
    */
   std::string CreateTempDirFilename (std::string filename);
+  /**@}*/
 private:
   friend class TestRunnerImpl;
 
@@ -983,26 +1064,23 @@
    */
   virtual void DoTeardown (void);
 
-  // forbid copying objects
   /**
-   * \internal
    * Private, to block copying
    */
   TestCase (TestCase& tc);
   /**
-   * \internal
    * Private, to block copying
    */
   TestCase& operator= (TestCase& tc);
 
   // methods called by TestRunnerImpl
   /**
-   * \internal
    * Actually run this TestCase
+   *
+   * \param runner The test runner implementation.
    */
   void Run (TestRunnerImpl *runner);
   /**
-   * \internal
    * \return the failure status of this TestCase and all it's children
    */
   bool IsFailed (void) const;
@@ -1020,6 +1098,8 @@
 };
 
 /**
+ * \ingroup testing
+ *
  * \brief A suite of tests to run.
  */
 class TestSuite : public TestCase
@@ -1061,6 +1141,8 @@
 };
 
 /**
+ * \ingroup testing
+ *
  * \brief A runner to execute tests.
  */
 class TestRunner
@@ -1069,14 +1151,16 @@
   /**
    * Run the requested suite of tests.
    *
-   * \param list of command line arguments
-   * \param argc number of elements in argv
+   * \param argc number of elements in \pname{argv}
+   * \param argv vector of command line arguments
    * \returns success status
    */
   static int Run (int argc, char *argv[]);
 };
 
 /**
+ * \ingroup testing
+ *
  * \brief A simple way to store test vectors (for stimulus or from responses)
  */
 template <typename T>
diff -Naur ns-3.19/src/core/model/time.cc ns-3.20/src/core/model/time.cc
--- ns-3.19/src/core/model/time.cc	2014-06-17 10:34:00.623635233 -0700
+++ ns-3.20/src/core/model/time.cc	2014-06-17 10:33:13.954995491 -0700
@@ -32,7 +32,7 @@
 #include <iomanip>  // showpos
 #include <sstream>
 
-NS_LOG_COMPONENT_DEFINE ("Time");
+NS_LOG_COMPONENT_DEFINE_MASK ("Time", ns3::LOG_PREFIX_TIME);
 
 namespace ns3 {
 
@@ -41,6 +41,7 @@
 Time::MarkedTimes * Time::g_markingTimes = 0;
 
 /**
+ * \internal
  * Get mutex for critical sections around modification of Time::g_markingTimes
  *
  * \relates Time
@@ -379,65 +380,53 @@
 }
 
 
+TimeWithUnit
+Time::As (const enum Unit unit) const
+{
+  return TimeWithUnit (*this, unit);
+}
+ 
+
 std::ostream&
 operator<< (std::ostream& os, const Time & time)
 {
+  os << time.As (Time::GetResolution ());
+  return os;
+}
+
+
+std::ostream &
+operator << (std::ostream & os, const TimeWithUnit & timeU)
+{
   std::string unit;
-  Time::Unit res = Time::GetResolution ();
-  switch (res)
+
+  switch (timeU.m_unit)
     {
-    case Time::S:
-      unit = "s";
-      break;
-    case Time::MS:
-      unit = "ms";
-      break;
-    case Time::US:
-      unit = "us";
-      break;
-    case Time::NS:
-      unit = "ns";
-      break;
-    case Time::PS:
-      unit = "ps";
-      break;
-    case Time::FS:
-      unit = "fs";
-      break;
-    case Time::MIN:
-      unit = "min";
-      break;
-    case Time::H:
-      unit = "h";
-      break;
-    case Time::D:
-      unit = "d";
-      break;
-    case Time::Y:
-      unit = "y";
-      break;
+    case Time::Y:    unit = "y";    break;
+    case Time::D:    unit = "d";    break;
+    case Time::H:    unit = "h";    break;
+    case Time::MIN:  unit = "min";  break;
+    case Time::S:    unit = "s";    break;
+    case Time::MS:   unit = "ms";   break;
+    case Time::US:   unit = "us";   break;
+    case Time::NS:   unit = "ns";   break;
+    case Time::PS:   unit = "ps";   break;
+    case Time::FS:   unit = "fs";   break;
+
     case Time::LAST:
+    default:
       NS_ABORT_MSG ("can't be reached");
       unit = "unreachable";
       break;
     }
-  int64_t v = time.ToInteger (res);
 
-  std::ios_base::fmtflags ff = os.flags ();
-  { // See bug 1737:  gcc libstc++ 4.2 bug
-    if (v == 0)
-      {
-        os << '+';
-      }
-    else
-      {
-        os << std::showpos;
-      }
-  }
-  os << v << ".0" << unit;
-  os.flags (ff);  // Restore stream flags
+  int64x64_t v = timeU.m_time.To (timeU.m_unit);
+  os << v << unit;
+  
   return os;
 }
+
+
 std::istream& operator>> (std::istream& is, Time & time)
 {
   std::string value;
diff -Naur ns-3.19/src/core/model/traced-value.h ns-3.20/src/core/model/traced-value.h
--- ns-3.19/src/core/model/traced-value.h	2014-06-17 10:34:00.626635210 -0700
+++ ns-3.20/src/core/model/traced-value.h	2014-06-17 10:33:13.957995468 -0700
@@ -34,6 +34,8 @@
 /**
  * \ingroup core
  * \defgroup tracing Tracing
+ * \brief Publish/subscribe tools to collect and report changes to any
+ *        values used by the various model components.
  */
 
 /**
diff -Naur ns-3.19/src/core/model/type-id.cc ns-3.20/src/core/model/type-id.cc
--- ns-3.19/src/core/model/type-id.cc	2014-06-17 10:34:00.626635210 -0700
+++ ns-3.20/src/core/model/type-id.cc	2014-06-17 10:33:13.957995468 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("TypeId")
-  ;
+NS_LOG_COMPONENT_DEFINE ("TypeId");
 
 // IidManager needs to be in ns3 namespace for NS_ASSERT and NS_LOG
 // to find g_log
diff -Naur ns-3.19/src/core/model/unix-system-condition.cc ns-3.20/src/core/model/unix-system-condition.cc
--- ns-3.19/src/core/model/unix-system-condition.cc	2014-06-17 10:34:00.630635179 -0700
+++ ns-3.20/src/core/model/unix-system-condition.cc	2014-06-17 10:33:13.961995437 -0700
@@ -30,7 +30,8 @@
 namespace ns3 {
 
 class SystemConditionPrivate {
-public: 
+public:
+  /// Conversion from ns to s.
   static const uint64_t NS_PER_SEC = (uint64_t)1000000000;
 
   SystemConditionPrivate ();
diff -Naur ns-3.19/src/core/model/unix-system-mutex.cc ns-3.20/src/core/model/unix-system-mutex.cc
--- ns-3.19/src/core/model/unix-system-mutex.cc	2014-06-17 10:34:00.630635179 -0700
+++ ns-3.20/src/core/model/unix-system-mutex.cc	2014-06-17 10:33:13.961995437 -0700
@@ -27,7 +27,7 @@
 #include "log.h"
 
 
-NS_LOG_COMPONENT_DEFINE ("SystemMutex");
+NS_LOG_COMPONENT_DEFINE_MASK ("SystemMutex", ns3::LOG_PREFIX_TIME);
 
 namespace ns3 {
 
diff -Naur ns-3.19/src/core/model/valgrind.h ns-3.20/src/core/model/valgrind.h
--- ns-3.19/src/core/model/valgrind.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/core/model/valgrind.h	2014-06-17 10:33:13.964995414 -0700
@@ -0,0 +1,5624 @@
+/* -*- c -*-
+   ----------------------------------------------------------------
+
+   Notice that the following BSD-style license applies to this one
+   file (valgrind.h) only.  The rest of Valgrind is licensed under the
+   terms of the GNU General Public License, version 2, unless
+   otherwise indicated.  See the COPYING file in the source
+   distribution for details.
+
+   ----------------------------------------------------------------
+
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright (C) 2000-2013 Julian Seward.  All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. The origin of this software must not be misrepresented; you must 
+      not claim that you wrote the original software.  If you use this 
+      software in a product, an acknowledgment in the product 
+      documentation would be appreciated but is not required.
+
+   3. Altered source versions must be plainly marked as such, and must
+      not be misrepresented as being the original software.
+
+   4. The name of the author may not be used to endorse or promote 
+      products derived from this software without specific prior written 
+      permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+   ----------------------------------------------------------------
+
+   Notice that the above BSD-style license applies to this one file
+   (valgrind.h) only.  The entire rest of Valgrind is licensed under
+   the terms of the GNU General Public License, version 2.  See the
+   COPYING file in the source distribution for details.
+
+   ---------------------------------------------------------------- 
+*/
+
+
+/* This file is for inclusion into client (your!) code.
+
+   You can use these macros to manipulate and query Valgrind's 
+   execution inside your own programs.
+
+   The resulting executables will still run without Valgrind, just a
+   little bit more slowly than they otherwise would, but otherwise
+   unchanged.  When not running on valgrind, each client request
+   consumes very few (eg. 7) instructions, so the resulting performance
+   loss is negligible unless you plan to execute client requests
+   millions of times per second.  Nevertheless, if that is still a
+   problem, you can compile with the NVALGRIND symbol defined (gcc
+   -DNVALGRIND) so that client requests are not even compiled in.  */
+
+#ifndef __VALGRIND_H
+#define __VALGRIND_H
+
+
+/* ------------------------------------------------------------------ */
+/* VERSION NUMBER OF VALGRIND                                         */
+/* ------------------------------------------------------------------ */
+
+/* Specify Valgrind's version number, so that user code can
+   conditionally compile based on our version number.  Note that these
+   were introduced at version 3.6 and so do not exist in version 3.5
+   or earlier.  The recommended way to use them to check for "version
+   X.Y or later" is (eg)
+
+#if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__)   \
+    && (__VALGRIND_MAJOR__ > 3                                   \
+        || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6))
+*/
+#define __VALGRIND_MAJOR__    3
+#define __VALGRIND_MINOR__    9
+
+
+#include <stdarg.h>
+
+/* Nb: this file might be included in a file compiled with -ansi.  So
+   we can't use C++ style "//" comments nor the "asm" keyword (instead
+   use "__asm__"). */
+
+/* Derive some tags indicating what the target platform is.  Note
+   that in this file we're using the compiler's CPP symbols for
+   identifying architectures, which are different to the ones we use
+   within the rest of Valgrind.  Note, __powerpc__ is active for both
+   32 and 64-bit PPC, whereas __powerpc64__ is only active for the
+   latter (on Linux, that is).
+
+   Misc note: how to find out what's predefined in gcc by default:
+   gcc -Wp,-dM somefile.c
+*/
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
+#undef PLAT_x86_win32
+#undef PLAT_amd64_win64
+#undef PLAT_x86_linux
+#undef PLAT_amd64_linux
+#undef PLAT_ppc32_linux
+#undef PLAT_ppc64_linux
+#undef PLAT_arm_linux
+#undef PLAT_arm64_linux
+#undef PLAT_s390x_linux
+#undef PLAT_mips32_linux
+#undef PLAT_mips64_linux
+
+
+#if defined(__APPLE__) && defined(__i386__)
+#  define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+#  define PLAT_amd64_darwin 1
+#elif defined(__MINGW32__) || defined(__CYGWIN32__) \
+      || (defined(_WIN32) && defined(_M_IX86))
+#  define PLAT_x86_win32 1
+#elif defined(__MINGW64__) || (defined(_WIN64) && defined(_M_X64))
+#  define PLAT_amd64_win64 1
+#elif defined(__linux__) && defined(__i386__)
+#  define PLAT_x86_linux 1
+#elif defined(__linux__) && defined(__x86_64__)
+#  define PLAT_amd64_linux 1
+#elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
+#  define PLAT_ppc32_linux 1
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
+#  define PLAT_ppc64_linux 1
+#elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
+#  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
+#  define PLAT_arm64_linux 1
+#elif defined(__linux__) && defined(__s390__) && defined(__s390x__)
+#  define PLAT_s390x_linux 1
+#elif defined(__linux__) && defined(__mips__) && (__mips==64)
+#  define PLAT_mips64_linux 1
+#elif defined(__linux__) && defined(__mips__) && (__mips!=64)
+#  define PLAT_mips32_linux 1
+#else
+/* If we're not compiling for our target platform, don't generate
+   any inline asms.  */
+#  if !defined(NVALGRIND)
+#    define NVALGRIND 1
+#  endif
+#endif
+
+
+/* ------------------------------------------------------------------ */
+/* ARCHITECTURE SPECIFICS for SPECIAL INSTRUCTIONS.  There is nothing */
+/* in here of use to end-users -- skip to the next section.           */
+/* ------------------------------------------------------------------ */
+
+/*
+ * VALGRIND_DO_CLIENT_REQUEST(): a statement that invokes a Valgrind client
+ * request. Accepts both pointers and integers as arguments.
+ *
+ * VALGRIND_DO_CLIENT_REQUEST_STMT(): a statement that invokes a Valgrind
+ * client request that does not return a value.
+
+ * VALGRIND_DO_CLIENT_REQUEST_EXPR(): a C expression that invokes a Valgrind
+ * client request and whose value equals the client request result.  Accepts
+ * both pointers and integers as arguments.  Note that such calls are not
+ * necessarily pure functions -- they may have side effects.
+ */
+
+#define VALGRIND_DO_CLIENT_REQUEST(_zzq_rlval, _zzq_default,            \
+                                   _zzq_request, _zzq_arg1, _zzq_arg2,  \
+                                   _zzq_arg3, _zzq_arg4, _zzq_arg5)     \
+  do { (_zzq_rlval) = VALGRIND_DO_CLIENT_REQUEST_EXPR((_zzq_default),   \
+                        (_zzq_request), (_zzq_arg1), (_zzq_arg2),       \
+                        (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
+
+#define VALGRIND_DO_CLIENT_REQUEST_STMT(_zzq_request, _zzq_arg1,        \
+                           _zzq_arg2,  _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
+                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
+                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
+
+#if defined(NVALGRIND)
+
+/* Define NVALGRIND to completely remove the Valgrind magic sequence
+   from the compiled code (analogous to NDEBUG's effects on
+   assert()) */
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+      (_zzq_default)
+
+#else  /* ! NVALGRIND */
+
+/* The following defines the magic code sequences which the JITter
+   spots and handles magically.  Don't look too closely at them as
+   they will rot your brain.
+
+   The assembly code sequences for all architectures is in this one
+   file.  This is because this file must be stand-alone, and we don't
+   want to have multiple files.
+
+   For VALGRIND_DO_CLIENT_REQUEST, we must ensure that the default
+   value gets put in the return slot, so that everything works when
+   this is executed not under Valgrind.  Args are passed in a memory
+   block, and so there's no intrinsic limit to the number that could
+   be passed, but it's currently five.
+   
+   The macro args are: 
+      _zzq_rlval    result lvalue
+      _zzq_default  default value (result returned when running on real CPU)
+      _zzq_request  request code
+      _zzq_arg1..5  request params
+
+   The other two macros are used to support function wrapping, and are
+   a lot simpler.  VALGRIND_GET_NR_CONTEXT returns the value of the
+   guest's NRADDR pseudo-register and whatever other information is
+   needed to safely run the call original from the wrapper: on
+   ppc64-linux, the R2 value at the divert point is also needed.  This
+   information is abstracted into a user-visible type, OrigFn.
+
+   VALGRIND_CALL_NOREDIR_* behaves the same as the following on the
+   guest, but guarantees that the branch instruction will not be
+   redirected: x86: call *%eax, amd64: call *%rax, ppc32/ppc64:
+   branch-and-link-to-r11.  VALGRIND_CALL_NOREDIR is just text, not a
+   complete inline asm, since it needs to be combined with more magic
+   inline asm stuff to be useful.
+*/
+
+/* ------------------------- x86-{linux,darwin} ---------------- */
+
+#if defined(PLAT_x86_linux)  ||  defined(PLAT_x86_darwin)  \
+    ||  (defined(PLAT_x86_win32) && defined(__GNUC__))
+
+typedef
+   struct { 
+      unsigned int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+                     "roll $3,  %%edi ; roll $13, %%edi\n\t"      \
+                     "roll $29, %%edi ; roll $19, %%edi\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+  __extension__                                                   \
+  ({volatile unsigned int _zzq_args[6];                           \
+    volatile unsigned int _zzq_result;                            \
+    _zzq_args[0] = (unsigned int)(_zzq_request);                  \
+    _zzq_args[1] = (unsigned int)(_zzq_arg1);                     \
+    _zzq_args[2] = (unsigned int)(_zzq_arg2);                     \
+    _zzq_args[3] = (unsigned int)(_zzq_arg3);                     \
+    _zzq_args[4] = (unsigned int)(_zzq_arg4);                     \
+    _zzq_args[5] = (unsigned int)(_zzq_arg5);                     \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %EDX = client_request ( %EAX ) */         \
+                     "xchgl %%ebx,%%ebx"                          \
+                     : "=d" (_zzq_result)                         \
+                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
+                     : "cc", "memory"                             \
+                    );                                            \
+    _zzq_result;                                                  \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    volatile unsigned int __addr;                                 \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %EAX = guest_NRADDR */                    \
+                     "xchgl %%ecx,%%ecx"                          \
+                     : "=a" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory"                             \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_CALL_NOREDIR_EAX                                 \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* call-noredir *%EAX */                     \
+                     "xchgl %%edx,%%edx\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "xchgl %%edi,%%edi\n\t"                     \
+                     : : : "cc", "memory"                        \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_x86_linux || PLAT_x86_darwin || (PLAT_x86_win32 && __GNUC__) */
+
+/* ------------------------- x86-Win32 ------------------------- */
+
+#if defined(PLAT_x86_win32) && !defined(__GNUC__)
+
+typedef
+   struct { 
+      unsigned int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#if defined(_MSC_VER)
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+                     __asm rol edi, 3  __asm rol edi, 13          \
+                     __asm rol edi, 29 __asm rol edi, 19
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+    valgrind_do_client_request_expr((uintptr_t)(_zzq_default),    \
+        (uintptr_t)(_zzq_request), (uintptr_t)(_zzq_arg1),        \
+        (uintptr_t)(_zzq_arg2), (uintptr_t)(_zzq_arg3),           \
+        (uintptr_t)(_zzq_arg4), (uintptr_t)(_zzq_arg5))
+
+static __inline uintptr_t
+valgrind_do_client_request_expr(uintptr_t _zzq_default, uintptr_t _zzq_request,
+                                uintptr_t _zzq_arg1, uintptr_t _zzq_arg2,
+                                uintptr_t _zzq_arg3, uintptr_t _zzq_arg4,
+                                uintptr_t _zzq_arg5)
+{
+    volatile uintptr_t _zzq_args[6];
+    volatile unsigned int _zzq_result;
+    _zzq_args[0] = (uintptr_t)(_zzq_request);
+    _zzq_args[1] = (uintptr_t)(_zzq_arg1);
+    _zzq_args[2] = (uintptr_t)(_zzq_arg2);
+    _zzq_args[3] = (uintptr_t)(_zzq_arg3);
+    _zzq_args[4] = (uintptr_t)(_zzq_arg4);
+    _zzq_args[5] = (uintptr_t)(_zzq_arg5);
+    __asm { __asm lea eax, _zzq_args __asm mov edx, _zzq_default
+            __SPECIAL_INSTRUCTION_PREAMBLE
+            /* %EDX = client_request ( %EAX ) */
+            __asm xchg ebx,ebx
+            __asm mov _zzq_result, edx
+    }
+    return _zzq_result;
+}
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    volatile unsigned int __addr;                                 \
+    __asm { __SPECIAL_INSTRUCTION_PREAMBLE                        \
+            /* %EAX = guest_NRADDR */                             \
+            __asm xchg ecx,ecx                                    \
+            __asm mov __addr, eax                                 \
+    }                                                             \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_CALL_NOREDIR_EAX ERROR
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm { __SPECIAL_INSTRUCTION_PREAMBLE                       \
+            __asm xchg edi,edi                                   \
+    }                                                            \
+ } while (0)
+
+#else
+#error Unsupported compiler.
+#endif
+
+#endif /* PLAT_x86_win32 */
+
+/* ------------------------ amd64-{linux,darwin} --------------- */
+
+#if defined(PLAT_amd64_linux)  ||  defined(PLAT_amd64_darwin)
+
+typedef
+   struct { 
+      unsigned long long int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+                     "rolq $3,  %%rdi ; rolq $13, %%rdi\n\t"      \
+                     "rolq $61, %%rdi ; rolq $51, %%rdi\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+    __extension__                                                 \
+    ({ volatile unsigned long long int _zzq_args[6];              \
+    volatile unsigned long long int _zzq_result;                  \
+    _zzq_args[0] = (unsigned long long int)(_zzq_request);        \
+    _zzq_args[1] = (unsigned long long int)(_zzq_arg1);           \
+    _zzq_args[2] = (unsigned long long int)(_zzq_arg2);           \
+    _zzq_args[3] = (unsigned long long int)(_zzq_arg3);           \
+    _zzq_args[4] = (unsigned long long int)(_zzq_arg4);           \
+    _zzq_args[5] = (unsigned long long int)(_zzq_arg5);           \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %RDX = client_request ( %RAX ) */         \
+                     "xchgq %%rbx,%%rbx"                          \
+                     : "=d" (_zzq_result)                         \
+                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
+                     : "cc", "memory"                             \
+                    );                                            \
+    _zzq_result;                                                  \
+    })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    volatile unsigned long long int __addr;                       \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %RAX = guest_NRADDR */                    \
+                     "xchgq %%rcx,%%rcx"                          \
+                     : "=a" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory"                             \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_CALL_NOREDIR_RAX                                 \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* call-noredir *%RAX */                     \
+                     "xchgq %%rdx,%%rdx\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "xchgq %%rdi,%%rdi\n\t"                     \
+                     : : : "cc", "memory"                        \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */
+
+/* ------------------------ ppc32-linux ------------------------ */
+
+#if defined(PLAT_ppc32_linux)
+
+typedef
+   struct { 
+      unsigned int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+                    "rlwinm 0,0,3,0,31  ; rlwinm 0,0,13,0,31\n\t" \
+                    "rlwinm 0,0,29,0,31 ; rlwinm 0,0,19,0,31\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+                                                                  \
+    __extension__                                                 \
+  ({         unsigned int  _zzq_args[6];                          \
+             unsigned int  _zzq_result;                           \
+             unsigned int* _zzq_ptr;                              \
+    _zzq_args[0] = (unsigned int)(_zzq_request);                  \
+    _zzq_args[1] = (unsigned int)(_zzq_arg1);                     \
+    _zzq_args[2] = (unsigned int)(_zzq_arg2);                     \
+    _zzq_args[3] = (unsigned int)(_zzq_arg3);                     \
+    _zzq_args[4] = (unsigned int)(_zzq_arg4);                     \
+    _zzq_args[5] = (unsigned int)(_zzq_arg5);                     \
+    _zzq_ptr = _zzq_args;                                         \
+    __asm__ volatile("mr 3,%1\n\t" /*default*/                    \
+                     "mr 4,%2\n\t" /*ptr*/                        \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %R3 = client_request ( %R4 ) */           \
+                     "or 1,1,1\n\t"                               \
+                     "mr %0,3"     /*result*/                     \
+                     : "=b" (_zzq_result)                         \
+                     : "b" (_zzq_default), "b" (_zzq_ptr)         \
+                     : "cc", "memory", "r3", "r4");               \
+    _zzq_result;                                                  \
+    })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    unsigned int __addr;                                          \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %R3 = guest_NRADDR */                     \
+                     "or 2,2,2\n\t"                               \
+                     "mr %0,3"                                    \
+                     : "=b" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory", "r3"                       \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                   \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* branch-and-link-to-noredir *%R11 */       \
+                     "or 3,3,3\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "or 5,5,5\n\t"                              \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_ppc32_linux */
+
+/* ------------------------ ppc64-linux ------------------------ */
+
+#if defined(PLAT_ppc64_linux)
+
+typedef
+   struct { 
+      unsigned long long int nraddr; /* where's the code? */
+      unsigned long long int r2;  /* what tocptr do we need? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+                     "rotldi 0,0,3  ; rotldi 0,0,13\n\t"          \
+                     "rotldi 0,0,61 ; rotldi 0,0,51\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+                                                                  \
+  __extension__                                                   \
+  ({         unsigned long long int  _zzq_args[6];                \
+             unsigned long long int  _zzq_result;                 \
+             unsigned long long int* _zzq_ptr;                    \
+    _zzq_args[0] = (unsigned long long int)(_zzq_request);        \
+    _zzq_args[1] = (unsigned long long int)(_zzq_arg1);           \
+    _zzq_args[2] = (unsigned long long int)(_zzq_arg2);           \
+    _zzq_args[3] = (unsigned long long int)(_zzq_arg3);           \
+    _zzq_args[4] = (unsigned long long int)(_zzq_arg4);           \
+    _zzq_args[5] = (unsigned long long int)(_zzq_arg5);           \
+    _zzq_ptr = _zzq_args;                                         \
+    __asm__ volatile("mr 3,%1\n\t" /*default*/                    \
+                     "mr 4,%2\n\t" /*ptr*/                        \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %R3 = client_request ( %R4 ) */           \
+                     "or 1,1,1\n\t"                               \
+                     "mr %0,3"     /*result*/                     \
+                     : "=b" (_zzq_result)                         \
+                     : "b" (_zzq_default), "b" (_zzq_ptr)         \
+                     : "cc", "memory", "r3", "r4");               \
+    _zzq_result;                                                  \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    unsigned long long int __addr;                                \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %R3 = guest_NRADDR */                     \
+                     "or 2,2,2\n\t"                               \
+                     "mr %0,3"                                    \
+                     : "=b" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory", "r3"                       \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %R3 = guest_NRADDR_GPR2 */                \
+                     "or 4,4,4\n\t"                               \
+                     "mr %0,3"                                    \
+                     : "=b" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory", "r3"                       \
+                    );                                            \
+    _zzq_orig->r2 = __addr;                                       \
+  }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                   \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* branch-and-link-to-noredir *%R11 */       \
+                     "or 3,3,3\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "or 5,5,5\n\t"                              \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_ppc64_linux */
+
+/* ------------------------- arm-linux ------------------------- */
+
+#if defined(PLAT_arm_linux)
+
+typedef
+   struct { 
+      unsigned int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+            "mov r12, r12, ror #3  ; mov r12, r12, ror #13 \n\t"  \
+            "mov r12, r12, ror #29 ; mov r12, r12, ror #19 \n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+                                                                  \
+  __extension__                                                   \
+  ({volatile unsigned int  _zzq_args[6];                          \
+    volatile unsigned int  _zzq_result;                           \
+    _zzq_args[0] = (unsigned int)(_zzq_request);                  \
+    _zzq_args[1] = (unsigned int)(_zzq_arg1);                     \
+    _zzq_args[2] = (unsigned int)(_zzq_arg2);                     \
+    _zzq_args[3] = (unsigned int)(_zzq_arg3);                     \
+    _zzq_args[4] = (unsigned int)(_zzq_arg4);                     \
+    _zzq_args[5] = (unsigned int)(_zzq_arg5);                     \
+    __asm__ volatile("mov r3, %1\n\t" /*default*/                 \
+                     "mov r4, %2\n\t" /*ptr*/                     \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* R3 = client_request ( R4 ) */             \
+                     "orr r10, r10, r10\n\t"                      \
+                     "mov %0, r3"     /*result*/                  \
+                     : "=r" (_zzq_result)                         \
+                     : "r" (_zzq_default), "r" (&_zzq_args[0])    \
+                     : "cc","memory", "r3", "r4");                \
+    _zzq_result;                                                  \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    unsigned int __addr;                                          \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* R3 = guest_NRADDR */                      \
+                     "orr r11, r11, r11\n\t"                      \
+                     "mov %0, r3"                                 \
+                     : "=r" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory", "r3"                       \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                    \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* branch-and-link-to-noredir *%R4 */        \
+                     "orr r12, r12, r12\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "orr r9, r9, r9\n\t"                        \
+                     : : : "cc", "memory"                        \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_arm_linux */
+
+/* ------------------------ arm64-linux ------------------------- */
+
+#if defined(PLAT_arm64_linux)
+
+typedef
+   struct { 
+      unsigned long long int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE                            \
+            "ror x12, x12, #3  ;  ror x12, x12, #13 \n\t"         \
+            "ror x12, x12, #51 ;  ror x12, x12, #61 \n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+        _zzq_default, _zzq_request,                               \
+        _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+                                                                  \
+  __extension__                                                   \
+  ({volatile unsigned long long int  _zzq_args[6];                \
+    volatile unsigned long long int  _zzq_result;                 \
+    _zzq_args[0] = (unsigned long long int)(_zzq_request);        \
+    _zzq_args[1] = (unsigned long long int)(_zzq_arg1);           \
+    _zzq_args[2] = (unsigned long long int)(_zzq_arg2);           \
+    _zzq_args[3] = (unsigned long long int)(_zzq_arg3);           \
+    _zzq_args[4] = (unsigned long long int)(_zzq_arg4);           \
+    _zzq_args[5] = (unsigned long long int)(_zzq_arg5);           \
+    __asm__ volatile("mov x3, %1\n\t" /*default*/                 \
+                     "mov x4, %2\n\t" /*ptr*/                     \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* X3 = client_request ( X4 ) */             \
+                     "orr x10, x10, x10\n\t"                      \
+                     "mov %0, x3"     /*result*/                  \
+                     : "=r" (_zzq_result)                         \
+                     : "r" (_zzq_default), "r" (&_zzq_args[0])    \
+                     : "cc","memory", "x3", "x4");                \
+    _zzq_result;                                                  \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    unsigned long long int __addr;                                \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* X3 = guest_NRADDR */                      \
+                     "orr x11, x11, x11\n\t"                      \
+                     "mov %0, x3"                                 \
+                     : "=r" (__addr)                              \
+                     :                                            \
+                     : "cc", "memory", "x3"                       \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                    \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* branch-and-link-to-noredir X8 */          \
+                     "orr x12, x12, x12\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "orr x9, x9, x9\n\t"                        \
+                     : : : "cc", "memory"                        \
+                    );                                           \
+ } while (0)
+
+#endif /* PLAT_arm64_linux */
+
+/* ------------------------ s390x-linux ------------------------ */
+
+#if defined(PLAT_s390x_linux)
+
+typedef
+  struct {
+     unsigned long long int nraddr; /* where's the code? */
+  }
+  OrigFn;
+
+/* __SPECIAL_INSTRUCTION_PREAMBLE will be used to identify Valgrind specific
+ * code. This detection is implemented in platform specific toIR.c
+ * (e.g. VEX/priv/guest_s390_decoder.c).
+ */
+#define __SPECIAL_INSTRUCTION_PREAMBLE                           \
+                     "lr 15,15\n\t"                              \
+                     "lr 1,1\n\t"                                \
+                     "lr 2,2\n\t"                                \
+                     "lr 3,3\n\t"
+
+#define __CLIENT_REQUEST_CODE "lr 2,2\n\t"
+#define __GET_NR_CONTEXT_CODE "lr 3,3\n\t"
+#define __CALL_NO_REDIR_CODE  "lr 4,4\n\t"
+#define __VEX_INJECT_IR_CODE  "lr 5,5\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                         \
+       _zzq_default, _zzq_request,                               \
+       _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+  __extension__                                                  \
+ ({volatile unsigned long long int _zzq_args[6];                 \
+   volatile unsigned long long int _zzq_result;                  \
+   _zzq_args[0] = (unsigned long long int)(_zzq_request);        \
+   _zzq_args[1] = (unsigned long long int)(_zzq_arg1);           \
+   _zzq_args[2] = (unsigned long long int)(_zzq_arg2);           \
+   _zzq_args[3] = (unsigned long long int)(_zzq_arg3);           \
+   _zzq_args[4] = (unsigned long long int)(_zzq_arg4);           \
+   _zzq_args[5] = (unsigned long long int)(_zzq_arg5);           \
+   __asm__ volatile(/* r2 = args */                              \
+                    "lgr 2,%1\n\t"                               \
+                    /* r3 = default */                           \
+                    "lgr 3,%2\n\t"                               \
+                    __SPECIAL_INSTRUCTION_PREAMBLE               \
+                    __CLIENT_REQUEST_CODE                        \
+                    /* results = r3 */                           \
+                    "lgr %0, 3\n\t"                              \
+                    : "=d" (_zzq_result)                         \
+                    : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
+                    : "cc", "2", "3", "memory"                   \
+                   );                                            \
+   _zzq_result;                                                  \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                      \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+   volatile unsigned long long int __addr;                       \
+   __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                    __GET_NR_CONTEXT_CODE                        \
+                    "lgr %0, 3\n\t"                              \
+                    : "=a" (__addr)                              \
+                    :                                            \
+                    : "cc", "3", "memory"                        \
+                   );                                            \
+   _zzq_orig->nraddr = __addr;                                   \
+ }
+
+#define VALGRIND_CALL_NOREDIR_R1                                 \
+                    __SPECIAL_INSTRUCTION_PREAMBLE               \
+                    __CALL_NO_REDIR_CODE
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     __VEX_INJECT_IR_CODE);                      \
+ } while (0)
+
+#endif /* PLAT_s390x_linux */
+
+/* ------------------------- mips32-linux ---------------- */
+
+#if defined(PLAT_mips32_linux)
+
+typedef
+   struct { 
+      unsigned int nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+/* .word  0x342
+ * .word  0x742
+ * .word  0xC2
+ * .word  0x4C2*/
+#define __SPECIAL_INSTRUCTION_PREAMBLE          \
+                     "srl $0, $0, 13\n\t"       \
+                     "srl $0, $0, 29\n\t"       \
+                     "srl $0, $0, 3\n\t"        \
+                     "srl $0, $0, 19\n\t"
+                    
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                          \
+       _zzq_default, _zzq_request,                                \
+       _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)     \
+  __extension__                                                   \
+  ({ volatile unsigned int _zzq_args[6];                          \
+    volatile unsigned int _zzq_result;                            \
+    _zzq_args[0] = (unsigned int)(_zzq_request);                  \
+    _zzq_args[1] = (unsigned int)(_zzq_arg1);                     \
+    _zzq_args[2] = (unsigned int)(_zzq_arg2);                     \
+    _zzq_args[3] = (unsigned int)(_zzq_arg3);                     \
+    _zzq_args[4] = (unsigned int)(_zzq_arg4);                     \
+    _zzq_args[5] = (unsigned int)(_zzq_arg5);                     \
+        __asm__ volatile("move $11, %1\n\t" /*default*/           \
+                     "move $12, %2\n\t" /*ptr*/                   \
+                     __SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* T3 = client_request ( T4 ) */             \
+                     "or $13, $13, $13\n\t"                       \
+                     "move %0, $11\n\t"     /*result*/            \
+                     : "=r" (_zzq_result)                         \
+                     : "r" (_zzq_default), "r" (&_zzq_args[0])    \
+                     : "$11", "$12");                             \
+    _zzq_result;                                                  \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                       \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+    volatile unsigned int __addr;                                 \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+                     /* %t9 = guest_NRADDR */                     \
+                     "or $14, $14, $14\n\t"                       \
+                     "move %0, $11"     /*result*/                \
+                     : "=r" (__addr)                              \
+                     :                                            \
+                     : "$11"                                      \
+                    );                                            \
+    _zzq_orig->nraddr = __addr;                                   \
+  }
+
+#define VALGRIND_CALL_NOREDIR_T9                                 \
+                     __SPECIAL_INSTRUCTION_PREAMBLE              \
+                     /* call-noredir *%t9 */                     \
+                     "or $15, $15, $15\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                 \
+ do {                                                            \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE              \
+                     "or $11, $11, $11\n\t"                      \
+                    );                                           \
+ } while (0)
+
+
+#endif /* PLAT_mips32_linux */
+
+/* ------------------------- mips64-linux ---------------- */
+
+#if defined(PLAT_mips64_linux)
+
+typedef
+   struct {
+      unsigned long long nraddr; /* where's the code? */
+   }
+   OrigFn;
+
+/* dsll $0,$0, 3
+ * dsll $0,$0, 13
+ * dsll $0,$0, 29
+ * dsll $0,$0, 19*/
+#define __SPECIAL_INSTRUCTION_PREAMBLE                              \
+                     "dsll $0,$0, 3 ; dsll $0,$0,13\n\t"            \
+                     "dsll $0,$0,29 ; dsll $0,$0,19\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR(                            \
+       _zzq_default, _zzq_request,                                  \
+       _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)       \
+  __extension__                                                     \
+  ({ volatile unsigned long long int _zzq_args[6];                  \
+    volatile unsigned long long int _zzq_result;                    \
+    _zzq_args[0] = (unsigned long long int)(_zzq_request);          \
+    _zzq_args[1] = (unsigned long long int)(_zzq_arg1);             \
+    _zzq_args[2] = (unsigned long long int)(_zzq_arg2);             \
+    _zzq_args[3] = (unsigned long long int)(_zzq_arg3);             \
+    _zzq_args[4] = (unsigned long long int)(_zzq_arg4);             \
+    _zzq_args[5] = (unsigned long long int)(_zzq_arg5);             \
+        __asm__ volatile("move $11, %1\n\t" /*default*/             \
+                         "move $12, %2\n\t" /*ptr*/                 \
+                         __SPECIAL_INSTRUCTION_PREAMBLE             \
+                         /* $11 = client_request ( $12 ) */         \
+                         "or $13, $13, $13\n\t"                     \
+                         "move %0, $11\n\t"     /*result*/          \
+                         : "=r" (_zzq_result)                       \
+                         : "r" (_zzq_default), "r" (&_zzq_args[0])  \
+                         : "$11", "$12");                           \
+    _zzq_result;                                                    \
+  })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                         \
+  { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                     \
+    volatile unsigned long long int __addr;                         \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE                 \
+                     /* $11 = guest_NRADDR */                       \
+                     "or $14, $14, $14\n\t"                         \
+                     "move %0, $11"     /*result*/                  \
+                     : "=r" (__addr)                                \
+                     :                                              \
+                     : "$11");                                      \
+    _zzq_orig->nraddr = __addr;                                     \
+  }
+
+#define VALGRIND_CALL_NOREDIR_T9                                    \
+                     __SPECIAL_INSTRUCTION_PREAMBLE                 \
+                     /* call-noredir $25 */                         \
+                     "or $15, $15, $15\n\t"
+
+#define VALGRIND_VEX_INJECT_IR()                                    \
+ do {                                                               \
+    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE                 \
+                     "or $11, $11, $11\n\t"                         \
+                    );                                              \
+ } while (0)
+
+#endif /* PLAT_mips64_linux */
+
+/* Insert assembly code for other platforms here... */
+
+#endif /* NVALGRIND */
+
+
+/* ------------------------------------------------------------------ */
+/* PLATFORM SPECIFICS for FUNCTION WRAPPING.  This is all very        */
+/* ugly.  It's the least-worst tradeoff I can think of.               */
+/* ------------------------------------------------------------------ */
+
+/* This section defines magic (a.k.a appalling-hack) macros for doing
+   guaranteed-no-redirection macros, so as to get from function
+   wrappers to the functions they are wrapping.  The whole point is to
+   construct standard call sequences, but to do the call itself with a
+   special no-redirect call pseudo-instruction that the JIT
+   understands and handles specially.  This section is long and
+   repetitious, and I can't see a way to make it shorter.
+
+   The naming scheme is as follows:
+
+      CALL_FN_{W,v}_{v,W,WW,WWW,WWWW,5W,6W,7W,etc}
+
+   'W' stands for "word" and 'v' for "void".  Hence there are
+   different macros for calling arity 0, 1, 2, 3, 4, etc, functions,
+   and for each, the possibility of returning a word-typed result, or
+   no result.
+*/
+
+/* Use these to write the name of your wrapper.  NOTE: duplicates
+   VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h.  NOTE also: inserts
+   the default behaviour equivalance class tag "0000" into the name.
+   See pub_tool_redir.h for details -- normally you don't need to
+   think about this, though. */
+
+/* Use an extra level of macroisation so as to ensure the soname/fnname
+   args are fully macro-expanded before pasting them together. */
+#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
+
+#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname)                    \
+   VG_CONCAT4(_vgw00000ZU_,soname,_,fnname)
+
+#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname)                    \
+   VG_CONCAT4(_vgw00000ZZ_,soname,_,fnname)
+
+/* Use this macro from within a wrapper function to collect the
+   context (address and possibly other info) of the original function.
+   Once you have that you can then use it in one of the CALL_FN_
+   macros.  The type of the argument _lval is OrigFn. */
+#define VALGRIND_GET_ORIG_FN(_lval)  VALGRIND_GET_NR_CONTEXT(_lval)
+
+/* Also provide end-user facilities for function replacement, rather
+   than wrapping.  A replacement function differs from a wrapper in
+   that it has no way to get hold of the original function being
+   called, and hence no way to call onwards to it.  In a replacement
+   function, VALGRIND_GET_ORIG_FN always returns zero. */
+
+#define I_REPLACE_SONAME_FNNAME_ZU(soname,fnname)                 \
+   VG_CONCAT4(_vgr00000ZU_,soname,_,fnname)
+
+#define I_REPLACE_SONAME_FNNAME_ZZ(soname,fnname)                 \
+   VG_CONCAT4(_vgr00000ZZ_,soname,_,fnname)
+
+/* Derivatives of the main macros below, for calling functions
+   returning void. */
+
+#define CALL_FN_v_v(fnptr)                                        \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_v(_junk,fnptr); } while (0)
+
+#define CALL_FN_v_W(fnptr, arg1)                                  \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_W(_junk,fnptr,arg1); } while (0)
+
+#define CALL_FN_v_WW(fnptr, arg1,arg2)                            \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_WW(_junk,fnptr,arg1,arg2); } while (0)
+
+#define CALL_FN_v_WWW(fnptr, arg1,arg2,arg3)                      \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_WWW(_junk,fnptr,arg1,arg2,arg3); } while (0)
+
+#define CALL_FN_v_WWWW(fnptr, arg1,arg2,arg3,arg4)                \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_WWWW(_junk,fnptr,arg1,arg2,arg3,arg4); } while (0)
+
+#define CALL_FN_v_5W(fnptr, arg1,arg2,arg3,arg4,arg5)             \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_5W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5); } while (0)
+
+#define CALL_FN_v_6W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6)        \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_6W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6); } while (0)
+
+#define CALL_FN_v_7W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6,arg7)   \
+   do { volatile unsigned long _junk;                             \
+        CALL_FN_W_7W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6,arg7); } while (0)
+
+/* ------------------------- x86-{linux,darwin} ---------------- */
+
+#if defined(PLAT_x86_linux)  ||  defined(PLAT_x86_darwin)
+
+/* These regs are trashed by the hidden call.  No need to mention eax
+   as gcc can already see that, plus causes gcc to bomb. */
+#define __CALLER_SAVED_REGS /*"eax"*/ "ecx", "edx"
+
+/* Macros to save and align the stack before making a function
+   call and restore it afterwards as gcc may not keep the stack
+   pointer aligned if it doesn't realise calls are being made
+   to other functions. */
+
+#define VALGRIND_ALIGN_STACK               \
+      "movl %%esp,%%edi\n\t"               \
+      "andl $0xfffffff0,%%esp\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "movl %%edi,%%esp\n\t"
+
+/* These CALL_FN_ macros assume that on x86-linux, sizeof(unsigned
+   long) == 4. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[2];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $12, %%esp\n\t"                                    \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $8, %%esp\n\t"                                     \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $4, %%esp\n\t"                                     \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[6];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $12, %%esp\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[7];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $8, %%esp\n\t"                                     \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[8];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $4, %%esp\n\t"                                     \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[9];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "pushl 32(%%eax)\n\t"                                    \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[10];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $12, %%esp\n\t"                                    \
+         "pushl 36(%%eax)\n\t"                                    \
+         "pushl 32(%%eax)\n\t"                                    \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[11];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $8, %%esp\n\t"                                     \
+         "pushl 40(%%eax)\n\t"                                    \
+         "pushl 36(%%eax)\n\t"                                    \
+         "pushl 32(%%eax)\n\t"                                    \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11)                          \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[12];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "subl $4, %%esp\n\t"                                     \
+         "pushl 44(%%eax)\n\t"                                    \
+         "pushl 40(%%eax)\n\t"                                    \
+         "pushl 36(%%eax)\n\t"                                    \
+         "pushl 32(%%eax)\n\t"                                    \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11,arg12)                    \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[13];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      _argvec[12] = (unsigned long)(arg12);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "pushl 48(%%eax)\n\t"                                    \
+         "pushl 44(%%eax)\n\t"                                    \
+         "pushl 40(%%eax)\n\t"                                    \
+         "pushl 36(%%eax)\n\t"                                    \
+         "pushl 32(%%eax)\n\t"                                    \
+         "pushl 28(%%eax)\n\t"                                    \
+         "pushl 24(%%eax)\n\t"                                    \
+         "pushl 20(%%eax)\n\t"                                    \
+         "pushl 16(%%eax)\n\t"                                    \
+         "pushl 12(%%eax)\n\t"                                    \
+         "pushl 8(%%eax)\n\t"                                     \
+         "pushl 4(%%eax)\n\t"                                     \
+         "movl (%%eax), %%eax\n\t"  /* target->%eax */            \
+         VALGRIND_CALL_NOREDIR_EAX                                \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=a" (_res)                                  \
+         : /*in*/    "a" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_x86_linux || PLAT_x86_darwin */
+
+/* ------------------------ amd64-{linux,darwin} --------------- */
+
+#if defined(PLAT_amd64_linux)  ||  defined(PLAT_amd64_darwin)
+
+/* ARGREGS: rdi rsi rdx rcx r8 r9 (the rest on stack in R-to-L order) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS /*"rax",*/ "rcx", "rdx", "rsi",       \
+                            "rdi", "r8", "r9", "r10", "r11"
+
+/* This is all pretty complex.  It's so as to make stack unwinding
+   work reliably.  See bug 243270.  The basic problem is the sub and
+   add of 128 of %rsp in all of the following macros.  If gcc believes
+   the CFA is in %rsp, then unwinding may fail, because what's at the
+   CFA is not what gcc "expected" when it constructs the CFIs for the
+   places where the macros are instantiated.
+
+   But we can't just add a CFI annotation to increase the CFA offset
+   by 128, to match the sub of 128 from %rsp, because we don't know
+   whether gcc has chosen %rsp as the CFA at that point, or whether it
+   has chosen some other register (eg, %rbp).  In the latter case,
+   adding a CFI annotation to change the CFA offset is simply wrong.
+
+   So the solution is to get hold of the CFA using
+   __builtin_dwarf_cfa(), put it in a known register, and add a
+   CFI annotation to say what the register is.  We choose %rbp for
+   this (perhaps perversely), because:
+
+   (1) %rbp is already subject to unwinding.  If a new register was
+       chosen then the unwinder would have to unwind it in all stack
+       traces, which is expensive, and
+
+   (2) %rbp is already subject to precise exception updates in the
+       JIT.  If a new register was chosen, we'd have to have precise
+       exceptions for it too, which reduces performance of the
+       generated code.
+
+   However .. one extra complication.  We can't just whack the result
+   of __builtin_dwarf_cfa() into %rbp and then add %rbp to the
+   list of trashed registers at the end of the inline assembly
+   fragments; gcc won't allow %rbp to appear in that list.  Hence
+   instead we need to stash %rbp in %r15 for the duration of the asm,
+   and say that %r15 is trashed instead.  gcc seems happy to go with
+   that.
+
+   Oh .. and this all needs to be conditionalised so that it is
+   unchanged from before this commit, when compiled with older gccs
+   that don't support __builtin_dwarf_cfa.  Furthermore, since
+   this header file is freestanding, it has to be independent of
+   config.h, and so the following conditionalisation cannot depend on
+   configure time checks.
+
+   Although it's not clear from
+   'defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)',
+   this expression excludes Darwin.
+   .cfi directives in Darwin assembly appear to be completely
+   different and I haven't investigated how they work.
+
+   For even more entertainment value, note we have to use the
+   completely undocumented __builtin_dwarf_cfa(), which appears to
+   really compute the CFA, whereas __builtin_frame_address(0) claims
+   to but actually doesn't.  See
+   https://bugs.kde.org/show_bug.cgi?id=243270#c47
+*/
+#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)
+#  define __FRAME_POINTER                                         \
+      ,"r"(__builtin_dwarf_cfa())
+#  define VALGRIND_CFI_PROLOGUE                                   \
+      "movq %%rbp, %%r15\n\t"                                     \
+      "movq %2, %%rbp\n\t"                                        \
+      ".cfi_remember_state\n\t"                                   \
+      ".cfi_def_cfa rbp, 0\n\t"
+#  define VALGRIND_CFI_EPILOGUE                                   \
+      "movq %%r15, %%rbp\n\t"                                     \
+      ".cfi_restore_state\n\t"
+#else
+#  define __FRAME_POINTER
+#  define VALGRIND_CFI_PROLOGUE
+#  define VALGRIND_CFI_EPILOGUE
+#endif
+
+/* Macros to save and align the stack before making a function
+   call and restore it afterwards as gcc may not keep the stack
+   pointer aligned if it doesn't realise calls are being made
+   to other functions. */
+
+#define VALGRIND_ALIGN_STACK               \
+      "movq %%rsp,%%r14\n\t"               \
+      "andq $0xfffffffffffffff0,%%rsp\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "movq %%r14,%%rsp\n\t"
+
+/* These CALL_FN_ macros assume that on amd64-linux, sizeof(unsigned
+   long) == 8. */
+
+/* NB 9 Sept 07.  There is a nasty kludge here in all these CALL_FN_
+   macros.  In order not to trash the stack redzone, we need to drop
+   %rsp by 128 before the hidden call, and restore afterwards.  The
+   nastyness is that it is only by luck that the stack still appears
+   to be unwindable during the hidden call - since then the behaviour
+   of any routine using this macro does not match what the CFI data
+   says.  Sigh.
+
+   Why is this important?  Imagine that a wrapper has a stack
+   allocated local, and passes to the hidden call, a pointer to it.
+   Because gcc does not know about the hidden call, it may allocate
+   that local in the redzone.  Unfortunately the hidden call may then
+   trash it before it comes to use it.  So we must step clear of the
+   redzone, for the duration of the hidden call, to make it safe.
+
+   Probably the same problem afflicts the other redzone-style ABIs too
+   (ppc64-linux); but for those, the stack is
+   self describing (none of this CFI nonsense) so at least messing
+   with the stack pointer doesn't give a danger of non-unwindable
+   stack. */
+
+#define CALL_FN_W_v(lval, orig)                                        \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[1];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                                  \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[2];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                            \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[3];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                      \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[4];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)                \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[5];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)             \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[6];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)        \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[7];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,        \
+                                 arg7)                                 \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[8];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $136,%%rsp\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,        \
+                                 arg7,arg8)                            \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[9];                               \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      _argvec[8] = (unsigned long)(arg8);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "pushq 64(%%rax)\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,        \
+                                 arg7,arg8,arg9)                       \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[10];                              \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      _argvec[8] = (unsigned long)(arg8);                              \
+      _argvec[9] = (unsigned long)(arg9);                              \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $136,%%rsp\n\t"                                         \
+         "pushq 72(%%rax)\n\t"                                         \
+         "pushq 64(%%rax)\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,       \
+                                  arg7,arg8,arg9,arg10)                \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[11];                              \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      _argvec[8] = (unsigned long)(arg8);                              \
+      _argvec[9] = (unsigned long)(arg9);                              \
+      _argvec[10] = (unsigned long)(arg10);                            \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "pushq 80(%%rax)\n\t"                                         \
+         "pushq 72(%%rax)\n\t"                                         \
+         "pushq 64(%%rax)\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,       \
+                                  arg7,arg8,arg9,arg10,arg11)          \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[12];                              \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      _argvec[8] = (unsigned long)(arg8);                              \
+      _argvec[9] = (unsigned long)(arg9);                              \
+      _argvec[10] = (unsigned long)(arg10);                            \
+      _argvec[11] = (unsigned long)(arg11);                            \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $136,%%rsp\n\t"                                         \
+         "pushq 88(%%rax)\n\t"                                         \
+         "pushq 80(%%rax)\n\t"                                         \
+         "pushq 72(%%rax)\n\t"                                         \
+         "pushq 64(%%rax)\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,       \
+                                arg7,arg8,arg9,arg10,arg11,arg12)      \
+   do {                                                                \
+      volatile OrigFn        _orig = (orig);                           \
+      volatile unsigned long _argvec[13];                              \
+      volatile unsigned long _res;                                     \
+      _argvec[0] = (unsigned long)_orig.nraddr;                        \
+      _argvec[1] = (unsigned long)(arg1);                              \
+      _argvec[2] = (unsigned long)(arg2);                              \
+      _argvec[3] = (unsigned long)(arg3);                              \
+      _argvec[4] = (unsigned long)(arg4);                              \
+      _argvec[5] = (unsigned long)(arg5);                              \
+      _argvec[6] = (unsigned long)(arg6);                              \
+      _argvec[7] = (unsigned long)(arg7);                              \
+      _argvec[8] = (unsigned long)(arg8);                              \
+      _argvec[9] = (unsigned long)(arg9);                              \
+      _argvec[10] = (unsigned long)(arg10);                            \
+      _argvec[11] = (unsigned long)(arg11);                            \
+      _argvec[12] = (unsigned long)(arg12);                            \
+      __asm__ volatile(                                                \
+         VALGRIND_CFI_PROLOGUE                                         \
+         VALGRIND_ALIGN_STACK                                          \
+         "subq $128,%%rsp\n\t"                                         \
+         "pushq 96(%%rax)\n\t"                                         \
+         "pushq 88(%%rax)\n\t"                                         \
+         "pushq 80(%%rax)\n\t"                                         \
+         "pushq 72(%%rax)\n\t"                                         \
+         "pushq 64(%%rax)\n\t"                                         \
+         "pushq 56(%%rax)\n\t"                                         \
+         "movq 48(%%rax), %%r9\n\t"                                    \
+         "movq 40(%%rax), %%r8\n\t"                                    \
+         "movq 32(%%rax), %%rcx\n\t"                                   \
+         "movq 24(%%rax), %%rdx\n\t"                                   \
+         "movq 16(%%rax), %%rsi\n\t"                                   \
+         "movq 8(%%rax), %%rdi\n\t"                                    \
+         "movq (%%rax), %%rax\n\t"  /* target->%rax */                 \
+         VALGRIND_CALL_NOREDIR_RAX                                     \
+         VALGRIND_RESTORE_STACK                                        \
+         VALGRIND_CFI_EPILOGUE                                         \
+         : /*out*/   "=a" (_res)                                       \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER                 \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+      );                                                               \
+      lval = (__typeof__(lval)) _res;                                  \
+   } while (0)
+
+#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */
+
+/* ------------------------ ppc32-linux ------------------------ */
+
+#if defined(PLAT_ppc32_linux)
+
+/* This is useful for finding out about the on-stack stuff:
+
+   extern int f9  ( int,int,int,int,int,int,int,int,int );
+   extern int f10 ( int,int,int,int,int,int,int,int,int,int );
+   extern int f11 ( int,int,int,int,int,int,int,int,int,int,int );
+   extern int f12 ( int,int,int,int,int,int,int,int,int,int,int,int );
+
+   int g9 ( void ) {
+      return f9(11,22,33,44,55,66,77,88,99);
+   }
+   int g10 ( void ) {
+      return f10(11,22,33,44,55,66,77,88,99,110);
+   }
+   int g11 ( void ) {
+      return f11(11,22,33,44,55,66,77,88,99,110,121);
+   }
+   int g12 ( void ) {
+      return f12(11,22,33,44,55,66,77,88,99,110,121,132);
+   }
+*/
+
+/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS                                       \
+   "lr", "ctr", "xer",                                            \
+   "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",        \
+   "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",   \
+   "r11", "r12", "r13"
+
+/* Macros to save and align the stack before making a function
+   call and restore it afterwards as gcc may not keep the stack
+   pointer aligned if it doesn't realise calls are being made
+   to other functions. */
+
+#define VALGRIND_ALIGN_STACK               \
+      "mr 28,1\n\t"                        \
+      "rlwinm 1,1,0,0,27\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "mr 1,28\n\t"
+
+/* These CALL_FN_ macros assume that on ppc32-linux, 
+   sizeof(unsigned long) == 4. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[2];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[6];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[7];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[8];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[9];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      _argvec[8] = (unsigned long)arg8;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 10,32(11)\n\t" /* arg8->r10 */                      \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[10];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      _argvec[8] = (unsigned long)arg8;                           \
+      _argvec[9] = (unsigned long)arg9;                           \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "addi 1,1,-16\n\t"                                       \
+         /* arg9 */                                               \
+         "lwz 3,36(11)\n\t"                                       \
+         "stw 3,8(1)\n\t"                                         \
+         /* args1-8 */                                            \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 10,32(11)\n\t" /* arg8->r10 */                      \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[11];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      _argvec[8] = (unsigned long)arg8;                           \
+      _argvec[9] = (unsigned long)arg9;                           \
+      _argvec[10] = (unsigned long)arg10;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "addi 1,1,-16\n\t"                                       \
+         /* arg10 */                                              \
+         "lwz 3,40(11)\n\t"                                       \
+         "stw 3,12(1)\n\t"                                        \
+         /* arg9 */                                               \
+         "lwz 3,36(11)\n\t"                                       \
+         "stw 3,8(1)\n\t"                                         \
+         /* args1-8 */                                            \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 10,32(11)\n\t" /* arg8->r10 */                      \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10,arg11)     \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[12];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      _argvec[8] = (unsigned long)arg8;                           \
+      _argvec[9] = (unsigned long)arg9;                           \
+      _argvec[10] = (unsigned long)arg10;                         \
+      _argvec[11] = (unsigned long)arg11;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "addi 1,1,-32\n\t"                                       \
+         /* arg11 */                                              \
+         "lwz 3,44(11)\n\t"                                       \
+         "stw 3,16(1)\n\t"                                        \
+         /* arg10 */                                              \
+         "lwz 3,40(11)\n\t"                                       \
+         "stw 3,12(1)\n\t"                                        \
+         /* arg9 */                                               \
+         "lwz 3,36(11)\n\t"                                       \
+         "stw 3,8(1)\n\t"                                         \
+         /* args1-8 */                                            \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 10,32(11)\n\t" /* arg8->r10 */                      \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                arg7,arg8,arg9,arg10,arg11,arg12) \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[13];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)arg1;                           \
+      _argvec[2] = (unsigned long)arg2;                           \
+      _argvec[3] = (unsigned long)arg3;                           \
+      _argvec[4] = (unsigned long)arg4;                           \
+      _argvec[5] = (unsigned long)arg5;                           \
+      _argvec[6] = (unsigned long)arg6;                           \
+      _argvec[7] = (unsigned long)arg7;                           \
+      _argvec[8] = (unsigned long)arg8;                           \
+      _argvec[9] = (unsigned long)arg9;                           \
+      _argvec[10] = (unsigned long)arg10;                         \
+      _argvec[11] = (unsigned long)arg11;                         \
+      _argvec[12] = (unsigned long)arg12;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "addi 1,1,-32\n\t"                                       \
+         /* arg12 */                                              \
+         "lwz 3,48(11)\n\t"                                       \
+         "stw 3,20(1)\n\t"                                        \
+         /* arg11 */                                              \
+         "lwz 3,44(11)\n\t"                                       \
+         "stw 3,16(1)\n\t"                                        \
+         /* arg10 */                                              \
+         "lwz 3,40(11)\n\t"                                       \
+         "stw 3,12(1)\n\t"                                        \
+         /* arg9 */                                               \
+         "lwz 3,36(11)\n\t"                                       \
+         "stw 3,8(1)\n\t"                                         \
+         /* args1-8 */                                            \
+         "lwz 3,4(11)\n\t"   /* arg1->r3 */                       \
+         "lwz 4,8(11)\n\t"                                        \
+         "lwz 5,12(11)\n\t"                                       \
+         "lwz 6,16(11)\n\t"  /* arg4->r6 */                       \
+         "lwz 7,20(11)\n\t"                                       \
+         "lwz 8,24(11)\n\t"                                       \
+         "lwz 9,28(11)\n\t"                                       \
+         "lwz 10,32(11)\n\t" /* arg8->r10 */                      \
+         "lwz 11,0(11)\n\t"  /* target->r11 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         VALGRIND_RESTORE_STACK                                   \
+         "mr %0,3"                                                \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_ppc32_linux */
+
+/* ------------------------ ppc64-linux ------------------------ */
+
+#if defined(PLAT_ppc64_linux)
+
+/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS                                       \
+   "lr", "ctr", "xer",                                            \
+   "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",        \
+   "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",   \
+   "r11", "r12", "r13"
+
+/* Macros to save and align the stack before making a function
+   call and restore it afterwards as gcc may not keep the stack
+   pointer aligned if it doesn't realise calls are being made
+   to other functions. */
+
+#define VALGRIND_ALIGN_STACK               \
+      "mr 28,1\n\t"                        \
+      "rldicr 1,1,0,59\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "mr 1,28\n\t"
+
+/* These CALL_FN_ macros assume that on ppc64-linux, sizeof(unsigned
+   long) == 8. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+0];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1] = (unsigned long)_orig.r2;                       \
+      _argvec[2] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+1];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+2];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+3];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+4];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+5];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+6];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+7];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+8];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      _argvec[2+8] = (unsigned long)arg8;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  10, 64(11)\n\t" /* arg8->r10 */                     \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+9];                        \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      _argvec[2+8] = (unsigned long)arg8;                         \
+      _argvec[2+9] = (unsigned long)arg9;                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "addi 1,1,-128\n\t"  /* expand stack frame */            \
+         /* arg9 */                                               \
+         "ld  3,72(11)\n\t"                                       \
+         "std 3,112(1)\n\t"                                       \
+         /* args1-8 */                                            \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  10, 64(11)\n\t" /* arg8->r10 */                     \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+10];                       \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      _argvec[2+8] = (unsigned long)arg8;                         \
+      _argvec[2+9] = (unsigned long)arg9;                         \
+      _argvec[2+10] = (unsigned long)arg10;                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "addi 1,1,-128\n\t"  /* expand stack frame */            \
+         /* arg10 */                                              \
+         "ld  3,80(11)\n\t"                                       \
+         "std 3,120(1)\n\t"                                       \
+         /* arg9 */                                               \
+         "ld  3,72(11)\n\t"                                       \
+         "std 3,112(1)\n\t"                                       \
+         /* args1-8 */                                            \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  10, 64(11)\n\t" /* arg8->r10 */                     \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10,arg11)     \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+11];                       \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      _argvec[2+8] = (unsigned long)arg8;                         \
+      _argvec[2+9] = (unsigned long)arg9;                         \
+      _argvec[2+10] = (unsigned long)arg10;                       \
+      _argvec[2+11] = (unsigned long)arg11;                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "addi 1,1,-144\n\t"  /* expand stack frame */            \
+         /* arg11 */                                              \
+         "ld  3,88(11)\n\t"                                       \
+         "std 3,128(1)\n\t"                                       \
+         /* arg10 */                                              \
+         "ld  3,80(11)\n\t"                                       \
+         "std 3,120(1)\n\t"                                       \
+         /* arg9 */                                               \
+         "ld  3,72(11)\n\t"                                       \
+         "std 3,112(1)\n\t"                                       \
+         /* args1-8 */                                            \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  10, 64(11)\n\t" /* arg8->r10 */                     \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                arg7,arg8,arg9,arg10,arg11,arg12) \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3+12];                       \
+      volatile unsigned long _res;                                \
+      /* _argvec[0] holds current r2 across the call */           \
+      _argvec[1]   = (unsigned long)_orig.r2;                     \
+      _argvec[2]   = (unsigned long)_orig.nraddr;                 \
+      _argvec[2+1] = (unsigned long)arg1;                         \
+      _argvec[2+2] = (unsigned long)arg2;                         \
+      _argvec[2+3] = (unsigned long)arg3;                         \
+      _argvec[2+4] = (unsigned long)arg4;                         \
+      _argvec[2+5] = (unsigned long)arg5;                         \
+      _argvec[2+6] = (unsigned long)arg6;                         \
+      _argvec[2+7] = (unsigned long)arg7;                         \
+      _argvec[2+8] = (unsigned long)arg8;                         \
+      _argvec[2+9] = (unsigned long)arg9;                         \
+      _argvec[2+10] = (unsigned long)arg10;                       \
+      _argvec[2+11] = (unsigned long)arg11;                       \
+      _argvec[2+12] = (unsigned long)arg12;                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "mr 11,%1\n\t"                                           \
+         "std 2,-16(11)\n\t"  /* save tocptr */                   \
+         "ld   2,-8(11)\n\t"  /* use nraddr's tocptr */           \
+         "addi 1,1,-144\n\t"  /* expand stack frame */            \
+         /* arg12 */                                              \
+         "ld  3,96(11)\n\t"                                       \
+         "std 3,136(1)\n\t"                                       \
+         /* arg11 */                                              \
+         "ld  3,88(11)\n\t"                                       \
+         "std 3,128(1)\n\t"                                       \
+         /* arg10 */                                              \
+         "ld  3,80(11)\n\t"                                       \
+         "std 3,120(1)\n\t"                                       \
+         /* arg9 */                                               \
+         "ld  3,72(11)\n\t"                                       \
+         "std 3,112(1)\n\t"                                       \
+         /* args1-8 */                                            \
+         "ld   3, 8(11)\n\t"  /* arg1->r3 */                      \
+         "ld   4, 16(11)\n\t" /* arg2->r4 */                      \
+         "ld   5, 24(11)\n\t" /* arg3->r5 */                      \
+         "ld   6, 32(11)\n\t" /* arg4->r6 */                      \
+         "ld   7, 40(11)\n\t" /* arg5->r7 */                      \
+         "ld   8, 48(11)\n\t" /* arg6->r8 */                      \
+         "ld   9, 56(11)\n\t" /* arg7->r9 */                      \
+         "ld  10, 64(11)\n\t" /* arg8->r10 */                     \
+         "ld  11, 0(11)\n\t"  /* target->r11 */                   \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11                  \
+         "mr 11,%1\n\t"                                           \
+         "mr %0,3\n\t"                                            \
+         "ld 2,-16(11)\n\t" /* restore tocptr */                  \
+         VALGRIND_RESTORE_STACK                                   \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[2])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_ppc64_linux */
+
+/* ------------------------- arm-linux ------------------------- */
+
+#if defined(PLAT_arm_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS "r0", "r1", "r2", "r3","r4","r14"
+
+/* Macros to save and align the stack before making a function
+   call and restore it afterwards as gcc may not keep the stack
+   pointer aligned if it doesn't realise calls are being made
+   to other functions. */
+
+/* This is a bit tricky.  We store the original stack pointer in r10
+   as it is callee-saves.  gcc doesn't allow the use of r11 for some
+   reason.  Also, we can't directly "bic" the stack pointer in thumb
+   mode since r13 isn't an allowed register number in that context.
+   So use r4 as a temporary, since that is about to get trashed
+   anyway, just after each use of this macro.  Side effect is we need
+   to be very careful about any future changes, since
+   VALGRIND_ALIGN_STACK simply assumes r4 is usable. */
+#define VALGRIND_ALIGN_STACK               \
+      "mov r10, sp\n\t"                    \
+      "mov r4,  sp\n\t"                    \
+      "bic r4,  r4, #7\n\t"                \
+      "mov sp,  r4\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "mov sp,  r10\n\t"
+
+/* These CALL_FN_ macros assume that on arm-linux, sizeof(unsigned
+   long) == 4. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[2];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[6];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "sub sp, sp, #4 \n\t"                                    \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "push {r0} \n\t"                                         \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[7];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "push {r0, r1} \n\t"                                     \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[8];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "sub sp, sp, #4 \n\t"                                    \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "push {r0, r1, r2} \n\t"                                 \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[9];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "ldr r3, [%1, #32] \n\t"                                 \
+         "push {r0, r1, r2, r3} \n\t"                             \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[10];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "sub sp, sp, #4 \n\t"                                    \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "ldr r3, [%1, #32] \n\t"                                 \
+         "ldr r4, [%1, #36] \n\t"                                 \
+         "push {r0, r1, r2, r3, r4} \n\t"                         \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[11];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #40] \n\t"                                 \
+         "push {r0} \n\t"                                         \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "ldr r3, [%1, #32] \n\t"                                 \
+         "ldr r4, [%1, #36] \n\t"                                 \
+         "push {r0, r1, r2, r3, r4} \n\t"                         \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11)                          \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[12];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "sub sp, sp, #4 \n\t"                                    \
+         "ldr r0, [%1, #40] \n\t"                                 \
+         "ldr r1, [%1, #44] \n\t"                                 \
+         "push {r0, r1} \n\t"                                     \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "ldr r3, [%1, #32] \n\t"                                 \
+         "ldr r4, [%1, #36] \n\t"                                 \
+         "push {r0, r1, r2, r3, r4} \n\t"                         \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11,arg12)                    \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[13];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      _argvec[12] = (unsigned long)(arg12);                       \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr r0, [%1, #40] \n\t"                                 \
+         "ldr r1, [%1, #44] \n\t"                                 \
+         "ldr r2, [%1, #48] \n\t"                                 \
+         "push {r0, r1, r2} \n\t"                                 \
+         "ldr r0, [%1, #20] \n\t"                                 \
+         "ldr r1, [%1, #24] \n\t"                                 \
+         "ldr r2, [%1, #28] \n\t"                                 \
+         "ldr r3, [%1, #32] \n\t"                                 \
+         "ldr r4, [%1, #36] \n\t"                                 \
+         "push {r0, r1, r2, r3, r4} \n\t"                         \
+         "ldr r0, [%1, #4] \n\t"                                  \
+         "ldr r1, [%1, #8] \n\t"                                  \
+         "ldr r2, [%1, #12] \n\t"                                 \
+         "ldr r3, [%1, #16] \n\t"                                 \
+         "ldr r4, [%1] \n\t"  /* target->r4 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, r0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_arm_linux */
+
+/* ------------------------ arm64-linux ------------------------ */
+
+#if defined(PLAT_arm64_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS \
+     "x0", "x1", "x2", "x3","x4", "x5", "x6", "x7", "x8", "x9",   \
+     "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17",      \
+     "x18", "x19", "x20", "x30",                                  \
+     "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9",  \
+     "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17",      \
+     "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",      \
+     "v26", "v27", "v28", "v29", "v30", "v31"
+
+/* x21 is callee-saved, so we can use it to save and restore SP around
+   the hidden call. */
+#define VALGRIND_ALIGN_STACK               \
+      "mov x21, sp\n\t"                    \
+      "bic sp, x21, #15\n\t"
+#define VALGRIND_RESTORE_STACK             \
+      "mov sp,  x21\n\t"
+
+/* These CALL_FN_ macros assume that on arm64-linux,
+   sizeof(unsigned long) == 8. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr x8, [%1] \n\t"  /* target->x8 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, x0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "x21"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[2];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr x0, [%1, #8] \n\t"                                  \
+         "ldr x8, [%1] \n\t"  /* target->x8 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, x0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "x21"   \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr x0, [%1, #8] \n\t"                                  \
+         "ldr x1, [%1, #16] \n\t"                                 \
+         "ldr x8, [%1] \n\t"  /* target->x8 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, x0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS/*, "r10"*/     \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr x0, [%1, #8] \n\t"                                  \
+         "ldr x1, [%1, #16] \n\t"                                 \
+         "ldr x2, [%1, #24] \n\t"                                 \
+         "ldr x8, [%1] \n\t"  /* target->x8 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, x0\n"                                           \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS/*, "r10"*/     \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      __asm__ volatile(                                           \
+         VALGRIND_ALIGN_STACK                                     \
+         "ldr x0, [%1, #8] \n\t"                                  \
+         "ldr x1, [%1, #16] \n\t"                                 \
+         "ldr x2, [%1, #24] \n\t"                                 \
+         "ldr x3, [%1, #32] \n\t"                                 \
+         "ldr x8, [%1] \n\t"  /* target->x8 */                    \
+         VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_X8                   \
+         VALGRIND_RESTORE_STACK                                   \
+         "mov %0, x0"                                             \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS/*, "r10"*/     \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_arm64_linux */
+
+/* ------------------------- s390x-linux ------------------------- */
+
+#if defined(PLAT_s390x_linux)
+
+/* Similar workaround as amd64 (see above), but we use r11 as frame
+   pointer and save the old r11 in r7. r11 might be used for
+   argvec, therefore we copy argvec in r1 since r1 is clobbered
+   after the call anyway.  */
+#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)
+#  define __FRAME_POINTER                                         \
+      ,"d"(__builtin_dwarf_cfa())
+#  define VALGRIND_CFI_PROLOGUE                                   \
+      ".cfi_remember_state\n\t"                                   \
+      "lgr 1,%1\n\t" /* copy the argvec pointer in r1 */          \
+      "lgr 7,11\n\t"                                              \
+      "lgr 11,%2\n\t"                                             \
+      ".cfi_def_cfa r11, 0\n\t"
+#  define VALGRIND_CFI_EPILOGUE                                   \
+      "lgr 11, 7\n\t"                                             \
+      ".cfi_restore_state\n\t"
+#else
+#  define __FRAME_POINTER
+#  define VALGRIND_CFI_PROLOGUE                                   \
+      "lgr 1,%1\n\t"
+#  define VALGRIND_CFI_EPILOGUE
+#endif
+
+/* Nb: On s390 the stack pointer is properly aligned *at all times*
+   according to the s390 GCC maintainer. (The ABI specification is not
+   precise in this regard.) Therefore, VALGRIND_ALIGN_STACK and
+   VALGRIND_RESTORE_STACK are not defined here. */
+
+/* These regs are trashed by the hidden call. Note that we overwrite
+   r14 in s390_irgen_noredir (VEX/priv/guest_s390_irgen.c) to give the
+   function a proper return address. All others are ABI defined call
+   clobbers. */
+#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \
+                           "f0","f1","f2","f3","f4","f5","f6","f7"
+
+/* Nb: Although r11 is modified in the asm snippets below (inside 
+   VALGRIND_CFI_PROLOGUE) it is not listed in the clobber section, for
+   two reasons:
+   (1) r11 is restored in VALGRIND_CFI_EPILOGUE, so effectively it is not
+       modified
+   (2) GCC will complain that r11 cannot appear inside a clobber section,
+       when compiled with -O -fno-omit-frame-pointer
+ */
+
+#define CALL_FN_W_v(lval, orig)                                  \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long  _argvec[1];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 1, 0(1)\n\t"  /* target->r1 */                      \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "d" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+/* The call abi has the arguments in r2-r6 and stack */
+#define CALL_FN_W_W(lval, orig, arg1)                            \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[2];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1, arg2)                     \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[3];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3)              \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[4];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4)       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[5];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5)   \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[6];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6)                                       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[7];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-168\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,168\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7)                                 \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[8];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-176\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,176\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7 ,arg8)                           \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[9];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-184\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,184\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7 ,arg8, arg9)                     \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[10];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-192\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,192\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10)              \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[11];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-200\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,200\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10, arg11)       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[12];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      _argvec[11] = (unsigned long)arg11;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-208\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "mvc 200(8,15), 88(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,208\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10, arg11, arg12)\
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[13];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      _argvec[11] = (unsigned long)arg11;                        \
+      _argvec[12] = (unsigned long)arg12;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-216\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "mvc 200(8,15), 88(1)\n\t"                              \
+         "mvc 208(8,15), 96(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,216\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+
+#endif /* PLAT_s390x_linux */
+
+/* ------------------------- mips32-linux ----------------------- */
+ 
+#if defined(PLAT_mips32_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS "$2", "$3", "$4", "$5", "$6",       \
+"$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \
+"$25", "$31"
+
+/* These CALL_FN_ macros assume that on mips-linux, sizeof(unsigned
+   long) == 4. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "subu $29, $29, 16 \n\t"                                 \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 16\n\t"                                  \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+     volatile unsigned long _argvec[2];                           \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "subu $29, $29, 16 \n\t"                                 \
+         "lw $4, 4(%1) \n\t"   /* arg1*/                          \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 16 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory",  __CALLER_SAVED_REGS               \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "subu $29, $29, 16 \n\t"                                 \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 16 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "subu $29, $29, 16 \n\t"                                 \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 16 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "subu $29, $29, 16 \n\t"                                 \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 16 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[6];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 24\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 24 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[7];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 32\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "nop\n\t"                                                \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 32 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[8];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 32\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 32 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[9];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 40\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 32(%1) \n\t"                                     \
+         "sw $4, 28($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 40 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[10];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 40\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 32(%1) \n\t"                                     \
+         "sw $4, 28($29) \n\t"                                    \
+         "lw $4, 36(%1) \n\t"                                     \
+         "sw $4, 32($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 40 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[11];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 48\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 32(%1) \n\t"                                     \
+         "sw $4, 28($29) \n\t"                                    \
+         "lw $4, 36(%1) \n\t"                                     \
+         "sw $4, 32($29) \n\t"                                    \
+         "lw $4, 40(%1) \n\t"                                     \
+         "sw $4, 36($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 48 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11)                          \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[12];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 48\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 32(%1) \n\t"                                     \
+         "sw $4, 28($29) \n\t"                                    \
+         "lw $4, 36(%1) \n\t"                                     \
+         "sw $4, 32($29) \n\t"                                    \
+         "lw $4, 40(%1) \n\t"                                     \
+         "sw $4, 36($29) \n\t"                                    \
+         "lw $4, 44(%1) \n\t"                                     \
+         "sw $4, 40($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 48 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11,arg12)                    \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[13];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      _argvec[12] = (unsigned long)(arg12);                       \
+      __asm__ volatile(                                           \
+         "subu $29, $29, 8 \n\t"                                  \
+         "sw $28, 0($29) \n\t"                                    \
+         "sw $31, 4($29) \n\t"                                    \
+         "lw $4, 20(%1) \n\t"                                     \
+         "subu $29, $29, 56\n\t"                                  \
+         "sw $4, 16($29) \n\t"                                    \
+         "lw $4, 24(%1) \n\t"                                     \
+         "sw $4, 20($29) \n\t"                                    \
+         "lw $4, 28(%1) \n\t"                                     \
+         "sw $4, 24($29) \n\t"                                    \
+         "lw $4, 32(%1) \n\t"                                     \
+         "sw $4, 28($29) \n\t"                                    \
+         "lw $4, 36(%1) \n\t"                                     \
+         "sw $4, 32($29) \n\t"                                    \
+         "lw $4, 40(%1) \n\t"                                     \
+         "sw $4, 36($29) \n\t"                                    \
+         "lw $4, 44(%1) \n\t"                                     \
+         "sw $4, 40($29) \n\t"                                    \
+         "lw $4, 48(%1) \n\t"                                     \
+         "sw $4, 44($29) \n\t"                                    \
+         "lw $4, 4(%1) \n\t"                                      \
+         "lw $5, 8(%1) \n\t"                                      \
+         "lw $6, 12(%1) \n\t"                                     \
+         "lw $7, 16(%1) \n\t"                                     \
+         "lw $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "addu $29, $29, 56 \n\t"                                 \
+         "lw $28, 0($29) \n\t"                                    \
+         "lw $31, 4($29) \n\t"                                    \
+         "addu $29, $29, 8 \n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_mips32_linux */
+
+/* ------------------------- mips64-linux ------------------------- */
+
+#if defined(PLAT_mips64_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS "$2", "$3", "$4", "$5", "$6",       \
+"$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \
+"$25", "$31"
+
+/* These CALL_FN_ macros assume that on mips-linux, sizeof(unsigned
+   long) == 4. */
+
+#define CALL_FN_W_v(lval, orig)                                   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[1];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      __asm__ volatile(                                           \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "0" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1)                             \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[2];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"   /* arg1*/                           \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[3];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3)                 \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[4];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[5];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5)        \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[6];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6)   \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[7];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7)                            \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[8];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8)                       \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[9];                          \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      __asm__ volatile(                                           \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $11, 64(%1)\n\t"                                     \
+         "ld $25, 0(%1) \n\t"  /* target->t9 */                   \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,   \
+                                 arg7,arg8,arg9)                  \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[10];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      __asm__ volatile(                                           \
+         "dsubu $29, $29, 8\n\t"                                  \
+         "ld $4, 72(%1)\n\t"                                      \
+         "sd $4, 0($29)\n\t"                                      \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $11, 64(%1)\n\t"                                     \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "daddu $29, $29, 8\n\t"                                  \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6,  \
+                                  arg7,arg8,arg9,arg10)           \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[11];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      __asm__ volatile(                                           \
+         "dsubu $29, $29, 16\n\t"                                 \
+         "ld $4, 72(%1)\n\t"                                      \
+         "sd $4, 0($29)\n\t"                                      \
+         "ld $4, 80(%1)\n\t"                                      \
+         "sd $4, 8($29)\n\t"                                      \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $11, 64(%1)\n\t"                                     \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "daddu $29, $29, 16\n\t"                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11)                          \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[12];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      __asm__ volatile(                                           \
+         "dsubu $29, $29, 24\n\t"                                 \
+         "ld $4, 72(%1)\n\t"                                      \
+         "sd $4, 0($29)\n\t"                                      \
+         "ld $4, 80(%1)\n\t"                                      \
+         "sd $4, 8($29)\n\t"                                      \
+         "ld $4, 88(%1)\n\t"                                      \
+         "sd $4, 16($29)\n\t"                                     \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $11, 64(%1)\n\t"                                     \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "daddu $29, $29, 24\n\t"                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,       \
+                                  arg6,arg7,arg8,arg9,arg10,      \
+                                  arg11,arg12)                    \
+   do {                                                           \
+      volatile OrigFn        _orig = (orig);                      \
+      volatile unsigned long _argvec[13];                         \
+      volatile unsigned long _res;                                \
+      _argvec[0] = (unsigned long)_orig.nraddr;                   \
+      _argvec[1] = (unsigned long)(arg1);                         \
+      _argvec[2] = (unsigned long)(arg2);                         \
+      _argvec[3] = (unsigned long)(arg3);                         \
+      _argvec[4] = (unsigned long)(arg4);                         \
+      _argvec[5] = (unsigned long)(arg5);                         \
+      _argvec[6] = (unsigned long)(arg6);                         \
+      _argvec[7] = (unsigned long)(arg7);                         \
+      _argvec[8] = (unsigned long)(arg8);                         \
+      _argvec[9] = (unsigned long)(arg9);                         \
+      _argvec[10] = (unsigned long)(arg10);                       \
+      _argvec[11] = (unsigned long)(arg11);                       \
+      _argvec[12] = (unsigned long)(arg12);                       \
+      __asm__ volatile(                                           \
+         "dsubu $29, $29, 32\n\t"                                 \
+         "ld $4, 72(%1)\n\t"                                      \
+         "sd $4, 0($29)\n\t"                                      \
+         "ld $4, 80(%1)\n\t"                                      \
+         "sd $4, 8($29)\n\t"                                      \
+         "ld $4, 88(%1)\n\t"                                      \
+         "sd $4, 16($29)\n\t"                                     \
+         "ld $4, 96(%1)\n\t"                                      \
+         "sd $4, 24($29)\n\t"                                     \
+         "ld $4, 8(%1)\n\t"                                       \
+         "ld $5, 16(%1)\n\t"                                      \
+         "ld $6, 24(%1)\n\t"                                      \
+         "ld $7, 32(%1)\n\t"                                      \
+         "ld $8, 40(%1)\n\t"                                      \
+         "ld $9, 48(%1)\n\t"                                      \
+         "ld $10, 56(%1)\n\t"                                     \
+         "ld $11, 64(%1)\n\t"                                     \
+         "ld $25, 0(%1)\n\t"  /* target->t9 */                    \
+         VALGRIND_CALL_NOREDIR_T9                                 \
+         "daddu $29, $29, 32\n\t"                                 \
+         "move %0, $2\n"                                          \
+         : /*out*/   "=r" (_res)                                  \
+         : /*in*/    "r" (&_argvec[0])                            \
+         : /*trash*/ "memory", __CALLER_SAVED_REGS                \
+      );                                                          \
+      lval = (__typeof__(lval)) _res;                             \
+   } while (0)
+
+#endif /* PLAT_mips64_linux */
+
+
+/* ------------------------------------------------------------------ */
+/* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS.               */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+
+/* Some request codes.  There are many more of these, but most are not
+   exposed to end-user view.  These are the public ones, all of the
+   form 0x1000 + small_number.
+
+   Core ones are in the range 0x00000000--0x0000ffff.  The non-public
+   ones start at 0x2000.
+*/
+
+/* These macros are used by tools -- they must be public, but don't
+   embed them into other programs. */
+#define VG_USERREQ_TOOL_BASE(a,b) \
+   ((unsigned int)(((a)&0xff) << 24 | ((b)&0xff) << 16))
+#define VG_IS_TOOL_USERREQ(a, b, v) \
+   (VG_USERREQ_TOOL_BASE(a,b) == ((v) & 0xffff0000))
+
+/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !! 
+   This enum comprises an ABI exported by Valgrind to programs
+   which use client requests.  DO NOT CHANGE THE ORDER OF THESE
+   ENTRIES, NOR DELETE ANY -- add new ones at the end. */
+typedef
+   enum { VG_USERREQ__RUNNING_ON_VALGRIND  = 0x1001,
+          VG_USERREQ__DISCARD_TRANSLATIONS = 0x1002,
+
+          /* These allow any function to be called from the simulated
+             CPU but run on the real CPU.  Nb: the first arg passed to
+             the function is always the ThreadId of the running
+             thread!  So CLIENT_CALL0 actually requires a 1 arg
+             function, etc. */
+          VG_USERREQ__CLIENT_CALL0 = 0x1101,
+          VG_USERREQ__CLIENT_CALL1 = 0x1102,
+          VG_USERREQ__CLIENT_CALL2 = 0x1103,
+          VG_USERREQ__CLIENT_CALL3 = 0x1104,
+
+          /* Can be useful in regression testing suites -- eg. can
+             send Valgrind's output to /dev/null and still count
+             errors. */
+          VG_USERREQ__COUNT_ERRORS = 0x1201,
+
+          /* Allows the client program and/or gdbserver to execute a monitor
+             command. */
+          VG_USERREQ__GDB_MONITOR_COMMAND = 0x1202,
+
+          /* These are useful and can be interpreted by any tool that
+             tracks malloc() et al, by using vg_replace_malloc.c. */
+          VG_USERREQ__MALLOCLIKE_BLOCK = 0x1301,
+          VG_USERREQ__RESIZEINPLACE_BLOCK = 0x130b,
+          VG_USERREQ__FREELIKE_BLOCK   = 0x1302,
+          /* Memory pool support. */
+          VG_USERREQ__CREATE_MEMPOOL   = 0x1303,
+          VG_USERREQ__DESTROY_MEMPOOL  = 0x1304,
+          VG_USERREQ__MEMPOOL_ALLOC    = 0x1305,
+          VG_USERREQ__MEMPOOL_FREE     = 0x1306,
+          VG_USERREQ__MEMPOOL_TRIM     = 0x1307,
+          VG_USERREQ__MOVE_MEMPOOL     = 0x1308,
+          VG_USERREQ__MEMPOOL_CHANGE   = 0x1309,
+          VG_USERREQ__MEMPOOL_EXISTS   = 0x130a,
+
+          /* Allow printfs to valgrind log. */
+          /* The first two pass the va_list argument by value, which
+             assumes it is the same size as or smaller than a UWord,
+             which generally isn't the case.  Hence are deprecated.
+             The second two pass the vargs by reference and so are
+             immune to this problem. */
+          /* both :: char* fmt, va_list vargs (DEPRECATED) */
+          VG_USERREQ__PRINTF           = 0x1401,
+          VG_USERREQ__PRINTF_BACKTRACE = 0x1402,
+          /* both :: char* fmt, va_list* vargs */
+          VG_USERREQ__PRINTF_VALIST_BY_REF = 0x1403,
+          VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF = 0x1404,
+
+          /* Stack support. */
+          VG_USERREQ__STACK_REGISTER   = 0x1501,
+          VG_USERREQ__STACK_DEREGISTER = 0x1502,
+          VG_USERREQ__STACK_CHANGE     = 0x1503,
+
+          /* Wine support */
+          VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601,
+
+          /* Querying of debug info. */
+          VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701,
+
+          /* Disable/enable error reporting level.  Takes a single
+             Word arg which is the delta to this thread's error
+             disablement indicator.  Hence 1 disables or further
+             disables errors, and -1 moves back towards enablement.
+             Other values are not allowed. */
+          VG_USERREQ__CHANGE_ERR_DISABLEMENT = 0x1801,
+
+          /* Initialise IR injection */
+          VG_USERREQ__VEX_INIT_FOR_IRI = 0x1901
+   } Vg_ClientRequest;
+
+#if !defined(__GNUC__)
+#  define __extension__ /* */
+#endif
+
+
+/* Returns the number of Valgrinds this code is running under.  That
+   is, 0 if running natively, 1 if running under Valgrind, 2 if
+   running under Valgrind which is running under another Valgrind,
+   etc. */
+#define RUNNING_ON_VALGRIND                                           \
+    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
+                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
+                                    0, 0, 0, 0, 0)                    \
+
+
+/* Discard translation of code in the range [_qzz_addr .. _qzz_addr +
+   _qzz_len - 1].  Useful if you are debugging a JITter or some such,
+   since it provides a way to make sure valgrind will retranslate the
+   invalidated area.  Returns no value. */
+#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len)              \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DISCARD_TRANSLATIONS,  \
+                                    _qzz_addr, _qzz_len, 0, 0, 0)
+
+
+/* These requests are for getting Valgrind itself to print something.
+   Possibly with a backtrace.  This is a really ugly hack.  The return value
+   is the number of characters printed, excluding the "**<pid>** " part at the
+   start and the backtrace (if present). */
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER) && !defined(_MSC_VER)
+/* Modern GCC will optimize the static routine out if unused,
+   and unused attribute will shut down warnings about it.  */
+static int VALGRIND_PRINTF(const char *format, ...)
+   __attribute__((format(__printf__, 1, 2), __unused__));
+#endif
+static int
+#if defined(_MSC_VER)
+__inline
+#endif
+VALGRIND_PRINTF(const char *format, ...)
+{
+#if defined(NVALGRIND)
+   return 0;
+#else /* NVALGRIND */
+#if defined(_MSC_VER) || defined(__MINGW64__)
+   uintptr_t _qzz_res;
+#else
+   unsigned long _qzz_res;
+#endif
+   va_list vargs;
+   va_start(vargs, format);
+#if defined(_MSC_VER) || defined(__MINGW64__)
+   _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+                              VG_USERREQ__PRINTF_VALIST_BY_REF,
+                              (uintptr_t)format,
+                              (uintptr_t)&vargs,
+                              0, 0, 0);
+#else
+   _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+                              VG_USERREQ__PRINTF_VALIST_BY_REF,
+                              (unsigned long)format,
+                              (unsigned long)&vargs, 
+                              0, 0, 0);
+#endif
+   va_end(vargs);
+   return (int)_qzz_res;
+#endif /* NVALGRIND */
+}
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER) && !defined(_MSC_VER)
+static int VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
+   __attribute__((format(__printf__, 1, 2), __unused__));
+#endif
+static int
+#if defined(_MSC_VER)
+__inline
+#endif
+VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
+{
+#if defined(NVALGRIND)
+   return 0;
+#else /* NVALGRIND */
+#if defined(_MSC_VER) || defined(__MINGW64__)
+   uintptr_t _qzz_res;
+#else
+   unsigned long _qzz_res;
+#endif
+   va_list vargs;
+   va_start(vargs, format);
+#if defined(_MSC_VER) || defined(__MINGW64__)
+   _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+                              VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF,
+                              (uintptr_t)format,
+                              (uintptr_t)&vargs,
+                              0, 0, 0);
+#else
+   _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+                              VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF,
+                              (unsigned long)format,
+                              (unsigned long)&vargs, 
+                              0, 0, 0);
+#endif
+   va_end(vargs);
+   return (int)_qzz_res;
+#endif /* NVALGRIND */
+}
+
+
+/* These requests allow control to move from the simulated CPU to the
+   real CPU, calling an arbitary function.
+   
+   Note that the current ThreadId is inserted as the first argument.
+   So this call:
+
+     VALGRIND_NON_SIMD_CALL2(f, arg1, arg2)
+
+   requires f to have this signature:
+
+     Word f(Word tid, Word arg1, Word arg2)
+
+   where "Word" is a word-sized type.
+
+   Note that these client requests are not entirely reliable.  For example,
+   if you call a function with them that subsequently calls printf(),
+   there's a high chance Valgrind will crash.  Generally, your prospects of
+   these working are made higher if the called function does not refer to
+   any global variables, and does not refer to any libc or other functions
+   (printf et al).  Any kind of entanglement with libc or dynamic linking is
+   likely to have a bad outcome, for tricky reasons which we've grappled
+   with a lot in the past.
+*/
+#define VALGRIND_NON_SIMD_CALL0(_qyy_fn)                          \
+    VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */,       \
+                                    VG_USERREQ__CLIENT_CALL0,     \
+                                    _qyy_fn,                      \
+                                    0, 0, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1)                    \
+    VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */,            \
+                                    VG_USERREQ__CLIENT_CALL1,          \
+                                    _qyy_fn,                           \
+                                    _qyy_arg1, 0, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2)         \
+    VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */,            \
+                                    VG_USERREQ__CLIENT_CALL2,          \
+                                    _qyy_fn,                           \
+                                    _qyy_arg1, _qyy_arg2, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3) \
+    VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */,             \
+                                    VG_USERREQ__CLIENT_CALL3,           \
+                                    _qyy_fn,                            \
+                                    _qyy_arg1, _qyy_arg2,               \
+                                    _qyy_arg3, 0)
+
+
+/* Counts the number of errors that have been recorded by a tool.  Nb:
+   the tool must record the errors with VG_(maybe_record_error)() or
+   VG_(unique_error)() for them to be counted. */
+#define VALGRIND_COUNT_ERRORS                                     \
+    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(                    \
+                               0 /* default return */,            \
+                               VG_USERREQ__COUNT_ERRORS,          \
+                               0, 0, 0, 0, 0)
+
+/* Several Valgrind tools (Memcheck, Massif, Helgrind, DRD) rely on knowing
+   when heap blocks are allocated in order to give accurate results.  This
+   happens automatically for the standard allocator functions such as
+   malloc(), calloc(), realloc(), memalign(), new, new[], free(), delete,
+   delete[], etc.
+
+   But if your program uses a custom allocator, this doesn't automatically
+   happen, and Valgrind will not do as well.  For example, if you allocate
+   superblocks with mmap() and then allocates chunks of the superblocks, all
+   Valgrind's observations will be at the mmap() level and it won't know that
+   the chunks should be considered separate entities.  In Memcheck's case,
+   that means you probably won't get heap block overrun detection (because
+   there won't be redzones marked as unaddressable) and you definitely won't
+   get any leak detection.
+
+   The following client requests allow a custom allocator to be annotated so
+   that it can be handled accurately by Valgrind.
+
+   VALGRIND_MALLOCLIKE_BLOCK marks a region of memory as having been allocated
+   by a malloc()-like function.  For Memcheck (an illustrative case), this
+   does two things:
+
+   - It records that the block has been allocated.  This means any addresses
+     within the block mentioned in error messages will be
+     identified as belonging to the block.  It also means that if the block
+     isn't freed it will be detected by the leak checker.
+
+   - It marks the block as being addressable and undefined (if 'is_zeroed' is
+     not set), or addressable and defined (if 'is_zeroed' is set).  This
+     controls how accesses to the block by the program are handled.
+   
+   'addr' is the start of the usable block (ie. after any
+   redzone), 'sizeB' is its size.  'rzB' is the redzone size if the allocator
+   can apply redzones -- these are blocks of padding at the start and end of
+   each block.  Adding redzones is recommended as it makes it much more likely
+   Valgrind will spot block overruns.  `is_zeroed' indicates if the memory is
+   zeroed (or filled with another predictable value), as is the case for
+   calloc().
+   
+   VALGRIND_MALLOCLIKE_BLOCK should be put immediately after the point where a
+   heap block -- that will be used by the client program -- is allocated.
+   It's best to put it at the outermost level of the allocator if possible;
+   for example, if you have a function my_alloc() which calls
+   internal_alloc(), and the client request is put inside internal_alloc(),
+   stack traces relating to the heap block will contain entries for both
+   my_alloc() and internal_alloc(), which is probably not what you want.
+
+   For Memcheck users: if you use VALGRIND_MALLOCLIKE_BLOCK to carve out
+   custom blocks from within a heap block, B, that has been allocated with
+   malloc/calloc/new/etc, then block B will be *ignored* during leak-checking
+   -- the custom blocks will take precedence.
+
+   VALGRIND_FREELIKE_BLOCK is the partner to VALGRIND_MALLOCLIKE_BLOCK.  For
+   Memcheck, it does two things:
+
+   - It records that the block has been deallocated.  This assumes that the
+     block was annotated as having been allocated via
+     VALGRIND_MALLOCLIKE_BLOCK.  Otherwise, an error will be issued.
+
+   - It marks the block as being unaddressable.
+
+   VALGRIND_FREELIKE_BLOCK should be put immediately after the point where a
+   heap block is deallocated.
+
+   VALGRIND_RESIZEINPLACE_BLOCK informs a tool about reallocation. For
+   Memcheck, it does four things:
+
+   - It records that the size of a block has been changed.  This assumes that
+     the block was annotated as having been allocated via
+     VALGRIND_MALLOCLIKE_BLOCK.  Otherwise, an error will be issued.
+
+   - If the block shrunk, it marks the freed memory as being unaddressable.
+
+   - If the block grew, it marks the new area as undefined and defines a red
+     zone past the end of the new block.
+
+   - The V-bits of the overlap between the old and the new block are preserved.
+
+   VALGRIND_RESIZEINPLACE_BLOCK should be put after allocation of the new block
+   and before deallocation of the old block.
+
+   In many cases, these three client requests will not be enough to get your
+   allocator working well with Memcheck.  More specifically, if your allocator
+   writes to freed blocks in any way then a VALGRIND_MAKE_MEM_UNDEFINED call
+   will be necessary to mark the memory as addressable just before the zeroing
+   occurs, otherwise you'll get a lot of invalid write errors.  For example,
+   you'll need to do this if your allocator recycles freed blocks, but it
+   zeroes them before handing them back out (via VALGRIND_MALLOCLIKE_BLOCK).
+   Alternatively, if your allocator reuses freed blocks for allocator-internal
+   data structures, VALGRIND_MAKE_MEM_UNDEFINED calls will also be necessary.
+
+   Really, what's happening is a blurring of the lines between the client
+   program and the allocator... after VALGRIND_FREELIKE_BLOCK is called, the
+   memory should be considered unaddressable to the client program, but the
+   allocator knows more than the rest of the client program and so may be able
+   to safely access it.  Extra client requests are necessary for Valgrind to
+   understand the distinction between the allocator and the rest of the
+   program.
+
+   Ignored if addr == 0.
+*/
+#define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed)          \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
+                                    addr, sizeB, rzB, is_zeroed, 0)
+
+/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details.
+   Ignored if addr == 0.
+*/
+#define VALGRIND_RESIZEINPLACE_BLOCK(addr, oldSizeB, newSizeB, rzB)     \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__RESIZEINPLACE_BLOCK,    \
+                                    addr, oldSizeB, newSizeB, rzB, 0)
+
+/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details.
+   Ignored if addr == 0.
+*/
+#define VALGRIND_FREELIKE_BLOCK(addr, rzB)                              \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
+                                    addr, rzB, 0, 0, 0)
+
+/* Create a memory pool. */
+#define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed)             \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL,   \
+                                    pool, rzB, is_zeroed, 0, 0)
+
+/* Destroy a memory pool. */
+#define VALGRIND_DESTROY_MEMPOOL(pool)                            \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DESTROY_MEMPOOL,  \
+                                    pool, 0, 0, 0, 0)
+
+/* Associate a piece of memory with a memory pool. */
+#define VALGRIND_MEMPOOL_ALLOC(pool, addr, size)                  \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_ALLOC,    \
+                                    pool, addr, size, 0, 0)
+
+/* Disassociate a piece of memory from a memory pool. */
+#define VALGRIND_MEMPOOL_FREE(pool, addr)                         \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_FREE,     \
+                                    pool, addr, 0, 0, 0)
+
+/* Disassociate any pieces outside a particular range. */
+#define VALGRIND_MEMPOOL_TRIM(pool, addr, size)                   \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_TRIM,     \
+                                    pool, addr, size, 0, 0)
+
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MOVE_MEMPOOL(poolA, poolB)                       \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MOVE_MEMPOOL,     \
+                                    poolA, poolB, 0, 0, 0)
+
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size)         \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_CHANGE,   \
+                                    pool, addrA, addrB, size, 0)
+
+/* Return 1 if a mempool exists, else 0. */
+#define VALGRIND_MEMPOOL_EXISTS(pool)                             \
+    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                  \
+                               VG_USERREQ__MEMPOOL_EXISTS,        \
+                               pool, 0, 0, 0, 0)
+
+/* Mark a piece of memory as being a stack. Returns a stack id. */
+#define VALGRIND_STACK_REGISTER(start, end)                       \
+    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                  \
+                               VG_USERREQ__STACK_REGISTER,        \
+                               start, end, 0, 0, 0)
+
+/* Unmark the piece of memory associated with a stack id as being a
+   stack. */
+#define VALGRIND_STACK_DEREGISTER(id)                             \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_DEREGISTER, \
+                                    id, 0, 0, 0, 0)
+
+/* Change the start and end address of the stack id. */
+#define VALGRIND_STACK_CHANGE(id, start, end)                     \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_CHANGE,     \
+                                    id, start, end, 0, 0)
+
+/* Load PDB debug info for Wine PE image_map. */
+#define VALGRIND_LOAD_PDB_DEBUGINFO(fd, ptr, total_size, delta)     \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__LOAD_PDB_DEBUGINFO, \
+                                    fd, ptr, total_size, delta, 0)
+
+/* Map a code address to a source file name and line number.  buf64
+   must point to a 64-byte buffer in the caller's address space.  The
+   result will be dumped in there and is guaranteed to be zero
+   terminated.  If no info is found, the first byte is set to zero. */
+#define VALGRIND_MAP_IP_TO_SRCLOC(addr, buf64)                    \
+    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                  \
+                               VG_USERREQ__MAP_IP_TO_SRCLOC,      \
+                               addr, buf64, 0, 0, 0)
+
+/* Disable error reporting for this thread.  Behaves in a stack like
+   way, so you can safely call this multiple times provided that
+   VALGRIND_ENABLE_ERROR_REPORTING is called the same number of times
+   to re-enable reporting.  The first call of this macro disables
+   reporting.  Subsequent calls have no effect except to increase the
+   number of VALGRIND_ENABLE_ERROR_REPORTING calls needed to re-enable
+   reporting.  Child threads do not inherit this setting from their
+   parents -- they are always created with reporting enabled. */
+#define VALGRIND_DISABLE_ERROR_REPORTING                                \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, \
+                                    1, 0, 0, 0, 0)
+
+/* Re-enable error reporting, as per comments on
+   VALGRIND_DISABLE_ERROR_REPORTING. */
+#define VALGRIND_ENABLE_ERROR_REPORTING                                 \
+    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, \
+                                    -1, 0, 0, 0, 0)
+
+/* Execute a monitor command from the client program.
+   If a connection is opened with GDB, the output will be sent
+   according to the output mode set for vgdb.
+   If no connection is opened, output will go to the log output.
+   Returns 1 if command not recognised, 0 otherwise. */
+#define VALGRIND_MONITOR_COMMAND(command)                               \
+   VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__GDB_MONITOR_COMMAND, \
+                                   command, 0, 0, 0, 0)
+
+
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
+#undef PLAT_x86_win32
+#undef PLAT_amd64_win64
+#undef PLAT_x86_linux
+#undef PLAT_amd64_linux
+#undef PLAT_ppc32_linux
+#undef PLAT_ppc64_linux
+#undef PLAT_arm_linux
+#undef PLAT_s390x_linux
+#undef PLAT_mips32_linux
+#undef PLAT_mips64_linux
+
+#endif   /* __VALGRIND_H */
diff -Naur ns-3.19/src/core/model/wall-clock-synchronizer.h ns-3.20/src/core/model/wall-clock-synchronizer.h
--- ns-3.19/src/core/model/wall-clock-synchronizer.h	2014-06-17 10:34:00.632635164 -0700
+++ ns-3.20/src/core/model/wall-clock-synchronizer.h	2014-06-17 10:33:13.966995398 -0700
@@ -67,6 +67,7 @@
 
   static const uint64_t US_PER_NS = (uint64_t)1000;
   static const uint64_t US_PER_SEC = (uint64_t)1000000;
+  /// Conversion from ns to s.
   static const uint64_t NS_PER_SEC = (uint64_t)1000000000;
 
 protected:
@@ -156,8 +157,9 @@
  * real-time-clock-specific work of waiting (either busy-waiting or sleeping,
  * or some combination) until the requested simulation time.
  *
- * @param ns The simulation time we need to wait for (normalized to nanosecond
- * units).
+ * @param nsCurrent The current simulation time.
+ * @param nsDelay The simulation time of the next event (in nanosecond units).
+ *
  * @see TimeStepPrecision::Get
  */
   virtual bool DoSynchronize (uint64_t nsCurrent, uint64_t nsDelay);
diff -Naur ns-3.19/src/core/test/attribute-test-suite.cc ns-3.20/src/core/test/attribute-test-suite.cc
--- ns-3.19/src/core/test/attribute-test-suite.cc	2014-06-17 10:34:00.635635140 -0700
+++ ns-3.20/src/core/test/attribute-test-suite.cc	2014-06-17 10:33:13.968995383 -0700
@@ -72,8 +72,7 @@
   Derived () {}
 };
 
-NS_OBJECT_ENSURE_REGISTERED (Derived)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Derived);
 
 class AttributeObjectTest : public Object
 {
@@ -264,8 +263,7 @@
   Time m_timeWithBounds;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (AttributeObjectTest)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AttributeObjectTest);
 
 // ===========================================================================
 // Test case template used for generic Attribute Value types -- used to make 
diff -Naur ns-3.19/src/core/test/event-garbage-collector-test-suite.cc ns-3.20/src/core/test/event-garbage-collector-test-suite.cc
--- ns-3.19/src/core/test/event-garbage-collector-test-suite.cc	2014-06-17 10:34:00.636635133 -0700
+++ ns-3.20/src/core/test/event-garbage-collector-test-suite.cc	2014-06-17 10:33:13.970995367 -0700
@@ -21,7 +21,7 @@
 #include "ns3/test.h"
 #include "ns3/event-garbage-collector.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class EventGarbageCollectorTestCase : public TestCase
 {
@@ -84,6 +84,3 @@
     AddTestCase (new EventGarbageCollectorTestCase (), TestCase::QUICK);
   }
 } g_eventGarbageCollectorTests;
-
-}
-
diff -Naur ns-3.19/src/core/test/global-value-test-suite.cc ns-3.20/src/core/test/global-value-test-suite.cc
--- ns-3.19/src/core/test/global-value-test-suite.cc	2014-06-17 10:34:00.637635125 -0700
+++ ns-3.20/src/core/test/global-value-test-suite.cc	2014-06-17 10:33:13.970995367 -0700
@@ -21,7 +21,7 @@
 #include "ns3/test.h"
 #include "ns3/uinteger.h"
 
-namespace ns3 {
+using namespace ns3;
 
 // ===========================================================================
 // Test for the ability to get at a GlobalValue.
@@ -89,6 +89,3 @@
 }
 
 static GlobalValueTestSuite globalValueTestSuite;
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/core/test/hash-test-suite.cc ns-3.20/src/core/test/hash-test-suite.cc
--- ns-3.19/src/core/test/hash-test-suite.cc	2014-06-17 10:34:00.637635125 -0700
+++ ns-3.20/src/core/test/hash-test-suite.cc	2014-06-17 10:33:13.971995360 -0700
@@ -24,7 +24,7 @@
 #include "ns3/test.h"
 #include "ns3/hash.h"
 
-namespace ns3 {
+using namespace ns3;
 
 /**
  * Base class for hash tests
@@ -385,5 +385,3 @@
 }
 
 static HashTestSuite g_hashTestSuite;
-
-}  // namespace ns3
diff -Naur ns-3.19/src/core/test/int64x64-test-suite.cc ns-3.20/src/core/test/int64x64-test-suite.cc
--- ns-3.19/src/core/test/int64x64-test-suite.cc	2014-06-17 10:34:00.638635117 -0700
+++ ns-3.20/src/core/test/int64x64-test-suite.cc	2014-06-17 10:33:13.972995352 -0700
@@ -1,37 +1,150 @@
 #include "ns3/int64x64.h"
 #include "ns3/test.h"
+#include "ns3/valgrind.h"  // Bug 1882
+
+#include <cmath>    // fabs
+#include <iomanip>
+#include <limits>   // numeric_limits<>::epsilon ()
 
 using namespace ns3;
 
-class Int64x64FracTestCase : public TestCase
+namespace ns3 {
+
+  namespace int64x64 {
+
+    namespace test {
+  
+/**
+ * \class ns3::int64x64::Int64x64TestSuite
+ * \internal
+ *
+ * Some of these tests are a little unusual for ns-3 in that they
+ * are sensitive to implementation, specifically the resolution
+ * of the double and long double implementations.
+ * 
+ * To handle this, where needed we define a tolerance to use in the
+ * test comparisions.  If you need to increase the tolerance,
+ * please append the system and compiler version.  For example:
+ *
+ * \code
+ *   // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+ *   tolerance = 1;
+ *   // System Foo gcc 3.9
+ *   tolerance = 3;
+ * \endcode
+ */
+
+
+class Printer
 {
 public:
-  Int64x64FracTestCase ();
+  Printer (const int64_t high, const uint64_t low)
+    : m_haveInt (false),
+      m_value (0),
+      m_high (high),
+      m_low (low)
+  { }
+
+  Printer (const int64x64_t value)
+    : m_haveInt (true),
+      m_value (value),
+      m_high (value.GetHigh ()),
+      m_low (value.GetLow ())
+  { }
+
+private:
+  friend std::ostream & operator << (std::ostream & os, const Printer & p);
+
+  bool       m_haveInt;
+  int64x64_t m_value;
+  int64_t    m_high;
+  uint64_t   m_low;
+};
+
+std::ostream & operator << (std::ostream & os, const Printer & p)
+{
+  if (p.m_haveInt)
+    {
+      os << std::fixed << std::setprecision (22)
+	 << p.m_value;
+
+    }
+  
+  os << std::hex  << std::setfill ('0')
+     << " (0x" << std::setw (16) << p.m_high
+     << " 0x"  << std::setw (16) << p.m_low  << ")"
+     << std::dec  << std::setfill (' ');
+  return os;
+}
+
+	      
+class Int64x64HiLoTestCase : public TestCase
+{
+public:
+  Int64x64HiLoTestCase ();
   virtual void DoRun (void);
-  void CheckFrac (int64_t hi, uint64_t lo);
+  void Check (const int64_t hi, const uint64_t lo);
 };
 
-void 
-Int64x64FracTestCase::CheckFrac (int64_t hi, uint64_t lo)
+Int64x64HiLoTestCase::Int64x64HiLoTestCase ()
+  : TestCase ("Manipulate the high and low part of every number")
 {
-  int64x64_t tmp = int64x64_t (hi,lo);
-  NS_TEST_EXPECT_MSG_EQ (tmp.GetHigh (), hi,
-                         "High part does not match");
-  NS_TEST_EXPECT_MSG_EQ (tmp.GetLow (), lo,
-                         "Low part does not match");
 }
 
-Int64x64FracTestCase::Int64x64FracTestCase ()
-  : TestCase ("Check that we can manipulate the high and low part of every number")
+void 
+Int64x64HiLoTestCase::Check (const int64_t hi, const uint64_t lo)
 {
+  uint64_t tolerance = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      tolerance = 1;
+    }
+
+  int64x64_t value = int64x64_t (hi,lo);
+  uint64_t vLow = value.GetLow ();
+  bool pass = ( (value.GetHigh () == hi)
+		&& ( (Max (vLow, lo) - Min (vLow, lo)) <= tolerance)
+		);
+
+  std::cout << GetParent ()->GetName () << " Check: "
+	    << (pass ? "pass " : "FAIL ")
+	    << Printer (value) << " from" << Printer (hi, lo)
+	    << std::endl;
+
+  NS_TEST_EXPECT_MSG_EQ (value.GetHigh (), hi,
+			 "High part does not match for hi:" << hi
+			 << " lo: " << lo);
+  NS_TEST_EXPECT_MSG_EQ_TOL ((int64_t)vLow, (int64_t)lo, (int64_t)tolerance,
+			     "Low part does not match for hi: " << hi
+			     << " lo: " << lo);
 }
+
 void
-Int64x64FracTestCase::DoRun (void)
+Int64x64HiLoTestCase::DoRun (void)
 {
-  CheckFrac (1, 0);
-  CheckFrac (1, 1);
-  CheckFrac (-1, 0);
-  CheckFrac (-1, 1);
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Check: " << GetName ()
+	    << std::endl;
+
+  uint64_t low = 1;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      low = HP_MAX_64 * std::numeric_limits<long double>::epsilon ();
+    }
+
+  Check ( 0, 0);
+  Check ( 0, low);
+  Check ( 0, 0xffffffffffffffffULL - low);
+  
+  Check ( 1, 0);
+  Check ( 1, low);
+  Check ( 1, 0xffffffffffffffffULL - low);
+  
+  Check (-1, 0);
+  Check (-1, low);
+  Check (-1, 0xffffffffffffffffULL - low);
 }
 
 
@@ -40,136 +153,301 @@
 public:
   Int64x64InputTestCase ();
   virtual void DoRun (void);
-  void CheckString (std::string str, int64_t hi, uint64_t lo);
+  void Check (const std::string & str,
+	      const int64_t hi, const uint64_t lo,
+	      const int64_t tolerance = 0);
 };
 Int64x64InputTestCase::Int64x64InputTestCase ()
-  : TestCase ("Check that we parse Int64x64 numbers as strings")
+  : TestCase ("Parse int64x64_t numbers as strings")
 {
 }
 void 
-Int64x64InputTestCase::CheckString (std::string str, int64_t hi, uint64_t lo)
+Int64x64InputTestCase::Check (const std::string & str,
+			      const int64_t hi, const uint64_t lo,
+			      const int64_t tolerance /* = 0 */)
+			      
 {
   std::istringstream iss;
   iss.str (str);
-  int64x64_t hp;
-  iss >> hp;
-  NS_TEST_EXPECT_MSG_EQ (hp.GetHigh (), hi, "High parts do not match for input string " << str);
-  NS_TEST_EXPECT_MSG_EQ (hp.GetLow (), lo, "Low parts do not match for input string " << str);
+  int64x64_t value;
+  iss >> value;
+
+  std::string input = "\"" + str + "\"";
+  uint64_t vLow = value.GetLow ();
+  bool pass = ( (value.GetHigh () == hi) &&
+		( Max (vLow, lo) - Min (vLow, lo) <= tolerance)
+		);
+
+  std::cout << GetParent ()->GetName () << " Input: "
+	    << (pass ? "pass " : "FAIL ")
+	    << std::left << std::setw (28) << input << std::right
+	    << Printer (value) 
+	    << " expected: " << Printer (hi, lo) << " +/- " << tolerance
+	    << std::endl;
+
+  NS_TEST_EXPECT_MSG_EQ (value.GetHigh (), hi,
+			 "High parts do not match for input string \""
+			 << str << "\"");
+  NS_TEST_EXPECT_MSG_EQ_TOL ((int64_t)value.GetLow (), (int64_t)lo, tolerance,
+			     "Low parts do not match for input string \""
+			     << str << "\"");
 }
 void
 Int64x64InputTestCase::DoRun (void)
 {
-  CheckString ("1", 1, 0);
-  CheckString ("+1", 1, 0);
-  CheckString ("-1", -1, 0);
-  CheckString ("1.0", 1, 0);
-  CheckString ("+1.0", 1, 0);
-  CheckString ("001.0", 1, 0);
-  CheckString ("+001.0", 1, 0);
-  CheckString ("020.0", 20, 0);
-  CheckString ("+020.0", 20, 0);
-  CheckString ("-1.0", -1, 0);
-  CheckString ("-1.0000", -1, 0);
-  CheckString ("1.0000000", 1, 0);
-  CheckString ("1.08446744073709551615", 1, 8446744073709551615LL);
-  CheckString ("-1.08446744073709551615", -1, 8446744073709551615LL);
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Input: " << GetName ()
+	    << std::endl;
+
+  int64_t tolerance = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      tolerance = 2;
+    }
+  
+  Check ("1", 1, 0);
+  Check ("+1", 1, 0);
+  Check ("-1", -1, 0);
+  Check ("1.0", 1, 0);
+  Check ("+1.0", 1, 0);
+  Check ("001.0", 1, 0);
+  Check ("+001.0", 1, 0);
+  Check ("020.0", 20, 0);
+  Check ("+020.0", 20, 0);
+  Check ("1.0000000", 1, 0);
+  Check ("-1.0", -1, 0, tolerance);
+  Check ("-1.0000", -1, 0, tolerance);
+  Check (" 1.000000000000000000054",  1, 1, tolerance);
+  Check ("-1.000000000000000000054", -2, -1, tolerance);
 }
 
+
 class Int64x64InputOutputTestCase : public TestCase
 {
 public:
   Int64x64InputOutputTestCase ();
   virtual void DoRun (void);
-  void CheckString (std::string str);
+  void Check (const std::string & str,
+	      const int64_t tolerance = 0);
 };
 Int64x64InputOutputTestCase::Int64x64InputOutputTestCase ()
-  : TestCase ("Check that we can roundtrip Int64x64 numbers as strings")
+  : TestCase ("Roundtrip int64x64_t numbers as strings")
 {
 }
 void 
-Int64x64InputOutputTestCase::CheckString (std::string str)
+Int64x64InputOutputTestCase::Check (const std::string & str,
+				    const int64_t tolerance /* = 0 */)
 {
-  std::istringstream iss;
-  iss.str (str);
+  std::stringstream iss (str);
+  int64x64_t expect;
+  iss >> expect;
+
+  std::stringstream oss;
+  oss << std::scientific << std::setprecision (21) << expect;
   int64x64_t value;
-  iss >> value;
-  std::ostringstream oss;
-  oss << value;
-  NS_TEST_EXPECT_MSG_EQ (oss.str (), str, "Converted string does not match expected string");
+  oss >> value;
+
+  bool pass = Abs (value - expect) <= int64x64_t (0, tolerance + 1);
+
+  std::string input  = "\"" + str + "\"";
+  std::string output = "\"" + oss.str () + "\"";
+
+  if (pass)
+    {
+      std::cout << GetParent ()->GetName () << " InputOutput: "
+		<< (pass ? "pass " : "FAIL ")
+		<< " in:  " << std::left << std::setw (28) << input
+		<< " out: " << std::left << std::setw (28) << output
+		<< std::right
+		<< std::endl;
+    }
+  else
+    {
+      std::cout << GetParent ()->GetName () << " InputOutput: "
+		<< (pass ? "pass " : "FAIL ")
+		<< " in:  " << std::left << std::setw (28) << input
+		<< std::right << Printer (expect)
+		<< std::endl;
+      std::cout << GetParent ()->GetName ()
+		<< std::setw (19) << " "
+		<< " out: " << std::left << std::setw (28) << output
+		<< std::right << Printer (value)
+		<< std::endl;
+    }      
+
+  NS_TEST_EXPECT_MSG_EQ_TOL (value, expect, int64x64_t (0, tolerance),
+			     "Converted string does not match expected string");
 }
+
 void
 Int64x64InputOutputTestCase::DoRun (void)
 {
-  CheckString ("+1.0");
-  CheckString ("-1.0");
-  CheckString ("+20.0");
-  CheckString ("+1.08446744073709551615");
-  CheckString ("-1.08446744073709551615");
-  CheckString ("+1.18446744073709551615");
-  CheckString ("-1.18446744073709551615");
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " InputOutput: " << GetName ()
+	    << std::endl;
+
+  int64_t tolerance = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      tolerance = 1;
+    }
+  
+  Check ("+1.000000000000000000000");
+  Check ("+20.000000000000000000000");
+  Check ("+0.000000000000000000000", tolerance);
+  Check ("-1.000000000000000000000", tolerance);
+  Check ("+1.084467440737095516158", tolerance);
+  Check ("-2.084467440737095516158", tolerance);
+  Check ("+3.184467440737095516179", tolerance);
+  Check ("-4.184467440737095516179", tolerance);
 }
 
-#define CHECK_EXPECTED(a,b) \
-  NS_TEST_ASSERT_MSG_EQ ((a).GetHigh (),b,"Arithmetic failure: " << ((a).GetHigh ()) << "!=" << (b))
-
-#define V(v) \
-  int64x64_t (v)
 
 class Int64x64ArithmeticTestCase : public TestCase
 {
 public:
   Int64x64ArithmeticTestCase ();
   virtual void DoRun (void);
+  void Check (const int        test,
+	      const int64x64_t value, const int64x64_t expect);
+  void Check (const int        test,
+	      const int64x64_t value, const int64x64_t expect,
+	      const int64x64_t tolerance);
 };
 
 Int64x64ArithmeticTestCase::Int64x64ArithmeticTestCase ()
-  : TestCase ("Check basic arithmetic operations")
+  : TestCase ("Basic arithmetic operations")
 {
 }
 void
-Int64x64ArithmeticTestCase::DoRun (void)
+Int64x64ArithmeticTestCase::Check (const int test,
+				   const int64x64_t value,
+				   const int64x64_t expect)
 {
-  int64x64_t a, b;
+  int64x64_t zero (0,0);
+  Check (test, value, expect, zero);
+}
+void
+Int64x64ArithmeticTestCase::Check (const int test,
+				   const int64x64_t value,
+				   const int64x64_t expect,
+				   const int64x64_t tolerance)
+{
+  bool pass = Abs (value - expect) <= tolerance;
+  
+  std::cout << GetParent ()->GetName () << " Arithmetic: "
+	    << (pass ? "pass " : "FAIL ")
+	    << test << ": " << value << " == " << expect
+	    << " (+/- " << tolerance << ")"
+	    << std::endl;
+  
+  NS_TEST_ASSERT_MSG_EQ_TOL ( value, expect, tolerance,
+			      "Arithmetic failure in test case " << test);
+}
 
-  CHECK_EXPECTED (V (1) - V (1), 0);
-  CHECK_EXPECTED (V (1) - V (2), -1);
-  CHECK_EXPECTED (V (1) - V (3), -2);
-  CHECK_EXPECTED (V (1) - V (-1), 2);
-  CHECK_EXPECTED (V (1) - V (-2), 3);
-  CHECK_EXPECTED (V (-3) - V (-4), 1);
-  CHECK_EXPECTED (V (-2) - V (3), -5);
-  CHECK_EXPECTED (V (1) + V (2), 3);
-  CHECK_EXPECTED (V (1) + V (-3), -2);
-  CHECK_EXPECTED (V (0) + V (0), 0);
-  CHECK_EXPECTED (V (0) * V (0), 0);
-  CHECK_EXPECTED (V (0) * V (1), 0);
-  CHECK_EXPECTED (V (0) * V (-1), 0);
-  CHECK_EXPECTED (V (1) * V (0), 0);
-  CHECK_EXPECTED (V (1) * V (1), 1);
-  CHECK_EXPECTED (V (1) * V (-1), -1);
-  CHECK_EXPECTED (V (-1) * V (-1), 1);
-  CHECK_EXPECTED (V (0) * V (1), 0);
-  CHECK_EXPECTED (V (0) * V (-1), 0);
-  CHECK_EXPECTED (V (-1) * V (1), -1);
-
-
-  CHECK_EXPECTED (V (2) * V (3) / V (3), 2);
-
-  // Below, the division loses precision because 2/3 is not
-  // representable exactly in 64.64 integers. So, we got
-  // something super close but the final rounding kills us.
-  a = V (2);
-  b = V (3);
-  a /= b;
-  a *= b;
-  CHECK_EXPECTED (V (2) / V (3) * V (3), 1);
+void
+Int64x64ArithmeticTestCase::DoRun (void)
+{
+  const int64x64_t tol1 (0, 1);
+  const int64x64_t zero (0, 0);
+  const int64x64_t one  (1, 0);
+  const int64x64_t two  (2, 0);
+  const int64x64_t thre (3, 0);
+
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Arithmetic: " << GetName ()
+	    << std::endl;
+  
+  Check ( 0,   zero  -   zero ,   zero  );
+  Check ( 1,   zero  -   one ,   -one   );
+  Check ( 2,   one   -   one ,    zero  );
+  Check ( 3,   one   -   two ,   -one   );
+  Check ( 4,   one   - (-one ),   two   );
+  Check ( 5, (-one ) - (-two ),   one   );
+  Check ( 6, (-one ) -   two ,   -thre  );
+  
+  Check ( 7,   zero  +   zero ,   zero  );
+  Check ( 8,   zero  +   one ,    one   );
+  Check ( 9,   one   +   one ,    two   );
+  Check (10,   one   +   two ,    thre  );
+  Check (11,   one   + (-one ),   zero  );
+  Check (12, (-one ) + (-two ),  -thre  );
+  Check (13, (-one ) +   two ,    one   );
+  
+  Check (14,   zero  *   zero ,   zero  );
+  Check (15,   zero  *   one ,    zero  );
+  Check (16,   zero  * (-one ),   zero  );
+  Check (17,   one   *   one ,    one   );
+  Check (18,   one   * (-one ),  -one   );
+  Check (19, (-one ) * (-one ),   one   );
+  
+  Check (20,  (two  * thre ) / thre , two  );
+
+  const int64x64_t frac  = int64x64_t (0, 0xc000000000000000ULL);  // 0.75
+  const int64x64_t fplf2 = frac + frac * frac;  // 1.3125
+  
+  Check (21,   frac,              0.75);
+  Check (22,   fplf2,             1.3125);
+  
+  const int64x64_t zerof = zero + frac;
+  const int64x64_t onef  = one  + frac;
+  const int64x64_t twof  = two  + frac;
+  const int64x64_t thref = thre + frac;
+
+  Check (23,   zerof,             frac);
+  
+  
+  Check (24,   zerof -   zerof,   zero );
+  Check (25,   zerof -   onef,   -one  );
+  Check (26,   onef  -   onef,    zero );
+  Check (27,   onef  -   twof,   -one  );
+  Check (28,   onef  - (-onef),   twof  + frac  );
+  Check (29 , (-onef) - (-twof),   one  );
+  Check (30 , (-onef) -   twof,   -thref - frac  );
+  
+  Check (31,   zerof +   zerof,   zerof + frac  );
+  Check (32,   zerof +   onef,    onef  + frac  );
+  Check (33,   onef  +   onef,    twof  + frac  );
+  Check (34,   onef  +   twof,    thref + frac  );
+  Check (35,   onef  + (-onef),   zero  );
+  Check (36 , (-onef) + (-twof),  -thref - frac  );
+  Check (37, (-onef) +   twof,    one   );
+  
+  Check (38,   zerof *   zerof,   frac  * frac  );
+  Check (39 ,   zero  *   onef,    zero  );
+  Check (40 ,   zerof *   one,     frac  );
+  
+  Check (41,   zerof *   onef,    fplf2 );
+  Check (42,   zerof * (-onef),  -fplf2 );
+  Check (43,   onef  *   onef,    onef  + fplf2 );
+  Check (44,   onef  * (-onef),  -onef  - fplf2 );
+  Check (45, (-onef) * (-onef),   onef  + fplf2 );
+  
+  
+  // Multiplication followed by division is exact:
+  Check (46, (two  * thre ) / thre , two  );
+  Check (47, (twof * thref) / thref, twof );
+
+  // Division followed by multiplication loses a bit or two:
+  Check (48, (two  / thre)  * thre,  two , 2 * tol1 );
+  Check (49, (twof / thref) * thref, twof, 3 * tol1 );
 
   // The example below shows that we really do not lose
   // much precision internally: it is almost always the
   // final conversion which loses precision.
-  CHECK_EXPECTED (V (2000000000) / V (3) * V (3), 1999999999);
+  Check (50, (int64x64_t (2000000000) / int64x64_t (3)) * int64x64_t (3),
+	      int64x64_t (1999999999, 0xfffffffffffffffeULL));
+
+  // Check special values
+  Check (51,  int64x64_t (0, 0x159fa87f8aeaad21ULL) * 10,
+	           int64x64_t (0, 0xd83c94fb6d2ac34aULL));
+  
 }
 
+
+
 /**
  * See \bugid{455}
  */
@@ -178,6 +456,8 @@
 public:
   Int64x64Bug455TestCase ();
   virtual void DoRun (void);
+  void Check (const double result, const double expect,
+	      const std::string & msg);
 };
 
 Int64x64Bug455TestCase::Int64x64Bug455TestCase ()
@@ -185,25 +465,51 @@
 {
 }
 void
+Int64x64Bug455TestCase::Check (const double result, const double expect,
+			       const std::string & msg)
+{
+  bool pass = result == expect;
+  
+  std::cout << GetParent ()->GetName () << " Bug 455: "
+	    << (pass ? "pass " : "FAIL ")
+	    << "res: "  << result
+	    << " exp: " << expect
+	    << ": " << msg
+	    << std::endl;
+  
+  NS_TEST_ASSERT_MSG_EQ (result, expect, msg);
+}
+
+void
 Int64x64Bug455TestCase::DoRun (void)
 {
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Bug 455: " << GetName ()
+	    << std::endl;
+  
   int64x64_t a = int64x64_t (0.1);
   a /= int64x64_t (1.25);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 0.08, "The original testcase");
+  Check (a.GetDouble (), 0.08, "The original testcase");
+  
   a = int64x64_t (0.5);
   a *= int64x64_t (5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 2.5, "Simple test for multiplication");
+  Check (a.GetDouble (), 2.5, "Simple test for multiplication");
+  
   a = int64x64_t (-0.5);
   a *= int64x64_t (5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), -2.5, "Test sign, first operation negative");
+  Check (a.GetDouble (), -2.5, "Test sign, first operation negative");
+  
   a = int64x64_t (-0.5);
   a *=int64x64_t (-5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 2.5, "both operands negative");
+  Check (a.GetDouble (), 2.5, "both operands negative");
+  
   a = int64x64_t (0.5);
   a *= int64x64_t (-5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), -2.5, "only second operand negative");
+  Check (a.GetDouble (), -2.5, "only second operand negative");
 }
 
+
+
 /**
  * See \bugid{863}
  */
@@ -212,6 +518,8 @@
 public:
   Int64x64Bug863TestCase ();
   virtual void DoRun (void);
+  void Check (const double result, const double expect,
+	      const std::string & msg);
 };
 
 Int64x64Bug863TestCase::Int64x64Bug863TestCase ()
@@ -219,125 +527,686 @@
 {
 }
 void
+Int64x64Bug863TestCase::Check (const double result, const double expect,
+			       const std::string & msg)
+{
+  bool pass = result == expect;
+  
+  std::cout << GetParent ()->GetName () << " Bug 863: "
+	    << (pass ? "pass " : "FAIL ")
+	    << "res: "  << result
+	    << " exp: " << expect
+	    << ": " << msg
+	    << std::endl;
+  
+  NS_TEST_ASSERT_MSG_EQ (result, expect, msg);
+}
+
+void
 Int64x64Bug863TestCase::DoRun (void)
 {
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Bug 863: " << GetName ()
+	    << std::endl;
+  
   int64x64_t a = int64x64_t (0.9);
   a /= int64x64_t (1);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 0.9, "The original testcase");
+  Check (a.GetDouble (), 0.9, "The original testcase");
+  
   a = int64x64_t (0.5);
   a /= int64x64_t (0.5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 1.0, "Simple test for division");
+  Check (a.GetDouble (), 1.0, "Simple test for division");
+  
   a = int64x64_t (-0.5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), -0.5, "Check that we actually convert doubles correctly");
+  Check (a.GetDouble (), -0.5, "Check that we actually convert doubles correctly");
+  
   a /= int64x64_t (0.5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), -1.0, "first argument negative");
+  Check (a.GetDouble (), -1.0, "first argument negative");
+  
   a = int64x64_t (0.5);
   a /= int64x64_t (-0.5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), -1.0, "second argument negative");
+  Check (a.GetDouble (), -1.0, "second argument negative");
+  
   a = int64x64_t (-0.5);
   a /= int64x64_t (-0.5);
-  NS_TEST_ASSERT_MSG_EQ (a.GetDouble (), 1.0, "both arguments negative");
+  Check (a.GetDouble (), 1.0, "both arguments negative");
 }
 
+
+/**
+ * See \bugid{1786}
+ */
+class Int64x64Bug1786TestCase : public TestCase
+{
+public:
+  Int64x64Bug1786TestCase ();
+  virtual void DoRun (void);
+  void Check (const uint64_t low, const std::string & value,
+	      const int64_t tolerance = 0);
+};
+
+Int64x64Bug1786TestCase::Int64x64Bug1786TestCase ()
+  : TestCase ("Test case for bug 1786")
+{
+}
+void
+Int64x64Bug1786TestCase::Check (const uint64_t low,
+				const std::string & str,
+				const int64_t tolerance /* = 0 */)
+{
+  int64x64_t value (0, low);
+  std::ostringstream oss;
+  oss << std::scientific << std::setprecision (22) << value;
+
+  if (tolerance == 0)
+    {
+      bool pass = oss.str () == str;
+  
+      std::cout << GetParent ()->GetName () << " Bug 1786: "
+		<< (pass ? "pass " : "FAIL ")
+		<< "    0x" << std::hex << std::setw (16) << low << std::dec
+		<< " = "    << oss.str ();
+      if (!pass)
+	{
+	  std::cout << ", expected " << str;
+	}
+      std::cout << std::endl;
+
+      NS_TEST_EXPECT_MSG_EQ (oss.str (), str,
+			     "Fraction string not correct");
+    }
+  else
+    {
+      // No obvious way to implement a tolerance on the strings
+      
+      std::cout << GetParent ()->GetName () << " Bug 1786: "
+		<< "skip "
+		<< "    0x" << std::hex << std::setw (16) << low << std::dec
+		<< " = "    << oss.str ()
+		<< ", expected " << str
+		<< std::endl;
+
+    }
+}
+void
+Int64x64Bug1786TestCase::DoRun (void)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " But 1786: " << GetName ()
+	    << std::endl;
+
+  int64_t tolerance = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      tolerance = 1;
+    }
+
+  // Some of these values differ from the DoubleTestCase
+  // by one count in the last place
+  // because operator<< truncates the last output digit,
+  // instead of rounding.
+  Check (                 1ULL, "+0.0000000000000000000542");
+  Check (                 2ULL, "+0.0000000000000000001084");
+  Check (                 3ULL, "+0.0000000000000000001626");
+  Check (                 4ULL, "+0.0000000000000000002168");
+  Check (                 5ULL, "+0.0000000000000000002710");
+  Check (                 6ULL, "+0.0000000000000000003253");
+  Check (                 7ULL, "+0.0000000000000000003795");
+  Check (                 8ULL, "+0.0000000000000000004337");
+  Check (                 9ULL, "+0.0000000000000000004879");
+  Check (               0xAULL, "+0.0000000000000000005421");
+  Check (               0xFULL, "+0.0000000000000000008132");
+  Check (              0xF0ULL, "+0.0000000000000000130104");
+  Check (             0xF00ULL, "+0.0000000000000002081668");
+  Check (            0xF000ULL, "+0.0000000000000033306691");
+  Check (           0xF0000ULL, "+0.0000000000000532907052");
+  Check (          0xF00000ULL, "+0.0000000000008526512829");
+  Check (         0xF000000ULL, "+0.0000000000136424205266");
+  Check (        0xF0000000ULL, "+0.0000000002182787284255");
+  Check (       0xF00000000ULL, "+0.0000000034924596548080");
+  Check (      0xF000000000ULL, "+0.0000000558793544769287");
+  Check (     0xF0000000000ULL, "+0.0000008940696716308594");
+  Check (    0xF00000000000ULL, "+0.0000143051147460937500");
+  Check (   0xF000000000000ULL, "+0.0002288818359375000000");
+  Check (  0xF0000000000000ULL, "+0.0036621093750000000000");
+  Check ( 0xF00000000000000ULL, "+0.0585937500000000000000");
+  std::cout << std::endl;
+  Check (0x7FFFFFFFFFFFFFFDULL, "+0.4999999999999999998374", tolerance);
+  Check (0x7FFFFFFFFFFFFFFEULL, "+0.4999999999999999998916", tolerance);
+  Check (0x7FFFFFFFFFFFFFFFULL, "+0.4999999999999999999458", tolerance);
+  Check (0x8000000000000000ULL, "+0.5000000000000000000000");
+  Check (0x8000000000000001ULL, "+0.5000000000000000000542", tolerance);
+  Check (0x8000000000000002ULL, "+0.5000000000000000001084", tolerance);
+  Check (0x8000000000000003ULL, "+0.5000000000000000001626", tolerance);
+  std::cout << std::endl;
+  Check (0xF000000000000000ULL, "+0.9375000000000000000000");
+  Check (0xFF00000000000000ULL, "+0.9960937500000000000000");
+  Check (0xFFF0000000000000ULL, "+0.9997558593750000000000");
+  Check (0xFFFF000000000000ULL, "+0.9999847412109375000000");
+  Check (0xFFFFF00000000000ULL, "+0.9999990463256835937500");
+  Check (0xFFFFFF0000000000ULL, "+0.9999999403953552246094");
+  Check (0xFFFFFFF000000000ULL, "+0.9999999962747097015381");
+  Check (0xFFFFFFFF00000000ULL, "+0.9999999997671693563461");
+  Check (0xFFFFFFFFF0000000ULL, "+0.9999999999854480847716");
+  Check (0xFFFFFFFFFF000000ULL, "+0.9999999999990905052982");
+  Check (0xFFFFFFFFFFF00000ULL, "+0.9999999999999431565811");
+  Check (0xFFFFFFFFFFFF0000ULL, "+0.9999999999999964472863");
+  Check (0xFFFFFFFFFFFFF000ULL, "+0.9999999999999997779554");
+  Check (0xFFFFFFFFFFFFFF00ULL, "+0.9999999999999999861222");
+  Check (0xFFFFFFFFFFFFFFF0ULL, "+0.9999999999999999991326");
+  Check (0xFFFFFFFFFFFFFFF5ULL, "+0.9999999999999999994037", tolerance);
+  Check (0xFFFFFFFFFFFFFFF6ULL, "+0.9999999999999999994579", tolerance);
+  Check (0xFFFFFFFFFFFFFFF7ULL, "+0.9999999999999999995121", tolerance);
+  Check (0xFFFFFFFFFFFFFFF8ULL, "+0.9999999999999999995663", tolerance);
+  Check (0xFFFFFFFFFFFFFFF9ULL, "+0.9999999999999999996205", tolerance);
+  Check (0xFFFFFFFFFFFFFFFAULL, "+0.9999999999999999996747", tolerance);
+  Check (0xFFFFFFFFFFFFFFFBULL, "+0.9999999999999999997289", tolerance);
+  Check (0xFFFFFFFFFFFFFFFCULL, "+0.9999999999999999997832", tolerance);
+  Check (0xFFFFFFFFFFFFFFFDULL, "+0.9999999999999999998374", tolerance);
+  Check (0xFFFFFFFFFFFFFFFEULL, "+0.9999999999999999998916", tolerance);
+  Check (0xFFFFFFFFFFFFFFFFULL, "+0.9999999999999999999458", tolerance);
+}
+
+
 class Int64x64CompareTestCase : public TestCase
 {
 public:
   Int64x64CompareTestCase ();
   virtual void DoRun (void);
+
+  void Check (const bool result, const bool expect,
+	      const std::string & msg);
 };
 Int64x64CompareTestCase::Int64x64CompareTestCase ()
-  : TestCase ("Check basic compare operations")
+  : TestCase ("Basic compare operations")
 {
 }
 void
-Int64x64CompareTestCase::DoRun (void)
+Int64x64CompareTestCase::Check (const bool result, const bool expect,
+				const std::string & msg)
 {
+  bool pass = result == expect;
+  
+  std::cout << GetParent ()->GetName () << " Compare: "
+	    << (pass ? "pass " : "FAIL ")
+	    << msg
+	    << std::endl;
+  
+  NS_TEST_ASSERT_MSG_EQ (result, expect, msg);
+}
 
-  NS_TEST_ASSERT_MSG_EQ ((V (-1) < V (1)), true, "a is smaller than b");
-  NS_TEST_ASSERT_MSG_EQ ((V (-1) > V (-2)), true, "a is bigger than b");
-  NS_TEST_ASSERT_MSG_EQ ((V (-1) == V (-1)), true, "a is equal to b");
-
-  NS_TEST_ASSERT_MSG_EQ ((V (1) > V (-1)), true, "a is bigger than b");
-  NS_TEST_ASSERT_MSG_EQ ((V (1) < V (2)), true, "a is smaller than b");
+void
+Int64x64CompareTestCase::DoRun (void)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Compare: " << GetName ()
+	    << std::endl;
+
+  const int64x64_t zero ( 0, 0);
+  const int64x64_t one  ( 1, 0);
+  const int64x64_t two  ( 2, 0);
+  const int64x64_t mone (-1, 0);
+  const int64x64_t mtwo (-2, 0);
+  const int64x64_t frac  = int64x64_t (0, 0xc000000000000000ULL);  // 0.75
+  const int64x64_t zerof = zero + frac;
+  const int64x64_t onef  = one  + frac;
+  const int64x64_t monef = mone - frac;
+  const int64x64_t mtwof = mtwo - frac;
+  
+  Check ( zerof    == zerof, true,  "equality, zero");
+  Check ( onef     == onef,  true,  "equality, positive");
+  Check ( mtwof    == mtwof, true,  "equality, negative");
+  Check ( zero     == one,   false, "equality false, zero");
+  Check ( one      == two,   false, "equality false, unsigned");
+  Check ( one      == mone,  false, "equality false, signed");
+  Check ( onef     == one,   false, "equality false, fraction");
+  std::cout << std::endl;
+
+  Check ( zerof    != zerof, false, "inequality, zero");
+  Check ( onef     != onef,  false, "inequality, positive");
+  Check ( mtwof    != mtwof, false, "inequality, negative");
+  Check ( zero     != one,   true,  "inequality true, zero");
+  Check ( one      != two,   true,  "inequality true, unsigned");
+  Check ( one      != mone,  true,  "inequality true, signed");
+  Check ( onef     != one,   true,  "inequality true, fraction");
+  std::cout << std::endl;
+
+  Check ( zerof    <  onef,  true,  "less, zerof");
+  Check ( zero     <  zerof, true,  "less, zero");
+  Check ( one      <  onef,  true,  "less, positive");
+  Check ( monef    <  mone,  true,  "less, negative");
+  Check ( onef     <  one,   false, "less, false, positive");
+  Check ( mtwo     <  mtwof, false, "less, false, negative");
+  std::cout << std::endl;
+
+  Check ( zerof    <= zerof, true,  "less equal, equal, zerof");
+  Check ( zero     <= zerof, true,  "less equal, less, zero");
+  Check ( onef     <= onef,  true,  "less equal, equal, positive");
+  Check ( monef    <= mone,  true,  "less equal, less, negative");
+  Check ( onef     <= one,   false, "less equal, false, positive");
+  Check ( mtwo     <= mtwof, false, "less equal, false, negative");
+  std::cout << std::endl;
+
+  Check ( onef     >  zerof, true,  "greater, zerof");
+  Check ( zerof    >  zero,  true,  "greater, zero");
+  Check ( onef     >  one,   true,  "greater, positive");
+  Check ( mone     >  monef, true,  "greater, negative");
+  Check ( one      >  onef,  false, "greater, false, positive");
+  Check ( mtwof    >  mtwo,  false, "greater, false, negative");
+  std::cout << std::endl;
+
+  Check ( zerof    >= zerof, true,  "greater equal, equal, zerof");
+  Check ( zerof    >= zero,  true,  "greater equal, greater, zero");
+  Check ( onef     >= onef,  true,  "greater equal, equal, positive");
+  Check ( mone     >= monef, true,  "greater equal, greater, negative");
+  Check ( one      >= onef,  false, "greater equal, false, positive");
+  Check ( mtwof    >= mtwo,  false, "greater equal, false, negative");
+  std::cout << std::endl;
+
+  Check ( zero     == false, true,  "zero   == false");
+  Check ( one      == true,  true,  "one    == true");
+  Check ( zerof    != false, true,  "zerof  != false");
+  Check ( (!zero)  == true,  true,  "!zero  == true");
+  Check ( (!zerof) == false, true,  "!zerof == false");
+  Check ( (!one)   == false, true,  "!one   == false");
+  Check ( (+onef)  == onef,  true, "unary positive");
+  Check ( (-onef)  == monef, true, "unary negative");
 }
 
+
 class Int64x64InvertTestCase : public TestCase
 {
 public:
   Int64x64InvertTestCase ();
   virtual void DoRun (void);
+  void Check (const int64_t factor);
+  void CheckCase (const uint64_t factor,
+		  const int64x64_t result, const int64x64_t expect,
+		  const std::string & msg,
+		  const double tolerance = 0);
 };
 
 Int64x64InvertTestCase::Int64x64InvertTestCase ()
-  : TestCase ("Test case for invertion")
+  : TestCase ("Invert and MulByInvert")
 {
 }
+void
+Int64x64InvertTestCase::CheckCase (const uint64_t factor,
+				   const int64x64_t result,
+				   const int64x64_t expect,
+				   const std::string & msg,
+				   const double tolerance /* = 0 */)
+{
+  bool pass = Abs (result - expect) <= tolerance;
+  
+  std::cout << GetParent ()->GetName () << " Invert: ";
+
+  if (pass)
+    {
+      std::cout << "pass:  " << factor << ": ";
+
+    }
+  else
+    {
+      std::cout << "FAIL:  " << factor << ": "
+		<< "(res: " << result
+		<< " exp: " << expect
+		<< " tol: " << tolerance << ")  ";
+    }
+  std::cout << msg 
+	    << std::endl;
+  
+  NS_TEST_ASSERT_MSG_EQ_TOL (result, expect, int64x64_t(tolerance), msg);
+}
+
+void
+Int64x64InvertTestCase::Check (const int64_t factor)
+{
+  const int64x64_t one (1, 0);
+  const int64x64_t factorI = one / int64x64_t (factor);
+  
+  const int64x64_t a = int64x64_t::Invert (factor);
+  int64x64_t b = int64x64_t (factor);
+
+  double tolerance = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      tolerance = 0.000000000000000001L;
+    }
+  
+  b.MulByInvert (a);
+  CheckCase (factor, b, one, "x * x^-1 == 1", tolerance);
+  
+  int64x64_t c = int64x64_t (1);
+  c.MulByInvert (a);
+  CheckCase (factor, c, factorI, "1 * x^-1 == 1 / x");
+  
+  int64x64_t d = int64x64_t (1);
+  d /= (int64x64_t (factor));
+  CheckCase (factor, d, c, "1/x == x^-1");
+  
+  int64x64_t e = int64x64_t (-factor);
+  e.MulByInvert (a);
+  CheckCase (factor, e, -one, "-x * x^-1 == -1", tolerance);
+}
 
 void
 Int64x64InvertTestCase::DoRun (void)
 {
-#define TEST(factor)                                                    \
-  do {                                                                  \
-      int64x64_t a;                                                       \
-      a = int64x64_t::Invert (factor);                                    \
-      int64x64_t b = V (factor);                                          \
-      b.MulByInvert (a);                                                  \
-      NS_TEST_ASSERT_MSG_EQ (b.GetHigh (), 1,                             \
-                             "x * 1/x should be 1 for x=" << factor);     \
-      int64x64_t c = V (1);                                               \
-      c.MulByInvert (a);                                                  \
-      NS_TEST_ASSERT_MSG_EQ (c.GetHigh (), 0,                             \
-                             "1 * 1/x should be 0 for x=" << factor);     \
-      int64x64_t d = V (1);                                               \
-      d /= (V (factor));                                                  \
-      NS_TEST_ASSERT_MSG_EQ (d.GetDouble (), c.GetDouble (),              \
-                             "1 * 1/x should be equal to 1/x for x=" << factor); \
-      int64x64_t e = V (-factor);                                 \
-      e.MulByInvert (a);                                                  \
-      NS_TEST_ASSERT_MSG_EQ (e.GetHigh (), -1,                            \
-                             "-x * 1/x should be -1 for x=" << factor);   \
-    } \
-  while(false)
-  TEST (2);
-  TEST (3);
-  TEST (4);
-  TEST (5);
-  TEST (6);
-  TEST (10);
-  TEST (99);
-  TEST (100);
-  TEST (1000);
-  TEST (10000);
-  TEST (100000);
-  TEST (100000);
-  TEST (1000000);
-  TEST (10000000);
-  TEST (100000000);
-  TEST (1000000000);
-  TEST (10000000000LL);
-  TEST (100000000000LL);
-  TEST (1000000000000LL);
-  TEST (10000000000000LL);
-  TEST (100000000000000LL);
-  TEST (1000000000000000LL);
-#undef TEST
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Invert: " << GetName ()
+	    << std::endl;
+  
+  Check (2);
+  Check (3);
+  Check (4);
+  Check (5);
+  Check (6);
+  Check (10);
+  Check (99);
+  Check (100);
+  Check (1000);
+  Check (10000);
+  Check (100000);
+  Check (100000);
+  Check (1000000);
+  Check (10000000);
+  Check (100000000);
+  Check (1000000000);
+  Check (10000000000LL);
+  Check (100000000000LL);
+  Check (1000000000000LL);
+  Check (10000000000000LL);
+  Check (100000000000000LL);
+  Check (1000000000000000LL);
+}
+
+
+class Int64x64DoubleTestCase : public TestCase
+{
+public:
+  Int64x64DoubleTestCase ();
+  virtual void DoRun (void);
+  void Check (const int64_t intPart);
+  void Check (const long double value,
+	      const int64_t intPart,
+	      const uint64_t lo);
+private:
+  long double m_last;
+  int64x64_t  m_deltaMax;
+  int         m_deltaCount;
+};
+
+Int64x64DoubleTestCase::Int64x64DoubleTestCase ()
+  : TestCase ("Construct from floating point.")
+{
+}
+
+void
+Int64x64DoubleTestCase::Check (const long double value,
+			       const int64_t intPart,
+			       const uint64_t lo)
+{
+  // Construct the expected value
+  int64x64_t expect = int64x64_t (0, lo);
+  expect += intPart;
+
+  // Actual value of conversion from double
+  const int64x64_t result = int64x64_t (value);
+
+  // Make tolerance depend on magnitude of value
+  long double epsilon = std::numeric_limits<long double>::epsilon ();
+  long double margin = 0;
+  if (int64x64_t::implementation == int64x64_t::ld_impl)
+    {
+      // Darwin 12.5.0 (Mac 10.8.5) g++ 4.2.1
+      margin = 1.0;
+    }
+  if (RUNNING_ON_VALGRIND)
+    {
+      // Valgrind uses 64-bit doubles for long doubles
+      // See ns-3 bug 1882
+      // Need non-zero margin to ensure final tolerance is non-zero
+      margin = 1.0;
+      epsilon = std::numeric_limits<double>::epsilon ();
+    }
+
+  const int64x64_t tolerance = (margin + std::fabs (value)) * epsilon;
+  
+  const int64x64_t delta = Abs (result - expect);
+  const bool skip = value == m_last;
+  const bool pass = delta <= tolerance;
+  
+  // Save stream format flags
+  std::ios_base::fmtflags ff = std::cout.flags ();
+  std::cout << std::fixed << std::setprecision (22);
+  
+  std::cout << GetParent ()->GetName () << " Double: "
+	    << (skip ? "skip " : (pass ? "pass " : "FAIL "))
+	    << std::showpos << value << " == " 
+	    << Printer (result)
+	    << std::endl;
+  
+  // Log non-zero delta
+  if ( delta > int64x64_t() )
+    {
+      std::cout << GetParent ()->GetName ()
+		<< std::left  << std::setw (43) << "         expected"
+		<< std::right << Printer (expect)
+		<< std::endl;
+
+      if (delta == tolerance)
+	{
+	  std::cout << GetParent ()->GetName ()
+		    << std::left  << std::setw (43) << "         delta = tolerance"
+		    << std::right << Printer (delta)
+		    << std::endl;
+	}
+      else
+	{
+	  std::cout << GetParent ()->GetName ()
+		    << std::left  << std::setw (43) << "         delta"
+		    << std::right << Printer (delta)
+		    << std::endl;
+	  std::cout << GetParent ()->GetName ()
+		    << std::left  << std::setw (43) << "         +/-"
+		    << std::right << Printer (tolerance)
+		    << std::endl;
+	}
+      
+      ++m_deltaCount;
+      
+      if ( delta > m_deltaMax )
+	{
+	  m_deltaMax = delta;
+	}
+    }
+  
+  NS_TEST_ASSERT_MSG_EQ_TOL (result, expect, tolerance,
+			     "int64x64_t (long double) failed");
+  m_last = value;
+  std::cout.flags (ff);
+
+}
+
+void
+Int64x64DoubleTestCase::Check (const int64_t intPart)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Double: "
+	    << "integer: " << intPart
+	    << std::endl;
+  m_last = intPart;
+  m_deltaCount = 0;
+
+  // Nudging the integer part eliminates deltas around 0
+  long double v = intPart;
+  
+  Check (v +0.0000000000000000000542L, intPart,                0x1ULL);
+  Check (v +0.0000000000000000001084L, intPart,                0x2ULL);
+  Check (v +0.0000000000000000001626L, intPart,                0x3ULL);
+  Check (v +0.0000000000000000002168L, intPart,                0x4ULL);
+  Check (v +0.0000000000000000002710L, intPart,                0x5ULL);
+  Check (v +0.0000000000000000003253L, intPart,                0x6ULL);
+  Check (v +0.0000000000000000003795L, intPart,                0x7ULL);
+  Check (v +0.0000000000000000004337L, intPart,                0x8ULL);
+  Check (v +0.0000000000000000004879L, intPart,                0x9ULL);
+  Check (v +0.0000000000000000005421L, intPart,                0xAULL);
+  Check (v +0.0000000000000000008132L, intPart,                0xFULL);
+  Check (v +0.0000000000000000130104L, intPart,               0xF0ULL);
+  Check (v +0.0000000000000002081668L, intPart,              0xF00ULL);
+  Check (v +0.0000000000000033306691L, intPart,             0xF000ULL);
+  Check (v +0.0000000000000532907052L, intPart,            0xF0000ULL);
+  Check (v +0.0000000000008526512829L, intPart,           0xF00000ULL);
+  Check (v +0.0000000000136424205266L, intPart,          0xF000000ULL);
+  Check (v +0.0000000002182787284255L, intPart,         0xF0000000ULL);
+  Check (v +0.0000000034924596548080L, intPart,        0xF00000000ULL);
+  Check (v +0.0000000558793544769287L, intPart,       0xF000000000ULL);
+  Check (v +0.0000008940696716308594L, intPart,      0xF0000000000ULL);
+  Check (v +0.0000143051147460937500L, intPart,     0xF00000000000ULL);
+  Check (v +0.0002288818359375000000L, intPart,    0xF000000000000ULL);
+  Check (v +0.0036621093750000000000L, intPart,   0xF0000000000000ULL);
+  Check (v +0.0585937500000000000000L, intPart,  0xF00000000000000ULL);
+  std::cout << std::endl;
+  Check (v +0.4999999999999999998374L, intPart, 0x7FFFFFFFFFFFFFFDULL);
+  Check (v +0.4999999999999999998916L, intPart, 0x7FFFFFFFFFFFFFFEULL);
+  Check (v +0.4999999999999999999458L, intPart, 0x7FFFFFFFFFFFFFFFULL);
+  Check (v +0.5000000000000000000000L, intPart, 0x8000000000000000ULL);
+  Check (v +0.5000000000000000000542L, intPart, 0x8000000000000001ULL);
+  Check (v +0.5000000000000000001084L, intPart, 0x8000000000000002ULL);
+  Check (v +0.5000000000000000001626L, intPart, 0x8000000000000003ULL);
+  std::cout << std::endl;
+  Check (v +0.9375000000000000000000L, intPart, 0xF000000000000000ULL);
+  Check (v +0.9960937500000000000000L, intPart, 0xFF00000000000000ULL);
+  Check (v +0.9997558593750000000000L, intPart, 0xFFF0000000000000ULL);
+  Check (v +0.9999847412109375000000L, intPart, 0xFFFF000000000000ULL);
+  Check (v +0.9999990463256835937500L, intPart, 0xFFFFF00000000000ULL);
+  Check (v +0.9999999403953552246094L, intPart, 0xFFFFFF0000000000ULL);
+  Check (v +0.9999999962747097015381L, intPart, 0xFFFFFFF000000000ULL);
+  Check (v +0.9999999997671693563461L, intPart, 0xFFFFFFFF00000000ULL);
+  Check (v +0.9999999999854480847716L, intPart, 0xFFFFFFFFF0000000ULL);
+  Check (v +0.9999999999990905052982L, intPart, 0xFFFFFFFFFF000000ULL);
+  Check (v +0.9999999999999431565811L, intPart, 0xFFFFFFFFFFF00000ULL);
+  Check (v +0.9999999999999964472863L, intPart, 0xFFFFFFFFFFFF0000ULL);
+  Check (v +0.9999999999999997779554L, intPart, 0xFFFFFFFFFFFFF000ULL);
+  Check (v +0.9999999999999999861222L, intPart, 0xFFFFFFFFFFFFFF00ULL);
+  Check (v +0.9999999999999999991326L, intPart, 0xFFFFFFFFFFFFFFF0ULL);
+  Check (v +0.9999999999999999994037L, intPart, 0xFFFFFFFFFFFFFFF5ULL);
+  Check (v +0.9999999999999999994579L, intPart, 0xFFFFFFFFFFFFFFF6ULL);
+  Check (v +0.9999999999999999995121L, intPart, 0xFFFFFFFFFFFFFFF7ULL);
+  Check (v +0.9999999999999999995663L, intPart, 0xFFFFFFFFFFFFFFF8ULL);
+  Check (v +0.9999999999999999996205L, intPart, 0xFFFFFFFFFFFFFFF9ULL);
+  Check (v +0.9999999999999999996747L, intPart, 0xFFFFFFFFFFFFFFFAULL);
+  Check (v +0.9999999999999999997289L, intPart, 0xFFFFFFFFFFFFFFFBULL);
+  Check (v +0.9999999999999999997832L, intPart, 0xFFFFFFFFFFFFFFFCULL);
+  Check (v +0.9999999999999999998374L, intPart, 0xFFFFFFFFFFFFFFFDULL);
+  Check (v +0.9999999999999999998916L, intPart, 0xFFFFFFFFFFFFFFFEULL);
+  Check (v +0.9999999999999999999458L, intPart, 0xFFFFFFFFFFFFFFFFULL);
+
+  std::cout << GetParent ()->GetName () << " Double: "
+	    << "integer: " << intPart
+	    << ": delta count: " << m_deltaCount
+	    << ", max: " << Printer (m_deltaMax)
+	    << std::endl;  
+}
+
+void
+Int64x64DoubleTestCase::DoRun (void)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Double: " << GetName ()
+	    << std::endl;
+
+  // Save stream format flags
+  std::ios_base::fmtflags ff = std::cout.flags ();
+  std::cout << std::scientific << std::setprecision (21);
+
+  m_deltaMax = int64x64_t ();
+
+  std::cout << GetParent ()->GetName () << " Double: "
+	    << std::endl;
+    
+  Check (-2);
+  Check (-1);
+  Check ( 0);
+  Check ( 1);
+  Check ( 2);
+
+  std::cout << GetParent ()->GetName () << " Double: "
+	    << "max delta: " << Printer (m_deltaMax)
+	    << std::endl;
+
+  std::cout.flags (ff);
+}
+
+
+class Int64x64ImplTestCase : public TestCase
+{
+public:
+  Int64x64ImplTestCase ();
+  virtual void DoRun (void);
+};
+
+Int64x64ImplTestCase::Int64x64ImplTestCase ()
+  : TestCase ("Print the implementation")
+{
 }
 
+void
+Int64x64ImplTestCase::DoRun (void)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " Impl: " << GetName ()
+	    << std::endl;
+
+  
+  std::cout << "int64x64_t::implementation: ";
+  switch (int64x64_t::implementation)
+    {
+    case (int64x64_t::int128_impl) : std::cout << "int128_impl"; break;
+    case (int64x64_t::cairo_impl)  : std::cout << "cairo_impl";  break;
+    case (int64x64_t::ld_impl)     : std::cout << "ld_impl";     break;
+    default :                        std::cout << "unknown!";    
+    }
+  std::cout << std::endl;
+
+#if defined (INT64X64_USE_CAIRO) && !defined (PYTHON_SCAN)
+  std::cout << "cairo_impl64:  " << cairo_impl64 << std::endl;
+  std::cout << "cairo_impl128: " << cairo_impl128 << std::endl;
+#endif
+
+  if (RUNNING_ON_VALGRIND != 0)
+    {
+      std::cout << "Running with valgrind" << std::endl;
+    }
 
+}
 
-static class Int64x64128TestSuite : public TestSuite
+static class Int64x64TestSuite : public TestSuite
 {
 public:
-  Int64x64128TestSuite ()
+  Int64x64TestSuite ()
     : TestSuite ("int64x64", UNIT)
   {
-    AddTestCase (new Int64x64FracTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64ImplTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64HiLoTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64ArithmeticTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64CompareTestCase (), TestCase::QUICK);
     AddTestCase (new Int64x64InputTestCase (), TestCase::QUICK);
     AddTestCase (new Int64x64InputOutputTestCase (), TestCase::QUICK);
-    AddTestCase (new Int64x64ArithmeticTestCase (), TestCase::QUICK);
     AddTestCase (new Int64x64Bug455TestCase (), TestCase::QUICK);
     AddTestCase (new Int64x64Bug863TestCase (), TestCase::QUICK);
-    AddTestCase (new Int64x64CompareTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64Bug1786TestCase (), TestCase::QUICK);
     AddTestCase (new Int64x64InvertTestCase (), TestCase::QUICK);
+    AddTestCase (new Int64x64DoubleTestCase (), TestCase::QUICK);
   }
-} g_int64x64TestSuite;
+}  g_int64x64TestSuite;
+
+}  // namespace test
+
+}  // namespace int64x64
+
+}  // namespace ns3
+
diff -Naur ns-3.19/src/core/test/object-test-suite.cc ns-3.20/src/core/test/object-test-suite.cc
--- ns-3.19/src/core/test/object-test-suite.cc	2014-06-17 10:34:00.639635109 -0700
+++ ns-3.20/src/core/test/object-test-suite.cc	2014-06-17 10:33:13.973995344 -0700
@@ -89,18 +89,14 @@
   }
 };
 
-NS_OBJECT_ENSURE_REGISTERED (BaseA)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (DerivedA)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (BaseB)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (DerivedB)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BaseA);
+NS_OBJECT_ENSURE_REGISTERED (DerivedA);
+NS_OBJECT_ENSURE_REGISTERED (BaseB);
+NS_OBJECT_ENSURE_REGISTERED (DerivedB);
 
 } // namespace anonymous
 
-namespace ns3 {
+using namespace ns3;
 
 // ===========================================================================
 // Test case to make sure that we can make Objects using CreateObject.
@@ -429,5 +425,3 @@
 }
 
 static ObjectTestSuite objectTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/core/test/ptr-test-suite.cc ns-3.20/src/core/test/ptr-test-suite.cc
--- ns-3.19/src/core/test/ptr-test-suite.cc	2014-06-17 10:34:00.261638028 -0700
+++ ns-3.20/src/core/test/ptr-test-suite.cc	2014-06-17 10:33:13.974995337 -0700
@@ -25,18 +25,18 @@
 
 class PtrTestCase;
 
-class Base
+class PtrTestBase
 {
 public:
-  Base ();
-  virtual ~Base ();
+  PtrTestBase ();
+  virtual ~PtrTestBase ();
   void Ref (void) const;
   void Unref (void) const;
 private:
   mutable uint32_t m_count;
 };
 
-class NoCount : public Base
+class NoCount : public PtrTestBase
 {
 public:
   NoCount (PtrTestCase *test);
@@ -60,20 +60,20 @@
 };
 
 
-Base::Base ()
+PtrTestBase::PtrTestBase ()
   : m_count (1)
 {
 }
-Base::~Base ()
+PtrTestBase::~PtrTestBase ()
 {
 }
 void
-Base::Ref (void) const
+PtrTestBase::Ref (void) const
 {
   m_count++;
 }
 void
-Base::Unref (void) const
+PtrTestBase::Unref (void) const
 {
   m_count--;
   if (m_count == 0)
@@ -256,7 +256,7 @@
   NS_TEST_EXPECT_MSG_EQ (m_nDestroyed, 1, "013");
 
   {
-    Ptr<Base> p0 = Create<NoCount> (this);
+    Ptr<PtrTestBase> p0 = Create<NoCount> (this);
     Ptr<NoCount> p1 = Create<NoCount> (this);
     NS_TEST_EXPECT_MSG_EQ ((p0 == p1), false, "operator == failed");
     NS_TEST_EXPECT_MSG_EQ ((p0 != p1), true, "operator != failed");
diff -Naur ns-3.19/src/core/test/random-variable-stream-test-suite.cc ns-3.20/src/core/test/random-variable-stream-test-suite.cc
--- ns-3.19/src/core/test/random-variable-stream-test-suite.cc	2014-06-17 10:34:00.263638013 -0700
+++ ns-3.20/src/core/test/random-variable-stream-test-suite.cc	2014-06-17 10:33:13.975995329 -0700
@@ -288,7 +288,7 @@
 {
 public:
   static const uint32_t N_MEASUREMENTS = 1000000;
-  static const double TOLERANCE = 1e-8;
+  static const double TOLERANCE;
 
   RandomVariableStreamConstantTestCase ();
   virtual ~RandomVariableStreamConstantTestCase ();
@@ -297,6 +297,8 @@
   virtual void DoRun (void);
 };
 
+const double RandomVariableStreamConstantTestCase::TOLERANCE = 1e-8;
+
 RandomVariableStreamConstantTestCase::RandomVariableStreamConstantTestCase ()
   : TestCase ("Constant Random Variable Stream Generator")
 {
@@ -336,7 +338,7 @@
 class RandomVariableStreamSequentialTestCase : public TestCase
 {
 public:
-  static const double TOLERANCE = 1e-8;
+  static const double TOLERANCE;
 
   RandomVariableStreamSequentialTestCase ();
   virtual ~RandomVariableStreamSequentialTestCase ();
@@ -345,6 +347,8 @@
   virtual void DoRun (void);
 };
 
+const double RandomVariableStreamSequentialTestCase::TOLERANCE = 1e-8;
+
 RandomVariableStreamSequentialTestCase::RandomVariableStreamSequentialTestCase ()
   : TestCase ("Sequential Random Variable Stream Generator")
 {
@@ -2590,7 +2594,7 @@
 class RandomVariableStreamDeterministicTestCase : public TestCase
 {
 public:
-  static const double TOLERANCE = 1e-8;
+  static const double TOLERANCE;
 
   RandomVariableStreamDeterministicTestCase ();
   virtual ~RandomVariableStreamDeterministicTestCase ();
@@ -2599,6 +2603,8 @@
   virtual void DoRun (void);
 };
 
+const double RandomVariableStreamDeterministicTestCase::TOLERANCE = 1e-8;
+
 RandomVariableStreamDeterministicTestCase::RandomVariableStreamDeterministicTestCase ()
   : TestCase ("Deterministic Random Variable Stream Generator")
 {
diff -Naur ns-3.19/src/core/test/simulator-test-suite.cc ns-3.20/src/core/test/simulator-test-suite.cc
--- ns-3.19/src/core/test/simulator-test-suite.cc	2014-06-17 10:34:00.265637997 -0700
+++ ns-3.20/src/core/test/simulator-test-suite.cc	2014-06-17 10:33:13.976995321 -0700
@@ -31,11 +31,11 @@
 public:
   SimulatorEventsTestCase (ObjectFactory schedulerFactory);
   virtual void DoRun (void);
-  void A (int a);
-  void B (int b);
-  void C (int c);
-  void D (int d);
-  void foo0 (void);
+  void EventA (int a);
+  void EventB (int b);
+  void EventC (int c);
+  void EventD (int d);
+  void Eventfoo0 (void);
   uint64_t NowUs (void);
   void destroy (void);
   bool m_b;
@@ -62,13 +62,13 @@
 }
 
 void
-SimulatorEventsTestCase::A (int a)
+SimulatorEventsTestCase::EventA (int a)
 {
   m_a = false;
 }
 
 void
-SimulatorEventsTestCase::B (int b)
+SimulatorEventsTestCase::EventB (int b)
 {
   if (b != 2 || NowUs () != 11) 
     {
@@ -79,17 +79,17 @@
       m_b = true;
     }
   Simulator::Remove (m_idC);
-  Simulator::Schedule (MicroSeconds (10), &SimulatorEventsTestCase::D, this, 4);
+  Simulator::Schedule (MicroSeconds (10), &SimulatorEventsTestCase::EventD, this, 4);
 }
 
 void
-SimulatorEventsTestCase::C (int c)
+SimulatorEventsTestCase::EventC (int c)
 {
   m_c = false;
 }
 
 void
-SimulatorEventsTestCase::D (int d)
+SimulatorEventsTestCase::EventD (int d)
 {
   if (d != 4 || NowUs () != (11+10)) 
     {
@@ -102,7 +102,7 @@
 }
 
 void
-SimulatorEventsTestCase::foo0 (void)
+SimulatorEventsTestCase::Eventfoo0 (void)
 {}
 
 void
@@ -123,9 +123,9 @@
 
   Simulator::SetScheduler (m_schedulerFactory);
 
-  EventId a = Simulator::Schedule (MicroSeconds (10), &SimulatorEventsTestCase::A, this, 1);
-  Simulator::Schedule (MicroSeconds (11), &SimulatorEventsTestCase::B, this, 2);
-  m_idC = Simulator::Schedule (MicroSeconds (12), &SimulatorEventsTestCase::C, this, 3);
+  EventId a = Simulator::Schedule (MicroSeconds (10), &SimulatorEventsTestCase::EventA, this, 1);
+  Simulator::Schedule (MicroSeconds (11), &SimulatorEventsTestCase::EventB, this, 2);
+  m_idC = Simulator::Schedule (MicroSeconds (12), &SimulatorEventsTestCase::EventC, this, 3);
 
   NS_TEST_EXPECT_MSG_EQ (!m_idC.IsExpired (), true, "");
   NS_TEST_EXPECT_MSG_EQ (!a.IsExpired (), true, "");
@@ -137,7 +137,7 @@
   NS_TEST_EXPECT_MSG_EQ (m_c, true, "Event C did not run ?");
   NS_TEST_EXPECT_MSG_EQ (m_d, true, "Event D did not run ?");
 
-  EventId anId = Simulator::ScheduleNow (&SimulatorEventsTestCase::foo0, this);
+  EventId anId = Simulator::ScheduleNow (&SimulatorEventsTestCase::Eventfoo0, this);
   EventId anotherId = anId;
   NS_TEST_EXPECT_MSG_EQ (!(anId.IsExpired () || anotherId.IsExpired ()), true, "Event should not have expired yet.");
 
diff -Naur ns-3.19/src/core/test/threaded-test-suite.cc ns-3.20/src/core/test/threaded-test-suite.cc
--- ns-3.19/src/core/test/threaded-test-suite.cc	2014-06-17 10:34:00.266637989 -0700
+++ ns-3.20/src/core/test/threaded-test-suite.cc	2014-06-17 10:33:13.976995321 -0700
@@ -39,10 +39,10 @@
 {
 public:
   ThreadedSimulatorEventsTestCase (ObjectFactory schedulerFactory, const std::string &simulatorType, unsigned int threads);
-  void A (int a);
-  void B (int b);
-  void C (int c);
-  void D (int d);
+  void EventA (int a);
+  void EventB (int b);
+  void EventC (int c);
+  void EventD (int d);
   void DoNothing (unsigned int threadno);
   static void SchedulingThread (std::pair<ThreadedSimulatorEventsTestCase *, unsigned int> context);
   void End (void);
@@ -113,7 +113,7 @@
   m_threadWaiting[threadno] = false;
 }
 void
-ThreadedSimulatorEventsTestCase::A (int a)
+ThreadedSimulatorEventsTestCase::EventA (int a)
 {
   if (m_a != m_b || m_a != m_c || m_a != m_d)
     {
@@ -122,11 +122,11 @@
     };
   ++m_a;
   Simulator::Schedule (MicroSeconds (10),
-                       &ThreadedSimulatorEventsTestCase::B, this, a+1);
+                       &ThreadedSimulatorEventsTestCase::EventB, this, a+1);
 }
 
 void
-ThreadedSimulatorEventsTestCase::B (int b)
+ThreadedSimulatorEventsTestCase::EventB (int b)
 {
   if (m_a != (m_b+1) || m_a != (m_c+1) || m_a != (m_d+1))
     {
@@ -135,11 +135,11 @@
     };
   ++m_b;
   Simulator::Schedule (MicroSeconds (10),
-                       &ThreadedSimulatorEventsTestCase::C, this, b+1);
+                       &ThreadedSimulatorEventsTestCase::EventC, this, b+1);
 }
 
 void
-ThreadedSimulatorEventsTestCase::C (int c)
+ThreadedSimulatorEventsTestCase::EventC (int c)
 {
   if (m_a != m_b || m_a != (m_c+1) || m_a != (m_d+1))
     {
@@ -148,11 +148,11 @@
     };
   ++m_c;
   Simulator::Schedule (MicroSeconds (10),
-                       &ThreadedSimulatorEventsTestCase::D, this, c+1);
+                       &ThreadedSimulatorEventsTestCase::EventD, this, c+1);
 }
 
 void
-ThreadedSimulatorEventsTestCase::D (int d)
+ThreadedSimulatorEventsTestCase::EventD (int d)
 {
   if (m_a != m_b || m_a != m_c || m_a != (m_d+1))
     {
@@ -167,7 +167,7 @@
   else
     {
       Simulator::Schedule (MicroSeconds (10),
-                           &ThreadedSimulatorEventsTestCase::A, this, d+1);
+                           &ThreadedSimulatorEventsTestCase::EventA, this, d+1);
     }
 }
 
@@ -207,7 +207,7 @@
   m_stop = false;
   Simulator::SetScheduler (m_schedulerFactory);
 
-  Simulator::Schedule (MicroSeconds (10), &ThreadedSimulatorEventsTestCase::A, this, 1);
+  Simulator::Schedule (MicroSeconds (10), &ThreadedSimulatorEventsTestCase::EventA, this, 1);
   Simulator::Schedule (Seconds (1), &ThreadedSimulatorEventsTestCase::End, this);
 
   
diff -Naur ns-3.19/src/core/test/time-test-suite.cc ns-3.20/src/core/test/time-test-suite.cc
--- ns-3.19/src/core/test/time-test-suite.cc	2014-06-17 10:34:00.267637982 -0700
+++ ns-3.20/src/core/test/time-test-suite.cc	2014-06-17 10:33:13.977995313 -0700
@@ -19,7 +19,14 @@
  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
  * TimeStep support by Emmanuelle Laprise <emmanuelle.laprise@bluekazoo.ca>
  */
+
+#include <iomanip>
+#include <iostream>
+#include <string>
+#include <sstream>
+
 #include "ns3/nstime.h"
+#include "ns3/int64x64.h"
 #include "ns3/test.h"
 
 using namespace ns3;
@@ -150,13 +157,90 @@
 {
 }
 
+
+class TimeIntputOutputTestCase : public TestCase
+{
+public:
+  TimeIntputOutputTestCase ();
+private:
+  virtual void DoRun (void);
+  void Check (const std::string & str);
+};
+
+TimeIntputOutputTestCase::TimeIntputOutputTestCase ()
+  : TestCase ("Input,output from,to strings")
+{
+}
+
+void
+TimeIntputOutputTestCase::Check (const std::string & str)
+{
+  std::stringstream ss (str);
+  Time time;
+  ss >> time;
+  ss << time;
+  bool pass = (str == ss.str ()); 
+
+  std::cout << GetParent ()->GetName () << " InputOutput: "
+            << (pass ? "pass " : "FAIL ")
+            << "\"" << str << "\"";
+  if (!pass)
+    {
+      std::cout << ", got " << ss.str ();
+    }
+  std::cout << std::endl;
+}
+
+void
+TimeIntputOutputTestCase::DoRun (void)
+{
+  std::cout << std::endl;
+  std::cout << GetParent ()->GetName () << " InputOutput: " << GetName ()
+	    << std::endl;
+  
+  Check ("2ns");
+  Check ("+3.1us");
+  Check ("-4.2ms");
+  Check ("5.3s");
+  Check ("6.4min");
+  Check ("7.5h");
+  Check ("8.6d");
+  Check ("10.8y");
+
+  Time t (3.141592654e9);  // Pi seconds
+  
+  std::cout << GetParent ()->GetName () << " InputOutput: "
+            << "example: raw:   " << t
+            << std::endl;
+  
+  std::cout << GetParent ()->GetName () << " InputOutput: "
+            << std::fixed << std::setprecision (9)
+            << "example: in s:  " << t.As (Time::S)
+            << std::endl;
+    
+  std::cout << GetParent ()->GetName () << " InputOutput: "
+            << std::setprecision (6)
+            << "example: in ms: " << t.As (Time::MS)
+            << std::endl;
+
+  std::cout << GetParent ()->GetName () << " InputOutput: "
+            << "example: Get ns: " << t.GetNanoSeconds ()
+            << std::endl;
+
+  std::cout << std::endl;
+}
+    
 static class TimeTestSuite : public TestSuite
 {
 public:
   TimeTestSuite ()
     : TestSuite ("time", UNIT)
   {
-    AddTestCase (new TimeSimpleTestCase (), TestCase::QUICK);
     AddTestCase (new TimesWithSignsTestCase (), TestCase::QUICK);
+    AddTestCase (new TimeIntputOutputTestCase (), TestCase::QUICK);
+    // This should be last, since it changes the resolution
+    AddTestCase (new TimeSimpleTestCase (), TestCase::QUICK);
   }
 } g_timeTestSuite;
+
+
diff -Naur ns-3.19/src/core/test/type-id-test-suite.cc ns-3.20/src/core/test/type-id-test-suite.cc
--- ns-3.19/src/core/test/type-id-test-suite.cc	2014-06-17 10:34:00.268637974 -0700
+++ ns-3.20/src/core/test/type-id-test-suite.cc	2014-06-17 10:33:13.978995306 -0700
@@ -28,7 +28,7 @@
 
 using namespace std;
 
-namespace ns3 {
+using namespace ns3;
 
 
 const std::string suite("type-id: ");
@@ -315,7 +315,4 @@
   AddTestCase (new LookupTimeTestCase, QUICK);
 }
 
-static TypeIdPerformanceSuite g_TypeIdPerformanceSuite;  
-  
-
-}  // namespace ns3
+static TypeIdPerformanceSuite g_TypeIdPerformanceSuite;
diff -Naur ns-3.19/src/core/waf ns-3.20/src/core/waf
--- ns-3.19/src/core/waf	2014-06-17 10:34:00.269637966 -0700
+++ ns-3.20/src/core/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/core/wscript ns-3.20/src/core/wscript
--- ns-3.19/src/core/wscript	2014-06-17 10:34:00.270637958 -0700
+++ ns-3.20/src/core/wscript	2014-06-17 10:33:13.980995290 -0700
@@ -4,14 +4,38 @@
 from waflib import Options
 import wutils
 
+int64x64 = {
+    # implementation name: [define, env, highprec]
+    'default': ['INT64X64_USE_128',    'INT64X64_USE_128',    '128-bit integer'], 
+    'int128':  ['INT64X64_USE_128',    'INT64X64_USE_128',    '128-bit integer'], 
+    'cairo':   ['INT64X64_USE_CAIRO',  'INT64X64_USE_CAIRO',  'cairo 128-bit integer'],
+    'double':  ['INT64X64_USE_DOUBLE', 'INT64X64_USE_DOUBLE', 'long double'],
+    }
+
+default_int64x64 = 'default'
+
 def options(opt):
-    opt.add_option('--int64x64-as-double',
-                   help=('Whether to use a double floating point'
-                         ' type for int64x64 values'
-                         ' WARNING: this option only has effect '
-                         'with the configure command.'),
-                   action="store_true", default=False,
-                   dest='int64x64_as_double')
+    assert default_int64x64 in int64x64
+    opt.add_option('--int64x64',
+                   action='store',
+                   default=default_int64x64,
+                   help=("Force the choice of int64x64_t implementation "
+                         "(normally only for debugging).  "
+                         "The supported implementations use int128_t, "
+                         "cairo_int128, or long double.  "
+                         "The int128_t implementation (the preferred option) "
+                         "requires compiler support.  "
+                         "The cairo implementation fallback provides exactly "
+                         "the same numerical results, but possibly at lower "
+                         "execution speed.  The long double implementation "
+                         "may not provide the same numerical results because "
+                         "the implementation-defined numerical precision may "
+                         "be less than the other implementations.  "
+                         "[Allowed Values: %s]"
+                         % ", ".join([repr(p) for p in int64x64.keys()])),
+                   choices=int64x64.keys(),
+                   dest='int64x64_impl')
+                   
     opt.add_option('--disable-pthread',
                    help=('Whether to enable the use of POSIX threads'),
                    action="store_true", default=False,
@@ -20,23 +44,24 @@
 
 
 def configure(conf):
-    a = conf.check_nonfatal(type_name='uint128_t', define_name='HAVE_UINT128_T')
-    b = conf.check_nonfatal(type_name='__uint128_t', define_name='HAVE___UINT128_T')
-
-    if Options.options.int64x64_as_double:
-        conf.define('INT64X64_USE_DOUBLE', 1)
-        conf.env['INT64X64_USE_DOUBLE'] = 1
-        highprec = 'long double'
-    elif a or b:
-        conf.define('INT64X64_USE_128', 1)
-        conf.env['INT64X64_USE_128'] = 1
-        highprec = '128-bit integer'
-    else:
-        conf.define('INT64X64_USE_CAIRO', 1)
-        conf.env['INT64X64_USE_CAIRO'] = 1
-        highprec = 'cairo 128-bit integer'
-
-    conf.msg('Checking high precision time implementation', highprec)
+    int64x64_impl = Options.options.int64x64_impl
+    if int64x64_impl == 'default' or int64x64_impl == 'int128':
+        have_uint128  = conf.check_nonfatal(type_name='uint128_t',
+                                            define_name='HAVE_UINT128_T')
+        have__uint128 = conf.check_nonfatal(type_name='__uint128_t',
+                                            define_name='HAVE___UINT128_T')
+        if have_uint128 or have__uint128:
+            int64x64_impl = 'int128'
+        else:
+            int64x64_impl = 'cairo'
+        
+    def_flag, env_flag, highprec = int64x64[int64x64_impl]
+    # Add a tag confirming default choice
+    if Options.options.int64x64_impl == 'default':
+        highprec += ' (default)'
+    conf.define(def_flag, 1)
+    conf.env[env_flag] = 1
+    conf.msg('Checking high precision implementation', highprec)
 
     conf.check_nonfatal(header_name='stdint.h', define_name='HAVE_STDINT_H')
     conf.check_nonfatal(header_name='inttypes.h', define_name='HAVE_INTTYPES_H')
@@ -223,6 +248,8 @@
         'model/ptr.h',
         'model/object.h',
         'model/log.h',
+        'model/log-macros-enabled.h',
+        'model/log-macros-disabled.h',
         'model/assert.h',
         'model/breakpoint.h',
         'model/fatal-error.h',
@@ -271,6 +298,7 @@
         'model/hash-murmur3.h',
         'model/hash-fnv.h',
         'model/hash.h',
+        'model/valgrind.h',
         ]
 
     if sys.platform == 'win32':
@@ -330,7 +358,10 @@
     if env['ENABLE_GSL']:
         core.use.extend(['GSL', 'GSLCBLAS', 'M'])
         core_test.use.extend(['GSL', 'GSLCBLAS', 'M'])
-        core_test.source.extend(['test/rng-test-suite.cc'])
+        core_test.source.extend([
+                'test/rng-test-suite.cc',
+                'test/random-variable-stream-test-suite.cc'
+                ])
 
     if (bld.env['ENABLE_EXAMPLES']):
         bld.recurse('examples')
diff -Naur ns-3.19/src/csma/bindings/modulegen__gcc_ILP32.py ns-3.20/src/csma/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/csma/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.289637812 -0700
+++ ns-3.20/src/csma/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.621998061 -0700
@@ -109,7 +109,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -120,6 +120,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -132,6 +134,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## csma-helper.h (module 'csma'): ns3::CsmaHelper [class]
@@ -296,7 +300,7 @@
     module.add_class('CsmaNetDevice', parent=root_module['ns3::NetDevice'])
     ## csma-net-device.h (module 'csma'): ns3::CsmaNetDevice::EncapsulationMode [enumeration]
     module.add_enum('EncapsulationMode', ['ILLEGAL', 'DIX', 'LLC'], outer_class=root_module['ns3::CsmaNetDevice'])
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -319,12 +323,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -387,6 +391,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -878,6 +883,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -890,6 +899,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2469,6 +2482,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2666,62 +2687,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2730,6 +2707,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2770,6 +2749,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3339,13 +3320,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3372,6 +3355,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4256,10 +4244,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -5173,10 +5161,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/csma/bindings/modulegen__gcc_LP64.py ns-3.20/src/csma/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/csma/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.294637773 -0700
+++ ns-3.20/src/csma/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.625998030 -0700
@@ -109,7 +109,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -120,6 +120,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -132,6 +134,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## csma-helper.h (module 'csma'): ns3::CsmaHelper [class]
@@ -296,7 +300,7 @@
     module.add_class('CsmaNetDevice', parent=root_module['ns3::NetDevice'])
     ## csma-net-device.h (module 'csma'): ns3::CsmaNetDevice::EncapsulationMode [enumeration]
     module.add_enum('EncapsulationMode', ['ILLEGAL', 'DIX', 'LLC'], outer_class=root_module['ns3::CsmaNetDevice'])
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -319,12 +323,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -387,6 +391,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -878,6 +883,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -890,6 +899,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2469,6 +2482,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2666,62 +2687,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2730,6 +2707,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2770,6 +2749,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3339,13 +3320,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3372,6 +3355,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4256,10 +4244,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -5173,10 +5161,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/csma/examples/waf ns-3.20/src/csma/examples/waf
--- ns-3.19/src/csma/examples/waf	2014-06-17 10:34:00.298637743 -0700
+++ ns-3.20/src/csma/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/csma/model/csma-channel.cc ns-3.20/src/csma/model/csma-channel.cc
--- ns-3.19/src/csma/model/csma-channel.cc	2014-06-17 10:34:00.300637727 -0700
+++ ns-3.20/src/csma/model/csma-channel.cc	2014-06-17 10:33:13.632997976 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (CsmaChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CsmaChannel);
 
 TypeId
 CsmaChannel::GetTypeId (void)
diff -Naur ns-3.19/src/csma/model/csma-net-device.cc ns-3.20/src/csma/model/csma-net-device.cc
--- ns-3.19/src/csma/model/csma-net-device.cc	2014-06-17 10:34:00.301637719 -0700
+++ ns-3.20/src/csma/model/csma-net-device.cc	2014-06-17 10:33:13.633997968 -0700
@@ -37,8 +37,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (CsmaNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CsmaNetDevice);
 
 TypeId
 CsmaNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/csma/waf ns-3.20/src/csma/waf
--- ns-3.19/src/csma/waf	2014-06-17 10:34:00.303637704 -0700
+++ ns-3.20/src/csma/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/csma-layout/bindings/modulegen__gcc_ILP32.py ns-3.20/src/csma-layout/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/csma-layout/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.277637905 -0700
+++ ns-3.20/src/csma-layout/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.985995252 -0700
@@ -72,34 +72,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -165,7 +137,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
@@ -180,14 +152,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -200,6 +166,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## csma-helper.h (module 'csma'): ns3::CsmaHelper [class]
@@ -300,10 +268,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -330,12 +294,10 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
     module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
@@ -368,8 +330,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -392,12 +354,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -440,13 +402,6 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
@@ -479,8 +434,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -529,7 +483,6 @@
     register_Ns3DataRateValue_methods(root_module, root_module['ns3::DataRateValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -542,7 +495,6 @@
     register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
     register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
@@ -1050,6 +1002,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1062,6 +1018,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1552,55 +1512,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2240,6 +2151,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -3204,88 +3120,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -3485,62 +3325,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3549,6 +3345,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3589,6 +3387,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4981,13 +4781,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -5014,6 +4816,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5567,63 +5374,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5946,6 +5696,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6299,6 +6054,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -6369,6 +6129,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -6433,151 +6198,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
@@ -6604,7 +6224,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -6739,6 +6359,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -6767,6 +6392,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7374,10 +7004,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/csma-layout/bindings/modulegen__gcc_LP64.py ns-3.20/src/csma-layout/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/csma-layout/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.282637866 -0700
+++ ns-3.20/src/csma-layout/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.614998115 -0700
@@ -72,34 +72,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -165,7 +137,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
@@ -180,14 +152,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -200,6 +166,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## csma-helper.h (module 'csma'): ns3::CsmaHelper [class]
@@ -300,10 +268,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -330,12 +294,10 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
     module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
@@ -368,8 +330,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -392,12 +354,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -440,13 +402,6 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
@@ -479,8 +434,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -529,7 +483,6 @@
     register_Ns3DataRateValue_methods(root_module, root_module['ns3::DataRateValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -542,7 +495,6 @@
     register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
     register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
@@ -1050,6 +1002,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1062,6 +1018,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1552,55 +1512,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2240,6 +2151,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -3204,88 +3120,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -3485,62 +3325,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3549,6 +3345,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3589,6 +3387,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4981,13 +4781,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -5014,6 +4816,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5567,63 +5374,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5946,6 +5696,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6299,6 +6054,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -6369,6 +6129,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -6433,151 +6198,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
@@ -6604,7 +6224,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -6739,6 +6359,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -6767,6 +6392,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7374,10 +7004,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/csma-layout/examples/waf ns-3.20/src/csma-layout/examples/waf
--- ns-3.19/src/csma-layout/examples/waf	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/src/csma-layout/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/csma-layout/waf ns-3.20/src/csma-layout/waf
--- ns-3.19/src/csma-layout/waf	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/csma-layout/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/dsdv/bindings/modulegen__gcc_ILP32.py ns-3.20/src/dsdv/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/dsdv/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.308637665 -0700
+++ ns-3.20/src/dsdv/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.639997922 -0700
@@ -100,12 +100,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -142,6 +136,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -162,6 +158,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## dsdv-helper.h (module 'dsdv'): ns3::DsdvHelper [class]
@@ -174,10 +172,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -276,10 +270,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -306,8 +296,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -346,7 +334,7 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -375,12 +363,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -417,7 +405,7 @@
     module.add_class('RoutingTable')
     ## dsdv-rtable.h (module 'dsdv'): ns3::dsdv::RoutingTableEntry [class]
     module.add_class('RoutingTableEntry')
-    module.add_container('std::map< ns3::Ipv4Address, ns3::dsdv::RoutingTableEntry >', ('ns3::Ipv4Address', 'ns3::dsdv::RoutingTableEntry'), container_type='map')
+    module.add_container('std::map< ns3::Ipv4Address, ns3::dsdv::RoutingTableEntry >', ('ns3::Ipv4Address', 'ns3::dsdv::RoutingTableEntry'), container_type=u'map')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -447,7 +435,6 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -464,6 +451,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -475,7 +463,6 @@
     register_Ns3DsdvHelper_methods(root_module, root_module['ns3::DsdvHelper'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -521,7 +508,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -534,7 +520,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -811,6 +796,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -823,6 +812,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1721,61 +1714,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2385,6 +2323,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2666,62 +2612,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2730,6 +2632,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2770,6 +2674,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3020,106 +2926,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4025,13 +3831,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4058,6 +3866,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4859,63 +4672,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5339,6 +5095,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -5672,151 +5433,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -6431,10 +6047,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/dsdv/bindings/modulegen__gcc_LP64.py ns-3.20/src/dsdv/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/dsdv/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/src/dsdv/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.644997883 -0700
@@ -100,12 +100,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -142,6 +136,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -162,6 +158,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## dsdv-helper.h (module 'dsdv'): ns3::DsdvHelper [class]
@@ -174,10 +172,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -276,10 +270,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -306,8 +296,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -346,7 +334,7 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -375,12 +363,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -417,7 +405,7 @@
     module.add_class('RoutingTable')
     ## dsdv-rtable.h (module 'dsdv'): ns3::dsdv::RoutingTableEntry [class]
     module.add_class('RoutingTableEntry')
-    module.add_container('std::map< ns3::Ipv4Address, ns3::dsdv::RoutingTableEntry >', ('ns3::Ipv4Address', 'ns3::dsdv::RoutingTableEntry'), container_type='map')
+    module.add_container('std::map< ns3::Ipv4Address, ns3::dsdv::RoutingTableEntry >', ('ns3::Ipv4Address', 'ns3::dsdv::RoutingTableEntry'), container_type=u'map')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -447,7 +435,6 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -464,6 +451,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -475,7 +463,6 @@
     register_Ns3DsdvHelper_methods(root_module, root_module['ns3::DsdvHelper'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -521,7 +508,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -534,7 +520,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -811,6 +796,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -823,6 +812,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1721,61 +1714,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2385,6 +2323,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2666,62 +2612,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2730,6 +2632,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2770,6 +2674,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3020,106 +2926,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4025,13 +3831,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4058,6 +3866,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4859,63 +4672,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5339,6 +5095,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -5672,151 +5433,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -6431,10 +6047,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/dsdv/model/dsdv-packet.cc ns-3.20/src/dsdv/model/dsdv-packet.cc
--- ns-3.19/src/dsdv/model/dsdv-packet.cc	2014-06-17 10:34:00.316637604 -0700
+++ ns-3.20/src/dsdv/model/dsdv-packet.cc	2014-06-17 10:33:13.647997860 -0700
@@ -34,8 +34,9 @@
 
 namespace ns3 {
 namespace dsdv {
-NS_OBJECT_ENSURE_REGISTERED (DsdvHeader)
-  ;
+
+NS_OBJECT_ENSURE_REGISTERED (DsdvHeader);
+    
 DsdvHeader::DsdvHeader (Ipv4Address dst, uint32_t hopCount, uint32_t dstSeqNo)
   : m_dst (dst),
     m_hopCount (hopCount),
diff -Naur ns-3.19/src/dsdv/model/dsdv-routing-protocol.cc ns-3.20/src/dsdv/model/dsdv-routing-protocol.cc
--- ns-3.19/src/dsdv/model/dsdv-routing-protocol.cc	2014-06-17 10:34:00.317637596 -0700
+++ ns-3.20/src/dsdv/model/dsdv-routing-protocol.cc	2014-06-17 10:33:13.649997845 -0700
@@ -44,8 +44,8 @@
 
 namespace ns3 {
 namespace dsdv {
-NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol)
-  ;
+  
+NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol);
 
 /// UDP Port for DSDV control traffic
 const uint32_t RoutingProtocol::DSDV_PORT = 269;
diff -Naur ns-3.19/src/dsdv/test/dsdv-testcase.cc ns-3.20/src/dsdv/test/dsdv-testcase.cc
--- ns-3.19/src/dsdv/test/dsdv-testcase.cc	2014-06-17 10:34:00.318637588 -0700
+++ ns-3.20/src/dsdv/test/dsdv-testcase.cc	2014-06-17 10:33:13.650997837 -0700
@@ -46,7 +46,8 @@
 #include "ns3/dsdv-packet.h"
 #include "ns3/dsdv-rtable.h"
 
-namespace ns3 {
+using namespace ns3;
+
 class DsdvHeaderTestCase : public TestCase
 {
 public:
@@ -192,4 +193,3 @@
     AddTestCase (new DsdvTableTestCase (), TestCase::QUICK);
   }
 } g_dsdvTestSuite;
-}
diff -Naur ns-3.19/src/dsr/bindings/modulegen__gcc_ILP32.py ns-3.20/src/dsr/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/dsr/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.327637518 -0700
+++ ns-3.20/src/dsr/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.659997768 -0700
@@ -164,6 +164,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -200,6 +202,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -448,25 +452,25 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## icmpv4-l4-protocol.h (module 'internet'): ns3::Icmpv4L4Protocol [class]
     module.add_class('Icmpv4L4Protocol', import_from_module='ns.internet', parent=root_module['ns3::IpL4Protocol'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -501,12 +505,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -635,16 +639,16 @@
     module.add_class('DsrOptionRreq', parent=root_module['ns3::dsr::DsrOptions'])
     ## dsr-options.h (module 'dsr'): ns3::dsr::DsrOptionSR [class]
     module.add_class('DsrOptionSR', parent=root_module['ns3::dsr::DsrOptions'])
-    module.add_container('std::vector< ns3::dsr::DsrNetworkQueueEntry >', 'ns3::dsr::DsrNetworkQueueEntry', container_type='vector')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
-    module.add_container('std::vector< ns3::dsr::ErrorBuffEntry >', 'ns3::dsr::ErrorBuffEntry', container_type='vector')
-    module.add_container('std::vector< ns3::dsr::RouteCache::Neighbor >', 'ns3::dsr::RouteCache::Neighbor', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::ArpCache > >', 'ns3::Ptr< ns3::ArpCache >', container_type='vector')
-    module.add_container('std::list< std::vector< ns3::Ipv4Address > >', 'std::vector< ns3::Ipv4Address >', container_type='list')
-    module.add_container('std::list< ns3::dsr::RouteCacheEntry >', 'ns3::dsr::RouteCacheEntry', container_type='list')
-    module.add_container('std::map< ns3::Ipv4Address, ns3::dsr::RreqTableEntry >', ('ns3::Ipv4Address', 'ns3::dsr::RreqTableEntry'), container_type='map')
-    module.add_container('std::vector< ns3::dsr::SendBuffEntry >', 'ns3::dsr::SendBuffEntry', container_type='vector')
+    module.add_container('std::vector< ns3::dsr::DsrNetworkQueueEntry >', 'ns3::dsr::DsrNetworkQueueEntry', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
+    module.add_container('std::vector< ns3::dsr::ErrorBuffEntry >', 'ns3::dsr::ErrorBuffEntry', container_type=u'vector')
+    module.add_container('std::vector< ns3::dsr::RouteCache::Neighbor >', 'ns3::dsr::RouteCache::Neighbor', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::ArpCache > >', 'ns3::Ptr< ns3::ArpCache >', container_type=u'vector')
+    module.add_container('std::list< std::vector< ns3::Ipv4Address > >', 'std::vector< ns3::Ipv4Address >', container_type=u'list')
+    module.add_container('std::list< ns3::dsr::RouteCacheEntry >', 'ns3::dsr::RouteCacheEntry', container_type=u'list')
+    module.add_container('std::map< ns3::Ipv4Address, ns3::dsr::RreqTableEntry >', ('ns3::Ipv4Address', 'ns3::dsr::RreqTableEntry'), container_type=u'map')
+    module.add_container('std::vector< ns3::dsr::SendBuffEntry >', 'ns3::dsr::SendBuffEntry', container_type=u'vector')
 
 def register_types_ns3_internal(module):
     root_module = module.get_root()
@@ -699,6 +703,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -1123,6 +1128,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1135,6 +1144,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2080,6 +2093,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -2809,6 +2827,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -3328,61 +3354,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3390,6 +3372,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3430,6 +3414,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4925,12 +4911,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4956,6 +4944,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6516,6 +6509,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8462,6 +8460,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -9594,10 +9597,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -10485,6 +10488,14 @@
     cls.add_method('Enqueue', 
                    'bool', 
                    [param('ns3::dsr::DsrNetworkQueueEntry &', 'entry')])
+    ## dsr-network-queue.h (module 'dsr'): bool ns3::dsr::DsrNetworkQueue::Find(ns3::Ipv4Address nextHop) [member function]
+    cls.add_method('Find', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'nextHop')])
+    ## dsr-network-queue.h (module 'dsr'): bool ns3::dsr::DsrNetworkQueue::FindPacketWithNexthop(ns3::Ipv4Address nextHop, ns3::dsr::DsrNetworkQueueEntry & entry) [member function]
+    cls.add_method('FindPacketWithNexthop', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('ns3::dsr::DsrNetworkQueueEntry &', 'entry')])
     ## dsr-network-queue.h (module 'dsr'): void ns3::dsr::DsrNetworkQueue::Flush() [member function]
     cls.add_method('Flush', 
                    'void', 
@@ -11373,6 +11384,10 @@
     cls.add_method('CancelNetworkPacketTimer', 
                    'void', 
                    [param('ns3::dsr::MaintainBuffEntry &', 'mb')])
+    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::CancelPacketAllTimer(ns3::dsr::MaintainBuffEntry & mb) [member function]
+    cls.add_method('CancelPacketAllTimer', 
+                   'void', 
+                   [param('ns3::dsr::MaintainBuffEntry &', 'mb')])
     ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::CancelPacketTimerNextHop(ns3::Ipv4Address nextHop, uint8_t protocol) [member function]
     cls.add_method('CancelPacketTimerNextHop', 
                    'void', 
@@ -11631,10 +11646,10 @@
     cls.add_method('SendRequest', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source')])
-    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SendUnreachError(ns3::Ipv4Address errorHop, ns3::Ipv4Address destination, ns3::Ipv4Address originalDst, uint8_t salvage, uint8_t protocol) [member function]
+    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SendUnreachError(ns3::Ipv4Address unreachNode, ns3::Ipv4Address destination, ns3::Ipv4Address originalDst, uint8_t salvage, uint8_t protocol) [member function]
     cls.add_method('SendUnreachError', 
                    'void', 
-                   [param('ns3::Ipv4Address', 'errorHop'), param('ns3::Ipv4Address', 'destination'), param('ns3::Ipv4Address', 'originalDst'), param('uint8_t', 'salvage'), param('uint8_t', 'protocol')])
+                   [param('ns3::Ipv4Address', 'unreachNode'), param('ns3::Ipv4Address', 'destination'), param('ns3::Ipv4Address', 'originalDst'), param('uint8_t', 'salvage'), param('uint8_t', 'protocol')])
     ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SetDownTarget(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr<ns3::Ipv4Route>, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetDownTarget', 
                    'void', 
diff -Naur ns-3.19/src/dsr/bindings/modulegen__gcc_LP64.py ns-3.20/src/dsr/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/dsr/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.335637457 -0700
+++ ns-3.20/src/dsr/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.666997713 -0700
@@ -164,6 +164,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -200,6 +202,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -448,25 +452,25 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## icmpv4-l4-protocol.h (module 'internet'): ns3::Icmpv4L4Protocol [class]
     module.add_class('Icmpv4L4Protocol', import_from_module='ns.internet', parent=root_module['ns3::IpL4Protocol'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -501,12 +505,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -635,16 +639,16 @@
     module.add_class('DsrOptionRreq', parent=root_module['ns3::dsr::DsrOptions'])
     ## dsr-options.h (module 'dsr'): ns3::dsr::DsrOptionSR [class]
     module.add_class('DsrOptionSR', parent=root_module['ns3::dsr::DsrOptions'])
-    module.add_container('std::vector< ns3::dsr::DsrNetworkQueueEntry >', 'ns3::dsr::DsrNetworkQueueEntry', container_type='vector')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
-    module.add_container('std::vector< ns3::dsr::ErrorBuffEntry >', 'ns3::dsr::ErrorBuffEntry', container_type='vector')
-    module.add_container('std::vector< ns3::dsr::RouteCache::Neighbor >', 'ns3::dsr::RouteCache::Neighbor', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::ArpCache > >', 'ns3::Ptr< ns3::ArpCache >', container_type='vector')
-    module.add_container('std::list< std::vector< ns3::Ipv4Address > >', 'std::vector< ns3::Ipv4Address >', container_type='list')
-    module.add_container('std::list< ns3::dsr::RouteCacheEntry >', 'ns3::dsr::RouteCacheEntry', container_type='list')
-    module.add_container('std::map< ns3::Ipv4Address, ns3::dsr::RreqTableEntry >', ('ns3::Ipv4Address', 'ns3::dsr::RreqTableEntry'), container_type='map')
-    module.add_container('std::vector< ns3::dsr::SendBuffEntry >', 'ns3::dsr::SendBuffEntry', container_type='vector')
+    module.add_container('std::vector< ns3::dsr::DsrNetworkQueueEntry >', 'ns3::dsr::DsrNetworkQueueEntry', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
+    module.add_container('std::vector< ns3::dsr::ErrorBuffEntry >', 'ns3::dsr::ErrorBuffEntry', container_type=u'vector')
+    module.add_container('std::vector< ns3::dsr::RouteCache::Neighbor >', 'ns3::dsr::RouteCache::Neighbor', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::ArpCache > >', 'ns3::Ptr< ns3::ArpCache >', container_type=u'vector')
+    module.add_container('std::list< std::vector< ns3::Ipv4Address > >', 'std::vector< ns3::Ipv4Address >', container_type=u'list')
+    module.add_container('std::list< ns3::dsr::RouteCacheEntry >', 'ns3::dsr::RouteCacheEntry', container_type=u'list')
+    module.add_container('std::map< ns3::Ipv4Address, ns3::dsr::RreqTableEntry >', ('ns3::Ipv4Address', 'ns3::dsr::RreqTableEntry'), container_type=u'map')
+    module.add_container('std::vector< ns3::dsr::SendBuffEntry >', 'ns3::dsr::SendBuffEntry', container_type=u'vector')
 
 def register_types_ns3_internal(module):
     root_module = module.get_root()
@@ -699,6 +703,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -1123,6 +1128,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1135,6 +1144,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2080,6 +2093,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -2809,6 +2827,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -3328,61 +3354,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3390,6 +3372,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3430,6 +3414,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4925,12 +4911,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4956,6 +4944,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6516,6 +6509,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8462,6 +8460,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -9594,10 +9597,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -10485,6 +10488,14 @@
     cls.add_method('Enqueue', 
                    'bool', 
                    [param('ns3::dsr::DsrNetworkQueueEntry &', 'entry')])
+    ## dsr-network-queue.h (module 'dsr'): bool ns3::dsr::DsrNetworkQueue::Find(ns3::Ipv4Address nextHop) [member function]
+    cls.add_method('Find', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'nextHop')])
+    ## dsr-network-queue.h (module 'dsr'): bool ns3::dsr::DsrNetworkQueue::FindPacketWithNexthop(ns3::Ipv4Address nextHop, ns3::dsr::DsrNetworkQueueEntry & entry) [member function]
+    cls.add_method('FindPacketWithNexthop', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('ns3::dsr::DsrNetworkQueueEntry &', 'entry')])
     ## dsr-network-queue.h (module 'dsr'): void ns3::dsr::DsrNetworkQueue::Flush() [member function]
     cls.add_method('Flush', 
                    'void', 
@@ -11373,6 +11384,10 @@
     cls.add_method('CancelNetworkPacketTimer', 
                    'void', 
                    [param('ns3::dsr::MaintainBuffEntry &', 'mb')])
+    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::CancelPacketAllTimer(ns3::dsr::MaintainBuffEntry & mb) [member function]
+    cls.add_method('CancelPacketAllTimer', 
+                   'void', 
+                   [param('ns3::dsr::MaintainBuffEntry &', 'mb')])
     ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::CancelPacketTimerNextHop(ns3::Ipv4Address nextHop, uint8_t protocol) [member function]
     cls.add_method('CancelPacketTimerNextHop', 
                    'void', 
@@ -11631,10 +11646,10 @@
     cls.add_method('SendRequest', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source')])
-    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SendUnreachError(ns3::Ipv4Address errorHop, ns3::Ipv4Address destination, ns3::Ipv4Address originalDst, uint8_t salvage, uint8_t protocol) [member function]
+    ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SendUnreachError(ns3::Ipv4Address unreachNode, ns3::Ipv4Address destination, ns3::Ipv4Address originalDst, uint8_t salvage, uint8_t protocol) [member function]
     cls.add_method('SendUnreachError', 
                    'void', 
-                   [param('ns3::Ipv4Address', 'errorHop'), param('ns3::Ipv4Address', 'destination'), param('ns3::Ipv4Address', 'originalDst'), param('uint8_t', 'salvage'), param('uint8_t', 'protocol')])
+                   [param('ns3::Ipv4Address', 'unreachNode'), param('ns3::Ipv4Address', 'destination'), param('ns3::Ipv4Address', 'originalDst'), param('uint8_t', 'salvage'), param('uint8_t', 'protocol')])
     ## dsr-routing.h (module 'dsr'): void ns3::dsr::DsrRouting::SetDownTarget(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr<ns3::Ipv4Route>, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetDownTarget', 
                    'void', 
diff -Naur ns-3.19/src/dsr/doc/dsr.rst ns-3.20/src/dsr/doc/dsr.rst
--- ns-3.19/src/dsr/doc/dsr.rst	2014-06-17 10:34:00.336637449 -0700
+++ ns-3.20/src/dsr/doc/dsr.rst	2014-06-17 10:33:13.667997706 -0700
@@ -14,7 +14,8 @@
 ********************
  
 This model implements the base specification of the Dynamic Source Routing 
-(DSR) protocol. Implementation is based on :rfc:`4728`.
+(DSR) protocol. Implementation is based on :rfc:`4728`, with some extensions
+and modifications to the RFC specifications.
 
 DSR operates on a on-demand behavior. Therefore, our DSR model buffers all 
 packets while a route request packet (RREQ) is disseminated. We implement 
@@ -188,7 +189,16 @@
 * manet-routing-compare.cc has been used to compare DSR with three of other routing protocols.
 
 A paper was presented on these results at the Workshop on ns-3 in 2011.
-  
+
+Limitations
+***********
+
+The model is not fully compliant with :rfc:`4728`. As an example, Dsr fixed size header
+has been extended and it is four octects longer then the RFC specification.
+As a consequence, the DSR headers can not be correctly decoded by Wireshark.
+
+The model full compliance with the RFC is planned for the future.
+
 References
 **********
 
diff -Naur ns-3.19/src/dsr/model/dsr-errorbuff.cc ns-3.20/src/dsr/model/dsr-errorbuff.cc
--- ns-3.19/src/dsr/model/dsr-errorbuff.cc	2014-06-17 10:34:00.338637433 -0700
+++ ns-3.20/src/dsr/model/dsr-errorbuff.cc	2014-06-17 10:33:13.670997683 -0700
@@ -116,7 +116,7 @@
       if (i->GetDestination () == dst)
         {
           entry = *i;
-          m_errorBuffer.erase (i);
+          i = m_errorBuffer.erase (i);
           NS_LOG_DEBUG ("Packet size while dequeuing " << entry.GetPacket ()->GetSize ());
           return true;
         }
diff -Naur ns-3.19/src/dsr/model/dsr-fs-header.cc ns-3.20/src/dsr/model/dsr-fs-header.cc
--- ns-3.19/src/dsr/model/dsr-fs-header.cc	2014-06-17 10:34:00.339637426 -0700
+++ ns-3.20/src/dsr/model/dsr-fs-header.cc	2014-06-17 10:33:13.671997675 -0700
@@ -39,8 +39,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("DsrFsHeader");
 
-NS_OBJECT_ENSURE_REGISTERED (DsrFsHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrFsHeader);
 
 TypeId DsrFsHeader::GetTypeId ()
 {
@@ -259,8 +258,7 @@
   return m_optionData;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrRoutingHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrRoutingHeader);
 
 TypeId DsrRoutingHeader::GetTypeId ()
 {
diff -Naur ns-3.19/src/dsr/model/dsr-gratuitous-reply-table.cc ns-3.20/src/dsr/model/dsr-gratuitous-reply-table.cc
--- ns-3.19/src/dsr/model/dsr-gratuitous-reply-table.cc	2014-06-17 10:34:00.340637418 -0700
+++ ns-3.20/src/dsr/model/dsr-gratuitous-reply-table.cc	2014-06-17 10:33:13.671997675 -0700
@@ -38,8 +38,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (GraReply)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GraReply);
 
 TypeId GraReply::GetTypeId ()
 {
diff -Naur ns-3.19/src/dsr/model/dsr-maintain-buff.cc ns-3.20/src/dsr/model/dsr-maintain-buff.cc
--- ns-3.19/src/dsr/model/dsr-maintain-buff.cc	2014-06-17 10:34:00.340637418 -0700
+++ ns-3.20/src/dsr/model/dsr-maintain-buff.cc	2014-06-17 10:33:13.672997667 -0700
@@ -97,7 +97,7 @@
       if (i->GetNextHop () == nextHop)
         {
           entry = *i;
-          m_maintainBuffer.erase (i);
+          i = m_maintainBuffer.erase (i);
           NS_LOG_DEBUG ("Packet size while dequeuing " << entry.GetPacket ()->GetSize ());
           return true;
         }
@@ -134,7 +134,7 @@
           && (i->GetSrc () == entry.GetSrc ()) && (i->GetDst () == entry.GetDst ())
           && (i->GetAckId () == entry.GetAckId ()) && (i->GetSegsLeft () == entry.GetSegsLeft ()))
         {
-          m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
+          i = m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
           return true;
         }
     }
@@ -155,7 +155,7 @@
           && (i->GetSrc () == entry.GetSrc ()) && (i->GetDst () == entry.GetDst ())
           && (i->GetAckId () == entry.GetAckId ()))
         {
-          m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
+          i = m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
           return true;
         }
     }
@@ -178,7 +178,7 @@
           && (i->GetSegsLeft () == entry.GetSegsLeft ()) && (i->GetAckId () == entry.GetAckId ())
           )
         {
-          m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the promisc received packet
+          i = m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the promisc received packet
           return true;
         }
     }
@@ -201,7 +201,7 @@
           && (i->GetNextHop () == entry.GetNextHop ())
           )
         {
-          m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the promisc received packet
+          i = m_maintainBuffer.erase (i);   // Erase the same maintain buffer entry for the promisc received packet
           return true;
         }
     }
diff -Naur ns-3.19/src/dsr/model/dsr-maintain-buff.h ns-3.20/src/dsr/model/dsr-maintain-buff.h
--- ns-3.19/src/dsr/model/dsr-maintain-buff.h	2014-06-17 10:34:00.341637411 -0700
+++ ns-3.20/src/dsr/model/dsr-maintain-buff.h	2014-06-17 10:33:13.673997660 -0700
@@ -55,12 +55,18 @@
    * Compare maintain Buffer entries
    * \param o
    * \return true if equal
-   */
-  bool operator < (LinkKey const & o) const
+   */ 
+  bool operator < (const LinkKey & o) const
   {
-    return ((m_source < o.m_source) && (m_destination < o.m_destination)
-            && (m_ourAdd < o.m_nextHop) && (m_nextHop < o.m_nextHop)
-            );
+      if (m_source < o.m_source) return true;
+      if (o.m_source < m_source) return false;
+      if (m_destination < o.m_destination) return true;
+      if (o.m_destination < m_destination) return false;
+      if (m_ourAdd < o.m_ourAdd) return true;
+      if (o.m_ourAdd < m_ourAdd) return false;
+      if (m_nextHop < o.m_nextHop) return true;
+      if (o.m_nextHop < m_nextHop) return false;
+      return false;
   }
 };
 
@@ -77,11 +83,19 @@
    * \param o
    * \return true if equal
    */
-  bool operator < (NetworkKey const & o) const
+  bool operator < (const NetworkKey & o) const
   {
-    return ((m_ackId < o.m_ackId) && (m_ourAdd < o.m_ourAdd) && (m_nextHop < o.m_nextHop) && (m_source < o.m_source)
-            && (m_destination < o.m_destination)
-            );
+      if (m_ackId < o.m_ackId) return true;
+      if (o.m_ackId < m_ackId) return false;
+      if (m_source < o.m_source) return true;
+      if (o.m_source < m_source) return false;
+      if (m_destination < o.m_destination) return true;
+      if (o.m_destination < m_destination) return false;
+      if (m_ourAdd < o.m_ourAdd) return true;
+      if (o.m_ourAdd < m_ourAdd) return false;
+      if (m_nextHop < o.m_nextHop) return true;
+      if (o.m_nextHop < m_nextHop) return false;
+      return false;
   }
 };
 
@@ -97,11 +111,17 @@
    * \param o
    * \return true if equal
    */
-  bool operator < (PassiveKey const & o) const
+  bool operator < (const PassiveKey & o) const
   {
-    return ((m_ackId < o.m_ackId) && (m_source < o.m_source)
-            && (m_destination < o.m_destination) && (m_segsLeft < o.m_segsLeft)
-            );
+      if (m_ackId < o.m_ackId) return true;
+      if (o.m_ackId < m_ackId) return false;
+      if (m_source < o.m_source) return true;
+      if (o.m_source < m_source) return false;
+      if (m_destination < o.m_destination) return true;
+      if (o.m_destination < m_destination) return false;
+      if (m_segsLeft < o.m_segsLeft) return true;
+      if (o.m_segsLeft < m_segsLeft) return false;
+      return false;
   }
 };
 
diff -Naur ns-3.19/src/dsr/model/dsr-network-queue.cc ns-3.20/src/dsr/model/dsr-network-queue.cc
--- ns-3.19/src/dsr/model/dsr-network-queue.cc	2014-06-17 10:34:00.341637411 -0700
+++ ns-3.20/src/dsr/model/dsr-network-queue.cc	2014-06-17 10:33:13.673997660 -0700
@@ -43,8 +43,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (DsrNetworkQueue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrNetworkQueue);
 
 TypeId
 DsrNetworkQueue::GetTypeId (void)
@@ -100,6 +99,36 @@
 }
 
 bool
+DsrNetworkQueue::FindPacketWithNexthop (Ipv4Address nextHop, DsrNetworkQueueEntry & entry)
+{
+  Cleanup ();
+  for (std::vector<DsrNetworkQueueEntry>::iterator i = m_dsrNetworkQueue.begin (); i != m_dsrNetworkQueue.end (); ++i)
+    {
+      if (i->GetNextHopAddress () == nextHop)
+        {
+          entry = *i;
+          i = m_dsrNetworkQueue.erase (i);
+          return true;
+        }
+    }
+  return false;
+}
+
+bool
+DsrNetworkQueue::Find (Ipv4Address nextHop)
+{
+  Cleanup ();
+  for (std::vector<DsrNetworkQueueEntry>::iterator i = m_dsrNetworkQueue.begin (); i != m_dsrNetworkQueue.end (); ++i)
+    {
+      if (i->GetNextHopAddress () == nextHop)
+        {
+          return true;
+        }
+    }
+  return false;
+}
+
+bool
 DsrNetworkQueue::Enqueue (DsrNetworkQueueEntry & entry)
 {
   NS_LOG_FUNCTION (this << m_size << m_maxSize);
diff -Naur ns-3.19/src/dsr/model/dsr-network-queue.h ns-3.20/src/dsr/model/dsr-network-queue.h
--- ns-3.19/src/dsr/model/dsr-network-queue.h	2014-06-17 10:34:00.341637411 -0700
+++ ns-3.20/src/dsr/model/dsr-network-queue.h	2014-06-17 10:33:13.673997660 -0700
@@ -151,6 +151,8 @@
   DsrNetworkQueue (uint32_t maxLen, Time maxDelay);
   ~DsrNetworkQueue ();
 
+  bool FindPacketWithNexthop (Ipv4Address nextHop, DsrNetworkQueueEntry & entry);
+  bool Find (Ipv4Address nextHop);
   /**
    * Push entry in queue, if there is no entry with the same
    * packet and destination address in queue.
diff -Naur ns-3.19/src/dsr/model/dsr-option-header.cc ns-3.20/src/dsr/model/dsr-option-header.cc
--- ns-3.19/src/dsr/model/dsr-option-header.cc	2014-06-17 10:34:00.342637403 -0700
+++ ns-3.20/src/dsr/model/dsr-option-header.cc	2014-06-17 10:33:13.674997652 -0700
@@ -42,8 +42,7 @@
 namespace dsr {
 NS_LOG_COMPONENT_DEFINE ("DsrOptionHeader");
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionHeader);
 
 TypeId DsrOptionHeader::GetTypeId ()
 {
@@ -131,8 +130,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionPad1Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionPad1Header);
 
 TypeId DsrOptionPad1Header::GetTypeId ()
 {
@@ -183,8 +181,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionPadnHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionPadnHeader);
 
 TypeId DsrOptionPadnHeader::GetTypeId ()
 {
@@ -244,8 +241,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRreqHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRreqHeader);
 
 TypeId DsrOptionRreqHeader::GetTypeId ()
 {
@@ -392,8 +388,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRrepHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRrepHeader);
 
 TypeId DsrOptionRrepHeader::GetTypeId ()
 {
@@ -514,8 +509,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionSRHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionSRHeader);
 
 TypeId DsrOptionSRHeader::GetTypeId ()
 {
@@ -657,20 +651,13 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrHeader);
 
 TypeId DsrOptionRerrHeader::GetTypeId ()
 {
   static TypeId tid = TypeId ("ns3::dsr::DsrOptionRerrHeader")
     .AddConstructor<DsrOptionRerrHeader> ()
     .SetParent<DsrOptionHeader> ()
-    .AddAttribute ("ErrorType","Type of route errors",
-                   EnumValue (NODE_UNREACHABLE),
-                   MakeEnumAccessor (&DsrOptionRerrHeader::m_errorType),
-                   MakeEnumChecker (NODE_UNREACHABLE, "Node unreachable",
-                                    FLOW_STATE_NOT_SUPPORTED, "Flow state not supported",
-                                    OPTION_NOT_SUPPORTED, "Option not supported"))
   ;
   return tid;
 }
@@ -786,8 +773,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrUnreachHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrUnreachHeader);
 
 TypeId DsrOptionRerrUnreachHeader::GetTypeId ()
 {
@@ -915,8 +901,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrUnsupportHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerrUnsupportHeader);
 
 TypeId DsrOptionRerrUnsupportHeader::GetTypeId ()
 {
@@ -1034,8 +1019,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckReqHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckReqHeader);
 
 TypeId DsrOptionAckReqHeader::GetTypeId ()
 {
@@ -1110,8 +1094,7 @@
   return retVal;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckHeader);
 
 TypeId DsrOptionAckHeader::GetTypeId ()
 {
diff -Naur ns-3.19/src/dsr/model/dsr-options.cc ns-3.20/src/dsr/model/dsr-options.cc
--- ns-3.19/src/dsr/model/dsr-options.cc	2014-06-17 10:34:00.344637387 -0700
+++ ns-3.20/src/dsr/model/dsr-options.cc	2014-06-17 10:33:13.676997636 -0700
@@ -65,8 +65,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptions)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptions);
 
 TypeId DsrOptions::GetTypeId ()
 {
@@ -372,8 +371,7 @@
   return 0;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionPad1)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionPad1);
 
 TypeId DsrOptionPad1::GetTypeId ()
 {
@@ -413,8 +411,7 @@
   return pad1Header.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionPadn)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionPadn);
 
 TypeId DsrOptionPadn::GetTypeId ()
 {
@@ -454,8 +451,7 @@
   return padnHeader.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRreq)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRreq);
 
 TypeId DsrOptionRreq::GetTypeId ()
 {
@@ -497,9 +493,9 @@
    * \ when the ip source address is equal to the address of our own, this is request packet originated
    * \ by the node itself, discard it
    */
-  if (srcAddress == ipv4Address)
+  if (source == ipv4Address)
     {
-      NS_LOG_DEBUG ("Discard the packet");
+      NS_LOG_DEBUG ("Discard the packet since it was originated from same source address");
       m_dropTrace (packet); // call the drop trace to show in the tracing
       return 0;
     }
@@ -603,6 +599,14 @@
     {
       // A node ignores all RREQs received from any node in its blacklist
       RouteCacheEntry toPrev;
+      bool isRouteInCache = dsr->LookupRoute (targetAddress,
+                                              toPrev);
+      RouteCacheEntry::IP_VECTOR ip = toPrev.GetVector (); // The route from our own route cache to dst
+      PrintVector (ip);
+      std::vector<Ipv4Address> saveRoute (nodeList);
+      PrintVector (saveRoute);
+      bool areThereDuplicates = IfDuplicates (ip,
+                                              saveRoute);
       /*
        *  When the reverse route is created or updated, the following actions on the route are also carried out:
        *  3. the next hop in the routing table becomes the node from which the  RREQ was received
@@ -622,7 +626,8 @@
             {
               NS_LOG_DEBUG ("These two nodes are neighbors");
               m_finalRoute.clear ();
-              m_finalRoute.push_back (srcAddress);     // push back the request originator's address
+              /// TODO has changed the srcAddress to source, should not matter either way, check later
+              m_finalRoute.push_back (source);     // push back the request originator's address
               m_finalRoute.push_back (ipv4Address);    // push back our own address
               nextHop = srcAddress;
             }
@@ -696,10 +701,14 @@
                   DsrOptionSRHeader sourceRoute;
                   NS_LOG_DEBUG ("The route length " << m_finalRoute.size ());
                   sourceRoute.SetNodesAddress (m_finalRoute);
-                  if (dsr->IsLinkCache ())
-                    {
-                      dsr->UseExtends (m_finalRoute);
-                    }
+
+                  /// TODO !!!!!!!!!!!!!!
+                  /// Think about this part, we just added the route,
+                  /// probability no need to increase stability now?????
+                  // if (dsr->IsLinkCache ())
+                  //   {
+                  //     dsr->UseExtends (m_finalRoute);
+                  //   }
                   sourceRoute.SetSegmentsLeft ((m_finalRoute.size () - 2));
                   // The salvage value here is 0
                   sourceRoute.SetSalvage (0);
@@ -737,18 +746,12 @@
       /*
        * (ii) or it has an active route to the destination, send reply based on request header and route cache,
        *      need to delay based on a random value from d = H * (h - 1 + r), which can avoid possible route
-       *      reply storm.
+       *      reply storm. Also, verify if two vectors do not contain duplicates (part of the route to the
+       *      destination from route cache and route collected so far). If so, do not use the route found
+       *      and forward the route request.
        */
-      else if (dsr->LookupRoute (targetAddress, toPrev))
+      else if (isRouteInCache && !areThereDuplicates)
         {
-          RouteCacheEntry::IP_VECTOR ip = toPrev.GetVector (); // The route from our own route cache to dst
-          PrintVector (ip);
-          std::vector<Ipv4Address> saveRoute (nodeList);
-          PrintVector (saveRoute);
-          // Verify if the two vector contains duplicates, if so, do not use
-          // the route found and forward the route request
-          if (!(IfDuplicates (ip, saveRoute)))
-            {
               m_finalRoute.clear ();            // Clear the final route vector
               /**
                * push back the intermediate node address from the source to this node
@@ -800,10 +803,10 @@
                       PrintVector (saveRoute);
 
                       sourceRoute.SetNodesAddress (saveRoute);
-                      if (dsr->IsLinkCache ())
-                        {
-                          dsr->UseExtends (saveRoute);
-                        }
+                      // if (dsr->IsLinkCache ())
+                      //   {
+                      //     dsr->UseExtends (saveRoute);
+                      //   }
                       sourceRoute.SetSegmentsLeft ((saveRoute.size () - 2));
                       uint8_t salvage = 0;
                       sourceRoute.SetSalvage (salvage);
@@ -839,7 +842,6 @@
                * Need to first pin down the next hop address before removing duplicates
                */
               Ipv4Address nextHop = ReverseSearchNextHop (ipv4Address, m_finalRoute);
-              NS_LOG_DEBUG ("The nextHop address " << nextHop);
               /*
                * First remove the duplicate ip address to automatically shorten the route, and then reversely
                * search the next hop address
@@ -870,11 +872,6 @@
               newPacket->AddHeader (dsrRoutingHeader);
               dsr->ScheduleCachedReply (newPacket, ipv4Address, nextHop, m_ipv4Route, hops);
               isPromisc = false;
-            }
-          else
-            {
-              NS_LOG_DEBUG ("There is duplicate ip addresses in the two route parts");
-            }
           return rreq.GetSerializedSize ();
         }
       /*
@@ -953,8 +950,7 @@
   //unreachable:  return rreq.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRrep)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRrep);
 
 TypeId DsrOptionRrep::GetTypeId ()
 {
@@ -1154,8 +1150,7 @@
   return rrep.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionSR)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionSR);
 
 TypeId DsrOptionSR::GetTypeId ()
 {
@@ -1313,7 +1308,8 @@
                     m_dropTrace (packet);
                     return 0;
                   }
-                if (numberAddress - segsLeft - 2 < 0) // The index is invalid
+                // -fstrict-overflow sensitive, see bug 1868
+                if (numberAddress - segsLeft < 2) // The index is invalid
                    {
                       NS_LOG_LOGIC ("Malformed header. Drop!");
                       m_dropTrace (packet);
@@ -1395,8 +1391,7 @@
   return sourceRoute.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerr)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionRerr);
 
 TypeId DsrOptionRerr::GetTypeId ()
 {
@@ -1575,8 +1570,7 @@
   return serializedSize;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckReq)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionAckReq);
 
 TypeId DsrOptionAckReq::GetTypeId ()
 {
@@ -1631,8 +1625,7 @@
   return ackReq.GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DsrOptionAck)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrOptionAck);
 
 TypeId DsrOptionAck::GetTypeId ()
 {
diff -Naur ns-3.19/src/dsr/model/dsr-passive-buff.cc ns-3.20/src/dsr/model/dsr-passive-buff.cc
--- ns-3.19/src/dsr/model/dsr-passive-buff.cc	2014-06-17 10:34:00.345637379 -0700
+++ ns-3.20/src/dsr/model/dsr-passive-buff.cc	2014-06-17 10:33:13.677997629 -0700
@@ -41,8 +41,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (PassiveBuffer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PassiveBuffer);
 
 TypeId PassiveBuffer::GetTypeId ()
 {
@@ -117,7 +116,7 @@
           && (i->GetDestination () == entry.GetDestination ()) && (i->GetIdentification () == entry.GetIdentification ()) && (i->GetFragmentOffset () == entry.GetFragmentOffset ())
           && (i->GetSegsLeft () == entry.GetSegsLeft () + 1))
         {
-          m_passiveBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
+          i = m_passiveBuffer.erase (i);   // Erase the same maintain buffer entry for the received packet
           return true;
         }
     }
@@ -136,7 +135,7 @@
       if (i->GetDestination () == dst)
         {
           entry = *i;
-          m_passiveBuffer.erase (i);
+          i = m_passiveBuffer.erase (i);
           NS_LOG_DEBUG ("Packet size while dequeuing " << entry.GetPacket ()->GetSize ());
           return true;
         }
diff -Naur ns-3.19/src/dsr/model/dsr-rcache.cc ns-3.20/src/dsr/model/dsr-rcache.cc
--- ns-3.19/src/dsr/model/dsr-rcache.cc	2014-06-17 10:34:00.346637372 -0700
+++ ns-3.20/src/dsr/model/dsr-rcache.cc	2014-06-17 10:33:13.678997621 -0700
@@ -131,8 +131,7 @@
      << "\t";
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RouteCache)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RouteCache);
 
 TypeId RouteCache::GetTypeId ()
 {
@@ -696,7 +695,7 @@
       else
         {
           // Check if the expire time for the new route has expired or not
-          if (rt.GetExpireTime () > 0)
+          if (rt.GetExpireTime () > Time (0))
             {
               rtVector.push_back (rt);
               // This sort function will sort the route cache entries based on the size of route in each of the
diff -Naur ns-3.19/src/dsr/model/dsr-routing.cc ns-3.20/src/dsr/model/dsr-routing.cc
--- ns-3.19/src/dsr/model/dsr-routing.cc	2014-06-17 10:34:00.349637349 -0700
+++ ns-3.20/src/dsr/model/dsr-routing.cc	2014-06-17 10:33:13.682997590 -0700
@@ -52,6 +52,7 @@
 #include "ns3/node-list.h"
 #include "ns3/double.h"
 #include "ns3/pointer.h"
+#include "ns3/timer.h"
 #include "ns3/object-vector.h"
 #include "ns3/ipv4-address.h"
 #include "ns3/ipv4-header.h"
@@ -79,8 +80,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (DsrRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsrRouting);
 
 /* see http://www.iana.org/assignments/protocol-numbers */
 const uint8_t DsrRouting::PROT_NUMBER = 48;
@@ -276,7 +276,7 @@
                    MakeUintegerAccessor (&DsrRouting::m_numPriorityQueues),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("LinkAcknowledgment","Enable Link layer acknowledgment mechanism",
-                   BooleanValue (false),
+                   BooleanValue (true),
                    MakeBooleanAccessor (&DsrRouting::m_linkAck),
                    MakeBooleanChecker ())
     .AddTraceSource ("Tx", "Send DSR packet.",
@@ -422,7 +422,8 @@
               routeCache->SetUseExtends (m_useExtends);
               routeCache->ScheduleTimer ();
               // The call back to handle link error and send error message to appropriate nodes
-              routeCache->SetCallback (MakeCallback (&DsrRouting::SendRerrWhenBreaksLinkToNextHop, this));
+              /// TODO whether this SendRerrWhenBreaksLinkToNextHop is used or not
+              // routeCache->SetCallback (MakeCallback (&DsrRouting::SendRerrWhenBreaksLinkToNextHop, this));
               SetRouteCache (routeCache);
               // Set the main address as the current ip address
               m_mainAddress = addr;
@@ -478,14 +479,14 @@
   /// \todo this is a hard-coded check, need to find a better way to work on this
   if (newP->GetSize () == 4)
     {
-      NS_LOG_WARN ("WifiMacTrailer left, skip this packet");
+      // NS_LOG_WARN ("WifiMacTrailer left, skip this packet");
       return;
     }
 
   LlcSnapHeader llc;
   if(!newP->PeekHeader (llc))
   {
-    NS_LOG_WARN ("llc snap header not present");
+    // NS_LOG_WARN ("llc snap header not present");
     NS_ASSERT (newP->GetSize() < 64);
     return;
   }
@@ -499,7 +500,7 @@
   ArpHeader arp;
   if(newP->PeekHeader (arp))
   {
-    NS_LOG_WARN ("arp header present, skip this packet");
+    // NS_LOG_WARN ("arp header present, skip this packet");
     NS_ASSERT (newP->GetSize() < 64);
     return;
   }
@@ -536,6 +537,8 @@
       newEntry.SetNextHop (ourAddress);
       /// Get the previous node's maintenance buffer and passive ack
       Ptr<Node> node = GetNodeWithAddress (previousHop);
+      NS_LOG_DEBUG ("The previous node " << previousHop);
+      
       Ptr<dsr::DsrRouting> dsr = node->GetObject<dsr::DsrRouting> ();
       dsr->CancelLinkPacketTimer (newEntry);
     }
@@ -842,151 +845,6 @@
     }
 }
 
-void DsrRouting::SendRerrWhenBreaksLinkToNextHop (Ipv4Address nextHop, uint8_t protocol)
-{
-  NS_LOG_FUNCTION (this << nextHop << (uint32_t)protocol);
-  MaintainBuffEntry entry;
-  // Find the packet in send buffer
-  if (m_maintainBuffer.Find (nextHop))
-    {
-      NS_LOG_DEBUG ("Trying to dequeue");
-
-      if (m_maintainBuffer.Dequeue (nextHop, entry))
-        {
-          NS_LOG_DEBUG ("creating new packet");
-          /*
-           * Copy the packet and save a copy to the send buffer.
-           * if only queue the original packet to the buffer,
-           * when dequeue the packet, it turns to be empty.
-           */
-          Ptr<Packet> dequeP = ConstCast<Packet> (entry.GetPacket ());
-          Ptr<Packet> newPacket = dequeP->Copy ();
-          Ptr<Packet> p = dequeP->Copy ();
-
-          Ipv4Address source = entry.GetSrc ();
-          Ipv4Address destination = entry.GetDst ();
-
-          DsrRoutingHeader dsrRoutingHeader;
-          p->RemoveHeader (dsrRoutingHeader);
-          Ptr<Packet> cleanP = p->Copy ();
-          uint8_t offset = dsrRoutingHeader.GetDsrOptionsOffset ();
-          newPacket->RemoveAtStart (offset);
-
-          // Get the number of routers' address field
-          uint8_t buf[2];
-          newPacket->CopyData (buf, sizeof(buf));
-          uint8_t numberAddress = (buf[1] - 2) / 4;
-
-          DsrOptionSRHeader sourceRoute;
-          sourceRoute.SetNumberAddress (numberAddress);
-          newPacket->RemoveHeader (sourceRoute);
-          uint8_t salvage = sourceRoute.GetSalvage ();
-
-          DsrOptionAckReqHeader ackReq;
-          newPacket->RemoveHeader (ackReq);
-          /*
-           * Get the node list address
-           */
-          std::vector<Ipv4Address> nodeList = sourceRoute.GetNodesAddress ();
-          Ipv4Address address1 = nodeList[1];
-          Ipv4Address nextHop = SearchNextHop (m_mainAddress, nodeList);
-          NS_LOG_DEBUG ("The next hop address" << nextHop);
-          if (nextHop == "0.0.0.0")
-            {
-              PacketNewRoute (cleanP, m_mainAddress, destination, protocol);
-              return;
-            }
-          RouteCacheEntry salvageRoute;
-          bool findRoute = m_routeCache->LookupRoute (destination, salvageRoute);
-          // Check the salvage value in header, if salvage is needed, we should find alternative route
-          if (findRoute && (salvage < m_maxSalvageCount))
-            {
-              // Need to salvage the packet instead of discard it
-              std::vector<Ipv4Address> nodeList = salvageRoute.GetVector ();
-              DsrOptionSRHeader newSR;
-              newSR.SetNodesAddress (nodeList);
-              newSR.SetSegmentsLeft ((nodeList.size () - 2));
-              newSR.SetSalvage (salvage + 1);
-              /// When found a route and use it, UseExtends to the link cache
-              if (m_routeCache->IsLinkCache ())
-                {
-                  m_routeCache->UseExtends (nodeList);
-                }
-              NetworkKey networkKey;
-              networkKey.m_ackId = entry.GetAckId ();
-              networkKey.m_ourAdd = entry.GetOurAdd ();
-              networkKey.m_nextHop = entry.GetNextHop ();
-              networkKey.m_source = entry.GetSrc ();
-              networkKey.m_destination = entry.GetDst ();
-
-              PassiveKey passiveKey;
-              passiveKey.m_ackId = 0;
-              passiveKey.m_source = entry.GetSrc ();
-              passiveKey.m_destination = entry.GetDst ();
-              passiveKey.m_segsLeft = entry.GetSegsLeft ();
-
-              LinkKey linkKey;
-              linkKey.m_source = entry.GetSrc ();
-              linkKey.m_destination = entry.GetDst ();
-              linkKey.m_ourAdd = entry.GetOurAdd ();
-              linkKey.m_nextHop = entry.GetNextHop ();
-
-              m_addressForwardCnt[networkKey] = 0;
-              m_passiveCnt[passiveKey] = 0;
-              m_linkCnt[linkKey] = 0;
-
-              if (m_linkAck)
-                {
-                  ScheduleLinkPacketRetry (entry, protocol);
-                }
-              else
-                {
-                  NS_LOG_LOGIC ("Not using link acknowledgment");
-                  if (nextHop != destination)
-                    {
-                      SchedulePassivePacketRetry (entry, protocol);
-                    }
-                  else
-                    {
-                      // This is the first network retry
-                      ScheduleNetworkPacketRetry (entry, true, protocol);
-                    }
-                }
-            }
-          else
-            {
-              /*
-               * This code block create a packet and attach a route error option to it
-               */
-              m_routeCache->DeleteAllRoutesIncludeLink (source, nextHop, m_mainAddress);
-              /*
-               * If the salvage is not 0, use the first address in the route as the error dst in error header
-               * otherwise use the source of packet as the error destination
-               */
-              Ipv4Address errorDst;
-              if (salvage)
-                {
-                  errorDst = address1;
-                }
-              else
-                {
-                  errorDst = source;
-                }
-              SendUnreachError (nextHop, errorDst, destination, salvage, protocol);
-              /*
-               * here we cancel the packet retransmission time for all the packets have next hop address
-               * as nextHop
-               */
-            }
-          if (m_maintainBuffer.GetSize () != 0 && m_maintainBuffer.Find (nextHop))
-            {
-              Simulator::Schedule (MilliSeconds (m_uniformRandomVariable->GetInteger (0,100)),
-                                   &DsrRouting::SendRerrWhenBreaksLinkToNextHop,this,nextHop,protocol);
-            }
-        }
-    }
-}
-
 void DsrRouting::SendBuffTimerExpire ()
 {
   if (m_sendBuffTimer.IsRunning ())
@@ -1093,19 +951,19 @@
                   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
                   NS_LOG_LOGIC ("Will be inserting into priority queue number: " << priority);
 
-                  m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
+                  //m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
 
                   /// \todo New DsrNetworkQueueEntry
-//                  DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
-//
-//                  if (dsrNetworkQueue->Enqueue (newEntry))
-//                    {
-//                      Scheduler (priority);
-//                    }
-//                  else
-//                    {
-//                      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//                    }
+                 DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
+
+                 if (dsrNetworkQueue->Enqueue (newEntry))
+                   {
+                     Scheduler (priority);
+                   }
+                 else
+                   {
+                     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+                   }
                 }
             }
           else
@@ -1389,9 +1247,9 @@
 }
 
 void
-DsrRouting::SendUnreachError (Ipv4Address errorHop, Ipv4Address destination, Ipv4Address originalDst, uint8_t salvage, uint8_t protocol)
+DsrRouting::SendUnreachError (Ipv4Address unreachNode, Ipv4Address destination, Ipv4Address originalDst, uint8_t salvage, uint8_t protocol)
 {
-  NS_LOG_FUNCTION (this << errorHop << destination << originalDst << (uint32_t)salvage << (uint32_t)protocol);
+  NS_LOG_FUNCTION (this << unreachNode << destination << originalDst << (uint32_t)salvage << (uint32_t)protocol);
   DsrRoutingHeader dsrRoutingHeader;
   dsrRoutingHeader.SetNextHeader (protocol);
   dsrRoutingHeader.SetMessageType (1);
@@ -1401,42 +1259,52 @@
   DsrOptionRerrUnreachHeader rerrUnreachHeader;
   rerrUnreachHeader.SetErrorType (1);
   rerrUnreachHeader.SetErrorSrc (m_mainAddress);
-  rerrUnreachHeader.SetUnreachNode (errorHop);
+  rerrUnreachHeader.SetUnreachNode (unreachNode);
   rerrUnreachHeader.SetErrorDst (destination);
   rerrUnreachHeader.SetOriginalDst (originalDst);
   rerrUnreachHeader.SetSalvage (salvage);                       // Set the value about whether to salvage a packet or not
   uint8_t rerrLength = rerrUnreachHeader.GetLength ();
 
+
   RouteCacheEntry toDst;
   bool findRoute = m_routeCache->LookupRoute (destination, toDst);
   // Queue the packet if there is no route pre-existing
   Ptr<Packet> newPacket = Create<Packet> ();
   if (!findRoute)
     {
-      NS_LOG_INFO (Simulator::Now ().GetSeconds ()
-                   << "s " << m_mainAddress << " there is no route for this packet, queue the packet");
-
-      dsrRoutingHeader.SetPayloadLength (rerrLength + 2);
-      dsrRoutingHeader.AddDsrOption (rerrUnreachHeader);
-      newPacket->AddHeader (dsrRoutingHeader);
-      Ptr<Packet> p = newPacket->Copy ();
-      // Save the error packet in the error buffer
-      ErrorBuffEntry newEntry (p, destination, m_mainAddress, errorHop, m_sendBufferTimeout, protocol);
-      bool result = m_errorBuffer.Enqueue (newEntry);                    // Enqueue the packet in send buffer
-      if (result)
-        {
-          NS_LOG_INFO (Simulator::Now ().GetSeconds ()
-                       << "s Add packet PID: " << p->GetUid () << " to queue. Packet: " << *p);
-          NS_LOG_LOGIC ("Send RREQ to" << destination);
-          if ((m_addressReqTimer.find (destination) == m_addressReqTimer.end ()) && (m_nonPropReqTimer.find (destination) == m_nonPropReqTimer.end ()))
-            {
-              NS_LOG_DEBUG ("When there is no existing route request for " << destination << ", initialize one");
-              /*
-               * Call the send request function, it will update the request table entry and ttl there
-               */
-              SendInitialRequest (m_mainAddress, destination, protocol);
-            }
-        }
+      if (destination == m_mainAddress)
+      {
+        NS_LOG_INFO ("We are the error source, send request to original dst " << originalDst);
+        // Send error request message if we are the source node
+        SendErrorRequest (rerrUnreachHeader, protocol);
+      }
+      else 
+      {
+        NS_LOG_INFO (Simulator::Now ().GetSeconds ()
+                     << "s " << m_mainAddress << " there is no route for this packet, queue the packet");
+
+        dsrRoutingHeader.SetPayloadLength (rerrLength + 2);
+        dsrRoutingHeader.AddDsrOption (rerrUnreachHeader);
+        newPacket->AddHeader (dsrRoutingHeader);
+        Ptr<Packet> p = newPacket->Copy ();
+        // Save the error packet in the error buffer
+        ErrorBuffEntry newEntry (p, destination, m_mainAddress, unreachNode, m_sendBufferTimeout, protocol);
+        bool result = m_errorBuffer.Enqueue (newEntry);                    // Enqueue the packet in send buffer
+        if (result)
+          {
+            NS_LOG_INFO (Simulator::Now ().GetSeconds ()
+                         << "s Add packet PID: " << p->GetUid () << " to queue. Packet: " << *p);
+            NS_LOG_LOGIC ("Send RREQ to" << destination);
+            if ((m_addressReqTimer.find (destination) == m_addressReqTimer.end ()) && (m_nonPropReqTimer.find (destination) == m_nonPropReqTimer.end ()))
+              {
+                NS_LOG_DEBUG ("When there is no existing route request for " << destination << ", initialize one");
+                /*
+                 * Call the send request function, it will update the request table entry and ttl there
+                 */
+                SendInitialRequest (m_mainAddress, destination, protocol);
+              }
+          }
+      }
     }
   else
     {
@@ -1474,19 +1342,19 @@
       Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
       NS_LOG_DEBUG ("Will be inserting into priority queue " << dsrNetworkQueue << " number: " << priority);
 
-      m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
+      //m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
 
       /// \todo New DsrNetworkQueueEntry
-//      DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
-//
-//      if (dsrNetworkQueue->Enqueue (newEntry))
-//        {
-//          Scheduler (priority);
-//        }
-//      else
-//        {
-//          NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//        }
+     DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
+
+     if (dsrNetworkQueue->Enqueue (newEntry))
+       {
+         Scheduler (priority);
+       }
+     else
+       {
+         NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+       }
     }
 }
 
@@ -1519,19 +1387,19 @@
   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
   NS_LOG_DEBUG ("Will be inserting into priority queue " << dsrNetworkQueue << " number: " << priority);
 
-  m_downTarget (packet, m_mainAddress, nextHop, GetProtocolNumber (), route);
+  //m_downTarget (packet, m_mainAddress, nextHop, GetProtocolNumber (), route);
 
   /// \todo New DsrNetworkQueueEntry
-//  DsrNetworkQueueEntry newEntry (packet, m_mainAddress, nextHop, Simulator::Now (), route);
-//
-//  if (dsrNetworkQueue->Enqueue (newEntry))
-//    {
-//      Scheduler (priority);
-//    }
-//  else
-//    {
-//      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//    }
+ DsrNetworkQueueEntry newEntry (packet, m_mainAddress, nextHop, Simulator::Now (), route);
+
+ if (dsrNetworkQueue->Enqueue (newEntry))
+   {
+     Scheduler (priority);
+   }
+ else
+   {
+     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+   }
 }
 
 void
@@ -1731,19 +1599,19 @@
   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
   NS_LOG_INFO ("Will be inserting into priority queue number: " << priority);
 
-  m_downTarget (packet, source, nextHop, GetProtocolNumber (), m_ipv4Route);
+  //m_downTarget (packet, source, nextHop, GetProtocolNumber (), m_ipv4Route);
 
   /// \todo New DsrNetworkQueueEntry 
-//  DsrNetworkQueueEntry newEntry (packet, source, nextHop, Simulator::Now (), m_ipv4Route);
-//
-//  if (dsrNetworkQueue->Enqueue (newEntry))
-//    {
-//      Scheduler (priority);
-//    }
-//  else
-//    {
-//      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//    }
+ DsrNetworkQueueEntry newEntry (packet, source, nextHop, Simulator::Now (), m_ipv4Route);
+
+ if (dsrNetworkQueue->Enqueue (newEntry))
+   {
+     Scheduler (priority);
+   }
+ else
+   {
+     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+   }
 }
 
 void
@@ -1879,6 +1747,12 @@
   if (m_sendBuffer.Find (destination))
     {
       NS_LOG_DEBUG ("destination over here " << destination);
+
+      /// When found a route and use it, UseExtends to the link cache
+      if (m_routeCache->IsLinkCache ())
+        {
+          m_routeCache->UseExtends (nodeList);
+        }
       SendBuffEntry entry;
       if (m_sendBuffer.Dequeue (destination, entry))
         {
@@ -2037,19 +1911,19 @@
                   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
                   NS_LOG_DEBUG ("Will be inserting into priority queue " << dsrNetworkQueue << " number: " << priority);
 
-                  m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
+                  //m_downTarget (newPacket, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
 
                   /// \todo New DsrNetworkQueueEntry
-//                  DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
-//
-//                  if (dsrNetworkQueue->Enqueue (newEntry))
-//                    {
-//                      Scheduler (priority);
-//                    }
-//                  else
-//                    {
-//                      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//                    }
+                 DsrNetworkQueueEntry newEntry (newPacket, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
+
+                 if (dsrNetworkQueue->Enqueue (newEntry))
+                   {
+                     Scheduler (priority);
+                   }
+                 else
+                   {
+                     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+                   }
                 }
             }
 
@@ -2138,6 +2012,32 @@
 }
 
 void
+DsrRouting::CallCancelPacketTimer (uint16_t ackId, Ipv4Header const& ipv4Header, Ipv4Address realSrc, Ipv4Address realDst)
+{
+  NS_LOG_FUNCTION (this << (uint32_t)ackId << ipv4Header << realSrc << realDst);
+  Ipv4Address sender = ipv4Header.GetDestination ();
+  Ipv4Address receiver = ipv4Header.GetSource ();
+  /*
+   * Create a packet to fill maintenance buffer, not used to compare with maintainance entry
+   * The reason is ack header doesn't have the original packet copy
+   */
+  Ptr<Packet> mainP = Create<Packet> ();
+  MaintainBuffEntry newEntry (/*Packet=*/ mainP, /*ourAddress=*/ sender, /*nextHop=*/ receiver,
+                                          /*source=*/ realSrc, /*destination=*/ realDst, /*ackId=*/ ackId,
+                                          /*SegsLeft=*/ 0, /*expire time=*/ Simulator::Now ());
+  CancelNetworkPacketTimer (newEntry);  // Only need to cancel network packet timer
+}
+
+void 
+DsrRouting::CancelPacketAllTimer (MaintainBuffEntry & mb)
+{
+  NS_LOG_FUNCTION (this);
+  CancelLinkPacketTimer (mb);
+  CancelNetworkPacketTimer (mb);
+  CancelPassivePacketTimer (mb);
+}
+
+void
 DsrRouting::CancelLinkPacketTimer (MaintainBuffEntry & mb)
 {
   NS_LOG_FUNCTION (this);
@@ -2149,15 +2049,15 @@
   /*
    * Here we have found the entry for send retries, so we get the value and increase it by one
    */
+  /// TODO need to think about this part
   m_linkCnt[linkKey] = 0;
   m_linkCnt.erase (linkKey);
 
-  NS_LOG_INFO ("ourAdd " << mb.GetOurAdd () << " nextHop " << mb.GetNextHop ()
-               << " source " << mb.GetSrc () << " destination " << mb.GetDst ()
-               );
-  // Find the link acknowledgment timer
+  // TODO if find the linkkey, we need to remove it
+
+  // Find the network acknowledgment timer
   std::map<LinkKey, Timer>::const_iterator i =
-      m_linkAckTimer.find (linkKey);
+    m_linkAckTimer.find (linkKey);
   if (i == m_linkAckTimer.end ())
     {
       NS_LOG_INFO ("did not find the link timer");
@@ -2177,6 +2077,7 @@
         }
       m_linkAckTimer.erase (linkKey);
     }
+
   // Erase the maintenance entry
   // yet this does not check the segments left value here
   NS_LOG_DEBUG ("The link buffer size " << m_maintainBuffer.GetSize());
@@ -2187,23 +2088,6 @@
 }
 
 void
-DsrRouting::CallCancelPacketTimer (uint16_t ackId, Ipv4Header const& ipv4Header, Ipv4Address realSrc, Ipv4Address realDst)
-{
-  NS_LOG_FUNCTION (this << (uint32_t)ackId << ipv4Header << realSrc << realDst);
-  Ipv4Address sender = ipv4Header.GetDestination ();
-  Ipv4Address receiver = ipv4Header.GetSource ();
-  /*
-   * Create a packet to fill maintenance buffer, not used to compare with maintainance entry
-   * The reason is ack header doesn't have the original packet copy
-   */
-  Ptr<Packet> mainP = Create<Packet> ();
-  MaintainBuffEntry newEntry (/*Packet=*/ mainP, /*ourAddress=*/ sender, /*nextHop=*/ receiver,
-                                          /*source=*/ realSrc, /*destination=*/ realDst, /*ackId=*/ ackId,
-                                          /*SegsLeft=*/ 0, /*expire time=*/ Simulator::Now ());
-  CancelNetworkPacketTimer (newEntry);
-}
-
-void
 DsrRouting::CancelNetworkPacketTimer (MaintainBuffEntry & mb)
 {
   NS_LOG_FUNCTION (this);
@@ -2293,16 +2177,61 @@
 DsrRouting::CancelPacketTimerNextHop (Ipv4Address nextHop, uint8_t protocol)
 {
   NS_LOG_FUNCTION (this << nextHop << (uint32_t)protocol);
+
   MaintainBuffEntry entry;
+  std::vector<Ipv4Address> previousErrorDst;
   if (m_maintainBuffer.Dequeue (nextHop, entry))
     {
-      Ptr<const Packet> packet = entry.GetPacket ()->Copy ();
       Ipv4Address source = entry.GetSrc ();
       Ipv4Address destination = entry.GetDst ();
+
+      Ptr<Packet> dsrP = entry.GetPacket ()->Copy ();
+      Ptr<Packet> p = dsrP->Copy ();
+      Ptr<Packet> packet = dsrP->Copy ();
+      DsrRoutingHeader dsrRoutingHeader;
+      dsrP->RemoveHeader (dsrRoutingHeader);          // Remove the dsr header in whole
+      uint32_t offset = dsrRoutingHeader.GetDsrOptionsOffset ();
+      p->RemoveAtStart (offset);
+
+      // Get the number of routers' address field
+      uint8_t buf[2];
+      p->CopyData (buf, sizeof(buf));
+      uint8_t numberAddress = (buf[1] - 2) / 4;
+      NS_LOG_DEBUG ("The number of addresses " << (uint32_t)numberAddress);
+      DsrOptionSRHeader sourceRoute;
+      sourceRoute.SetNumberAddress (numberAddress);
+      p->RemoveHeader (sourceRoute);
+      std::vector<Ipv4Address> nodeList = sourceRoute.GetNodesAddress ();
+      uint8_t salvage = sourceRoute.GetSalvage ();
+      Ipv4Address address1 = nodeList[1];
+      PrintVector (nodeList);
+
+      /*
+       * If the salvage is not 0, use the first address in the route as the error dst in error header
+       * otherwise use the source of packet as the error destination
+       */
+      Ipv4Address errorDst;
+      if (salvage)
+        {
+          errorDst = address1;
+        }
+      else
+        {
+          errorDst = source;
+        }
+      /// TODO if the errorDst is not seen before
+      if (std::find(previousErrorDst.begin(), previousErrorDst.end(), destination)==previousErrorDst.end())
+      {
+        NS_LOG_DEBUG ("have not seen this dst before " << errorDst << " in " << previousErrorDst.size());
+        SendUnreachError (nextHop, errorDst, destination, salvage, protocol);
+        previousErrorDst.push_back(errorDst);
+      }
+
       /*
        * Cancel the packet timer and then salvage the data packet
        */
-      CancelNetworkPacketTimer (entry);
+
+      CancelPacketAllTimer (entry);
       SalvagePacket (packet, source, destination, protocol);
 
       if (m_maintainBuffer.GetSize () && m_maintainBuffer.Find (nextHop))
@@ -2316,6 +2245,7 @@
     {
       NS_LOG_INFO ("Maintenance buffer entry not found");
     }
+    /// TODO need to think about whether we need the network queue entry or not
 }
 
 void
@@ -2389,19 +2319,19 @@
       Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
       NS_LOG_DEBUG ("Will be inserting into priority queue " << dsrNetworkQueue << " number: " << priority);
 
-      m_downTarget (p, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
+      //m_downTarget (p, m_mainAddress, nextHop, GetProtocolNumber (), m_ipv4Route);
 
       /// \todo New DsrNetworkQueueEntry
-//      DsrNetworkQueueEntry newEntry (p, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
-//
-//      if (dsrNetworkQueue->Enqueue (newEntry))
-//        {
-//          Scheduler (priority);
-//        }
-//      else
-//        {
-//          NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//        }
+     DsrNetworkQueueEntry newEntry (p, m_mainAddress, nextHop, Simulator::Now (), m_ipv4Route);
+
+     if (dsrNetworkQueue->Enqueue (newEntry))
+       {
+         Scheduler (priority);
+       }
+     else
+       {
+         NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+       }
 
       /*
        * Mark the next hop address in blacklist
@@ -2590,7 +2520,6 @@
 {
   NS_LOG_FUNCTION (this << (uint32_t)protocol);
   Ipv4Address nextHop = mb.GetNextHop ();
-  Ipv4Address source = mb.GetSrc ();
   Ptr<const Packet> packet = mb.GetPacket ();
   SetRoute (nextHop, m_mainAddress);
   Ptr<Packet> p = packet->Copy ();
@@ -2619,46 +2548,14 @@
     }
   else
     {
-      NS_LOG_DEBUG ("We may need to send error messages now");
-      Ptr<Packet> dsrP = mb.GetPacket ()->Copy ();
-      // The packet retries time has exceed the max maintenance retransmission times
-      DsrRoutingHeader dsrRoutingHeader;
-      dsrP->RemoveHeader (dsrRoutingHeader);          // Remove the dsr header in whole
-      uint32_t offset = dsrRoutingHeader.GetDsrOptionsOffset ();
-      p->RemoveAtStart (offset);
-
-      // Get the number of routers' address field
-      uint8_t buf[2];
-      p->CopyData (buf, sizeof(buf));
-      uint8_t numberAddress = (buf[1] - 2) / 4;
-      NS_LOG_DEBUG ("The number of addresses " << (uint32_t)numberAddress);
-      DsrOptionSRHeader sourceRoute;
-      sourceRoute.SetNumberAddress (numberAddress);
-      p->RemoveHeader (sourceRoute);
-      std::vector<Ipv4Address> nodeList = sourceRoute.GetNodesAddress ();
-      uint8_t salvage = sourceRoute.GetSalvage ();
-      Ipv4Address address1 = nodeList[1];
-      PrintVector (nodeList);
+      NS_LOG_INFO ("We need to send error messages now");
 
       // Delete all the routes including the links
       m_routeCache->DeleteAllRoutesIncludeLink (m_mainAddress, nextHop, m_mainAddress);
       /*
-       * If the salvage is not 0, use the first address in the route as the error dst in error header
-       * otherwise use the source of packet as the error destination
-       */
-      Ipv4Address errorDst;
-      if (salvage)
-        {
-          errorDst = address1;
-        }
-      else
-        {
-          errorDst = source;
-        }
-      SendUnreachError (nextHop, errorDst, mb.GetDst (), salvage, protocol);
-      /*
        * here we cancel the packet retransmission time for all the packets have next hop address as nextHop
        * Also salvage the packet for the all the packet destined for the nextHop address
+       * this is also responsible for send unreachable error back to source
        */
       CancelPacketTimerNextHop (nextHop, protocol);
     }
@@ -2734,44 +2631,9 @@
 
   if (m_sendRetries >= m_maxMaintRexmt)
     {
-      Ptr<Packet> dsrP = mb.GetPacket ()->Copy ();
-      // The packet retries time has exceed the max maintenance retransmission times
-      NS_LOG_LOGIC ("Packet transmissions to " << nextHop << " has been attempted SendRetries times for " << networkKey.m_ackId);
-      DsrRoutingHeader dsrRoutingHeader;
-      dsrP->RemoveHeader (dsrRoutingHeader);          // Remove the dsr header in whole
-      uint32_t offset = dsrRoutingHeader.GetDsrOptionsOffset ();
-      p->RemoveAtStart (offset);
-
-      // Get the number of routers' address field
-      uint8_t buf[2];
-      p->CopyData (buf, sizeof(buf));
-      uint8_t numberAddress = (buf[1] - 2) / 4;
-      NS_LOG_DEBUG ("The number of addresses " << (uint32_t)numberAddress);
-      DsrOptionSRHeader sourceRoute;
-      sourceRoute.SetNumberAddress (numberAddress);
-      p->RemoveHeader (sourceRoute);
-      std::vector<Ipv4Address> nodeList = sourceRoute.GetNodesAddress ();
-      uint8_t salvage = sourceRoute.GetSalvage ();
-      Ipv4Address address1 = nodeList[1];
-      PrintVector (nodeList);
-
       // Delete all the routes including the links
       m_routeCache->DeleteAllRoutesIncludeLink (m_mainAddress, nextHop, m_mainAddress);
       /*
-       * If the salvage is not 0, use the first address in the route as the error dst in error header
-       * otherwise use the source of packet as the error destination
-       */
-      Ipv4Address errorDst;
-      if (salvage)
-        {
-          errorDst = address1;
-        }
-      else
-        {
-          errorDst = source;
-        }
-      SendUnreachError (nextHop, errorDst, dst, salvage, protocol);
-      /*
        * here we cancel the packet retransmission time for all the packets have next hop address as nextHop
        * Also salvage the packet for the all the packet destined for the nextHop address
        */
@@ -3226,18 +3088,18 @@
   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
   NS_LOG_LOGIC ("Inserting into priority queue number: " << priority);
 
-  m_downTarget (packet, source, m_broadcast, GetProtocolNumber (), 0);
+  //m_downTarget (packet, source, m_broadcast, GetProtocolNumber (), 0);
 
   /// \todo New DsrNetworkQueueEntry
-//  DsrNetworkQueueEntry newEntry (packet, source, m_broadcast, Simulator::Now (), 0);
-//  if (dsrNetworkQueue->Enqueue (newEntry))
-//    {
-//      Scheduler (priority);
-//    }
-//  else
-//    {
-//      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//    }
+ DsrNetworkQueueEntry newEntry (packet, source, m_broadcast, Simulator::Now (), 0);
+ if (dsrNetworkQueue->Enqueue (newEntry))
+   {
+     Scheduler (priority);
+   }
+ else
+   {
+     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+   }
 }
 
 void
@@ -3332,18 +3194,18 @@
   Ptr<dsr::DsrNetworkQueue> dsrNetworkQueue = i->second;
   NS_LOG_INFO ("Inserting into priority queue number: " << priority);
 
-  m_downTarget (packet, source, nextHop, GetProtocolNumber (), route);
+  //m_downTarget (packet, source, nextHop, GetProtocolNumber (), route);
 
   /// \todo New DsrNetworkQueueEntry
-//  DsrNetworkQueueEntry newEntry (packet, source, nextHop, Simulator::Now (), route);
-//  if (dsrNetworkQueue->Enqueue (newEntry))
-//    {
-//      Scheduler (priority);
-//    }
-//  else
-//    {
-//      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//    }
+ DsrNetworkQueueEntry newEntry (packet, source, nextHop, Simulator::Now (), route);
+ if (dsrNetworkQueue->Enqueue (newEntry))
+   {
+     Scheduler (priority);
+   }
+ else
+   {
+     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+   }
 }
 
 void
@@ -3409,18 +3271,18 @@
 
   NS_LOG_LOGIC ("Will be inserting into priority queue " << dsrNetworkQueue << " number: " << priority);
 
-  m_downTarget (packet, m_mainAddress, destination, GetProtocolNumber (), route);
+  //m_downTarget (packet, m_mainAddress, destination, GetProtocolNumber (), route);
 
   /// \todo New DsrNetworkQueueEntry
-//  DsrNetworkQueueEntry newEntry (packet, m_mainAddress, destination, Simulator::Now (), route);
-//  if (dsrNetworkQueue->Enqueue (newEntry))
-//    {
-//      Scheduler (priority);
-//    }
-//  else
-//    {
-//      NS_LOG_INFO ("Packet dropped as dsr network queue is full");
-//    }
+ DsrNetworkQueueEntry newEntry (packet, m_mainAddress, destination, Simulator::Now (), route);
+ if (dsrNetworkQueue->Enqueue (newEntry))
+   {
+     Scheduler (priority);
+   }
+ else
+   {
+     NS_LOG_INFO ("Packet dropped as dsr network queue is full");
+   }
 }
 
 enum IpL4Protocol::RxStatus
diff -Naur ns-3.19/src/dsr/model/dsr-routing.h ns-3.20/src/dsr/model/dsr-routing.h
--- ns-3.19/src/dsr/model/dsr-routing.h	2014-06-17 10:34:00.350637341 -0700
+++ ns-3.20/src/dsr/model/dsr-routing.h	2014-06-17 10:33:13.682997590 -0700
@@ -254,8 +254,7 @@
   /**
    * \brief This function is responsible for sending error packets in case of break link to next hop
    */
-  void SendUnreachError (Ipv4Address errorHop, Ipv4Address destination, Ipv4Address originalDst, uint8_t salvage, uint8_t protocol);
-  /**
+  void SendUnreachError (Ipv4Address unreachNode, Ipv4Address destination, Ipv4Address originalDst, uint8_t salvage, uint8_t protocol);  /**
    * \brief This function is responsible for forwarding error packets along the route
    */
   void ForwardErrPacket (DsrOptionRerrUnreachHeader &rerr,
@@ -304,6 +303,11 @@
    */
   bool PassiveEntryCheck (Ptr<Packet> packet, Ipv4Address source, Ipv4Address destination, uint8_t segsLeft,
                           uint16_t fragmentOffset, uint16_t identification, bool saveEntry);
+
+  /**
+  * \brief Cancel all the packet timers
+  */
+  void CancelPacketAllTimer (MaintainBuffEntry & mb);
   /**
    * \brief Cancel the passive timer
    */
@@ -752,6 +756,8 @@
 
   GraReply m_graReply;                                  ///< The gratuitous route reply.
 
+  DsrNetworkQueue m_networkQueue;                       ///< The network queue.
+
   std::vector<Ipv4Address> m_clearList;                 ///< The node that is clear to send packet to
 
   std::vector<Ipv4Address> m_addresses;                 ///< The bind ipv4 addresses with next hop, src, destination address in sequence
diff -Naur ns-3.19/src/dsr/model/dsr-rreq-table.cc ns-3.20/src/dsr/model/dsr-rreq-table.cc
--- ns-3.19/src/dsr/model/dsr-rreq-table.cc	2014-06-17 10:34:00.351637333 -0700
+++ ns-3.20/src/dsr/model/dsr-rreq-table.cc	2014-06-17 10:33:13.683997582 -0700
@@ -39,8 +39,7 @@
 namespace ns3 {
 namespace dsr {
 
-NS_OBJECT_ENSURE_REGISTERED (RreqTable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RreqTable);
 
 TypeId RreqTable::GetTypeId ()
 {
diff -Naur ns-3.19/src/dsr/model/dsr-rsendbuff.cc ns-3.20/src/dsr/model/dsr-rsendbuff.cc
--- ns-3.19/src/dsr/model/dsr-rsendbuff.cc	2014-06-17 10:34:00.352637325 -0700
+++ ns-3.20/src/dsr/model/dsr-rsendbuff.cc	2014-06-17 10:33:13.684997575 -0700
@@ -111,7 +111,7 @@
       if (i->GetDestination () == dst)
         {
           entry = *i;
-          m_sendBuffer.erase (i);
+          i = m_sendBuffer.erase (i);
           NS_LOG_DEBUG ("Packet size while dequeuing " << entry.GetPacket ()->GetSize ());
           return true;
         }
diff -Naur ns-3.19/src/dsr/test/dsr-test-suite.cc ns-3.20/src/dsr/test/dsr-test-suite.cc
--- ns-3.19/src/dsr/test/dsr-test-suite.cc	2014-06-17 10:34:00.353637318 -0700
+++ ns-3.20/src/dsr/test/dsr-test-suite.cc	2014-06-17 10:33:13.685997567 -0700
@@ -49,8 +49,8 @@
 #include "ns3/dsr-main-helper.h"
 #include "ns3/dsr-helper.h"
 
-namespace ns3 {
-namespace dsr {
+using namespace ns3;
+using namespace dsr;
 
 // -----------------------------------------------------------------------------
 // / Unit test for DSR Fixed Size Header
@@ -519,5 +519,3 @@
     AddTestCase (new DsrSendBuffTest, TestCase::QUICK);
   }
 } g_dsrTestSuite;
-} // namespace dsr
-} // namespace ns3
diff -Naur ns-3.19/src/emu/bindings/modulegen__gcc_ILP32.py ns-3.20/src/emu/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/emu/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/src/emu/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.689997536 -0700
@@ -105,7 +105,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -118,6 +118,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -130,6 +132,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## emu-helper.h (module 'emu'): ns3::EmuHelper [class]
@@ -268,12 +272,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -336,6 +340,7 @@
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -766,6 +771,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -778,6 +787,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2362,6 +2375,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2559,62 +2580,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2623,6 +2600,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2663,6 +2642,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3060,13 +3041,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3093,6 +3076,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4225,10 +4213,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/emu/bindings/modulegen__gcc_LP64.py ns-3.20/src/emu/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/emu/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.359637271 -0700
+++ ns-3.20/src/emu/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.692997513 -0700
@@ -105,7 +105,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -118,6 +118,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -130,6 +132,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## emu-helper.h (module 'emu'): ns3::EmuHelper [class]
@@ -268,12 +272,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -336,6 +340,7 @@
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -766,6 +771,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -778,6 +787,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2362,6 +2375,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2559,62 +2580,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2623,6 +2600,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2663,6 +2642,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3060,13 +3041,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3093,6 +3076,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4225,10 +4213,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/emu/examples/waf ns-3.20/src/emu/examples/waf
--- ns-3.19/src/emu/examples/waf	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/emu/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/emu/model/emu-net-device.cc ns-3.20/src/emu/model/emu-net-device.cc
--- ns-3.19/src/emu/model/emu-net-device.cc	2014-06-17 10:34:00.378637125 -0700
+++ ns-3.20/src/emu/model/emu-net-device.cc	2014-06-17 10:33:13.696997482 -0700
@@ -55,8 +55,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (EmuNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EmuNetDevice);
 
 #define EMU_MAGIC 65867
 
diff -Naur ns-3.19/src/emu/waf ns-3.20/src/emu/waf
--- ns-3.19/src/emu/waf	2014-06-17 10:34:00.380637109 -0700
+++ ns-3.20/src/emu/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/energy/bindings/modulegen__gcc_ILP32.py ns-3.20/src/energy/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/energy/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.384637079 -0700
+++ ns-3.20/src/energy/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.702997436 -0700
@@ -110,6 +110,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -136,6 +138,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper [class]
     module.add_class('BasicEnergySourceHelper', parent=root_module['ns3::EnergySourceHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -272,19 +276,19 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource [class]
     module.add_class('BasicEnergySource', parent=root_module['ns3::EnergySource'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -313,12 +317,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -379,6 +383,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -706,6 +711,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -718,6 +727,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2087,6 +2100,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -2556,62 +2577,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2620,6 +2597,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2660,6 +2639,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3BasicEnergySourceHelper_methods(root_module, cls):
@@ -2909,13 +2890,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2942,6 +2925,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3713,6 +3701,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -5121,10 +5114,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3RvBatteryModel_methods(root_module, cls):
diff -Naur ns-3.19/src/energy/bindings/modulegen__gcc_LP64.py ns-3.20/src/energy/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/energy/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.387637055 -0700
+++ ns-3.20/src/energy/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.705997412 -0700
@@ -110,6 +110,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -136,6 +138,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper [class]
     module.add_class('BasicEnergySourceHelper', parent=root_module['ns3::EnergySourceHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -272,19 +276,19 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource [class]
     module.add_class('BasicEnergySource', parent=root_module['ns3::EnergySource'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -313,12 +317,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -379,6 +383,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -706,6 +711,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -718,6 +727,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2087,6 +2100,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -2556,62 +2577,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2620,6 +2597,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2660,6 +2639,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3BasicEnergySourceHelper_methods(root_module, cls):
@@ -2909,13 +2890,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2942,6 +2925,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3713,6 +3701,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -5121,10 +5114,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3RvBatteryModel_methods(root_module, cls):
diff -Naur ns-3.19/src/energy/helper/basic-energy-source-helper.cc ns-3.20/src/energy/helper/basic-energy-source-helper.cc
--- ns-3.19/src/energy/helper/basic-energy-source-helper.cc	2014-06-17 10:34:00.389637040 -0700
+++ ns-3.20/src/energy/helper/basic-energy-source-helper.cc	2014-06-17 10:33:13.707997397 -0700
@@ -42,13 +42,7 @@
 BasicEnergySourceHelper::DoInstall (Ptr<Node> node) const
 {
   NS_ASSERT (node != NULL);
-  // check if energy source already exists
-  Ptr<EnergySource> source = node->GetObject<EnergySource> ();
-  if (source != NULL)
-    {
-      NS_FATAL_ERROR ("Energy source already installed!");
-    }
-  source = m_basicEnergySource.Create<EnergySource> ();
+  Ptr<EnergySource> source = m_basicEnergySource.Create<EnergySource> ();
   NS_ASSERT (source != NULL);
   source->SetNode (node);
   return source;
diff -Naur ns-3.19/src/energy/helper/energy-model-helper.h ns-3.20/src/energy/helper/energy-model-helper.h
--- ns-3.19/src/energy/helper/energy-model-helper.h	2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/src/energy/helper/energy-model-helper.h	2014-06-17 10:33:13.708997389 -0700
@@ -38,8 +38,8 @@
  * \ingroup energy
  * \brief Creates EnergySource objects.
  *
- * This class creates and installs an energy source onto network nodes. Only a
- * single source can exist on a network node.
+ * This class creates and installs an energy source onto network nodes.
+ * Multiple sources can exist on a network node.
  *
  */
 class EnergySourceHelper
diff -Naur ns-3.19/src/energy/helper/rv-battery-model-helper.cc ns-3.20/src/energy/helper/rv-battery-model-helper.cc
--- ns-3.19/src/energy/helper/rv-battery-model-helper.cc	2014-06-17 10:34:00.391637024 -0700
+++ ns-3.20/src/energy/helper/rv-battery-model-helper.cc	2014-06-17 10:33:13.709997382 -0700
@@ -42,13 +42,7 @@
 RvBatteryModelHelper::DoInstall (Ptr<Node> node) const
 {
   NS_ASSERT (node != NULL);
-  // check if energy source already exists
-  Ptr<EnergySource> source = node->GetObject<EnergySource> ();
-  if (source != NULL)
-    {
-      NS_FATAL_ERROR ("Energy source already installed!");
-    }
-  source = m_rvBatteryModel.Create<EnergySource> ();
+  Ptr<EnergySource> source = m_rvBatteryModel.Create<EnergySource> ();
   NS_ASSERT (source != NULL);
   source->SetNode (node);
   return source;
diff -Naur ns-3.19/src/energy/model/basic-energy-source.cc ns-3.20/src/energy/model/basic-energy-source.cc
--- ns-3.19/src/energy/model/basic-energy-source.cc	2014-06-17 10:34:00.392637016 -0700
+++ ns-3.20/src/energy/model/basic-energy-source.cc	2014-06-17 10:33:13.710997374 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BasicEnergySource)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BasicEnergySource);
 
 TypeId
 BasicEnergySource::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/device-energy-model.cc ns-3.20/src/energy/model/device-energy-model.cc
--- ns-3.19/src/energy/model/device-energy-model.cc	2014-06-17 10:34:00.393637009 -0700
+++ ns-3.20/src/energy/model/device-energy-model.cc	2014-06-17 10:33:13.711997366 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DeviceEnergyModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DeviceEnergyModel);
 
 TypeId
 DeviceEnergyModel::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/energy-source.cc ns-3.20/src/energy/model/energy-source.cc
--- ns-3.19/src/energy/model/energy-source.cc	2014-06-17 10:34:00.394637001 -0700
+++ ns-3.20/src/energy/model/energy-source.cc	2014-06-17 10:33:13.712997359 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (EnergySource)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EnergySource);
 
 TypeId
 EnergySource::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/li-ion-energy-source.cc ns-3.20/src/energy/model/li-ion-energy-source.cc
--- ns-3.19/src/energy/model/li-ion-energy-source.cc	2014-06-17 10:34:00.395636994 -0700
+++ ns-3.20/src/energy/model/li-ion-energy-source.cc	2014-06-17 10:33:13.713997351 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LiIonEnergySource)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LiIonEnergySource);
 
 TypeId
 LiIonEnergySource::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/rv-battery-model.cc ns-3.20/src/energy/model/rv-battery-model.cc
--- ns-3.19/src/energy/model/rv-battery-model.cc	2014-06-17 10:34:00.396636986 -0700
+++ ns-3.20/src/energy/model/rv-battery-model.cc	2014-06-17 10:33:13.713997351 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RvBatteryModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RvBatteryModel);
 
 TypeId
 RvBatteryModel::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/simple-device-energy-model.cc ns-3.20/src/energy/model/simple-device-energy-model.cc
--- ns-3.19/src/energy/model/simple-device-energy-model.cc	2014-06-17 10:34:00.396636986 -0700
+++ ns-3.20/src/energy/model/simple-device-energy-model.cc	2014-06-17 10:33:13.714997343 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SimpleDeviceEnergyModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SimpleDeviceEnergyModel);
 
 TypeId
 SimpleDeviceEnergyModel::GetTypeId (void)
diff -Naur ns-3.19/src/energy/model/wifi-radio-energy-model.cc ns-3.20/src/energy/model/wifi-radio-energy-model.cc
--- ns-3.19/src/energy/model/wifi-radio-energy-model.cc	2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/src/energy/model/wifi-radio-energy-model.cc	2014-06-17 10:33:13.715997336 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiRadioEnergyModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiRadioEnergyModel);
 
 TypeId
 WifiRadioEnergyModel::GetTypeId (void)
diff -Naur ns-3.19/src/energy/test/li-ion-energy-source-test.cc ns-3.20/src/energy/test/li-ion-energy-source-test.cc
--- ns-3.19/src/energy/test/li-ion-energy-source-test.cc	2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/src/energy/test/li-ion-energy-source-test.cc	2014-06-17 10:33:13.716997328 -0700
@@ -25,10 +25,9 @@
 #include "ns3/node.h"
 #include "ns3/simulator.h"
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("LiIonEnergySourceTestSuite")
-  ;
+NS_LOG_COMPONENT_DEFINE ("LiIonEnergySourceTestSuite");
 
 class LiIonEnergyTestCase : public TestCase
 {
@@ -93,5 +92,3 @@
 
 // create an instance of the test suite
 static LiIonEnergySourceTestSuite g_liIonEnergySourceTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/fd-net-device/bindings/modulegen_customizations.py ns-3.20/src/fd-net-device/bindings/modulegen_customizations.py
--- ns-3.19/src/fd-net-device/bindings/modulegen_customizations.py	2014-06-17 10:34:00.406636909 -0700
+++ ns-3.20/src/fd-net-device/bindings/modulegen_customizations.py	2014-06-17 10:33:13.724997266 -0700
@@ -5,7 +5,7 @@
 
     if 'EmuFdNetDevice' not in enabled_features:
         if 'ns3::EmuFdNetDeviceHelper'in root_module:
-	    root_module.classes.remove(root_module['ns3::EmuFdNetDeviceHelper'])
+            root_module.classes.remove(root_module['ns3::EmuFdNetDeviceHelper'])
 
     if 'TapFdNetDevice' not in enabled_features:
         if 'ns3::TapFdNetDeviceHelper'in root_module:
diff -Naur ns-3.19/src/fd-net-device/bindings/modulegen__gcc_ILP32.py ns-3.20/src/fd-net-device/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/fd-net-device/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.402636940 -0700
+++ ns-3.20/src/fd-net-device/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.720997297 -0700
@@ -105,7 +105,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -120,6 +120,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -132,6 +134,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## fd-net-device-helper.h (module 'fd-net-device'): ns3::FdNetDeviceHelper [class]
@@ -280,12 +284,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -349,6 +353,7 @@
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -784,6 +789,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -796,6 +805,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2411,6 +2424,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2608,62 +2629,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2672,6 +2649,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2712,6 +2691,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3122,13 +3103,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3155,6 +3138,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4337,10 +4325,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TapFdNetDeviceHelper_methods(root_module, cls):
diff -Naur ns-3.19/src/fd-net-device/bindings/modulegen__gcc_LP64.py ns-3.20/src/fd-net-device/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/fd-net-device/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.405636916 -0700
+++ ns-3.20/src/fd-net-device/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.723997274 -0700
@@ -105,7 +105,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -120,6 +120,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -132,6 +134,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## fd-net-device-helper.h (module 'fd-net-device'): ns3::FdNetDeviceHelper [class]
@@ -280,12 +284,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -349,6 +353,7 @@
     register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -784,6 +789,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -796,6 +805,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2411,6 +2424,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2608,62 +2629,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2672,6 +2649,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2712,6 +2691,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3122,13 +3103,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3155,6 +3138,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4337,10 +4325,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TapFdNetDeviceHelper_methods(root_module, cls):
diff -Naur ns-3.19/src/fd-net-device/examples/fd-tap-ping.cc ns-3.20/src/fd-net-device/examples/fd-tap-ping.cc
--- ns-3.19/src/fd-net-device/examples/fd-tap-ping.cc	2014-06-17 10:34:00.408636893 -0700
+++ ns-3.20/src/fd-net-device/examples/fd-tap-ping.cc	2014-06-17 10:33:13.727997243 -0700
@@ -37,9 +37,9 @@
 //   |       1.2.3.4                 |     |
 //   +-------------------------------|-----+ 
 //                                   |
-//                                   |
-//                                   ------------ (Internet) -----                             
-//
+//                                   |                             +-------------+
+//                                   ------------ (Internet) ----- | Remote host |                            
+//                                                                 +-------------+
 //
 // To use this example:
 //  1) ns-3 will create the TAP device for you in the host machine.
@@ -47,15 +47,15 @@
 //     for the TAP device and the ns-3 FdNetDevice.
 //
 //  2) Take into consideration that this experiment requires the host to be able
-//     to forward the traffic generated by the simulation to the Internet.
+//     to forward traffic generated by the simulation to the Internet.
 //     So for Linux systems, make sure to configure:
 //     # echo 1 > /proc/sys/net/ipv4/ip_forward
 //
-//     Also enable natting so the traffic sent on the Internet are able to 
-//     reach back the TAP. 
+//     Also enable natting so the ICMP replys from the remote host can reach 
+//     back the TAP. 
 //     - TAP-network-address is the same as 'tapNetwork'
-//     - net-device-ip is be the IP address of the network device connected to the internet
-//     # iptables -t nat -A POSTROUTING -s <TAP-network-addres>/24 -j SNAT --to-source <net-device-ip>
+//     - TAP-network-mask is the same as 'tapMask'
+//     # iptables -t nat -A POSTROUTING -s <TAP-network-address>/<TAP-network-mask> -j MASQUERADE
 //
 //  3) Before running the example make sure that the tap creator binary has root suid.
 //     If the --enable-sudo option was used to configure ns-3 with waf, then the following
diff -Naur ns-3.19/src/fd-net-device/examples/waf ns-3.20/src/fd-net-device/examples/waf
--- ns-3.19/src/fd-net-device/examples/waf	2014-06-17 10:34:00.410636878 -0700
+++ ns-3.20/src/fd-net-device/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/fd-net-device/model/fd-net-device.cc ns-3.20/src/fd-net-device/model/fd-net-device.cc
--- ns-3.19/src/fd-net-device/model/fd-net-device.cc	2014-06-17 10:34:00.416636831 -0700
+++ ns-3.20/src/fd-net-device/model/fd-net-device.cc	2014-06-17 10:33:13.734997189 -0700
@@ -74,8 +74,7 @@
   return FdReader::Data (buf, len);
 }
 
-NS_OBJECT_ENSURE_REGISTERED (FdNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FdNetDevice);
 
 TypeId
 FdNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/fd-net-device/waf ns-3.20/src/fd-net-device/waf
--- ns-3.19/src/fd-net-device/waf	2014-06-17 10:34:00.417636824 -0700
+++ ns-3.20/src/fd-net-device/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/flow-monitor/bindings/modulegen__gcc_ILP32.py ns-3.20/src/flow-monitor/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/flow-monitor/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.422636785 -0700
+++ ns-3.20/src/flow-monitor/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.739997150 -0700
@@ -60,34 +60,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -144,14 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -164,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -262,10 +230,6 @@
     module.add_class('FlowProbe', parent=root_module['ns3::Object'])
     ## flow-probe.h (module 'flow-monitor'): ns3::FlowProbe::FlowStats [struct]
     module.add_class('FlowStats', outer_class=root_module['ns3::FlowProbe'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -294,12 +258,26 @@
     module.add_class('Ipv4Route', import_from_module='ns.internet', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
     ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol [class]
     module.add_class('Ipv4RoutingProtocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv6.h (module 'internet'): ns3::Ipv6 [class]
+    module.add_class('Ipv6', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker [class]
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier [class]
+    module.add_class('Ipv6FlowClassifier', parent=root_module['ns3::FlowClassifier'])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple [struct]
+    module.add_class('FiveTuple', outer_class=root_module['ns3::Ipv6FlowClassifier'])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe [class]
+    module.add_class('Ipv6FlowProbe', parent=root_module['ns3::FlowProbe'])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_NO_ROUTE', 'DROP_TTL_EXPIRE', 'DROP_BAD_CHECKSUM', 'DROP_QUEUE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT', 'DROP_INVALID_REASON'], outer_class=root_module['ns3::Ipv6FlowProbe'])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
+    module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
+    module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -330,18 +308,18 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
-    module.add_container('std::vector< unsigned long long >', 'long long unsigned int', container_type='vector')
-    module.add_container('std::map< unsigned int, ns3::FlowMonitor::FlowStats >', ('unsigned int', 'ns3::FlowMonitor::FlowStats'), container_type='map')
-    module.add_container('std::vector< ns3::Ptr< ns3::FlowProbe > >', 'ns3::Ptr< ns3::FlowProbe >', container_type='vector')
-    module.add_container('std::map< unsigned int, ns3::FlowProbe::FlowStats >', ('unsigned int', 'ns3::FlowProbe::FlowStats'), container_type='map')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('uint32_t', 'ns3::FlowPacketId')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::FlowPacketId*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::FlowPacketId&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::FlowId')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::FlowId*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::FlowId&')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
+    module.add_container('std::vector< unsigned long long >', 'long long unsigned int', container_type=u'vector')
+    module.add_container('std::map< unsigned int, ns3::FlowMonitor::FlowStats >', ('unsigned int', 'ns3::FlowMonitor::FlowStats'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ptr< ns3::FlowProbe > >', 'ns3::Ptr< ns3::FlowProbe >', container_type=u'vector')
+    module.add_container('std::map< unsigned int, ns3::FlowProbe::FlowStats >', ('unsigned int', 'ns3::FlowProbe::FlowStats'), container_type=u'map')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::FlowPacketId')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::FlowPacketId*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::FlowPacketId&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::FlowId')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::FlowId*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::FlowId&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -364,12 +342,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -407,13 +385,6 @@
     register_Ns3Histogram_methods(root_module, root_module['ns3::Histogram'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
@@ -435,8 +406,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -484,7 +454,6 @@
     register_Ns3FlowMonitorFlowStats_methods(root_module, root_module['ns3::FlowMonitor::FlowStats'])
     register_Ns3FlowProbe_methods(root_module, root_module['ns3::FlowProbe'])
     register_Ns3FlowProbeFlowStats_methods(root_module, root_module['ns3::FlowProbe::FlowStats'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -497,9 +466,14 @@
     register_Ns3Ipv4MulticastRoute_methods(root_module, root_module['ns3::Ipv4MulticastRoute'])
     register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
+    register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
+    register_Ns3Ipv6FlowClassifier_methods(root_module, root_module['ns3::Ipv6FlowClassifier'])
+    register_Ns3Ipv6FlowClassifierFiveTuple_methods(root_module, root_module['ns3::Ipv6FlowClassifier::FiveTuple'])
+    register_Ns3Ipv6FlowProbe_methods(root_module, root_module['ns3::Ipv6FlowProbe'])
+    register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
+    register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
@@ -766,6 +740,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -778,6 +756,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1045,18 +1027,12 @@
     return
 
 def register_Ns3FlowMonitorHelper_methods(root_module, cls):
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::FlowMonitorHelper::FlowMonitorHelper(ns3::FlowMonitorHelper const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowMonitorHelper const &', 'arg0')])
     ## flow-monitor-helper.h (module 'flow-monitor'): ns3::FlowMonitorHelper::FlowMonitorHelper() [constructor]
     cls.add_constructor([])
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier() [member function]
-    cls.add_method('GetClassifier', 
-                   'ns3::Ptr< ns3::FlowClassifier >', 
-                   [])
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::GetMonitor() [member function]
-    cls.add_method('GetMonitor', 
-                   'ns3::Ptr< ns3::FlowMonitor >', 
-                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SetMonitorAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetMonitorAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
     ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::Install(ns3::NodeContainer nodes) [member function]
     cls.add_method('Install', 
                    'ns3::Ptr< ns3::FlowMonitor >', 
@@ -1069,10 +1045,30 @@
     cls.add_method('InstallAll', 
                    'ns3::Ptr< ns3::FlowMonitor >', 
                    [])
-    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SetMonitorAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetMonitorAttribute', 
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::GetMonitor() [member function]
+    cls.add_method('GetMonitor', 
+                   'ns3::Ptr< ns3::FlowMonitor >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier() [member function]
+    cls.add_method('GetClassifier', 
+                   'ns3::Ptr< ns3::FlowClassifier >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier6() [member function]
+    cls.add_method('GetClassifier6', 
+                   'ns3::Ptr< ns3::FlowClassifier >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SerializeToXmlStream(std::ostream & os, int indent, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlStream', 
                    'void', 
-                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+                   [param('std::ostream &', 'os'), param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
+    ## flow-monitor-helper.h (module 'flow-monitor'): std::string ns3::FlowMonitorHelper::SerializeToXmlString(int indent, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlString', 
+                   'std::string', 
+                   [param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SerializeToXmlFile(std::string fileName, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlFile', 
+                   'void', 
+                   [param('std::string', 'fileName'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
     return
 
 def register_Ns3Hasher_methods(root_module, cls):
@@ -1234,55 +1230,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1751,6 +1698,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -2378,88 +2330,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -2659,62 +2535,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2723,6 +2555,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2763,6 +2597,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3926,13 +3762,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3959,6 +3797,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4380,6 +4223,10 @@
     cls.add_constructor([param('ns3::FlowMonitor const &', 'arg0')])
     ## flow-monitor.h (module 'flow-monitor'): ns3::FlowMonitor::FlowMonitor() [constructor]
     cls.add_constructor([])
+    ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::AddFlowClassifier(ns3::Ptr<ns3::FlowClassifier> classifier) [member function]
+    cls.add_method('AddFlowClassifier', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::FlowClassifier >', 'classifier')])
     ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::AddProbe(ns3::Ptr<ns3::FlowProbe> probe) [member function]
     cls.add_method('AddProbe', 
                    'void', 
@@ -4440,10 +4287,6 @@
     cls.add_method('SerializeToXmlString', 
                    'std::string', 
                    [param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
-    ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::SetFlowClassifier(ns3::Ptr<ns3::FlowClassifier> classifier) [member function]
-    cls.add_method('SetFlowClassifier', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::FlowClassifier >', 'classifier')])
     ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::Start(ns3::Time const & time) [member function]
     cls.add_method('Start', 
                    'void', 
@@ -4563,63 +4406,6 @@
     cls.add_instance_attribute('packetsDropped', 'std::vector< unsigned int >', is_const=False)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -4990,6 +4776,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -5283,6 +5074,170 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3Ipv6_methods(root_module, cls):
+    ## ipv6.h (module 'internet'): ns3::Ipv6::Ipv6(ns3::Ipv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6 const &', 'arg0')])
+    ## ipv6.h (module 'internet'): ns3::Ipv6::Ipv6() [constructor]
+    cls.add_constructor([])
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::AddAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6::GetAddress(uint32_t interface, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv6InterfaceAddress', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForAddress(ns3::Ipv6Address address) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) const [member function]
+    cls.add_method('GetInterfaceForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForPrefix(ns3::Ipv6Address address, ns3::Ipv6Prefix mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'mask')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint16_t ns3::Ipv6::GetMetric(uint32_t interface) const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint16_t ns3::Ipv6::GetMtu(uint32_t interface) const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::GetNAddresses(uint32_t interface) const [member function]
+    cls.add_method('GetNAddresses', 
+                   'uint32_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6::GetNetDevice(uint32_t interface) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): static ns3::TypeId ns3::Ipv6::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::IsForwarding(uint32_t interface) const [member function]
+    cls.add_method('IsForwarding', 
+                   'bool', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::IsUp(uint32_t interface) const [member function]
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::RegisterExtensions() [member function]
+    cls.add_method('RegisterExtensions', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::RegisterOptions() [member function]
+    cls.add_method('RegisterOptions', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::RemoveAddress(uint32_t interface, uint32_t addressIndex) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::RemoveAddress(uint32_t interface, ns3::Ipv6Address address) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetDown(uint32_t interface) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetForwarding(uint32_t interface, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('bool', 'val')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetMetric(uint32_t interface, uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('uint16_t', 'metric')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetRoutingProtocol(ns3::Ptr<ns3::Ipv6RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6RoutingProtocol >', 'routingProtocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetUp(uint32_t interface) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
+    cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetMtuDiscover() const [member function]
+    cls.add_method('GetMtuDiscover', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetMtuDiscover(bool mtuDiscover) [member function]
+    cls.add_method('SetMtuDiscover', 
+                   'void', 
+                   [param('bool', 'mtuDiscover')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
     cls.add_constructor([])
@@ -5323,149 +5278,327 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
+def register_Ns3Ipv6FlowClassifier_methods(root_module, cls):
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::Ipv6FlowClassifier() [constructor]
     cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): bool ns3::Ipv6FlowClassifier::Classify(ns3::Ipv6Header const & ipHeader, ns3::Ptr<const ns3::Packet> ipPayload, uint32_t * out_flowId, uint32_t * out_packetId) [member function]
+    cls.add_method('Classify', 
                    'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
+                   [param('ns3::Ipv6Header const &', 'ipHeader'), param('ns3::Ptr< ns3::Packet const >', 'ipPayload'), param('uint32_t *', 'out_flowId'), param('uint32_t *', 'out_packetId')])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple ns3::Ipv6FlowClassifier::FindFlow(ns3::FlowId flowId) const [member function]
+    cls.add_method('FindFlow', 
+                   'ns3::Ipv6FlowClassifier::FiveTuple', 
+                   [param('ns3::FlowId', 'flowId')], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): void ns3::Ipv6FlowClassifier::SerializeToXmlStream(std::ostream & os, int indent) const [member function]
+    cls.add_method('SerializeToXmlStream', 
+                   'void', 
+                   [param('std::ostream &', 'os'), param('int', 'indent')], 
+                   is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv6FlowClassifierFiveTuple_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::FiveTuple() [constructor]
+    cls.add_constructor([])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::FiveTuple(ns3::Ipv6FlowClassifier::FiveTuple const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6FlowClassifier::FiveTuple const &', 'arg0')])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::destinationAddress [variable]
+    cls.add_instance_attribute('destinationAddress', 'ns3::Ipv6Address', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::destinationPort [variable]
+    cls.add_instance_attribute('destinationPort', 'uint16_t', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::protocol [variable]
+    cls.add_instance_attribute('protocol', 'uint8_t', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::sourceAddress [variable]
+    cls.add_instance_attribute('sourceAddress', 'ns3::Ipv6Address', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::sourcePort [variable]
+    cls.add_instance_attribute('sourcePort', 'uint16_t', is_const=False)
+    return
+
+def register_Ns3Ipv6FlowProbe_methods(root_module, cls):
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe::Ipv6FlowProbe(ns3::Ptr<ns3::FlowMonitor> monitor, ns3::Ptr<ns3::Ipv6FlowClassifier> classifier, ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::FlowMonitor >', 'monitor'), param('ns3::Ptr< ns3::Ipv6FlowClassifier >', 'classifier'), param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): void ns3::Ipv6FlowProbe::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
                    [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
+    cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
+    ## ipv6-l3-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv6L3Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
                    [], 
+                   is_static=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::Ipv6L3Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Insert(ns3::Ptr<ns3::IpL4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::IpL4Protocol >', 'protocol')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Remove(ns3::Ptr<ns3::IpL4Protocol> protocol) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::IpL4Protocol >', 'protocol')])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6L3Protocol::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
                    is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
+    cls.add_method('CreateRawSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DeleteRawSocket(ns3::Ptr<ns3::Socket> socket) [member function]
+    cls.add_method('DeleteRawSocket', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTtl(uint8_t ttl) [member function]
+    cls.add_method('SetDefaultTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTclass(uint8_t tclass) [member function]
+    cls.add_method('SetDefaultTclass', 
+                   'void', 
+                   [param('uint8_t', 'tclass')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<const ns3::Packet> p, uint16_t protocol, ns3::Address const & from, ns3::Address const & to, ns3::NetDevice::PacketType packetType) [member function]
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet const >', 'p'), param('uint16_t', 'protocol'), param('ns3::Address const &', 'from'), param('ns3::Address const &', 'to'), param('ns3::NetDevice::PacketType', 'packetType')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv6Address source, ns3::Ipv6Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv6Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv6Address', 'source'), param('ns3::Ipv6Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv6Route >', 'route')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetRoutingProtocol(ns3::Ptr<ns3::Ipv6RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6RoutingProtocol >', 'routingProtocol')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6L3Protocol::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
                    [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv6Interface> ns3::Ipv6L3Protocol::GetInterface(uint32_t i) const [member function]
+    cls.add_method('GetInterface', 
+                   'ns3::Ptr< ns3::Ipv6Interface >', 
+                   [param('uint32_t', 'i')], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
                    [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForAddress(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForPrefix(ns3::Ipv6Address addr, ns3::Ipv6Prefix mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'addr'), param('ns3::Ipv6Prefix', 'mask')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) const [member function]
+    cls.add_method('GetInterfaceForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::AddAddress(uint32_t i, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6L3Protocol::GetAddress(uint32_t interfaceIndex, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv6InterfaceAddress', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::GetNAddresses(uint32_t interface) const [member function]
     cls.add_method('GetNAddresses', 
                    'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::RemoveAddress(uint32_t interfaceIndex, uint32_t addressIndex) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::RemoveAddress(uint32_t interfaceIndex, ns3::Ipv6Address address) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interfaceIndex'), param('ns3::Ipv6Address', 'address')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetMetric(uint32_t i, uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('uint16_t', 'metric')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv6L3Protocol::GetMetric(uint32_t i) const [member function]
+    cls.add_method('GetMetric', 
                    'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv6L3Protocol::GetMtu(uint32_t i) const [member function]
+    cls.add_method('GetMtu', 
                    'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::IsUp(uint32_t i) const [member function]
+    cls.add_method('IsUp', 
                    'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetUp(uint32_t i) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDown(uint32_t i) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::IsForwarding(uint32_t i) const [member function]
     cls.add_method('IsForwarding', 
                    'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetForwarding(uint32_t i, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('bool', 'val')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Icmpv6L4Protocol> ns3::Ipv6L3Protocol::GetIcmpv6() const [member function]
+    cls.add_method('GetIcmpv6', 
+                   'ns3::Ptr< ns3::Icmpv6L4Protocol >', 
                    [], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::AddAutoconfiguredAddress(uint32_t interface, ns3::Ipv6Address network, ns3::Ipv6Prefix mask, uint8_t flags, uint32_t validTime, uint32_t preferredTime, ns3::Ipv6Address defaultRouter=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('AddAutoconfiguredAddress', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'mask'), param('uint8_t', 'flags'), param('uint32_t', 'validTime'), param('uint32_t', 'preferredTime'), param('ns3::Ipv6Address', 'defaultRouter', default_value='ns3::Ipv6Address::GetZero( )')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RemoveAutoconfiguredAddress(uint32_t interface, ns3::Ipv6Address network, ns3::Ipv6Prefix mask, ns3::Ipv6Address defaultRouter) [member function]
+    cls.add_method('RemoveAutoconfiguredAddress', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'defaultRouter')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RegisterExtensions() [member function]
+    cls.add_method('RegisterExtensions', 
                    'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
+                   [], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RegisterOptions() [member function]
+    cls.add_method('RegisterOptions', 
                    'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
+                   [], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
                    'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
+    cls.add_method('DoDispose', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
                    'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
                    'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
+                   [param('bool', 'forward')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetMtuDiscover(bool mtuDiscover) [member function]
+    cls.add_method('SetMtuDiscover', 
                    'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
+                   [param('bool', 'mtuDiscover')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetMtuDiscover() const [member function]
+    cls.add_method('GetMtuDiscover', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetSendIcmpv6Redirect(bool sendIcmpv6Redirect) [member function]
+    cls.add_method('SetSendIcmpv6Redirect', 
                    'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
+                   [param('bool', 'sendIcmpv6Redirect')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetSendIcmpv6Redirect() const [member function]
+    cls.add_method('GetSendIcmpv6Redirect', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3Ipv6PmtuCache_methods(root_module, cls):
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache::Ipv6PmtuCache(ns3::Ipv6PmtuCache const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PmtuCache const &', 'arg0')])
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache::Ipv6PmtuCache() [constructor]
+    cls.add_constructor([])
+    ## ipv6-pmtu-cache.h (module 'internet'): void ns3::Ipv6PmtuCache::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
                    [], 
-                   visibility='protected', is_virtual=True)
+                   is_virtual=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): uint32_t ns3::Ipv6PmtuCache::GetPmtu(ns3::Ipv6Address dst) [member function]
+    cls.add_method('GetPmtu', 
+                   'uint32_t', 
+                   [param('ns3::Ipv6Address', 'dst')])
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Time ns3::Ipv6PmtuCache::GetPmtuValidityTime() const [member function]
+    cls.add_method('GetPmtuValidityTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): static ns3::TypeId ns3::Ipv6PmtuCache::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): void ns3::Ipv6PmtuCache::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')])
+    ## ipv6-pmtu-cache.h (module 'internet'): bool ns3::Ipv6PmtuCache::SetPmtuValidityTime(ns3::Time validity) [member function]
+    cls.add_method('SetPmtuValidityTime', 
+                   'bool', 
+                   [param('ns3::Time', 'validity')])
     return
 
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
@@ -5999,10 +6132,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/flow-monitor/bindings/modulegen__gcc_LP64.py ns-3.20/src/flow-monitor/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/flow-monitor/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.425636762 -0700
+++ ns-3.20/src/flow-monitor/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.743997119 -0700
@@ -60,34 +60,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -144,14 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -164,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -262,10 +230,6 @@
     module.add_class('FlowProbe', parent=root_module['ns3::Object'])
     ## flow-probe.h (module 'flow-monitor'): ns3::FlowProbe::FlowStats [struct]
     module.add_class('FlowStats', outer_class=root_module['ns3::FlowProbe'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -294,12 +258,26 @@
     module.add_class('Ipv4Route', import_from_module='ns.internet', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
     ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol [class]
     module.add_class('Ipv4RoutingProtocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv6.h (module 'internet'): ns3::Ipv6 [class]
+    module.add_class('Ipv6', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker [class]
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier [class]
+    module.add_class('Ipv6FlowClassifier', parent=root_module['ns3::FlowClassifier'])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple [struct]
+    module.add_class('FiveTuple', outer_class=root_module['ns3::Ipv6FlowClassifier'])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe [class]
+    module.add_class('Ipv6FlowProbe', parent=root_module['ns3::FlowProbe'])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_NO_ROUTE', 'DROP_TTL_EXPIRE', 'DROP_BAD_CHECKSUM', 'DROP_QUEUE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT', 'DROP_INVALID_REASON'], outer_class=root_module['ns3::Ipv6FlowProbe'])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
+    module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
+    module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -330,18 +308,18 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
-    module.add_container('std::vector< unsigned long >', 'long unsigned int', container_type='vector')
-    module.add_container('std::map< unsigned int, ns3::FlowMonitor::FlowStats >', ('unsigned int', 'ns3::FlowMonitor::FlowStats'), container_type='map')
-    module.add_container('std::vector< ns3::Ptr< ns3::FlowProbe > >', 'ns3::Ptr< ns3::FlowProbe >', container_type='vector')
-    module.add_container('std::map< unsigned int, ns3::FlowProbe::FlowStats >', ('unsigned int', 'ns3::FlowProbe::FlowStats'), container_type='map')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('uint32_t', 'ns3::FlowPacketId')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::FlowPacketId*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::FlowPacketId&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::FlowId')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::FlowId*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::FlowId&')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
+    module.add_container('std::vector< unsigned long >', 'long unsigned int', container_type=u'vector')
+    module.add_container('std::map< unsigned int, ns3::FlowMonitor::FlowStats >', ('unsigned int', 'ns3::FlowMonitor::FlowStats'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ptr< ns3::FlowProbe > >', 'ns3::Ptr< ns3::FlowProbe >', container_type=u'vector')
+    module.add_container('std::map< unsigned int, ns3::FlowProbe::FlowStats >', ('unsigned int', 'ns3::FlowProbe::FlowStats'), container_type=u'map')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::FlowPacketId')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::FlowPacketId*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::FlowPacketId&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::FlowId')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::FlowId*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::FlowId&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -364,12 +342,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -407,13 +385,6 @@
     register_Ns3Histogram_methods(root_module, root_module['ns3::Histogram'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
@@ -435,8 +406,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -484,7 +454,6 @@
     register_Ns3FlowMonitorFlowStats_methods(root_module, root_module['ns3::FlowMonitor::FlowStats'])
     register_Ns3FlowProbe_methods(root_module, root_module['ns3::FlowProbe'])
     register_Ns3FlowProbeFlowStats_methods(root_module, root_module['ns3::FlowProbe::FlowStats'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -497,9 +466,14 @@
     register_Ns3Ipv4MulticastRoute_methods(root_module, root_module['ns3::Ipv4MulticastRoute'])
     register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
+    register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
+    register_Ns3Ipv6FlowClassifier_methods(root_module, root_module['ns3::Ipv6FlowClassifier'])
+    register_Ns3Ipv6FlowClassifierFiveTuple_methods(root_module, root_module['ns3::Ipv6FlowClassifier::FiveTuple'])
+    register_Ns3Ipv6FlowProbe_methods(root_module, root_module['ns3::Ipv6FlowProbe'])
+    register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
+    register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
@@ -766,6 +740,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -778,6 +756,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1045,18 +1027,12 @@
     return
 
 def register_Ns3FlowMonitorHelper_methods(root_module, cls):
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::FlowMonitorHelper::FlowMonitorHelper(ns3::FlowMonitorHelper const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowMonitorHelper const &', 'arg0')])
     ## flow-monitor-helper.h (module 'flow-monitor'): ns3::FlowMonitorHelper::FlowMonitorHelper() [constructor]
     cls.add_constructor([])
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier() [member function]
-    cls.add_method('GetClassifier', 
-                   'ns3::Ptr< ns3::FlowClassifier >', 
-                   [])
-    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::GetMonitor() [member function]
-    cls.add_method('GetMonitor', 
-                   'ns3::Ptr< ns3::FlowMonitor >', 
-                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SetMonitorAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetMonitorAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
     ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::Install(ns3::NodeContainer nodes) [member function]
     cls.add_method('Install', 
                    'ns3::Ptr< ns3::FlowMonitor >', 
@@ -1069,10 +1045,30 @@
     cls.add_method('InstallAll', 
                    'ns3::Ptr< ns3::FlowMonitor >', 
                    [])
-    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SetMonitorAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetMonitorAttribute', 
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowMonitor> ns3::FlowMonitorHelper::GetMonitor() [member function]
+    cls.add_method('GetMonitor', 
+                   'ns3::Ptr< ns3::FlowMonitor >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier() [member function]
+    cls.add_method('GetClassifier', 
+                   'ns3::Ptr< ns3::FlowClassifier >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): ns3::Ptr<ns3::FlowClassifier> ns3::FlowMonitorHelper::GetClassifier6() [member function]
+    cls.add_method('GetClassifier6', 
+                   'ns3::Ptr< ns3::FlowClassifier >', 
+                   [])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SerializeToXmlStream(std::ostream & os, int indent, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlStream', 
                    'void', 
-                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+                   [param('std::ostream &', 'os'), param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
+    ## flow-monitor-helper.h (module 'flow-monitor'): std::string ns3::FlowMonitorHelper::SerializeToXmlString(int indent, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlString', 
+                   'std::string', 
+                   [param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
+    ## flow-monitor-helper.h (module 'flow-monitor'): void ns3::FlowMonitorHelper::SerializeToXmlFile(std::string fileName, bool enableHistograms, bool enableProbes) [member function]
+    cls.add_method('SerializeToXmlFile', 
+                   'void', 
+                   [param('std::string', 'fileName'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
     return
 
 def register_Ns3Hasher_methods(root_module, cls):
@@ -1234,55 +1230,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1751,6 +1698,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -2378,88 +2330,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -2659,62 +2535,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2723,6 +2555,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2763,6 +2597,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3926,13 +3762,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3959,6 +3797,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4380,6 +4223,10 @@
     cls.add_constructor([param('ns3::FlowMonitor const &', 'arg0')])
     ## flow-monitor.h (module 'flow-monitor'): ns3::FlowMonitor::FlowMonitor() [constructor]
     cls.add_constructor([])
+    ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::AddFlowClassifier(ns3::Ptr<ns3::FlowClassifier> classifier) [member function]
+    cls.add_method('AddFlowClassifier', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::FlowClassifier >', 'classifier')])
     ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::AddProbe(ns3::Ptr<ns3::FlowProbe> probe) [member function]
     cls.add_method('AddProbe', 
                    'void', 
@@ -4440,10 +4287,6 @@
     cls.add_method('SerializeToXmlString', 
                    'std::string', 
                    [param('int', 'indent'), param('bool', 'enableHistograms'), param('bool', 'enableProbes')])
-    ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::SetFlowClassifier(ns3::Ptr<ns3::FlowClassifier> classifier) [member function]
-    cls.add_method('SetFlowClassifier', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::FlowClassifier >', 'classifier')])
     ## flow-monitor.h (module 'flow-monitor'): void ns3::FlowMonitor::Start(ns3::Time const & time) [member function]
     cls.add_method('Start', 
                    'void', 
@@ -4563,63 +4406,6 @@
     cls.add_instance_attribute('packetsDropped', 'std::vector< unsigned int >', is_const=False)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -4990,6 +4776,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -5283,6 +5074,170 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3Ipv6_methods(root_module, cls):
+    ## ipv6.h (module 'internet'): ns3::Ipv6::Ipv6(ns3::Ipv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6 const &', 'arg0')])
+    ## ipv6.h (module 'internet'): ns3::Ipv6::Ipv6() [constructor]
+    cls.add_constructor([])
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::AddAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6::GetAddress(uint32_t interface, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv6InterfaceAddress', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForAddress(ns3::Ipv6Address address) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) const [member function]
+    cls.add_method('GetInterfaceForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): int32_t ns3::Ipv6::GetInterfaceForPrefix(ns3::Ipv6Address address, ns3::Ipv6Prefix mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'mask')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint16_t ns3::Ipv6::GetMetric(uint32_t interface) const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint16_t ns3::Ipv6::GetMtu(uint32_t interface) const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::GetNAddresses(uint32_t interface) const [member function]
+    cls.add_method('GetNAddresses', 
+                   'uint32_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): uint32_t ns3::Ipv6::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6::GetNetDevice(uint32_t interface) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): static ns3::TypeId ns3::Ipv6::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::IsForwarding(uint32_t interface) const [member function]
+    cls.add_method('IsForwarding', 
+                   'bool', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::IsUp(uint32_t interface) const [member function]
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::RegisterExtensions() [member function]
+    cls.add_method('RegisterExtensions', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::RegisterOptions() [member function]
+    cls.add_method('RegisterOptions', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::RemoveAddress(uint32_t interface, uint32_t addressIndex) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::RemoveAddress(uint32_t interface, ns3::Ipv6Address address) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetDown(uint32_t interface) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetForwarding(uint32_t interface, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('bool', 'val')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetMetric(uint32_t interface, uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('uint16_t', 'metric')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetRoutingProtocol(ns3::Ptr<ns3::Ipv6RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6RoutingProtocol >', 'routingProtocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetUp(uint32_t interface) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
+    cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetMtuDiscover() const [member function]
+    cls.add_method('GetMtuDiscover', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## ipv6.h (module 'internet'): void ns3::Ipv6::SetMtuDiscover(bool mtuDiscover) [member function]
+    cls.add_method('SetMtuDiscover', 
+                   'void', 
+                   [param('bool', 'mtuDiscover')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
     cls.add_constructor([])
@@ -5323,149 +5278,327 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
+def register_Ns3Ipv6FlowClassifier_methods(root_module, cls):
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::Ipv6FlowClassifier() [constructor]
     cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): bool ns3::Ipv6FlowClassifier::Classify(ns3::Ipv6Header const & ipHeader, ns3::Ptr<const ns3::Packet> ipPayload, uint32_t * out_flowId, uint32_t * out_packetId) [member function]
+    cls.add_method('Classify', 
                    'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
+                   [param('ns3::Ipv6Header const &', 'ipHeader'), param('ns3::Ptr< ns3::Packet const >', 'ipPayload'), param('uint32_t *', 'out_flowId'), param('uint32_t *', 'out_packetId')])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple ns3::Ipv6FlowClassifier::FindFlow(ns3::FlowId flowId) const [member function]
+    cls.add_method('FindFlow', 
+                   'ns3::Ipv6FlowClassifier::FiveTuple', 
+                   [param('ns3::FlowId', 'flowId')], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): void ns3::Ipv6FlowClassifier::SerializeToXmlStream(std::ostream & os, int indent) const [member function]
+    cls.add_method('SerializeToXmlStream', 
+                   'void', 
+                   [param('std::ostream &', 'os'), param('int', 'indent')], 
+                   is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv6FlowClassifierFiveTuple_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::FiveTuple() [constructor]
+    cls.add_constructor([])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::FiveTuple(ns3::Ipv6FlowClassifier::FiveTuple const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6FlowClassifier::FiveTuple const &', 'arg0')])
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::destinationAddress [variable]
+    cls.add_instance_attribute('destinationAddress', 'ns3::Ipv6Address', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::destinationPort [variable]
+    cls.add_instance_attribute('destinationPort', 'uint16_t', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::protocol [variable]
+    cls.add_instance_attribute('protocol', 'uint8_t', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::sourceAddress [variable]
+    cls.add_instance_attribute('sourceAddress', 'ns3::Ipv6Address', is_const=False)
+    ## ipv6-flow-classifier.h (module 'flow-monitor'): ns3::Ipv6FlowClassifier::FiveTuple::sourcePort [variable]
+    cls.add_instance_attribute('sourcePort', 'uint16_t', is_const=False)
+    return
+
+def register_Ns3Ipv6FlowProbe_methods(root_module, cls):
+    ## ipv6-flow-probe.h (module 'flow-monitor'): ns3::Ipv6FlowProbe::Ipv6FlowProbe(ns3::Ptr<ns3::FlowMonitor> monitor, ns3::Ptr<ns3::Ipv6FlowClassifier> classifier, ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::FlowMonitor >', 'monitor'), param('ns3::Ptr< ns3::Ipv6FlowClassifier >', 'classifier'), param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv6-flow-probe.h (module 'flow-monitor'): void ns3::Ipv6FlowProbe::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
                    [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
+    cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
+    ## ipv6-l3-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv6L3Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
                    [], 
+                   is_static=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::Ipv6L3Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Insert(ns3::Ptr<ns3::IpL4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::IpL4Protocol >', 'protocol')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Remove(ns3::Ptr<ns3::IpL4Protocol> protocol) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::IpL4Protocol >', 'protocol')])
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6L3Protocol::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
                    is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
+    cls.add_method('CreateRawSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DeleteRawSocket(ns3::Ptr<ns3::Socket> socket) [member function]
+    cls.add_method('DeleteRawSocket', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTtl(uint8_t ttl) [member function]
+    cls.add_method('SetDefaultTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDefaultTclass(uint8_t tclass) [member function]
+    cls.add_method('SetDefaultTclass', 
+                   'void', 
+                   [param('uint8_t', 'tclass')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<const ns3::Packet> p, uint16_t protocol, ns3::Address const & from, ns3::Address const & to, ns3::NetDevice::PacketType packetType) [member function]
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet const >', 'p'), param('uint16_t', 'protocol'), param('ns3::Address const &', 'from'), param('ns3::Address const &', 'to'), param('ns3::NetDevice::PacketType', 'packetType')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv6Address source, ns3::Ipv6Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv6Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv6Address', 'source'), param('ns3::Ipv6Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv6Route >', 'route')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetRoutingProtocol(ns3::Ptr<ns3::Ipv6RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6RoutingProtocol >', 'routingProtocol')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6L3Protocol::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
                    [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv6Interface> ns3::Ipv6L3Protocol::GetInterface(uint32_t i) const [member function]
+    cls.add_method('GetInterface', 
+                   'ns3::Ptr< ns3::Ipv6Interface >', 
+                   [param('uint32_t', 'i')], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
                    [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForAddress(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForPrefix(ns3::Ipv6Address addr, ns3::Ipv6Prefix mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv6Address', 'addr'), param('ns3::Ipv6Prefix', 'mask')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): int32_t ns3::Ipv6L3Protocol::GetInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) const [member function]
+    cls.add_method('GetInterfaceForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::AddAddress(uint32_t i, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6L3Protocol::GetAddress(uint32_t interfaceIndex, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv6InterfaceAddress', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv6L3Protocol::GetNAddresses(uint32_t interface) const [member function]
     cls.add_method('GetNAddresses', 
                    'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::RemoveAddress(uint32_t interfaceIndex, uint32_t addressIndex) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::RemoveAddress(uint32_t interfaceIndex, ns3::Ipv6Address address) [member function]
+    cls.add_method('RemoveAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interfaceIndex'), param('ns3::Ipv6Address', 'address')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetMetric(uint32_t i, uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('uint16_t', 'metric')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv6L3Protocol::GetMetric(uint32_t i) const [member function]
+    cls.add_method('GetMetric', 
                    'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv6L3Protocol::GetMtu(uint32_t i) const [member function]
+    cls.add_method('GetMtu', 
                    'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::IsUp(uint32_t i) const [member function]
+    cls.add_method('IsUp', 
                    'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetUp(uint32_t i) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetDown(uint32_t i) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::IsForwarding(uint32_t i) const [member function]
     cls.add_method('IsForwarding', 
                    'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetForwarding(uint32_t i, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('bool', 'val')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Icmpv6L4Protocol> ns3::Ipv6L3Protocol::GetIcmpv6() const [member function]
+    cls.add_method('GetIcmpv6', 
+                   'ns3::Ptr< ns3::Icmpv6L4Protocol >', 
                    [], 
                    is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::AddAutoconfiguredAddress(uint32_t interface, ns3::Ipv6Address network, ns3::Ipv6Prefix mask, uint8_t flags, uint32_t validTime, uint32_t preferredTime, ns3::Ipv6Address defaultRouter=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('AddAutoconfiguredAddress', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'mask'), param('uint8_t', 'flags'), param('uint32_t', 'validTime'), param('uint32_t', 'preferredTime'), param('ns3::Ipv6Address', 'defaultRouter', default_value='ns3::Ipv6Address::GetZero( )')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RemoveAutoconfiguredAddress(uint32_t interface, ns3::Ipv6Address network, ns3::Ipv6Prefix mask, ns3::Ipv6Address defaultRouter) [member function]
+    cls.add_method('RemoveAutoconfiguredAddress', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'defaultRouter')])
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RegisterExtensions() [member function]
+    cls.add_method('RegisterExtensions', 
                    'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
+                   [], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::RegisterOptions() [member function]
+    cls.add_method('RegisterOptions', 
                    'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
+                   [], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
                    'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
+    cls.add_method('DoDispose', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
                    'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
                    'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
+                   [param('bool', 'forward')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetMtuDiscover(bool mtuDiscover) [member function]
+    cls.add_method('SetMtuDiscover', 
                    'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
+                   [param('bool', 'mtuDiscover')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetMtuDiscover() const [member function]
+    cls.add_method('GetMtuDiscover', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::SetSendIcmpv6Redirect(bool sendIcmpv6Redirect) [member function]
+    cls.add_method('SetSendIcmpv6Redirect', 
                    'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
+                   [param('bool', 'sendIcmpv6Redirect')], 
+                   visibility='private', is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): bool ns3::Ipv6L3Protocol::GetSendIcmpv6Redirect() const [member function]
+    cls.add_method('GetSendIcmpv6Redirect', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3Ipv6PmtuCache_methods(root_module, cls):
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache::Ipv6PmtuCache(ns3::Ipv6PmtuCache const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PmtuCache const &', 'arg0')])
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache::Ipv6PmtuCache() [constructor]
+    cls.add_constructor([])
+    ## ipv6-pmtu-cache.h (module 'internet'): void ns3::Ipv6PmtuCache::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
                    [], 
-                   visibility='protected', is_virtual=True)
+                   is_virtual=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): uint32_t ns3::Ipv6PmtuCache::GetPmtu(ns3::Ipv6Address dst) [member function]
+    cls.add_method('GetPmtu', 
+                   'uint32_t', 
+                   [param('ns3::Ipv6Address', 'dst')])
+    ## ipv6-pmtu-cache.h (module 'internet'): ns3::Time ns3::Ipv6PmtuCache::GetPmtuValidityTime() const [member function]
+    cls.add_method('GetPmtuValidityTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): static ns3::TypeId ns3::Ipv6PmtuCache::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv6-pmtu-cache.h (module 'internet'): void ns3::Ipv6PmtuCache::SetPmtu(ns3::Ipv6Address dst, uint32_t pmtu) [member function]
+    cls.add_method('SetPmtu', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('uint32_t', 'pmtu')])
+    ## ipv6-pmtu-cache.h (module 'internet'): bool ns3::Ipv6PmtuCache::SetPmtuValidityTime(ns3::Time validity) [member function]
+    cls.add_method('SetPmtuValidityTime', 
+                   'bool', 
+                   [param('ns3::Time', 'validity')])
     return
 
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
@@ -5999,10 +6132,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/flow-monitor/doc/flow-monitor.rst ns-3.20/src/flow-monitor/doc/flow-monitor.rst
--- ns-3.19/src/flow-monitor/doc/flow-monitor.rst	2014-06-17 10:34:00.426636754 -0700
+++ ns-3.20/src/flow-monitor/doc/flow-monitor.rst	2014-06-17 10:33:13.744997112 -0700
@@ -1,9 +1,198 @@
 Flow Monitor
 ------------
 
-*Placeholder chapter*
+.. include:: replace.txt
+.. highlight:: cpp
 
-This feature was added as contributed code (``src/contrib``) in
-*ns-3.6* and to the main distribution (``src/flow-monitor``) for
-*ns-3.7*. A paper on this feature is published in the proceedings of
-NSTools: `<http://www.nstools.org/techprog.shtml>`_.
+.. heading hierarchy:
+   ------------- Chapter
+   ************* Section (#.#)
+   ============= Subsection (#.#.#)
+   ############# Paragraph (no number)
+
+Model Description
+*****************
+
+The source code for the new module lives in the directory ``src/flow-monitor``.
+
+The Flow Monitor module goal is to provide a flexible system to measure the
+performance of network protocols. The module uses probes, installed in network
+nodes, to track the packets exchanged by the nodes, and it will measure
+a number of parameters. Packets are divided according to the flow they belong 
+to, where each flow is defined according to the probe's characteristics (e.g.,
+for IP, a flow is defined as the packets with the same {protocol, source (IP, port), 
+destination (IP, port)} tuple.
+
+The statistics are collected for each flow can be exported in XML format. Moreover,
+the user can access the probes directly to request specific stats about each flow. 
+
+Design
+======
+
+Flow Monitor module is designed in a modular way. It can be extended by subclassing
+``ns3::FlowProbe`` and ``ns3::FlowClassifier``.
+
+The full module design is described in [FlowMonitor]_
+
+Scope and Limitations
+=====================
+
+At the moment, probes and classifiers are available for IPv4 and IPv6.
+
+Each probe will classify packets in four points:
+
+* When a packet is sent (SendOutgoing IPv[4,6] traces)
+* When a packet is forwarded (UnicastForward IPv[4,6] traces)
+* When a packet is received (LocalDeliver IPv[4,6] traces)
+* When a packet is dropped (Drop IPv[4,6] traces)
+
+Since the packets are tracked at IP level, any retransmission caused by L4 protocols (e.g., TCP)
+will be seen by the probe as a new packet.
+
+A Tag will be added to the packet (``ns3::Ipv[4,6]FlowProbeTag``). The tag will carry
+basic packet's data, useful for the packet's classification.
+
+It must be underlined that only L4 (TCP, UDP) packets are, so far, classified.
+Moreover, only unicast packets will be classified.
+These limitations may be removed in the future. 
+
+The data collected for each flow are:
+
+* timeFirstTxPacket: when the first packet in the flow was transmitted;
+* timeLastTxPacket: when the last packet in the flow was transmitted;
+* timeFirstRxPacket: when the first packet in the flow was received by an end node;
+* timeLastRxPacket: when the last packet in the flow was received;
+* delaySum: the sum of all end-to-end delays for all received packets of the flow;
+* jitterSum: the sum of all end-to-end delay jitter (delay variation) values for all received packets of the flow, as defined in :rfc:`3393`;
+* txBytes, txPackets: total number of transmitted bytes / packets for the flow;
+* rxBytes, rxPackets: total number of received bytes / packets for the flow;
+* lostPackets: total number of packets that are assumed to be lost (not reported over 10 seconds);
+* timesForwarded: the number of times a packet has been reportedly forwarded;
+* delayHistogram, jitterHistogram, packetSizeHistogram: histogram versions for the delay, jitter, and packet sizes, respectively;
+* packetsDropped, bytesDropped: the number of lost packets and bytes, divided according to the loss reason code (defined in the probe).
+
+It is worth pointing out that the probes measure the packet bytes including IP headers. 
+The L2 headers are not included in the measure.
+
+These stats will be written in XML form upon request (see the Usage section).
+
+
+References
+==========
+
+.. [FlowMonitor] G. Carneiro, P. Fortuna, and M. Ricardo. 2009. FlowMonitor: a network monitoring framework for the network simulator 3 (NS-3). In Proceedings of the Fourth International ICST Conference on Performance Evaluation Methodologies and Tools (VALUETOOLS '09). http://dx.doi.org/10.4108/ICST.VALUETOOLS2009.7493
+
+Usage
+*****
+
+The module usage is extremely simple. The helper will take care of about everything.
+
+The typical use is::
+
+  // Flow monitor
+  Ptr<FlowMonitor> flowMonitor;
+  FlowMonitorHelper flowHelper;
+  flowMonitor = flowHelper.InstallAll();
+
+  Simulator::Stop (Seconds(stop_time));
+  Simulator::Run ();
+
+  flowMonitor->SerializeToXmlFile("NameOfFile.xml", true, true);
+
+the ``SerializeToXmlFile ()`` function 2nd and 3rd parameters are used respectively to
+activate/deactivate the histograms and the per-probe detailed stats.
+
+Other possible alternatives can be found in the Doxygen documentation.
+
+
+Helpers
+=======
+
+The helper API follows the pattern usage of normal helpers.
+Through the helper you can install the monitor in the nodes, set the monitor attributes, and 
+print the statistics.
+
+One important thing is: the :cpp:class:`ns3::FlowMonitorHelper` must be instantiated only
+once in the main. 
+
+Attributes
+==========
+
+The module provides the following attributes in :cpp:class:`ns3::FlowMonitor`:
+
+* MaxPerHopDelay (Time, default 10s): The maximum per-hop delay that should be considered;
+* StartTime (Time, default 0s): The time when the monitoring starts;
+* DelayBinWidth (double, default 0.001): The width used in the delay histogram;
+* JitterBinWidth (double, default 0.001): The width used in the jitter histogram;
+* PacketSizeBinWidth (double, default 20.0): The width used in the packetSize histogram;
+* FlowInterruptionsBinWidth (double, default 0.25): The width used in the flowInterruptions histogram;
+* FlowInterruptionsMinTime (double, default 0.5): The minimum inter-arrival time that is considered a flow interruption.
+
+
+Output
+======
+
+The main model output is an XML formatted report about flow statistics. An example is::
+
+  <?xml version="1.0" ?>
+  <FlowMonitor>
+    <FlowStats>
+    <Flow flowId="1" timeFirstTxPacket="+0.0ns" timeFirstRxPacket="+20067198.0ns" timeLastTxPacket="+2235764408.0ns" timeLastRxPacket="+2255831606.0ns" delaySum="+138731526300.0ns" jitterSum="+1849692150.0ns" lastDelay="+20067198.0ns" txBytes="2149400" rxBytes="2149400" txPackets="3735" rxPackets="3735" lostPackets="0" timesForwarded="7466">
+    </Flow>
+    </FlowStats>
+    <Ipv4FlowClassifier>
+    <Flow flowId="1" sourceAddress="10.1.3.1" destinationAddress="10.1.2.2" protocol="6" sourcePort="49153" destinationPort="50000" />
+    </Ipv4FlowClassifier>
+    <Ipv6FlowClassifier>
+    </Ipv6FlowClassifier>
+    <FlowProbes>
+    <FlowProbe index="0">
+      <FlowStats  flowId="1" packets="3735" bytes="2149400" delayFromFirstProbeSum="+0.0ns" >
+      </FlowStats>
+    </FlowProbe>
+    <FlowProbe index="2">
+      <FlowStats  flowId="1" packets="7466" bytes="2224020" delayFromFirstProbeSum="+199415389258.0ns" >
+      </FlowStats>
+    </FlowProbe>
+    <FlowProbe index="4">
+      <FlowStats  flowId="1" packets="3735" bytes="2149400" delayFromFirstProbeSum="+138731526300.0ns" >
+      </FlowStats>
+    </FlowProbe>
+    </FlowProbes>
+  </FlowMonitor>
+
+The output was generated by a TCP flow from 10.1.3.1 to 10.1.2.2.
+
+It is worth noticing that the index 2 probe is reporting more packets and more bytes than the other probles. 
+That's a perfectly normal behaviour, as packets are fragmented at IP level in that node.
+
+It should also be observed that the receiving node's probe (index 4) doesn't count the fragments, as the 
+reassembly is done before the probing point.
+
+Examples
+========
+
+The examples are located in `src/flow-monitor/examples`.
+
+Moreover, the following examples use the flow-monitor module:
+
+* examples/matrix-topology/matrix-topology.cc
+* examples/routing/manet-routing-compare.cc
+* examples/routing/simple-global-routing.cc
+* examples/tcp/tcp-variants-comparison.cc
+* examples/wireless/multirate.cc
+* examples/wireless/wifi-hidden-terminal.cc
+
+
+Troubleshooting
+===============
+
+Do not define more than one :cpp:class:`ns3::FlowMonitorHelper` in the simulation.
+
+Validation
+**********
+
+The paper in the references contains a full description of the module validation against
+a test network.
+
+Tests are provided to ensure the Histogram correct functionality.
diff -Naur ns-3.19/src/flow-monitor/helper/flow-monitor-helper.cc ns-3.20/src/flow-monitor/helper/flow-monitor-helper.cc
--- ns-3.19/src/flow-monitor/helper/flow-monitor-helper.cc	2014-06-17 10:34:00.428636739 -0700
+++ ns-3.20/src/flow-monitor/helper/flow-monitor-helper.cc	2014-06-17 10:33:13.746997096 -0700
@@ -24,6 +24,9 @@
 #include "ns3/ipv4-flow-classifier.h"
 #include "ns3/ipv4-flow-probe.h"
 #include "ns3/ipv4-l3-protocol.h"
+#include "ns3/ipv6-flow-classifier.h"
+#include "ns3/ipv6-flow-probe.h"
+#include "ns3/ipv6-l3-protocol.h"
 #include "ns3/node.h"
 #include "ns3/node-list.h"
 
@@ -41,7 +44,8 @@
     {
       m_flowMonitor->Dispose ();
       m_flowMonitor = 0;
-      m_flowClassifier = 0;
+      m_flowClassifier4 = 0;
+      m_flowClassifier6 = 0;
     }
 }
 
@@ -58,8 +62,10 @@
   if (!m_flowMonitor)
     {
       m_flowMonitor = m_monitorFactory.Create<FlowMonitor> ();
-      m_flowClassifier = Create<Ipv4FlowClassifier> ();
-      m_flowMonitor->SetFlowClassifier (m_flowClassifier);
+      m_flowClassifier4 = Create<Ipv4FlowClassifier> ();
+      m_flowMonitor->AddFlowClassifier (m_flowClassifier4);
+      m_flowClassifier6 = Create<Ipv6FlowClassifier> ();
+      m_flowMonitor->AddFlowClassifier (m_flowClassifier6);
     }
   return m_flowMonitor;
 }
@@ -68,11 +74,22 @@
 Ptr<FlowClassifier>
 FlowMonitorHelper::GetClassifier ()
 {
-  if (!m_flowClassifier)
+  if (!m_flowClassifier4)
     {
-      m_flowClassifier = Create<Ipv4FlowClassifier> ();
+      m_flowClassifier4 = Create<Ipv4FlowClassifier> ();
     }
-  return m_flowClassifier;
+  return m_flowClassifier4;
+}
+
+
+Ptr<FlowClassifier>
+FlowMonitorHelper::GetClassifier6 ()
+{
+  if (!m_flowClassifier6)
+    {
+      m_flowClassifier6 = Create<Ipv6FlowClassifier> ();
+    }
+  return m_flowClassifier6;
 }
 
 
@@ -81,9 +98,21 @@
 {
   Ptr<FlowMonitor> monitor = GetMonitor ();
   Ptr<FlowClassifier> classifier = GetClassifier ();
-  Ptr<Ipv4FlowProbe> probe = Create<Ipv4FlowProbe> (monitor,
-                                                    DynamicCast<Ipv4FlowClassifier> (classifier),
-                                                    node);
+  Ptr<Ipv4L3Protocol> ipv4 = node->GetObject<Ipv4L3Protocol> ();
+  if (ipv4)
+    {
+      Ptr<Ipv4FlowProbe> probe = Create<Ipv4FlowProbe> (monitor,
+                                                        DynamicCast<Ipv4FlowClassifier> (classifier),
+                                                        node);
+    }
+  Ptr<FlowClassifier> classifier6 = GetClassifier6 ();
+  Ptr<Ipv6L3Protocol> ipv6 = node->GetObject<Ipv6L3Protocol> ();
+  if (ipv6)
+    {
+      Ptr<Ipv6FlowProbe> probe6 = Create<Ipv6FlowProbe> (monitor,
+                                                         DynamicCast<Ipv6FlowClassifier> (classifier6),
+                                                         node);
+    }
   return m_flowMonitor;
 }
 
@@ -94,7 +123,7 @@
   for (NodeContainer::Iterator i = nodes.Begin (); i != nodes.End (); ++i)
     {
       Ptr<Node> node = *i;
-      if (node->GetObject<Ipv4L3Protocol> ())
+      if (node->GetObject<Ipv4L3Protocol> () || node->GetObject<Ipv6L3Protocol> ())
         {
           Install (node);
         }
@@ -108,7 +137,7 @@
   for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
       Ptr<Node> node = *i;
-      if (node->GetObject<Ipv4L3Protocol> ())
+      if (node->GetObject<Ipv4L3Protocol> () || node->GetObject<Ipv6L3Protocol> ())
         {
           Install (node);
         }
@@ -116,5 +145,34 @@
   return m_flowMonitor;
 }
 
+void
+FlowMonitorHelper::SerializeToXmlStream (std::ostream &os, int indent, bool enableHistograms, bool enableProbes)
+{
+  if (m_flowMonitor)
+    {
+      m_flowMonitor->SerializeToXmlStream (os, indent, enableHistograms, enableProbes);
+    }
+}
+
+std::string
+FlowMonitorHelper::SerializeToXmlString (int indent, bool enableHistograms, bool enableProbes)
+{
+  std::ostringstream os;
+  if (m_flowMonitor)
+    {
+      m_flowMonitor->SerializeToXmlStream (os, indent, enableHistograms, enableProbes);
+    }
+  return os.str ();
+}
+
+void
+FlowMonitorHelper::SerializeToXmlFile (std::string fileName, bool enableHistograms, bool enableProbes)
+{
+  if (m_flowMonitor)
+    {
+      m_flowMonitor->SerializeToXmlFile (fileName, enableHistograms, enableProbes);
+    }
+}
+
 
 } // namespace ns3
diff -Naur ns-3.19/src/flow-monitor/helper/flow-monitor-helper.h ns-3.20/src/flow-monitor/helper/flow-monitor-helper.h
--- ns-3.19/src/flow-monitor/helper/flow-monitor-helper.h	2014-06-17 10:34:00.428636739 -0700
+++ ns-3.20/src/flow-monitor/helper/flow-monitor-helper.h	2014-06-17 10:33:13.746997096 -0700
@@ -30,10 +30,11 @@
 
 class AttributeValue;
 class Ipv4FlowClassifier;
+class Ipv6FlowClassifier;
 
 /**
  * \ingroup flow-monitor
- * \brief Helper to enable IPv4 flow monitoring on a set of Nodes
+ * \brief Helper to enable IP flow monitoring on a set of Nodes
  */
 class FlowMonitorHelper
 {
@@ -74,15 +75,62 @@
   Ptr<FlowMonitor> GetMonitor ();
 
   /**
-   * \brief Retrieve the FlowClassifier object created by the Install* methods
+   * \brief Retrieve the FlowClassifier object for IPv4 created by the Install* methods
    * \returns a pointer to the FlowClassifier object
    */
   Ptr<FlowClassifier> GetClassifier ();
 
+  /**
+   * \brief Retrieve the FlowClassifier object for IPv6 created by the Install* methods
+   * \returns a pointer to the FlowClassifier object
+   */
+  Ptr<FlowClassifier> GetClassifier6 ();
+
+  /**
+   * Serializes the results to an std::ostream in XML format
+   * \param os the output stream
+   * \param indent number of spaces to use as base indentation level
+   * \param enableHistograms if true, include also the histograms in the output
+   * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
+   */
+  void SerializeToXmlStream (std::ostream &os, int indent, bool enableHistograms, bool enableProbes);
+
+  /**
+   * Same as SerializeToXmlStream, but returns the output as a std::string
+   * \param indent number of spaces to use as base indentation level
+   * \param enableHistograms if true, include also the histograms in the output
+   * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
+   * \return the XML output as string
+   */
+  std::string SerializeToXmlString (int indent, bool enableHistograms, bool enableProbes);
+
+  /**
+   * Same as SerializeToXmlStream, but writes to a file instead
+   * \param fileName name or path of the output file that will be created
+   * \param enableHistograms if true, include also the histograms in the output
+   * \param enableProbes if true, include also the per-probe/flow pair statistics in the output
+   */
+  void SerializeToXmlFile (std::string fileName, bool enableHistograms, bool enableProbes);
+
 private:
-  ObjectFactory m_monitorFactory;       //!< Object factory
-  Ptr<FlowMonitor> m_flowMonitor;       //!< the FlowMonitor object
-  Ptr<FlowClassifier> m_flowClassifier; //!< the FlowClassifier object
+  /**
+   * \brief Copy constructor
+   *
+   * Defined and unimplemented to avoid misuse
+   */
+  FlowMonitorHelper (const FlowMonitorHelper&);
+  /**
+   * \brief Copy constructor
+   *
+   * Defined and unimplemented to avoid misuse
+   * \returns
+   */
+  FlowMonitorHelper& operator= (const FlowMonitorHelper&);
+
+  ObjectFactory m_monitorFactory;        //!< Object factory
+  Ptr<FlowMonitor> m_flowMonitor;        //!< the FlowMonitor object
+  Ptr<FlowClassifier> m_flowClassifier4; //!< the FlowClassifier object for IPv4
+  Ptr<FlowClassifier> m_flowClassifier6; //!< the FlowClassifier object for IPv6
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/flow-monitor/model/flow-classifier.h ns-3.20/src/flow-monitor/model/flow-classifier.h
--- ns-3.19/src/flow-monitor/model/flow-classifier.h	2014-06-17 10:34:00.429636731 -0700
+++ ns-3.20/src/flow-monitor/model/flow-classifier.h	2014-06-17 10:33:13.747997088 -0700
@@ -41,7 +41,7 @@
 
 /// \ingroup flow-monitor
 /// Provides a method to translate raw packet data into abstract
-/// ``flow identifier'' and ``packet identifier'' parameters.  These
+/// `flow identifier` and `packet identifier` parameters.  These
 /// identifiers are unsigned 32-bit integers that uniquely identify a
 /// flow and a packet within that flow, respectively, for the whole
 /// simulation, regardless of the point in which the packet was
diff -Naur ns-3.19/src/flow-monitor/model/flow-monitor.cc ns-3.20/src/flow-monitor/model/flow-monitor.cc
--- ns-3.19/src/flow-monitor/model/flow-monitor.cc	2014-06-17 10:34:00.429636731 -0700
+++ ns-3.20/src/flow-monitor/model/flow-monitor.cc	2014-06-17 10:33:13.747997088 -0700
@@ -31,11 +31,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("FlowMonitor")
-  ;
+NS_LOG_COMPONENT_DEFINE ("FlowMonitor");
 
-NS_OBJECT_ENSURE_REGISTERED (FlowMonitor)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlowMonitor);
 
 
 TypeId 
@@ -92,7 +90,12 @@
 void
 FlowMonitor::DoDispose (void)
 {
-  m_classifier = 0;
+  for (std::list<Ptr<FlowClassifier> >::iterator iter = m_classifiers.begin ();
+      iter != m_classifiers.end ();
+      iter ++)
+    {
+      *iter = 0;
+    }
   for (uint32_t i = 0; i < m_flowProbes.size (); i++)
     {
       m_flowProbes[i]->Dispose ();
@@ -391,9 +394,9 @@
 }
 
 void
-FlowMonitor::SetFlowClassifier (Ptr<FlowClassifier> classifier)
+FlowMonitor::AddFlowClassifier (Ptr<FlowClassifier> classifier)
 {
-  m_classifier = classifier;
+  m_classifiers.push_back (classifier);
 }
 
 void
@@ -458,7 +461,12 @@
   indent -= 2;
   INDENT (indent); os << "</FlowStats>\n";
 
-  m_classifier->SerializeToXmlStream (os, indent);
+  for (std::list<Ptr<FlowClassifier> >::iterator iter = m_classifiers.begin ();
+      iter != m_classifiers.end ();
+      iter ++)
+    {
+      (*iter)->SerializeToXmlStream (os, indent);
+    }
 
   if (enableProbes)
     {
diff -Naur ns-3.19/src/flow-monitor/model/flow-monitor.h ns-3.20/src/flow-monitor/model/flow-monitor.h
--- ns-3.19/src/flow-monitor/model/flow-monitor.h	2014-06-17 10:34:00.430636723 -0700
+++ ns-3.20/src/flow-monitor/model/flow-monitor.h	2014-06-17 10:33:13.748997081 -0700
@@ -146,9 +146,9 @@
   TypeId GetInstanceTypeId () const;
   FlowMonitor ();
 
-  /// Set the FlowClassifier to be used by the flow monitor.
+  /// Add a FlowClassifier to be used by the flow monitor.
   /// \param classifier the FlowClassifier
-  void SetFlowClassifier (Ptr<FlowClassifier> classifier);
+  void AddFlowClassifier (Ptr<FlowClassifier> classifier);
 
   /// Set the time, counting from the current time, from which to start monitoring flows.
   /// \param time delta time to start
@@ -266,7 +266,7 @@
   std::vector< Ptr<FlowProbe> > m_flowProbes; //!< all the FlowProbes
 
   // note: this is needed only for serialization
-  Ptr<FlowClassifier> m_classifier; //!< the FlowClassifier
+  std::list<Ptr<FlowClassifier> > m_classifiers; //!< the FlowClassifiers
 
   EventId m_startEvent;     //!< Start event
   EventId m_stopEvent;      //!< Stop event
diff -Naur ns-3.19/src/flow-monitor/model/histogram.cc ns-3.20/src/flow-monitor/model/histogram.cc
--- ns-3.19/src/flow-monitor/model/histogram.cc	2014-06-17 10:34:00.431636715 -0700
+++ ns-3.20/src/flow-monitor/model/histogram.cc	2014-06-17 10:33:13.749997073 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Histogram")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Histogram");
  
 // uint32_t 
 // Histogram::GetSize () const
diff -Naur ns-3.19/src/flow-monitor/model/ipv4-flow-classifier.cc ns-3.20/src/flow-monitor/model/ipv4-flow-classifier.cc
--- ns-3.19/src/flow-monitor/model/ipv4-flow-classifier.cc	2014-06-17 10:34:00.432636708 -0700
+++ ns-3.20/src/flow-monitor/model/ipv4-flow-classifier.cc	2014-06-17 10:33:13.750997065 -0700
@@ -103,12 +103,6 @@
 Ipv4FlowClassifier::Classify (const Ipv4Header &ipHeader, Ptr<const Packet> ipPayload,
                               uint32_t *out_flowId, uint32_t *out_packetId)
 {
-  if (ipHeader.GetDestination () == Ipv4Address::GetBroadcast ())
-    {
-      // we are not prepared to handle broadcast yet
-      return false;
-    }
-
   if (ipHeader.GetFragmentOffset () > 0 )
     {
       // Ignore fragments: they don't carry a valid L4 header
@@ -159,11 +153,17 @@
   // if the insertion succeeded, we need to assign this tuple a new flow identifier
   if (insert.second)
     {
-      insert.first->second = GetNewFlowId ();
+      FlowId newFlowId = GetNewFlowId ();
+      insert.first->second = newFlowId;
+      m_flowPktIdMap[newFlowId] = 0;
+    }
+  else
+    {
+      m_flowPktIdMap[insert.first->second] ++;
     }
 
   *out_flowId = insert.first->second;
-  *out_packetId = ipHeader.GetIdentification ();
+  *out_packetId = m_flowPktIdMap[*out_flowId];
 
   return true;
 }
diff -Naur ns-3.19/src/flow-monitor/model/ipv4-flow-classifier.h ns-3.20/src/flow-monitor/model/ipv4-flow-classifier.h
--- ns-3.19/src/flow-monitor/model/ipv4-flow-classifier.h	2014-06-17 10:34:00.432636708 -0700
+++ ns-3.20/src/flow-monitor/model/ipv4-flow-classifier.h	2014-06-17 10:33:13.750997065 -0700
@@ -52,6 +52,9 @@
   Ipv4FlowClassifier ();
 
   /// \brief try to classify the packet into flow-id and packet-id
+  ///
+  /// \warning: it must be called only once per packet, from SendOutgoingLogger.
+  ///
   /// \return true if the packet was classified, false if not (i.e. it
   /// does not appear to be part of a flow).
   /// \param ipHeader packet's IP header
@@ -72,6 +75,7 @@
 
   /// Map to Flows Identifiers to FlowIds
   std::map<FiveTuple, FlowId> m_flowMap;
+  std::map<FlowId, FlowPacketId> m_flowPktIdMap;
 
 };
 
diff -Naur ns-3.19/src/flow-monitor/model/ipv4-flow-probe.cc ns-3.20/src/flow-monitor/model/ipv4-flow-probe.cc
--- ns-3.19/src/flow-monitor/model/ipv4-flow-probe.cc	2014-06-17 10:34:00.433636700 -0700
+++ ns-3.20/src/flow-monitor/model/ipv4-flow-probe.cc	2014-06-17 10:33:13.750997065 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv4FlowProbe")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv4FlowProbe");
 
 //////////////////////////////////////
 // Ipv4FlowProbeTag class implementation //
@@ -197,26 +196,26 @@
 {
   NS_LOG_FUNCTION (this << node->GetId ());
 
-  Ptr<Ipv4L3Protocol> ipv4 = node->GetObject<Ipv4L3Protocol> ();
+  m_ipv4 = node->GetObject<Ipv4L3Protocol> ();
 
-  if (!ipv4->TraceConnectWithoutContext ("SendOutgoing",
-                                         MakeCallback (&Ipv4FlowProbe::SendOutgoingLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("SendOutgoing",
+                                           MakeCallback (&Ipv4FlowProbe::SendOutgoingLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
-  if (!ipv4->TraceConnectWithoutContext ("UnicastForward",
-                                         MakeCallback (&Ipv4FlowProbe::ForwardLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("UnicastForward",
+                                           MakeCallback (&Ipv4FlowProbe::ForwardLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
-  if (!ipv4->TraceConnectWithoutContext ("LocalDeliver",
-                                         MakeCallback (&Ipv4FlowProbe::ForwardUpLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("LocalDeliver",
+                                           MakeCallback (&Ipv4FlowProbe::ForwardUpLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
 
-  if (!ipv4->TraceConnectWithoutContext ("Drop",
-                                         MakeCallback (&Ipv4FlowProbe::DropLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("Drop",
+                                           MakeCallback (&Ipv4FlowProbe::DropLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
@@ -234,6 +233,8 @@
 void
 Ipv4FlowProbe::DoDispose ()
 {
+  m_ipv4 = 0;
+  m_classifier = 0;
   FlowProbe::DoDispose ();
 }
 
@@ -243,6 +244,12 @@
   FlowId flowId;
   FlowPacketId packetId;
 
+  if (!m_ipv4->IsUnicast(ipHeader.GetDestination ()))
+    {
+      // we are not prepared to handle broadcast yet
+      return;
+    }
+
   if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
     {
       uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
@@ -260,31 +267,35 @@
 void
 Ipv4FlowProbe::ForwardLogger (const Ipv4Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  FlowId flowId;
-  FlowPacketId packetId;
+  // peek the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
+  Ipv4FlowProbeTag fTag;
 
-  if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
+  bool found = ipPayload->PeekPacketTag (fTag);
+
+  if (found)
     {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
+
       uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
       NS_LOG_DEBUG ("ReportForwarding ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<");");
       m_flowMonitor->ReportForwarding (this, flowId, packetId, size);
     }
-
 }
 
 void
 Ipv4FlowProbe::ForwardUpLogger (const Ipv4Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  FlowId flowId;
-  FlowPacketId packetId;
+  // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
+  Ipv4FlowProbeTag fTag;
 
-  if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
-    {
-      // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
-      Ipv4FlowProbeTag fTag;
+  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
+  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
 
-      // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-      ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  if (found)
+    {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
 
       uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
       NS_LOG_DEBUG ("ReportLastRx ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<");");
@@ -314,16 +325,16 @@
     }
 #endif
 
-  FlowId flowId;
-  FlowPacketId packetId;
+  // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
+  Ipv4FlowProbeTag fTag;
 
-  if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
-    {
-      // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
-      Ipv4FlowProbeTag fTag;
+  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
+  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
 
-      // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-      ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  if (found)
+    {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
 
       uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
       NS_LOG_DEBUG ("Drop ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<", " << reason 
@@ -376,8 +387,7 @@
   Ipv4FlowProbeTag fTag;
 
   // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool tagFound;
-  tagFound = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  bool tagFound = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
   if (!tagFound)
     {
       return;
diff -Naur ns-3.19/src/flow-monitor/model/ipv4-flow-probe.h ns-3.20/src/flow-monitor/model/ipv4-flow-probe.h
--- ns-3.19/src/flow-monitor/model/ipv4-flow-probe.h	2014-06-17 10:34:00.433636700 -0700
+++ ns-3.20/src/flow-monitor/model/ipv4-flow-probe.h	2014-06-17 10:33:13.751997058 -0700
@@ -106,6 +106,7 @@
   void QueueDropLogger (Ptr<const Packet> ipPayload);
 
   Ptr<Ipv4FlowClassifier> m_classifier; //!< the Ipv4FlowClassifier this probe is associated with
+  Ptr<Ipv4L3Protocol> m_ipv4; //!< the Ipv4L3Protocol this probe is bound to
 };
 
 
diff -Naur ns-3.19/src/flow-monitor/model/ipv6-flow-classifier.cc ns-3.20/src/flow-monitor/model/ipv6-flow-classifier.cc
--- ns-3.19/src/flow-monitor/model/ipv6-flow-classifier.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/flow-monitor/model/ipv6-flow-classifier.cc	2014-06-17 10:33:13.751997058 -0700
@@ -0,0 +1,218 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+//
+// Copyright (c) 2009 INESC Porto
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//
+// Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
+// Modifications: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+//
+
+#include "ns3/packet.h"
+
+#include "ipv6-flow-classifier.h"
+#include "ns3/udp-header.h"
+#include "ns3/tcp-header.h"
+
+namespace ns3 {
+
+/* see http://www.iana.org/assignments/protocol-numbers */
+const uint8_t TCP_PROT_NUMBER = 6;  //!< TCP Protocol number
+const uint8_t UDP_PROT_NUMBER = 17; //!< UDP Protocol number
+
+
+
+bool operator < (const Ipv6FlowClassifier::FiveTuple &t1,
+                 const Ipv6FlowClassifier::FiveTuple &t2)
+{
+  if (t1.sourceAddress < t2.sourceAddress)
+    {
+      return true;
+    }
+  if (t1.sourceAddress != t2.sourceAddress)
+    {
+      return false;
+    }
+
+  if (t1.destinationAddress < t2.destinationAddress)
+    {
+      return true;
+    }
+  if (t1.destinationAddress != t2.destinationAddress)
+    {
+      return false;
+    }
+
+  if (t1.protocol < t2.protocol)
+    {
+      return true;
+    }
+  if (t1.protocol != t2.protocol)
+    {
+      return false;
+    }
+
+  if (t1.sourcePort < t2.sourcePort)
+    {
+      return true;
+    }
+  if (t1.sourcePort != t2.sourcePort)
+    {
+      return false;
+    }
+
+  if (t1.destinationPort < t2.destinationPort)
+    {
+      return true;
+    }
+  if (t1.destinationPort != t2.destinationPort)
+    {
+      return false;
+    }
+
+  return false;
+}
+
+bool operator == (const Ipv6FlowClassifier::FiveTuple &t1,
+                  const Ipv6FlowClassifier::FiveTuple &t2)
+{
+  return (t1.sourceAddress      == t2.sourceAddress &&
+          t1.destinationAddress == t2.destinationAddress &&
+          t1.protocol           == t2.protocol &&
+          t1.sourcePort         == t2.sourcePort &&
+          t1.destinationPort    == t2.destinationPort);
+}
+
+
+
+Ipv6FlowClassifier::Ipv6FlowClassifier ()
+{
+}
+
+bool
+Ipv6FlowClassifier::Classify (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload,
+                              uint32_t *out_flowId, uint32_t *out_packetId)
+{
+  if (ipHeader.GetDestinationAddress ().IsMulticast ())
+    {
+      // we are not prepared to handle multicast yet
+      return false;
+    }
+
+  FiveTuple tuple;
+  tuple.sourceAddress = ipHeader.GetSourceAddress ();
+  tuple.destinationAddress = ipHeader.GetDestinationAddress ();
+  tuple.protocol = ipHeader.GetNextHeader ();
+
+  if ((tuple.protocol != UDP_PROT_NUMBER) && (tuple.protocol != TCP_PROT_NUMBER))
+    {
+      return false;
+    }
+
+  if (ipPayload->GetSize () < 4)
+    {
+      // the packet doesn't carry enough bytes
+      return false;
+    }
+
+  // we rely on the fact that for both TCP and UDP the ports are
+  // carried in the first 4 octects.
+  // This allows to read the ports even on fragmented packets
+  // not carrying a full TCP or UDP header.
+
+  uint8_t data[4];
+  ipPayload->CopyData (data, 4);
+
+  uint16_t srcPort = 0;
+  srcPort |= data[0];
+  srcPort <<= 8;
+  srcPort |= data[1];
+
+  uint16_t dstPort = 0;
+  dstPort |= data[2];
+  dstPort <<= 8;
+  dstPort |= data[3];
+
+  tuple.sourcePort = srcPort;
+  tuple.destinationPort = dstPort;
+
+  // try to insert the tuple, but check if it already exists
+  std::pair<std::map<FiveTuple, FlowId>::iterator, bool> insert
+    = m_flowMap.insert (std::pair<FiveTuple, FlowId> (tuple, 0));
+
+  // if the insertion succeeded, we need to assign this tuple a new flow identifier
+  if (insert.second)
+    {
+      FlowId newFlowId = GetNewFlowId ();
+      insert.first->second = newFlowId;
+      m_flowPktIdMap[newFlowId] = 0;
+    }
+  else
+    {
+      m_flowPktIdMap[insert.first->second] ++;
+    }
+
+  *out_flowId = insert.first->second;
+  *out_packetId = m_flowPktIdMap[*out_flowId];
+
+  return true;
+}
+
+
+Ipv6FlowClassifier::FiveTuple
+Ipv6FlowClassifier::FindFlow (FlowId flowId) const
+{
+  for (std::map<FiveTuple, FlowId>::const_iterator
+       iter = m_flowMap.begin (); iter != m_flowMap.end (); iter++)
+    {
+      if (iter->second == flowId)
+        {
+          return iter->first;
+        }
+    }
+  NS_FATAL_ERROR ("Could not find the flow with ID " << flowId);
+  FiveTuple retval = { Ipv6Address::GetZero (), Ipv6Address::GetZero (), 0, 0, 0 };
+  return retval;
+}
+
+void
+Ipv6FlowClassifier::SerializeToXmlStream (std::ostream &os, int indent) const
+{
+#define INDENT(level) for (int __xpto = 0; __xpto < level; __xpto++) os << ' ';
+
+  INDENT (indent); os << "<Ipv6FlowClassifier>\n";
+
+  indent += 2;
+  for (std::map<FiveTuple, FlowId>::const_iterator
+       iter = m_flowMap.begin (); iter != m_flowMap.end (); iter++)
+    {
+      INDENT (indent);
+      os << "<Flow flowId=\"" << iter->second << "\""
+         << " sourceAddress=\"" << iter->first.sourceAddress << "\""
+         << " destinationAddress=\"" << iter->first.destinationAddress << "\""
+         << " protocol=\"" << int(iter->first.protocol) << "\""
+         << " sourcePort=\"" << iter->first.sourcePort << "\""
+         << " destinationPort=\"" << iter->first.destinationPort << "\""
+         << " />\n";
+    }
+
+  indent -= 2;
+  INDENT (indent); os << "</Ipv6FlowClassifier>\n";
+
+#undef INDENT
+}
+
+
+} // namespace ns3
+
diff -Naur ns-3.19/src/flow-monitor/model/ipv6-flow-classifier.h ns-3.20/src/flow-monitor/model/ipv6-flow-classifier.h
--- ns-3.19/src/flow-monitor/model/ipv6-flow-classifier.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/flow-monitor/model/ipv6-flow-classifier.h	2014-06-17 10:33:13.751997058 -0700
@@ -0,0 +1,104 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+//
+// Copyright (c) 2009 INESC Porto
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//
+// Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
+// Modifications: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+//
+
+#ifndef IPV6_FLOW_CLASSIFIER_H
+#define IPV6_FLOW_CLASSIFIER_H
+
+#include <stdint.h>
+#include <map>
+
+#include "ns3/ipv6-header.h"
+#include "ns3/flow-classifier.h"
+
+namespace ns3 {
+
+class Packet;
+
+/// Classifies packets by looking at their IP and TCP/UDP headers.
+/// From these packet headers, a tuple (source-ip, destination-ip,
+/// protocol, source-port, destination-port) is created, and a unique
+/// flow identifier is assigned for each different tuple combination
+class Ipv6FlowClassifier : public FlowClassifier
+{
+public:
+
+  /// Structure to classify a packet
+  struct FiveTuple
+  {
+    Ipv6Address sourceAddress;      //!< Source address
+    Ipv6Address destinationAddress; //!< Destination address
+    uint8_t protocol;               //!< Protocol
+    uint16_t sourcePort;            //!< Source port
+    uint16_t destinationPort;       //!< Destination port
+  };
+
+  Ipv6FlowClassifier ();
+
+  /// \brief try to classify the packet into flow-id and packet-id
+  ///
+  /// \warning: it must be called only once per packet, from SendOutgoingLogger.
+  ///
+  /// \return true if the packet was classified, false if not (i.e. it
+  /// does not appear to be part of a flow).
+  /// \param ipHeader packet's IP header
+  /// \param ipPayload packet's IP payload
+  /// \param out_flowId packet's FlowId
+  /// \param out_packetId packet's identifier
+  bool Classify (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload,
+                 uint32_t *out_flowId, uint32_t *out_packetId);
+
+  /// Searches for the FiveTuple corresponding to the given flowId
+  /// \param flowId the FlowId to search for
+  /// \returns the FiveTuple corresponding to flowId
+  FiveTuple FindFlow (FlowId flowId) const;
+
+  virtual void SerializeToXmlStream (std::ostream &os, int indent) const;
+
+private:
+
+  /// Map to Flows Identifiers to FlowIds
+  std::map<FiveTuple, FlowId> m_flowMap;
+  std::map<FlowId, FlowPacketId> m_flowPktIdMap;
+
+};
+
+/**
+ * \brief Less than operator.
+ *
+ * \param t1 the first operand
+ * \param t2 the first operand
+ * \returns true if the operands are equal
+ */
+bool operator < (const Ipv6FlowClassifier::FiveTuple &t1, const Ipv6FlowClassifier::FiveTuple &t2);
+
+/**
+ * \brief Equal to operator.
+ *
+ * \param t1 the first operand
+ * \param t2 the first operand
+ * \returns true if the operands are equal
+ */
+bool operator == (const Ipv6FlowClassifier::FiveTuple &t1, const Ipv6FlowClassifier::FiveTuple &t2);
+
+
+} // namespace ns3
+
+#endif /* IPV6_FLOW_CLASSIFIER_H */
diff -Naur ns-3.19/src/flow-monitor/model/ipv6-flow-probe.cc ns-3.20/src/flow-monitor/model/ipv6-flow-probe.cc
--- ns-3.19/src/flow-monitor/model/ipv6-flow-probe.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/flow-monitor/model/ipv6-flow-probe.cc	2014-06-17 10:33:13.752997050 -0700
@@ -0,0 +1,409 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+//
+// Copyright (c) 2009 INESC Porto
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//
+// Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
+// Modifications: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+//
+
+#include "ns3/ipv6-flow-probe.h"
+#include "ns3/ipv6-flow-classifier.h"
+#include "ns3/node.h"
+#include "ns3/packet.h"
+#include "ns3/flow-monitor.h"
+#include "ns3/log.h"
+#include "ns3/pointer.h"
+#include "ns3/config.h"
+#include "ns3/flow-id-tag.h"
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("Ipv6FlowProbe")
+  ;
+
+//////////////////////////////////////
+// Ipv6FlowProbeTag class implementation //
+//////////////////////////////////////
+
+/**
+ * \ingroup flow-monitor
+ *
+ * \brief Tag used to allow a fast identification of the packet
+ *
+ * This tag is added by FlowMonitor when a packet is seen for
+ * the first time, and it is then used to classify the packet in
+ * the following hops.
+ */
+class Ipv6FlowProbeTag : public Tag
+{
+public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer buf) const;
+  virtual void Deserialize (TagBuffer buf);
+  virtual void Print (std::ostream &os) const;
+  Ipv6FlowProbeTag ();
+  /**
+   * \brief Consructor
+   * \param flowId the flow identifier
+   * \param packetId the packet identifier
+   * \param packetSize the packet size
+   */
+  Ipv6FlowProbeTag (uint32_t flowId, uint32_t packetId, uint32_t packetSize);
+  /**
+   * \brief Set the flow identifier
+   * \param flowId the flow identifier
+   */
+  void SetFlowId (uint32_t flowId);
+  /**
+   * \brief Set the packet identifier
+   * \param packetId the packet identifier
+   */
+  void SetPacketId (uint32_t packetId);
+  /**
+   * \brief Set the packet size
+   * \param packetSize the packet size
+   */
+  void SetPacketSize (uint32_t packetSize);
+  /**
+   * \brief Set the flow identifier
+   * \returns the flow identifier
+   */
+  uint32_t GetFlowId (void) const;
+  /**
+   * \brief Set the packet identifier
+   * \returns the packet identifier
+   */
+  uint32_t GetPacketId (void) const;
+  /**
+   * \brief Get the packet size
+   * \returns the packet size
+   */
+  uint32_t GetPacketSize (void) const;
+private:
+  uint32_t m_flowId;      //!< flow identifier
+  uint32_t m_packetId;    //!< packet identifier
+  uint32_t m_packetSize;  //!< packet size
+
+};
+
+TypeId 
+Ipv6FlowProbeTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::Ipv6FlowProbeTag")
+    .SetParent<Tag> ()
+    .AddConstructor<Ipv6FlowProbeTag> ()
+  ;
+  return tid;
+}
+TypeId 
+Ipv6FlowProbeTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+uint32_t 
+Ipv6FlowProbeTag::GetSerializedSize (void) const
+{
+  return 4 + 4 + 4;
+}
+void 
+Ipv6FlowProbeTag::Serialize (TagBuffer buf) const
+{
+  buf.WriteU32 (m_flowId);
+  buf.WriteU32 (m_packetId);
+  buf.WriteU32 (m_packetSize);
+}
+void 
+Ipv6FlowProbeTag::Deserialize (TagBuffer buf)
+{
+  m_flowId = buf.ReadU32 ();
+  m_packetId = buf.ReadU32 ();
+  m_packetSize = buf.ReadU32 ();
+}
+void 
+Ipv6FlowProbeTag::Print (std::ostream &os) const
+{
+  os << "FlowId=" << m_flowId;
+  os << "PacketId=" << m_packetId;
+  os << "PacketSize=" << m_packetSize;
+}
+Ipv6FlowProbeTag::Ipv6FlowProbeTag ()
+  : Tag () 
+{
+}
+
+Ipv6FlowProbeTag::Ipv6FlowProbeTag (uint32_t flowId, uint32_t packetId, uint32_t packetSize)
+  : Tag (), m_flowId (flowId), m_packetId (packetId), m_packetSize (packetSize)
+{
+}
+
+void
+Ipv6FlowProbeTag::SetFlowId (uint32_t id)
+{
+  m_flowId = id;
+}
+void
+Ipv6FlowProbeTag::SetPacketId (uint32_t id)
+{
+  m_packetId = id;
+}
+void
+Ipv6FlowProbeTag::SetPacketSize (uint32_t size)
+{
+  m_packetSize = size;
+}
+uint32_t
+Ipv6FlowProbeTag::GetFlowId (void) const
+{
+  return m_flowId;
+}
+uint32_t
+Ipv6FlowProbeTag::GetPacketId (void) const
+{
+  return m_packetId;
+} 
+uint32_t
+Ipv6FlowProbeTag::GetPacketSize (void) const
+{
+  return m_packetSize;
+} 
+
+////////////////////////////////////////
+// Ipv6FlowProbe class implementation //
+////////////////////////////////////////
+
+Ipv6FlowProbe::Ipv6FlowProbe (Ptr<FlowMonitor> monitor,
+                              Ptr<Ipv6FlowClassifier> classifier,
+                              Ptr<Node> node)
+  : FlowProbe (monitor),
+    m_classifier (classifier)
+{
+  NS_LOG_FUNCTION (this << node->GetId ());
+
+  Ptr<Ipv6L3Protocol> ipv6 = node->GetObject<Ipv6L3Protocol> ();
+
+  if (!ipv6->TraceConnectWithoutContext ("SendOutgoing",
+                                         MakeCallback (&Ipv6FlowProbe::SendOutgoingLogger, Ptr<Ipv6FlowProbe> (this))))
+    {
+      NS_FATAL_ERROR ("trace fail");
+    }
+  if (!ipv6->TraceConnectWithoutContext ("UnicastForward",
+                                         MakeCallback (&Ipv6FlowProbe::ForwardLogger, Ptr<Ipv6FlowProbe> (this))))
+    {
+      NS_FATAL_ERROR ("trace fail");
+    }
+  if (!ipv6->TraceConnectWithoutContext ("LocalDeliver",
+                                         MakeCallback (&Ipv6FlowProbe::ForwardUpLogger, Ptr<Ipv6FlowProbe> (this))))
+    {
+      NS_FATAL_ERROR ("trace fail");
+    }
+
+  if (!ipv6->TraceConnectWithoutContext ("Drop",
+                                         MakeCallback (&Ipv6FlowProbe::DropLogger, Ptr<Ipv6FlowProbe> (this))))
+    {
+      NS_FATAL_ERROR ("trace fail");
+    }
+
+  // code copied from point-to-point-helper.cc
+  std::ostringstream oss;
+  oss << "/NodeList/" << node->GetId () << "/DeviceList/*/TxQueue/Drop";
+  Config::ConnectWithoutContext (oss.str (), MakeCallback (&Ipv6FlowProbe::QueueDropLogger, Ptr<Ipv6FlowProbe> (this)));
+}
+
+Ipv6FlowProbe::~Ipv6FlowProbe ()
+{
+}
+
+void
+Ipv6FlowProbe::DoDispose ()
+{
+  FlowProbe::DoDispose ();
+}
+
+void
+Ipv6FlowProbe::SendOutgoingLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
+{
+  FlowId flowId;
+  FlowPacketId packetId;
+
+  if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
+    {
+      uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
+      NS_LOG_DEBUG ("ReportFirstTx ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<"); "
+                                     << ipHeader << *ipPayload);
+      m_flowMonitor->ReportFirstTx (this, flowId, packetId, size);
+
+      // tag the packet with the flow id and packet id, so that the packet can be identified even
+      // when Ipv6Header is not accessible at some non-IPv6 protocol layer
+      Ipv6FlowProbeTag fTag (flowId, packetId, size);
+      ipPayload->AddPacketTag (fTag);
+    }
+}
+
+void
+Ipv6FlowProbe::ForwardLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
+{
+  // peek the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
+  Ipv6FlowProbeTag fTag;
+
+  bool found = ipPayload->PeekPacketTag (fTag);
+
+  if (found)
+    {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
+
+      uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
+      NS_LOG_DEBUG ("ReportForwarding ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<");");
+      m_flowMonitor->ReportForwarding (this, flowId, packetId, size);
+    }
+}
+
+void
+Ipv6FlowProbe::ForwardUpLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
+{
+  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
+  Ipv6FlowProbeTag fTag;
+
+  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
+  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+
+  if (found)
+    {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
+
+      uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
+      NS_LOG_DEBUG ("ReportLastRx ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<");");
+      m_flowMonitor->ReportLastRx (this, flowId, packetId, size);
+    }
+}
+
+void
+Ipv6FlowProbe::DropLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload,
+                           Ipv6L3Protocol::DropReason reason, Ptr<Ipv6> ipv6, uint32_t ifIndex)
+{
+#if 0
+  switch (reason)
+    {
+    case Ipv6L3Protocol::DROP_NO_ROUTE:
+      break;
+
+    case Ipv6L3Protocol::DROP_TTL_EXPIRED:
+    case Ipv6L3Protocol::DROP_BAD_CHECKSUM:
+      Ipv6Address addri = m_ipv6->GetAddress (ifIndex);
+      Ipv6Mask maski = m_ipv6->GetNetworkMask (ifIndex);
+      Ipv6Address bcast = addri.GetSubnetDirectedBroadcast (maski);
+      if (ipHeader.GetDestination () == bcast) // we don't want broadcast packets
+        {
+          return;
+        }
+    }
+#endif
+
+  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
+  Ipv6FlowProbeTag fTag;
+
+  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
+  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+
+  if (found)
+    {
+      FlowId flowId = fTag.GetFlowId ();
+      FlowPacketId packetId = fTag.GetPacketId ();
+
+      uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());
+      NS_LOG_DEBUG ("Drop ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<", " << reason 
+                            << ", destIp=" << ipHeader.GetDestinationAddress () << "); "
+                            << "HDR: " << ipHeader << " PKT: " << *ipPayload);
+
+      DropReason myReason;
+
+
+      switch (reason)
+        {
+        case Ipv6L3Protocol::DROP_TTL_EXPIRED:
+          myReason = DROP_TTL_EXPIRE;
+          NS_LOG_DEBUG ("DROP_TTL_EXPIRE");
+          break;
+        case Ipv6L3Protocol::DROP_NO_ROUTE:
+          myReason = DROP_NO_ROUTE;
+          NS_LOG_DEBUG ("DROP_NO_ROUTE");
+          break;
+        case Ipv6L3Protocol::DROP_INTERFACE_DOWN:
+          myReason = DROP_INTERFACE_DOWN;
+          NS_LOG_DEBUG ("DROP_INTERFACE_DOWN");
+          break;
+        case Ipv6L3Protocol::DROP_ROUTE_ERROR:
+           myReason = DROP_ROUTE_ERROR;
+           NS_LOG_DEBUG ("DROP_ROUTE_ERROR");
+           break;
+        case Ipv6L3Protocol::DROP_UNKNOWN_PROTOCOL:
+           myReason = DROP_UNKNOWN_PROTOCOL;
+           NS_LOG_DEBUG ("DROP_UNKNOWN_PROTOCOL");
+           break;
+        case Ipv6L3Protocol::DROP_UNKNOWN_OPTION:
+           myReason = DROP_UNKNOWN_OPTION;
+           NS_LOG_DEBUG ("DROP_UNKNOWN_OPTION");
+           break;
+        case Ipv6L3Protocol::DROP_MALFORMED_HEADER:
+           myReason = DROP_MALFORMED_HEADER;
+           NS_LOG_DEBUG ("DROP_MALFORMED_HEADER");
+           break;
+        case Ipv6L3Protocol::DROP_FRAGMENT_TIMEOUT:
+          myReason = DROP_FRAGMENT_TIMEOUT;
+          NS_LOG_DEBUG ("DROP_FRAGMENT_TIMEOUT");
+          break;
+        default:
+          myReason = DROP_INVALID_REASON;
+          NS_FATAL_ERROR ("Unexpected drop reason code " << reason);
+        }
+
+      m_flowMonitor->ReportDrop (this, flowId, packetId, size, myReason);
+    }
+}
+
+void 
+Ipv6FlowProbe::QueueDropLogger (Ptr<const Packet> ipPayload)
+{
+  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
+  Ipv6FlowProbeTag fTag;
+
+  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
+  bool tagFound = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  if (!tagFound)
+    {
+      return;
+    }
+
+  FlowId flowId = fTag.GetFlowId ();
+  FlowPacketId packetId = fTag.GetPacketId ();
+  uint32_t size = fTag.GetPacketSize ();
+
+  NS_LOG_DEBUG ("Drop ("<<this<<", "<<flowId<<", "<<packetId<<", "<<size<<", " << DROP_QUEUE 
+                        << "); ");
+
+  m_flowMonitor->ReportDrop (this, flowId, packetId, size, DROP_QUEUE);
+}
+
+} // namespace ns3
+
+
diff -Naur ns-3.19/src/flow-monitor/model/ipv6-flow-probe.h ns-3.20/src/flow-monitor/model/ipv6-flow-probe.h
--- ns-3.19/src/flow-monitor/model/ipv6-flow-probe.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/flow-monitor/model/ipv6-flow-probe.h	2014-06-17 10:33:13.752997050 -0700
@@ -0,0 +1,120 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+//
+// Copyright (c) 2009 INESC Porto
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//
+// Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
+// Modifications: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+//
+
+#ifndef IPV6_FLOW_PROBE_H
+#define IPV6_FLOW_PROBE_H
+
+#include "ns3/flow-probe.h"
+#include "ns3/ipv6-flow-classifier.h"
+#include "ns3/ipv6-l3-protocol.h"
+
+namespace ns3 {
+
+class FlowMonitor;
+class Node;
+
+/// \ingroup flow-monitor
+/// \brief Class that monitors flows at the IPv6 layer of a Node
+///
+/// For each node in the simulation, one instance of the class
+/// Ipv4FlowProbe is created to monitor that node.  Ipv4FlowProbe
+/// accomplishes this by connecting callbacks to trace sources in the
+/// Ipv6L3Protocol interface of the node.
+class Ipv6FlowProbe : public FlowProbe
+{
+
+public:
+  /// \brief Constructor
+  /// \param monitor the FlowMonitor this probe is associated with
+  /// \param classifier the Ipv4FlowClassifier this probe is associated with
+  /// \param node the Node this probe is associated with
+  Ipv6FlowProbe (Ptr<FlowMonitor> monitor, Ptr<Ipv6FlowClassifier> classifier, Ptr<Node> node);
+  virtual ~Ipv6FlowProbe ();
+
+  /// \brief enumeration of possible reasons why a packet may be dropped
+  enum DropReason 
+  {
+    /// Packet dropped due to missing route to the destination
+    DROP_NO_ROUTE = 0,
+
+    /// Packet dropped due to TTL decremented to zero during IPv4 forwarding
+    DROP_TTL_EXPIRE,
+
+    /// Packet dropped due to invalid checksum in the IPv4 header
+    DROP_BAD_CHECKSUM,
+
+    /// Packet dropped due to queue overflow.  Note: only works for
+    /// NetDevices that provide a TxQueue attribute of type Queue
+    /// with a Drop trace source.  It currently works with Csma and
+    /// PointToPoint devices, but not with WiFi or WiMax.
+    DROP_QUEUE,
+
+    DROP_INTERFACE_DOWN,   /**< Interface is down so can not send packet */
+    DROP_ROUTE_ERROR,   /**< Route error */
+
+    DROP_UNKNOWN_PROTOCOL, /**< Unknown L4 protocol */
+    DROP_UNKNOWN_OPTION, /**< Unknown option */
+    DROP_MALFORMED_HEADER, /**< Malformed header */
+
+    DROP_FRAGMENT_TIMEOUT, /**< Fragment timeout exceeded */
+
+    DROP_INVALID_REASON, /**< Fallback reason (no known reason) */
+  };
+
+protected:
+
+  virtual void DoDispose (void);
+
+private:
+  /// Log a packet being sent
+  /// \param ipHeader IP header
+  /// \param ipPayload IP payload
+  /// \param interface outgoing interface
+  void SendOutgoingLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface);
+  /// Log a packet being forwarded
+  /// \param ipHeader IP header
+  /// \param ipPayload IP payload
+  /// \param interface incoming interface
+  void ForwardLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface);
+  /// Log a packet being received by the destination
+  /// \param ipHeader IP header
+  /// \param ipPayload IP payload
+  /// \param interface incoming interface
+  void ForwardUpLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface);
+  /// Log a packet being dropped
+  /// \param ipHeader IP header
+  /// \param ipPayload IP payload
+  /// \param reason drop reason
+  /// \param ipv6 pointer to the IP object dropping the packet
+  /// \param ifIndex interface index
+  void DropLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload,
+                   Ipv6L3Protocol::DropReason reason, Ptr<Ipv6> ipv6, uint32_t ifIndex);
+  /// Log a packet being dropped by a queue
+  /// \param ipPayload IP payload
+  void QueueDropLogger (Ptr<const Packet> ipPayload);
+
+  Ptr<Ipv6FlowClassifier> m_classifier; //!< the Ipv6FlowClassifier this probe is associated with
+};
+
+
+} // namespace ns3
+
+#endif /* IPV6_FLOW_PROBE_H */
diff -Naur ns-3.19/src/flow-monitor/test/histogram-test-suite.cc ns-3.20/src/flow-monitor/test/histogram-test-suite.cc
--- ns-3.19/src/flow-monitor/test/histogram-test-suite.cc	2014-06-17 10:34:00.434636692 -0700
+++ ns-3.20/src/flow-monitor/test/histogram-test-suite.cc	2014-06-17 10:33:13.753997042 -0700
@@ -21,7 +21,7 @@
 #include "ns3/histogram.h"
 #include "ns3/test.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class HistogramTestCase : public ns3::TestCase {
 private:
@@ -78,7 +78,3 @@
     AddTestCase (new HistogramTestCase (), TestCase::QUICK);
   }
 } g_HistogramTestSuite;
-
-} // namespace
-
-
diff -Naur ns-3.19/src/flow-monitor/waf ns-3.20/src/flow-monitor/waf
--- ns-3.19/src/flow-monitor/waf	2014-06-17 10:34:00.434636692 -0700
+++ ns-3.20/src/flow-monitor/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1,2 +0,0 @@
-#! /bin/sh
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/flow-monitor/wscript ns-3.20/src/flow-monitor/wscript
--- ns-3.19/src/flow-monitor/wscript	2014-06-17 10:34:00.434636692 -0700
+++ ns-3.20/src/flow-monitor/wscript	2014-06-17 10:33:13.753997042 -0700
@@ -8,6 +8,8 @@
        'flow-probe.cc',
        'ipv4-flow-classifier.cc',
        'ipv4-flow-probe.cc',
+       'ipv6-flow-classifier.cc',
+       'ipv6-flow-probe.cc',
        'histogram.cc',	
         ]]
     obj.source.append("helper/flow-monitor-helper.cc")
@@ -25,6 +27,8 @@
        'flow-classifier.h',
        'ipv4-flow-classifier.h',
        'ipv4-flow-probe.h',
+       'ipv6-flow-classifier.h',
+       'ipv6-flow-probe.h',
        'histogram.h',
         ]]
     headers.source.append("helper/flow-monitor-helper.h")
diff -Naur ns-3.19/src/internet/bindings/modulegen__gcc_ILP32.py ns-3.20/src/internet/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/internet/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.446636600 -0700
+++ ns-3.20/src/internet/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.766996942 -0700
@@ -203,13 +203,19 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
     module.add_class('PcapHelperForIpv4', allow_subclassing=True)
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv6 [class]
     module.add_class('PcapHelperForIpv6', allow_subclassing=True)
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper [class]
+    module.add_class('RipNgHelper', parent=root_module['ns3::Ipv6RoutingHelper'])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry [class]
+    module.add_class('RipNgRoutingTableEntry', parent=root_module['ns3::Ipv6RoutingTableEntry'])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::Status_e [enumeration]
+    module.add_enum('Status_e', ['RIPNG_VALID', 'RIPNG_INVALID'], outer_class=root_module['ns3::RipNgRoutingTableEntry'])
     ## rtt-estimator.h (module 'internet'): ns3::RttHistory [class]
     module.add_class('RttHistory')
     ## global-route-manager-impl.h (module 'internet'): ns3::SPFVertex [class]
@@ -226,6 +232,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -256,6 +264,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -360,6 +370,12 @@
     module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
     module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader [class]
+    module.add_class('RipNgHeader', parent=root_module['ns3::Header'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::Command_e [enumeration]
+    module.add_enum('Command_e', ['REQUEST', 'RESPONSE'], outer_class=root_module['ns3::RipNgHeader'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte [class]
+    module.add_class('RipNgRte', parent=root_module['ns3::Header'])
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator [class]
     module.add_class('RttEstimator', parent=root_module['ns3::Object'])
     ## rtt-estimator.h (module 'internet'): ns3::RttMeanDeviation [class]
@@ -597,7 +613,7 @@
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'])
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'])
     ## ipv6-route.h (module 'internet'): ns3::Ipv6MulticastRoute [class]
     module.add_class('Ipv6MulticastRoute', parent=root_module['ns3::SimpleRefCount< ns3::Ipv6MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv6MulticastRoute> >'])
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
@@ -646,6 +662,10 @@
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## probe.h (module 'stats'): ns3::Probe [class]
     module.add_class('Probe', import_from_module='ns.stats', parent=root_module['ns3::DataCollectionObject'])
+    ## ripng.h (module 'internet'): ns3::RipNg [class]
+    module.add_class('RipNg', parent=root_module['ns3::Ipv6RoutingProtocol'])
+    ## ripng.h (module 'internet'): ns3::RipNg::SplitHorizonType_e [enumeration]
+    module.add_enum('SplitHorizonType_e', ['NO_SPLIT_HORIZON', 'SPLIT_HORIZON', 'POISON_REVERSE'], outer_class=root_module['ns3::RipNg'])
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol [class]
     module.add_class('TcpL4Protocol', parent=root_module['ns3::IpL4Protocol'])
     ## tcp-newreno.h (module 'internet'): ns3::TcpNewReno [class]
@@ -690,21 +710,26 @@
     module.add_class('Ipv6PacketProbe', parent=root_module['ns3::Probe'])
     ## loopback-net-device.h (module 'internet'): ns3::LoopbackNetDevice [class]
     module.add_class('LoopbackNetDevice', parent=root_module['ns3::NetDevice'])
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< ns3::SequenceNumber< unsigned int, int >, ns3::Ptr< ns3::Packet > >', ('ns3::SequenceNumber< unsigned int, int >', 'ns3::Ptr< ns3::Packet >'), container_type='map')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type='vector')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >', 'ns3::RttHistory_t')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >*', 'ns3::RttHistory_t*')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >&', 'ns3::RttHistory_t&')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::list< ns3::RipNgRte >', 'ns3::RipNgRte', container_type=u'list')
+    module.add_container('std::map< ns3::SequenceNumber< unsigned int, int >, ns3::Ptr< ns3::Packet > >', ('ns3::SequenceNumber< unsigned int, int >', 'ns3::Ptr< ns3::Packet >'), container_type=u'map')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type=u'vector')
+    module.add_container('std::set< unsigned int >', 'unsigned int', container_type=u'set')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >', u'ns3::RttHistory_t')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >*', u'ns3::RttHistory_t*')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >&', u'ns3::RttHistory_t&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -733,12 +758,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -835,6 +860,8 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3PcapHelperForIpv4_methods(root_module, root_module['ns3::PcapHelperForIpv4'])
     register_Ns3PcapHelperForIpv6_methods(root_module, root_module['ns3::PcapHelperForIpv6'])
+    register_Ns3RipNgHelper_methods(root_module, root_module['ns3::RipNgHelper'])
+    register_Ns3RipNgRoutingTableEntry_methods(root_module, root_module['ns3::RipNgRoutingTableEntry'])
     register_Ns3RttHistory_methods(root_module, root_module['ns3::RttHistory'])
     register_Ns3SPFVertex_methods(root_module, root_module['ns3::SPFVertex'])
     register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
@@ -842,6 +869,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
@@ -894,6 +922,8 @@
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
+    register_Ns3RipNgHeader_methods(root_module, root_module['ns3::RipNgHeader'])
+    register_Ns3RipNgRte_methods(root_module, root_module['ns3::RipNgRte'])
     register_Ns3RttEstimator_methods(root_module, root_module['ns3::RttEstimator'])
     register_Ns3RttMeanDeviation_methods(root_module, root_module['ns3::RttMeanDeviation'])
     register_Ns3SequentialRandomVariable_methods(root_module, root_module['ns3::SequentialRandomVariable'])
@@ -1024,6 +1054,7 @@
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3Probe_methods(root_module, root_module['ns3::Probe'])
+    register_Ns3RipNg_methods(root_module, root_module['ns3::RipNg'])
     register_Ns3TcpL4Protocol_methods(root_module, root_module['ns3::TcpL4Protocol'])
     register_Ns3TcpNewReno_methods(root_module, root_module['ns3::TcpNewReno'])
     register_Ns3TcpReno_methods(root_module, root_module['ns3::TcpReno'])
@@ -1537,6 +1568,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1549,6 +1584,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3226,6 +3265,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -4322,6 +4366,91 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3RipNgHelper_methods(root_module, cls):
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper::RipNgHelper() [constructor]
+    cls.add_constructor([])
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper::RipNgHelper(ns3::RipNgHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgHelper const &', 'arg0')])
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper * ns3::RipNgHelper::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::RipNgHelper *', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-helper.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::RipNgHelper::Create(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::Set(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## ripng-helper.h (module 'internet'): int64_t ns3::RipNgHelper::AssignStreams(ns3::NodeContainer c, int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('ns3::NodeContainer', 'c'), param('int64_t', 'stream')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::SetDefaultRouter(ns3::Ptr<ns3::Node> node, ns3::Ipv6Address nextHop, uint32_t interface) [member function]
+    cls.add_method('SetDefaultRouter', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::ExcludeInterface(ns3::Ptr<ns3::Node> node, uint32_t interface) [member function]
+    cls.add_method('ExcludeInterface', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'interface')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::SetInterfaceMetric(ns3::Ptr<ns3::Node> node, uint32_t interface, uint8_t metric) [member function]
+    cls.add_method('SetInterfaceMetric', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'interface'), param('uint8_t', 'metric')])
+    return
+
+def register_Ns3RipNgRoutingTableEntry_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::RipNgRoutingTableEntry const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgRoutingTableEntry const &', 'arg0')])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry() [constructor]
+    cls.add_constructor([])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::Ipv6Address network, ns3::Ipv6Prefix networkPrefix, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'networkPrefix'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse')])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::Ipv6Address network, ns3::Ipv6Prefix networkPrefix, uint32_t interface) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'networkPrefix'), param('uint32_t', 'interface')])
+    ## ripng.h (module 'internet'): uint8_t ns3::RipNgRoutingTableEntry::GetRouteMetric() const [member function]
+    cls.add_method('GetRouteMetric', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::Status_e ns3::RipNgRoutingTableEntry::GetRouteStatus() const [member function]
+    cls.add_method('GetRouteStatus', 
+                   'ns3::RipNgRoutingTableEntry::Status_e', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): uint16_t ns3::RipNgRoutingTableEntry::GetRouteTag() const [member function]
+    cls.add_method('GetRouteTag', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): bool ns3::RipNgRoutingTableEntry::IsRouteChanged() const [member function]
+    cls.add_method('IsRouteChanged', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteChanged(bool changed) [member function]
+    cls.add_method('SetRouteChanged', 
+                   'void', 
+                   [param('bool', 'changed')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteMetric(uint8_t routeMetric) [member function]
+    cls.add_method('SetRouteMetric', 
+                   'void', 
+                   [param('uint8_t', 'routeMetric')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteStatus(ns3::RipNgRoutingTableEntry::Status_e status) [member function]
+    cls.add_method('SetRouteStatus', 
+                   'void', 
+                   [param('ns3::RipNgRoutingTableEntry::Status_e', 'status')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteTag(uint16_t routeTag) [member function]
+    cls.add_method('SetRouteTag', 
+                   'void', 
+                   [param('uint16_t', 'routeTag')])
+    return
+
 def register_Ns3RttHistory_methods(root_module, cls):
     ## rtt-estimator.h (module 'internet'): ns3::RttHistory::RttHistory(ns3::SequenceNumber32 s, uint32_t c, ns3::Time t) [constructor]
     cls.add_constructor([param('ns3::SequenceNumber32', 's'), param('uint32_t', 'c'), param('ns3::Time', 't')])
@@ -4453,11 +4582,11 @@
 
 def register_Ns3SequenceNumber32_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4663,6 +4792,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -5082,61 +5219,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5144,6 +5237,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -5184,6 +5279,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -7524,6 +7621,143 @@
                    is_const=True, visibility='protected')
     return
 
+def register_Ns3RipNgHeader_methods(root_module, cls):
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader(ns3::RipNgHeader const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgHeader const &', 'arg0')])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader() [constructor]
+    cls.add_constructor([])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::AddRte(ns3::RipNgRte rte) [member function]
+    cls.add_method('AddRte', 
+                   'void', 
+                   [param('ns3::RipNgRte', 'rte')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::ClearRtes() [member function]
+    cls.add_method('ClearRtes', 
+                   'void', 
+                   [])
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::Command_e ns3::RipNgHeader::GetCommand() const [member function]
+    cls.add_method('GetCommand', 
+                   'ns3::RipNgHeader::Command_e', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): ns3::TypeId ns3::RipNgHeader::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): std::list<ns3::RipNgRte, std::allocator<ns3::RipNgRte> > ns3::RipNgHeader::GetRteList() const [member function]
+    cls.add_method('GetRteList', 
+                   'std::list< ns3::RipNgRte >', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint16_t ns3::RipNgHeader::GetRteNumber() const [member function]
+    cls.add_method('GetRteNumber', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgHeader::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): static ns3::TypeId ns3::RipNgHeader::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::SetCommand(ns3::RipNgHeader::Command_e command) [member function]
+    cls.add_method('SetCommand', 
+                   'void', 
+                   [param('ns3::RipNgHeader::Command_e', 'command')])
+    return
+
+def register_Ns3RipNgRte_methods(root_module, cls):
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte(ns3::RipNgRte const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgRte const &', 'arg0')])
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte() [constructor]
+    cls.add_constructor([])
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgRte::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::TypeId ns3::RipNgRte::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::Ipv6Address ns3::RipNgRte::GetPrefix() const [member function]
+    cls.add_method('GetPrefix', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint8_t ns3::RipNgRte::GetPrefixLen() const [member function]
+    cls.add_method('GetPrefixLen', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint8_t ns3::RipNgRte::GetRouteMetric() const [member function]
+    cls.add_method('GetRouteMetric', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint16_t ns3::RipNgRte::GetRouteTag() const [member function]
+    cls.add_method('GetRouteTag', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgRte::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): static ns3::TypeId ns3::RipNgRte::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetPrefix(ns3::Ipv6Address prefix) [member function]
+    cls.add_method('SetPrefix', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'prefix')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetPrefixLen(uint8_t prefixLen) [member function]
+    cls.add_method('SetPrefixLen', 
+                   'void', 
+                   [param('uint8_t', 'prefixLen')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetRouteMetric(uint8_t routeMetric) [member function]
+    cls.add_method('SetRouteMetric', 
+                   'void', 
+                   [param('uint8_t', 'routeMetric')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetRouteTag(uint16_t routeTag) [member function]
+    cls.add_method('SetRouteTag', 
+                   'void', 
+                   [param('uint16_t', 'routeTag')])
+    return
+
 def register_Ns3RttEstimator_methods(root_module, cls):
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator::RttEstimator() [constructor]
     cls.add_constructor([])
@@ -9547,12 +9781,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -9578,6 +9814,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -11746,6 +11987,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -12366,6 +12612,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -12436,6 +12687,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -12524,15 +12780,15 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::ProcessOptions(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, uint8_t length, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::ProcessOptions(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, uint8_t length, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('ProcessOptions', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('uint8_t', 'length'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('uint8_t', 'length'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): void ns3::Ipv6Extension::SetNode(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('SetNode', 
@@ -12555,10 +12811,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionAH::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionAH::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionAH::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12649,10 +12905,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionDestination::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionDestination::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionDestination::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12710,10 +12966,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionESP::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionESP::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionESP::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12775,10 +13031,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionFragment::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionFragment::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionFragment::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12868,10 +13124,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionHopByHop::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionHopByHop::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionHopByHop::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12956,10 +13212,10 @@
                    'uint8_t', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionRouting::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -13169,7 +13425,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -13304,6 +13560,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -13332,6 +13593,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -14596,10 +14862,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -14672,6 +14938,104 @@
                    is_const=True, is_virtual=True)
     return
 
+def register_Ns3RipNg_methods(root_module, cls):
+    ## ripng.h (module 'internet'): ns3::RipNg::RipNg(ns3::RipNg const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNg const &', 'arg0')])
+    ## ripng.h (module 'internet'): ns3::RipNg::RipNg() [constructor]
+    cls.add_constructor([])
+    ## ripng.h (module 'internet'): void ns3::RipNg::AddDefaultRouteTo(ns3::Ipv6Address nextHop, uint32_t interface) [member function]
+    cls.add_method('AddDefaultRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface')])
+    ## ripng.h (module 'internet'): int64_t ns3::RipNg::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## ripng.h (module 'internet'): std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > ns3::RipNg::GetInterfaceExclusions() const [member function]
+    cls.add_method('GetInterfaceExclusions', 
+                   'std::set< unsigned int >', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): uint8_t ns3::RipNg::GetInterfaceMetric(uint32_t interface) const [member function]
+    cls.add_method('GetInterfaceMetric', 
+                   'uint8_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): static ns3::TypeId ns3::RipNg::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyAddAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('NotifyAddAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyAddRoute(ns3::Ipv6Address dst, ns3::Ipv6Prefix mask, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('NotifyAddRoute', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse', default_value='ns3::Ipv6Address::GetZero( )')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyInterfaceDown(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyInterfaceUp(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyRemoveAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('NotifyRemoveAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyRemoveRoute(ns3::Ipv6Address dst, ns3::Ipv6Prefix mask, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('NotifyRemoveRoute', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse', default_value='ns3::Ipv6Address::GetZero( )')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::PrintRoutingTable(ns3::Ptr<ns3::OutputStreamWrapper> stream) const [member function]
+    cls.add_method('PrintRoutingTable', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')], 
+                   is_const=True, is_virtual=True)
+    ## ripng.h (module 'internet'): bool ns3::RipNg::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv6Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<const ns3::NetDevice>,ns3::Ptr<ns3::Ipv6Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<const ns3::NetDevice>,ns3::Ptr<ns3::Ipv6MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::Socket::SocketErrno,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
+    cls.add_method('RouteInput', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice const >, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice const >, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): ns3::Ptr<ns3::Ipv6Route> ns3::RipNg::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
+    cls.add_method('RouteOutput', 
+                   'ns3::Ptr< ns3::Ipv6Route >', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetInterfaceExclusions(std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > exceptions) [member function]
+    cls.add_method('SetInterfaceExclusions', 
+                   'void', 
+                   [param('std::set< unsigned int >', 'exceptions')])
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetInterfaceMetric(uint32_t interface, uint8_t metric) [member function]
+    cls.add_method('SetInterfaceMetric', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('uint8_t', 'metric')])
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
+    cls.add_method('SetIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6 >', 'ipv6')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
 def register_Ns3TcpL4Protocol_methods(root_module, cls):
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint8_t const', is_const=True)
@@ -15975,10 +16339,10 @@
                    'uint8_t', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionLooseRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionLooseRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionLooseRouting::TYPE_ROUTING [variable]
     cls.add_static_attribute('TYPE_ROUTING', 'uint8_t const', is_const=True)
diff -Naur ns-3.19/src/internet/bindings/modulegen__gcc_LP64.py ns-3.20/src/internet/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/internet/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.456636522 -0700
+++ ns-3.20/src/internet/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.777996857 -0700
@@ -203,13 +203,19 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
     module.add_class('PcapHelperForIpv4', allow_subclassing=True)
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv6 [class]
     module.add_class('PcapHelperForIpv6', allow_subclassing=True)
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper [class]
+    module.add_class('RipNgHelper', parent=root_module['ns3::Ipv6RoutingHelper'])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry [class]
+    module.add_class('RipNgRoutingTableEntry', parent=root_module['ns3::Ipv6RoutingTableEntry'])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::Status_e [enumeration]
+    module.add_enum('Status_e', ['RIPNG_VALID', 'RIPNG_INVALID'], outer_class=root_module['ns3::RipNgRoutingTableEntry'])
     ## rtt-estimator.h (module 'internet'): ns3::RttHistory [class]
     module.add_class('RttHistory')
     ## global-route-manager-impl.h (module 'internet'): ns3::SPFVertex [class]
@@ -226,6 +232,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -256,6 +264,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -360,6 +370,12 @@
     module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
     module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader [class]
+    module.add_class('RipNgHeader', parent=root_module['ns3::Header'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::Command_e [enumeration]
+    module.add_enum('Command_e', ['REQUEST', 'RESPONSE'], outer_class=root_module['ns3::RipNgHeader'])
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte [class]
+    module.add_class('RipNgRte', parent=root_module['ns3::Header'])
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator [class]
     module.add_class('RttEstimator', parent=root_module['ns3::Object'])
     ## rtt-estimator.h (module 'internet'): ns3::RttMeanDeviation [class]
@@ -597,7 +613,7 @@
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'])
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'])
     ## ipv6-route.h (module 'internet'): ns3::Ipv6MulticastRoute [class]
     module.add_class('Ipv6MulticastRoute', parent=root_module['ns3::SimpleRefCount< ns3::Ipv6MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv6MulticastRoute> >'])
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
@@ -646,6 +662,10 @@
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## probe.h (module 'stats'): ns3::Probe [class]
     module.add_class('Probe', import_from_module='ns.stats', parent=root_module['ns3::DataCollectionObject'])
+    ## ripng.h (module 'internet'): ns3::RipNg [class]
+    module.add_class('RipNg', parent=root_module['ns3::Ipv6RoutingProtocol'])
+    ## ripng.h (module 'internet'): ns3::RipNg::SplitHorizonType_e [enumeration]
+    module.add_enum('SplitHorizonType_e', ['NO_SPLIT_HORIZON', 'SPLIT_HORIZON', 'POISON_REVERSE'], outer_class=root_module['ns3::RipNg'])
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol [class]
     module.add_class('TcpL4Protocol', parent=root_module['ns3::IpL4Protocol'])
     ## tcp-newreno.h (module 'internet'): ns3::TcpNewReno [class]
@@ -690,21 +710,26 @@
     module.add_class('Ipv6PacketProbe', parent=root_module['ns3::Probe'])
     ## loopback-net-device.h (module 'internet'): ns3::LoopbackNetDevice [class]
     module.add_class('LoopbackNetDevice', parent=root_module['ns3::NetDevice'])
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< ns3::SequenceNumber< unsigned int, int >, ns3::Ptr< ns3::Packet > >', ('ns3::SequenceNumber< unsigned int, int >', 'ns3::Ptr< ns3::Packet >'), container_type='map')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type='vector')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< short unsigned int, short int >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >', 'ns3::RttHistory_t')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >*', 'ns3::RttHistory_t*')
-    typehandlers.add_type_alias('std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >&', 'ns3::RttHistory_t&')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::list< ns3::RipNgRte >', 'ns3::RipNgRte', container_type=u'list')
+    module.add_container('std::map< ns3::SequenceNumber< unsigned int, int >, ns3::Ptr< ns3::Packet > >', ('ns3::SequenceNumber< unsigned int, int >', 'ns3::Ptr< ns3::Packet >'), container_type=u'map')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type=u'vector')
+    module.add_container('std::set< unsigned int >', 'unsigned int', container_type=u'set')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >', u'ns3::RttHistory_t')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >*', u'ns3::RttHistory_t*')
+    typehandlers.add_type_alias(u'std::deque< ns3::RttHistory, std::allocator< ns3::RttHistory > >&', u'ns3::RttHistory_t&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -733,12 +758,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -835,6 +860,8 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3PcapHelperForIpv4_methods(root_module, root_module['ns3::PcapHelperForIpv4'])
     register_Ns3PcapHelperForIpv6_methods(root_module, root_module['ns3::PcapHelperForIpv6'])
+    register_Ns3RipNgHelper_methods(root_module, root_module['ns3::RipNgHelper'])
+    register_Ns3RipNgRoutingTableEntry_methods(root_module, root_module['ns3::RipNgRoutingTableEntry'])
     register_Ns3RttHistory_methods(root_module, root_module['ns3::RttHistory'])
     register_Ns3SPFVertex_methods(root_module, root_module['ns3::SPFVertex'])
     register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
@@ -842,6 +869,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
@@ -894,6 +922,8 @@
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
+    register_Ns3RipNgHeader_methods(root_module, root_module['ns3::RipNgHeader'])
+    register_Ns3RipNgRte_methods(root_module, root_module['ns3::RipNgRte'])
     register_Ns3RttEstimator_methods(root_module, root_module['ns3::RttEstimator'])
     register_Ns3RttMeanDeviation_methods(root_module, root_module['ns3::RttMeanDeviation'])
     register_Ns3SequentialRandomVariable_methods(root_module, root_module['ns3::SequentialRandomVariable'])
@@ -1024,6 +1054,7 @@
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3Probe_methods(root_module, root_module['ns3::Probe'])
+    register_Ns3RipNg_methods(root_module, root_module['ns3::RipNg'])
     register_Ns3TcpL4Protocol_methods(root_module, root_module['ns3::TcpL4Protocol'])
     register_Ns3TcpNewReno_methods(root_module, root_module['ns3::TcpNewReno'])
     register_Ns3TcpReno_methods(root_module, root_module['ns3::TcpReno'])
@@ -1537,6 +1568,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1549,6 +1584,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3226,6 +3265,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -4322,6 +4366,91 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3RipNgHelper_methods(root_module, cls):
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper::RipNgHelper() [constructor]
+    cls.add_constructor([])
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper::RipNgHelper(ns3::RipNgHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgHelper const &', 'arg0')])
+    ## ripng-helper.h (module 'internet'): ns3::RipNgHelper * ns3::RipNgHelper::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::RipNgHelper *', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-helper.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::RipNgHelper::Create(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::Set(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## ripng-helper.h (module 'internet'): int64_t ns3::RipNgHelper::AssignStreams(ns3::NodeContainer c, int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('ns3::NodeContainer', 'c'), param('int64_t', 'stream')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::SetDefaultRouter(ns3::Ptr<ns3::Node> node, ns3::Ipv6Address nextHop, uint32_t interface) [member function]
+    cls.add_method('SetDefaultRouter', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::ExcludeInterface(ns3::Ptr<ns3::Node> node, uint32_t interface) [member function]
+    cls.add_method('ExcludeInterface', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'interface')])
+    ## ripng-helper.h (module 'internet'): void ns3::RipNgHelper::SetInterfaceMetric(ns3::Ptr<ns3::Node> node, uint32_t interface, uint8_t metric) [member function]
+    cls.add_method('SetInterfaceMetric', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'interface'), param('uint8_t', 'metric')])
+    return
+
+def register_Ns3RipNgRoutingTableEntry_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::RipNgRoutingTableEntry const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgRoutingTableEntry const &', 'arg0')])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry() [constructor]
+    cls.add_constructor([])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::Ipv6Address network, ns3::Ipv6Prefix networkPrefix, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'networkPrefix'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse')])
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::RipNgRoutingTableEntry(ns3::Ipv6Address network, ns3::Ipv6Prefix networkPrefix, uint32_t interface) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address', 'network'), param('ns3::Ipv6Prefix', 'networkPrefix'), param('uint32_t', 'interface')])
+    ## ripng.h (module 'internet'): uint8_t ns3::RipNgRoutingTableEntry::GetRouteMetric() const [member function]
+    cls.add_method('GetRouteMetric', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): ns3::RipNgRoutingTableEntry::Status_e ns3::RipNgRoutingTableEntry::GetRouteStatus() const [member function]
+    cls.add_method('GetRouteStatus', 
+                   'ns3::RipNgRoutingTableEntry::Status_e', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): uint16_t ns3::RipNgRoutingTableEntry::GetRouteTag() const [member function]
+    cls.add_method('GetRouteTag', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): bool ns3::RipNgRoutingTableEntry::IsRouteChanged() const [member function]
+    cls.add_method('IsRouteChanged', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteChanged(bool changed) [member function]
+    cls.add_method('SetRouteChanged', 
+                   'void', 
+                   [param('bool', 'changed')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteMetric(uint8_t routeMetric) [member function]
+    cls.add_method('SetRouteMetric', 
+                   'void', 
+                   [param('uint8_t', 'routeMetric')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteStatus(ns3::RipNgRoutingTableEntry::Status_e status) [member function]
+    cls.add_method('SetRouteStatus', 
+                   'void', 
+                   [param('ns3::RipNgRoutingTableEntry::Status_e', 'status')])
+    ## ripng.h (module 'internet'): void ns3::RipNgRoutingTableEntry::SetRouteTag(uint16_t routeTag) [member function]
+    cls.add_method('SetRouteTag', 
+                   'void', 
+                   [param('uint16_t', 'routeTag')])
+    return
+
 def register_Ns3RttHistory_methods(root_module, cls):
     ## rtt-estimator.h (module 'internet'): ns3::RttHistory::RttHistory(ns3::SequenceNumber32 s, uint32_t c, ns3::Time t) [constructor]
     cls.add_constructor([param('ns3::SequenceNumber32', 's'), param('uint32_t', 'c'), param('ns3::Time', 't')])
@@ -4453,11 +4582,11 @@
 
 def register_Ns3SequenceNumber32_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4663,6 +4792,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -5082,61 +5219,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5144,6 +5237,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -5184,6 +5279,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -7524,6 +7621,143 @@
                    is_const=True, visibility='protected')
     return
 
+def register_Ns3RipNgHeader_methods(root_module, cls):
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader(ns3::RipNgHeader const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgHeader const &', 'arg0')])
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader() [constructor]
+    cls.add_constructor([])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::AddRte(ns3::RipNgRte rte) [member function]
+    cls.add_method('AddRte', 
+                   'void', 
+                   [param('ns3::RipNgRte', 'rte')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::ClearRtes() [member function]
+    cls.add_method('ClearRtes', 
+                   'void', 
+                   [])
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::RipNgHeader::Command_e ns3::RipNgHeader::GetCommand() const [member function]
+    cls.add_method('GetCommand', 
+                   'ns3::RipNgHeader::Command_e', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): ns3::TypeId ns3::RipNgHeader::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): std::list<ns3::RipNgRte, std::allocator<ns3::RipNgRte> > ns3::RipNgHeader::GetRteList() const [member function]
+    cls.add_method('GetRteList', 
+                   'std::list< ns3::RipNgRte >', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint16_t ns3::RipNgHeader::GetRteNumber() const [member function]
+    cls.add_method('GetRteNumber', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgHeader::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): static ns3::TypeId ns3::RipNgHeader::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgHeader::SetCommand(ns3::RipNgHeader::Command_e command) [member function]
+    cls.add_method('SetCommand', 
+                   'void', 
+                   [param('ns3::RipNgHeader::Command_e', 'command')])
+    return
+
+def register_Ns3RipNgRte_methods(root_module, cls):
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte(ns3::RipNgRte const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNgRte const &', 'arg0')])
+    ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte() [constructor]
+    cls.add_constructor([])
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgRte::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::TypeId ns3::RipNgRte::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): ns3::Ipv6Address ns3::RipNgRte::GetPrefix() const [member function]
+    cls.add_method('GetPrefix', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint8_t ns3::RipNgRte::GetPrefixLen() const [member function]
+    cls.add_method('GetPrefixLen', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint8_t ns3::RipNgRte::GetRouteMetric() const [member function]
+    cls.add_method('GetRouteMetric', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint16_t ns3::RipNgRte::GetRouteTag() const [member function]
+    cls.add_method('GetRouteTag', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ripng-header.h (module 'internet'): uint32_t ns3::RipNgRte::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): static ns3::TypeId ns3::RipNgRte::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetPrefix(ns3::Ipv6Address prefix) [member function]
+    cls.add_method('SetPrefix', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'prefix')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetPrefixLen(uint8_t prefixLen) [member function]
+    cls.add_method('SetPrefixLen', 
+                   'void', 
+                   [param('uint8_t', 'prefixLen')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetRouteMetric(uint8_t routeMetric) [member function]
+    cls.add_method('SetRouteMetric', 
+                   'void', 
+                   [param('uint8_t', 'routeMetric')])
+    ## ripng-header.h (module 'internet'): void ns3::RipNgRte::SetRouteTag(uint16_t routeTag) [member function]
+    cls.add_method('SetRouteTag', 
+                   'void', 
+                   [param('uint16_t', 'routeTag')])
+    return
+
 def register_Ns3RttEstimator_methods(root_module, cls):
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator::RttEstimator() [constructor]
     cls.add_constructor([])
@@ -9547,12 +9781,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -9578,6 +9814,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -11746,6 +11987,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -12366,6 +12612,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -12436,6 +12687,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -12524,15 +12780,15 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::ProcessOptions(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, uint8_t length, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6Extension::ProcessOptions(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, uint8_t length, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('ProcessOptions', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('uint8_t', 'length'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('uint8_t', 'length'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): void ns3::Ipv6Extension::SetNode(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('SetNode', 
@@ -12555,10 +12811,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionAH::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionAH::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionAH::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12649,10 +12905,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionDestination::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionDestination::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionDestination::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12710,10 +12966,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionESP::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionESP::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionESP::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12775,10 +13031,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionFragment::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionFragment::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionFragment::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12868,10 +13124,10 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionHopByHop::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionHopByHop::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionHopByHop::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -12956,10 +13212,10 @@
                    'uint8_t', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionRouting::EXT_NUMBER [variable]
     cls.add_static_attribute('EXT_NUMBER', 'uint8_t const', is_const=True)
@@ -13169,7 +13425,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -13304,6 +13560,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -13332,6 +13593,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -14596,10 +14862,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -14672,6 +14938,104 @@
                    is_const=True, is_virtual=True)
     return
 
+def register_Ns3RipNg_methods(root_module, cls):
+    ## ripng.h (module 'internet'): ns3::RipNg::RipNg(ns3::RipNg const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::RipNg const &', 'arg0')])
+    ## ripng.h (module 'internet'): ns3::RipNg::RipNg() [constructor]
+    cls.add_constructor([])
+    ## ripng.h (module 'internet'): void ns3::RipNg::AddDefaultRouteTo(ns3::Ipv6Address nextHop, uint32_t interface) [member function]
+    cls.add_method('AddDefaultRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface')])
+    ## ripng.h (module 'internet'): int64_t ns3::RipNg::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## ripng.h (module 'internet'): std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > ns3::RipNg::GetInterfaceExclusions() const [member function]
+    cls.add_method('GetInterfaceExclusions', 
+                   'std::set< unsigned int >', 
+                   [], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): uint8_t ns3::RipNg::GetInterfaceMetric(uint32_t interface) const [member function]
+    cls.add_method('GetInterfaceMetric', 
+                   'uint8_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True)
+    ## ripng.h (module 'internet'): static ns3::TypeId ns3::RipNg::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyAddAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('NotifyAddAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyAddRoute(ns3::Ipv6Address dst, ns3::Ipv6Prefix mask, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('NotifyAddRoute', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse', default_value='ns3::Ipv6Address::GetZero( )')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyInterfaceDown(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyInterfaceUp(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyRemoveAddress(uint32_t interface, ns3::Ipv6InterfaceAddress address) [member function]
+    cls.add_method('NotifyRemoveAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::NotifyRemoveRoute(ns3::Ipv6Address dst, ns3::Ipv6Prefix mask, ns3::Ipv6Address nextHop, uint32_t interface, ns3::Ipv6Address prefixToUse=ns3::Ipv6Address::GetZero( )) [member function]
+    cls.add_method('NotifyRemoveRoute', 
+                   'void', 
+                   [param('ns3::Ipv6Address', 'dst'), param('ns3::Ipv6Prefix', 'mask'), param('ns3::Ipv6Address', 'nextHop'), param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'prefixToUse', default_value='ns3::Ipv6Address::GetZero( )')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::PrintRoutingTable(ns3::Ptr<ns3::OutputStreamWrapper> stream) const [member function]
+    cls.add_method('PrintRoutingTable', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')], 
+                   is_const=True, is_virtual=True)
+    ## ripng.h (module 'internet'): bool ns3::RipNg::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv6Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<const ns3::NetDevice>,ns3::Ptr<ns3::Ipv6Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<const ns3::NetDevice>,ns3::Ptr<ns3::Ipv6MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv6Header&,ns3::Socket::SocketErrno,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
+    cls.add_method('RouteInput', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice const >, ns3::Ptr< ns3::Ipv6Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice const >, ns3::Ptr< ns3::Ipv6MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv6Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): ns3::Ptr<ns3::Ipv6Route> ns3::RipNg::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
+    cls.add_method('RouteOutput', 
+                   'ns3::Ptr< ns3::Ipv6Route >', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetInterfaceExclusions(std::set<unsigned int, std::less<unsigned int>, std::allocator<unsigned int> > exceptions) [member function]
+    cls.add_method('SetInterfaceExclusions', 
+                   'void', 
+                   [param('std::set< unsigned int >', 'exceptions')])
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetInterfaceMetric(uint32_t interface, uint8_t metric) [member function]
+    cls.add_method('SetInterfaceMetric', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('uint8_t', 'metric')])
+    ## ripng.h (module 'internet'): void ns3::RipNg::SetIpv6(ns3::Ptr<ns3::Ipv6> ipv6) [member function]
+    cls.add_method('SetIpv6', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv6 >', 'ipv6')], 
+                   is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ripng.h (module 'internet'): void ns3::RipNg::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
 def register_Ns3TcpL4Protocol_methods(root_module, cls):
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint8_t const', is_const=True)
@@ -15975,10 +16339,10 @@
                    'uint8_t', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionLooseRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & isDropped) [member function]
+    ## ipv6-extension.h (module 'internet'): uint8_t ns3::Ipv6ExtensionLooseRouting::Process(ns3::Ptr<ns3::Packet> & packet, uint8_t offset, ns3::Ipv6Header const & ipv6Header, ns3::Ipv6Address dst, uint8_t * nextHeader, bool & stopProcessing, bool & isDropped, ns3::Ipv6L3Protocol::DropReason & dropReason) [member function]
     cls.add_method('Process', 
                    'uint8_t', 
-                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'isDropped')], 
+                   [param('ns3::Ptr< ns3::Packet > &', 'packet'), param('uint8_t', 'offset'), param('ns3::Ipv6Header const &', 'ipv6Header'), param('ns3::Ipv6Address', 'dst'), param('uint8_t *', 'nextHeader'), param('bool &', 'stopProcessing'), param('bool &', 'isDropped'), param('ns3::Ipv6L3Protocol::DropReason &', 'dropReason')], 
                    is_virtual=True)
     ## ipv6-extension.h (module 'internet'): ns3::Ipv6ExtensionLooseRouting::TYPE_ROUTING [variable]
     cls.add_static_attribute('TYPE_ROUTING', 'uint8_t const', is_const=True)
diff -Naur ns-3.19/src/internet/doc/ipv6.rst ns-3.20/src/internet/doc/ipv6.rst
--- ns-3.19/src/internet/doc/ipv6.rst	2014-06-17 10:34:00.458636507 -0700
+++ ns-3.20/src/internet/doc/ipv6.rst	2014-06-17 10:33:13.779996841 -0700
@@ -157,6 +157,33 @@
 all the nodes will also have a link-local address. Typically the first address on an 
 interface will be the link-local one, with the global address(es) being the following ones.
 
+Note that the global addesses will be derived from the MAC address. As a consequence, expect
+to have addresses similar to ``2001:db8::200:ff:fe00:1``.
+
+It is possible to repeat the above to assign more than one global address to a node.
+However, due to the ``Ipv6AddressHelper`` singleton nature, one should first assign all the
+adddresses of a network, then change the network base (``SetBase``), then do a new assignment.
+
+Alternatively, it is possible to assign a specific address to a node:
+
+::
+
+    Ptr<Node> n0 = CreateObject<Node> ();
+    NodeContainer net (n0);
+    CsmaHelper csma;
+    NetDeviceContainer ndc = csma.Install (net); 
+
+    NS_LOG_INFO ("Specifically Assign an IPv6 Address.");
+    Ipv6AddressHelper ipv6;
+    Ptr<NetDevice> device = ndc.Get (0);
+    Ptr<Node> node = device->GetNode ();
+    Ptr<Ipv6> ipv6proto = node->GetObject<Ipv6> ();
+    int32_t ifIndex = 0;
+    ifIndex = ipv6proto->GetInterfaceForDevice (device);
+    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:f00d:cafe::42"), Ipv6Prefix (64));
+    ipv6proto->AddAddress (ifIndex, ipv6Addr);
+
+
 Auto-generated IPv6 adddresses
 ##############################
 
diff -Naur ns-3.19/src/internet/doc/routing-overview.rst ns-3.20/src/internet/doc/routing-overview.rst
--- ns-3.19/src/internet/doc/routing-overview.rst	2014-06-17 10:34:00.459636499 -0700
+++ ns-3.20/src/internet/doc/routing-overview.rst	2014-06-17 10:33:13.780996834 -0700
@@ -215,7 +215,7 @@
 Unicast routing
 ***************
 
-There are presently seven unicast routing protocols defined for IPv4 and two for
+There are presently seven unicast routing protocols defined for IPv4 and three for
 IPv6:
 
 * class Ipv4StaticRouting (covering both unicast and multicast)
@@ -232,19 +232,20 @@
   stores source routes in a packet header field)
 * class Ipv6ListRouting (used to store a prioritized list of routing protocols)
 * class Ipv6StaticRouting 
+* class RipNg - the IPv6 RIPng protocol (:rfc:`2080`)
 
 In the future, this architecture should also allow someone to implement a
 Linux-like implementation with routing cache, or a Click modular router, but
 those are out of scope for now.
 
-Ipv4ListRouting
-+++++++++++++++
+Ipv[4,6]ListRouting
++++++++++++++++++++
 
-This section describes the current default |ns3| Ipv4RoutingProtocol. Typically,
+This section describes the current default |ns3| Ipv[4,6]RoutingProtocol. Typically,
 multiple routing protocols are supported in user space and coordinate to write a
 single forwarding table in the kernel. Presently in |ns3|, the implementation
 instead allows for multiple routing protocols to build/keep their own routing
-state, and the IPv4 implementation will query each one of these routing
+state, and the IP implementation will query each one of these routing
 protocols (in some order determined by the simulation author) until a route is
 found.  
 
@@ -254,23 +255,26 @@
 (e.g., source routing) is used to determine the next hop, and on-demand routing
 approaches where packets must be cached.  
 
-Ipv4ListRouting::AddRoutingProtocol
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Ipv[4,6]4ListRouting::AddRoutingProtocol
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Class Ipv4ListRouting provides a pure virtual function declaration for the
-method that allows one to add a routing protocol::
+Classes Ipv4ListRouting and Ipv6ListRouting provides a pure virtual function declaration
+for the method that allows one to add a routing protocol::
 
   void AddRoutingProtocol (Ptr<Ipv4RoutingProtocol> routingProtocol,
                            int16_t priority);
 
-This method is implemented by class Ipv4ListRoutingImpl in the internet-stack
-module.
+  void AddRoutingProtocol (Ptr<Ipv6RoutingProtocol> routingProtocol,
+                           int16_t priority);
+
+These methods are implemented respectively by class Ipv4ListRoutingImpl and by class 
+Ipv6ListRoutingImpl in the internet module.
 
 The priority variable above governs the priority in which the routing protocols
 are inserted. Notice that it is a signed int.  By default in |ns3|, the helper
-classes will instantiate a Ipv4ListRoutingImpl object, and add to it an
-Ipv4StaticRoutingImpl object at priority zero.  Internally, a list of
-Ipv4RoutingProtocols is stored, and and the routing protocols are each consulted
+classes will instantiate a Ipv[4,6]ListRoutingImpl object, and add to it an
+Ipv[4,6]StaticRoutingImpl object at priority zero.  Internally, a list of
+Ipv[4,6]RoutingProtocols is stored, and and the routing protocols are each consulted
 in decreasing order of priority to see whether a match is found. Therefore, if
 you want your Ipv4RoutingProtocol to have priority lower than the static
 routing, insert it with priority less than 0; e.g.::
@@ -330,6 +334,116 @@
 notifications; i.e. the topology changes are due to loss/gain of connectivity
 over a wireless channel.
 
+RIPng
++++++
+
+This IPv6 routing protocol (:rfc:`2080`) is the evolution of the well-known 
+RIPv1 anf RIPv2 (see :rfc:`1058` and :rfc:`1723`) routing protocols for IPv4.
+
+The protocol is very simple, and it is normally suitable for flat, simple 
+network topologies.
+
+RIPng is strongly based on RIPv1 and RIPv2, and it have the very same goals and
+limitations. In particular, RIP considers any route with a metric equal or greater 
+than 16 as unreachable. As a consequence, the maximum number of hops is the
+network must be less than 15 (the number of routers is not set).
+Users are encouraged to read :rfc:`2080` and :rfc:`1058` to fully understand
+RIPng behaviour and limitations.
+
+
+Routing convergence
+~~~~~~~~~~~~~~~~~~~
+
+RIPng uses a Distance-Vector algorithm, and routes are updated according to
+the Bellman-Ford algorithm (sometimes known as Ford-Fulkerson algorithm).
+The algorithm has a convergence time of O(\|V\|*\|E\|) where \|V\| and \|E\| 
+are the number of vertices (routers) and edges (links) respectively.
+It should be stressed that the convergence time is the number of steps in
+the algorithm, and each step is triggered by a message.
+Since Triggered Updates (i.e., when a route is changed) have a 1-5 seconds 
+cooldown, the toplogy can require some time to be stabilized.
+
+Users should be aware that, during routing tables construction, the routers 
+might drop packets. Data traffic should be sent only after a time long
+enough to allow RIPng to build the network topology.
+Usually 80 seconds should be enough to have a suboptimal (but working)
+routing setup. This includes the time needed to propagate the routes to the
+most distant router (16 hops) with Triggered Updates.
+
+If the network topology is changed (e.g., a link is broken), the recovery 
+time might be quite high, and it might be even higher than the initial 
+setup time. Moreover, the network topology recovery is affected by
+the Split Horizoning strategy.
+
+The example ``examples/routing/ripng-simple-network.cc`` shows both the
+network setup and network recovery phases.
+
+Split Horizoning
+~~~~~~~~~~~~~~~~
+
+Split Horizon is a strategy to prevent routing instability. Three options are possible:
+
+* No Split Horizon
+* Split Horizon
+* Poison Reverse
+
+In the first case, routes are advertised on all the router's interfaces.
+In the second case, routers will not advertise a route on the interface
+from which it was learned.
+Poison Reverse will advertise the route on the interface from which it 
+was learned, but with a metric of 16 (infinity).
+For a full analysis of the three techniques, see :rfc:`1058`, section 2.2.
+
+The example ``ripng-simple-network.cc`` is based on the network toplogy
+described in the RFC, but it does not show the effect described there.
+
+The reason are the Triggered Updates, together with the fact that when a 
+router invalidates a route, it will immediately propagate the route 
+unreachability, thus preventing most of the issues described in the RFC.
+
+However, with complex toplogies, it is still possible to have route 
+instability phenomena similar to the one described in the RFC after a 
+link failure. As a consequence, all the considerations about Split Horizon
+remanins valid.
+
+
+Default routes
+~~~~~~~~~~~~~~
+
+RIPng protocol should be installed *only* on routers. As a consequence, 
+nodes will not know what is the default router.
+
+To overcome this limitation, users should either install the default route
+manually (e.g., by resorting to Ipv6StaticRouting), or by using RADVd.
+RADVd is available in |ns3| in the Applications module, and it is strongly 
+suggested.
+ 
+Protocol parameters and options
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The RIPng |ns3| implementation allows to change all the timers associated 
+with route updates and routes lifetime.
+
+Moreover, users can change the interface metrics on a per-node basis.
+
+The type of Split Horizoning (to avoid routes back-propagation) can be 
+selected on a per-node basis, with the choices being "no split horizon", 
+"split horizon" and "poison reverse". See :rfc:`2080` for further details,
+and :rfc:`1058` for a complete discussion on the split horizoning strategies.
+
+Limitations
+~~~~~~~~~~~
+
+There is no support for the Next Hop option (:rfc:`2080`, Section 2.1.1).
+The Next Hop option is useful when RIPng is not being run on all of the 
+routers on a network.
+Support for this option may be considered in the future.
+
+There is no support for CIDR prefix aggregation. As a result, both routing 
+tables and route advertisements may be larger than necessary. 
+Prefix aggregation may be added in the future.
+
+
 .. _Multicast-routing:
 
 Multicast routing
diff -Naur ns-3.19/src/internet/helper/ipv6-address-helper.cc ns-3.20/src/internet/helper/ipv6-address-helper.cc
--- ns-3.19/src/internet/helper/ipv6-address-helper.cc	2014-06-17 10:34:00.468636430 -0700
+++ ns-3.20/src/internet/helper/ipv6-address-helper.cc	2014-06-17 10:33:13.789996764 -0700
@@ -34,8 +34,7 @@
 namespace ns3 
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6AddressHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6AddressHelper");
 
 Ipv6AddressHelper::Ipv6AddressHelper ()
 {
diff -Naur ns-3.19/src/internet/helper/ripng-helper.cc ns-3.20/src/internet/helper/ripng-helper.cc
--- ns-3.19/src/internet/helper/ripng-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/helper/ripng-helper.cc	2014-06-17 10:33:13.793996733 -0700
@@ -0,0 +1,182 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/node.h"
+#include "ns3/node-list.h"
+#include "ns3/ipv6-list-routing.h"
+#include "ns3/ripng.h"
+#include "ripng-helper.h"
+
+namespace ns3 {
+
+RipNgHelper::RipNgHelper ()
+{
+  m_factory.SetTypeId ("ns3::RipNg");
+}
+
+RipNgHelper::RipNgHelper (const RipNgHelper &o)
+  : m_factory (o.m_factory)
+{
+  m_interfaceExclusions = o.m_interfaceExclusions;
+  m_interfaceMetrics = o.m_interfaceMetrics;
+}
+
+RipNgHelper::~RipNgHelper ()
+{
+  m_interfaceExclusions.clear ();
+  m_interfaceMetrics.clear ();
+}
+
+RipNgHelper*
+RipNgHelper::Copy (void) const
+{
+  return new RipNgHelper (*this);
+}
+
+Ptr<Ipv6RoutingProtocol>
+RipNgHelper::Create (Ptr<Node> node) const
+{
+  Ptr<RipNg> ripng = m_factory.Create<RipNg> ();
+
+  std::map<Ptr<Node>, std::set<uint32_t> >::const_iterator it = m_interfaceExclusions.find (node);
+
+  if(it != m_interfaceExclusions.end ())
+    {
+      ripng->SetInterfaceExclusions (it->second);
+    }
+
+  std::map< Ptr<Node>, std::map<uint32_t, uint8_t> >::const_iterator iter = m_interfaceMetrics.find (node);
+
+  if(iter != m_interfaceMetrics.end ())
+    {
+      std::map<uint32_t, uint8_t>::const_iterator subiter;
+      for (subiter = iter->second.begin (); subiter != iter->second.end (); subiter++)
+        {
+          ripng->SetInterfaceMetric (subiter->first, subiter->second);
+        }
+    }
+
+  node->AggregateObject (ripng);
+  return ripng;
+}
+
+void
+RipNgHelper::Set (std::string name, const AttributeValue &value)
+{
+  m_factory.Set (name, value);
+}
+
+
+int64_t
+RipNgHelper::AssignStreams (NodeContainer c, int64_t stream)
+{
+  int64_t currentStream = stream;
+  Ptr<Node> node;
+  for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i)
+    {
+      node = (*i);
+      Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+      NS_ASSERT_MSG (ipv6, "Ipv6 not installed on node");
+      Ptr<Ipv6RoutingProtocol> proto = ipv6->GetRoutingProtocol ();
+      NS_ASSERT_MSG (proto, "Ipv6 routing not installed on node");
+      Ptr<RipNg> ripng = DynamicCast<RipNg> (proto);
+      if (ripng)
+        {
+          currentStream += ripng->AssignStreams (currentStream);
+          continue;
+        }
+      // RIPng may also be in a list
+      Ptr<Ipv6ListRouting> list = DynamicCast<Ipv6ListRouting> (proto);
+      if (list)
+        {
+          int16_t priority;
+          Ptr<Ipv6RoutingProtocol> listProto;
+          Ptr<RipNg> listRipng;
+          for (uint32_t i = 0; i < list->GetNRoutingProtocols (); i++)
+            {
+              listProto = list->GetRoutingProtocol (i, priority);
+              listRipng = DynamicCast<RipNg> (listProto);
+              if (listRipng)
+                {
+                  currentStream += listRipng->AssignStreams (currentStream);
+                  break;
+                }
+            }
+        }
+    }
+  return (currentStream - stream);
+}
+
+void RipNgHelper::SetDefaultRouter (Ptr<Node> node, Ipv6Address nextHop, uint32_t interface)
+{
+  Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
+  NS_ASSERT_MSG (ipv6, "Ipv6 not installed on node");
+  Ptr<Ipv6RoutingProtocol> proto = ipv6->GetRoutingProtocol ();
+  NS_ASSERT_MSG (proto, "Ipv6 routing not installed on node");
+  Ptr<RipNg> ripng = DynamicCast<RipNg> (proto);
+  if (ripng)
+    {
+      ripng->AddDefaultRouteTo (nextHop, interface);
+    }
+  // RIPng may also be in a list
+  Ptr<Ipv6ListRouting> list = DynamicCast<Ipv6ListRouting> (proto);
+  if (list)
+    {
+      int16_t priority;
+      Ptr<Ipv6RoutingProtocol> listProto;
+      Ptr<RipNg> listRipng;
+      for (uint32_t i = 0; i < list->GetNRoutingProtocols (); i++)
+        {
+          listProto = list->GetRoutingProtocol (i, priority);
+          listRipng = DynamicCast<RipNg> (listProto);
+          if (listRipng)
+            {
+              listRipng->AddDefaultRouteTo (nextHop, interface);
+              break;
+            }
+        }
+    }
+}
+
+void
+RipNgHelper::ExcludeInterface (Ptr<Node> node, uint32_t interface)
+{
+  std::map< Ptr<Node>, std::set<uint32_t> >::iterator it = m_interfaceExclusions.find (node);
+
+  if (it == m_interfaceExclusions.end ())
+    {
+      std::set<uint32_t> interfaces;
+      interfaces.insert (interface);
+
+      m_interfaceExclusions.insert (std::make_pair (node, interfaces));
+    }
+  else
+    {
+      it->second.insert (interface);
+    }
+}
+
+void RipNgHelper::SetInterfaceMetric (Ptr<Node> node, uint32_t interface, uint8_t metric)
+{
+  m_interfaceMetrics[node][interface] = metric;
+}
+
+}
+
diff -Naur ns-3.19/src/internet/helper/ripng-helper.h ns-3.20/src/internet/helper/ripng-helper.h
--- ns-3.19/src/internet/helper/ripng-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/helper/ripng-helper.h	2014-06-17 10:33:13.793996733 -0700
@@ -0,0 +1,148 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#ifndef RIPNG_HELPER_H
+#define RIPNG_HELPER_H
+
+#include "ns3/object-factory.h"
+#include "ns3/ipv6-routing-helper.h"
+#include "ns3/node-container.h"
+#include "ns3/node.h"
+
+namespace ns3 {
+
+/**
+ * \brief Helper class that adds RIPng routing to nodes.
+ *
+ * This class is expected to be used in conjunction with
+ * ns3::InternetStackHelper::SetRoutingHelper
+ *
+ */
+class RipNgHelper : public Ipv6RoutingHelper
+{
+public:
+  /*
+   * Construct an RipngHelper to make life easier while adding RIPng
+   * routing to nodes.
+   */
+  RipNgHelper ();
+
+  /**
+   * \brief Construct an RipngHelper from another previously
+   * initialized instance (Copy Constructor).
+   */
+  RipNgHelper (const RipNgHelper &);
+
+  virtual ~RipNgHelper ();
+
+  /**
+   * \returns pointer to clone of this Ipv4NixVectorHelper
+   *
+   * This method is mainly for internal use by the other helpers;
+   * clients are expected to free the dynamic memory allocated by this method
+   */
+  RipNgHelper* Copy (void) const;
+
+  /**
+   * \param node the node on which the routing protocol will run
+   * \returns a newly-created routing protocol
+   *
+   * This method will be called by ns3::InternetStackHelper::Install
+   */
+  virtual Ptr<Ipv6RoutingProtocol> Create (Ptr<Node> node) const;
+
+  /**
+   * \param name the name of the attribute to set
+   * \param value the value of the attribute to set.
+   *
+   * This method controls the attributes of ns3::Ripng
+   */
+  void Set (std::string name, const AttributeValue &value);
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model. Return the number of streams (possibly zero) that
+   * have been assigned. The Install() method should have previously been
+   * called by the user.
+   *
+   * \param c NetDeviceContainer of the set of net devices for which the
+   *          SixLowPanNetDevice should be modified to use a fixed stream
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this helper
+   */
+  int64_t AssignStreams (NodeContainer c, int64_t stream);
+
+  /**
+   * \brief Install a default route in the node.
+   *
+   * The traffic will be routed to the nextHop, located on the specified
+   * interface, unless a more specific route is found.
+   *
+   * \param node the node
+   * \param nextHop the next hop
+   * \param interface the network interface
+   */
+  void SetDefaultRouter (Ptr<Node> node, Ipv6Address nextHop, uint32_t interface);
+
+  /**
+   * \brief Exclude an interface from RIPng protocol.
+   *
+   * You have to call this function \a before installing RIPng in the nodes.
+   *
+   * Note: the exclusion means that RIPng will not be propagated on that interface.
+   * The network prefix on that interface will be still considered in RIPng.
+   *
+   * \param node the node
+   * \param interface the network interface to be excluded
+   */
+  void ExcludeInterface (Ptr<Node> node, uint32_t interface);
+
+  /**
+   * \brief Set a metric for an interface.
+   *
+   * You have to call this function \a before installing RIPng in the nodes.
+   *
+   * Note: RIPng will apply the metric on route message reception.
+   * As a consequence, interface metric should be set on the receiver.
+   *
+   * \param node the node
+   * \param interface the network interface
+   * \param metric the interface metric
+   */
+  void SetInterfaceMetric (Ptr<Node> node, uint32_t interface, uint8_t metric);
+
+private:
+  /**
+   * \brief Assignment operator declared private and not implemented to disallow
+   * assignment and prevent the compiler from happily inserting its own.
+   */
+  RipNgHelper &operator = (const RipNgHelper &o);
+
+  ObjectFactory m_factory; //|< Object Factory
+
+  std::map< Ptr<Node>, std::set<uint32_t> > m_interfaceExclusions; //!< Interface Exclusion set
+  std::map< Ptr<Node>, std::map<uint32_t, uint8_t> > m_interfaceMetrics; //!< Interface Metric set
+};
+
+} // namespace ns3
+
+
+#endif /* RIPNG_HELPER_H */
+
diff -Naur ns-3.19/src/internet/model/arp-cache.cc ns-3.20/src/internet/model/arp-cache.cc
--- ns-3.19/src/internet/model/arp-cache.cc	2014-06-17 10:34:00.472636399 -0700
+++ ns-3.20/src/internet/model/arp-cache.cc	2014-06-17 10:33:13.793996733 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ArpCache)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ArpCache);
 
 TypeId 
 ArpCache::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/arp-header.cc ns-3.20/src/internet/model/arp-header.cc
--- ns-3.19/src/internet/model/arp-header.cc	2014-06-17 10:34:00.473636391 -0700
+++ ns-3.20/src/internet/model/arp-header.cc	2014-06-17 10:33:13.794996726 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ArpHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ArpHeader);
 
 void 
 ArpHeader::SetRequest (Address sourceHardwareAddress,
diff -Naur ns-3.19/src/internet/model/arp-l3-protocol.cc ns-3.20/src/internet/model/arp-l3-protocol.cc
--- ns-3.19/src/internet/model/arp-l3-protocol.cc	2014-06-17 10:34:00.474636383 -0700
+++ ns-3.20/src/internet/model/arp-l3-protocol.cc	2014-06-17 10:33:13.795996718 -0700
@@ -38,8 +38,7 @@
 
 const uint16_t ArpL3Protocol::PROT_NUMBER = 0x0806;
 
-NS_OBJECT_ENSURE_REGISTERED (ArpL3Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ArpL3Protocol);
 
 TypeId 
 ArpL3Protocol::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/global-router-interface.cc ns-3.20/src/internet/model/global-router-interface.cc
--- ns-3.19/src/internet/model/global-router-interface.cc	2014-06-17 10:34:00.478636352 -0700
+++ ns-3.20/src/internet/model/global-router-interface.cc	2014-06-17 10:33:13.800996679 -0700
@@ -504,8 +504,7 @@
 //
 // ---------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (GlobalRouter)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GlobalRouter);
 
 TypeId 
 GlobalRouter::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/icmpv4.cc ns-3.20/src/internet/model/icmpv4.cc
--- ns-3.19/src/internet/model/icmpv4.cc	2014-06-17 10:34:00.481636330 -0700
+++ ns-3.20/src/internet/model/icmpv4.cc	2014-06-17 10:33:13.802996664 -0700
@@ -30,8 +30,7 @@
  *        Icmpv4Header
  ********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv4Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv4Header);
 
 TypeId 
 Icmpv4Header::GetTypeId (void)
@@ -134,8 +133,7 @@
  *        Icmpv4Echo
  ********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv4Echo)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv4Echo);
 
 void 
 Icmpv4Echo::SetIdentifier (uint16_t id)
@@ -272,8 +270,7 @@
  *        Icmpv4DestinationUnreachable
  ********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv4DestinationUnreachable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv4DestinationUnreachable);
 
 TypeId 
 Icmpv4DestinationUnreachable::GetTypeId (void)
@@ -396,8 +393,7 @@
  *        Icmpv4TimeExceeded
  ********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv4TimeExceeded)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv4TimeExceeded);
 
 TypeId 
 Icmpv4TimeExceeded::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/icmpv4-l4-protocol.cc ns-3.20/src/internet/model/icmpv4-l4-protocol.cc
--- ns-3.19/src/internet/model/icmpv4-l4-protocol.cc	2014-06-17 10:34:00.480636337 -0700
+++ ns-3.20/src/internet/model/icmpv4-l4-protocol.cc	2014-06-17 10:33:13.801996672 -0700
@@ -11,11 +11,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Icmpv4L4Protocol")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Icmpv4L4Protocol");
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv4L4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv4L4Protocol);
 
 // see rfc 792
 const uint8_t Icmpv4L4Protocol::PROT_NUMBER = 1;
diff -Naur ns-3.19/src/internet/model/icmpv6-header.cc ns-3.20/src/internet/model/icmpv6-header.cc
--- ns-3.19/src/internet/model/icmpv6-header.cc	2014-06-17 10:34:00.482636322 -0700
+++ ns-3.20/src/internet/model/icmpv6-header.cc	2014-06-17 10:33:13.803996656 -0700
@@ -31,8 +31,7 @@
 namespace ns3
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6Header);
 
 TypeId Icmpv6Header::GetTypeId ()
 {
@@ -173,8 +172,7 @@
   m_checksum = ~(it.CalculateIpChecksum (40));
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6NS)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6NS);
 
 Icmpv6NS::Icmpv6NS ()
 {
@@ -296,8 +294,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6NA)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6NA);
 
 TypeId Icmpv6NA::GetTypeId ()
 {
@@ -480,8 +477,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6RA)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6RA);
 
 TypeId Icmpv6RA::GetTypeId ()
 {
@@ -700,8 +696,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6RS)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6RS);
 
 TypeId Icmpv6RS::GetTypeId ()
 {
@@ -791,8 +786,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6Redirection)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6Redirection);
 
 TypeId Icmpv6Redirection::GetTypeId ()
 {
@@ -922,8 +916,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6Echo)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6Echo);
 
 TypeId Icmpv6Echo::GetTypeId ()
 {
@@ -1040,8 +1033,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6DestinationUnreachable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6DestinationUnreachable);
 
 TypeId Icmpv6DestinationUnreachable::GetTypeId ()
 {
@@ -1138,8 +1130,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6TooBig)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6TooBig);
 
 TypeId Icmpv6TooBig::GetTypeId ()
 {
@@ -1249,8 +1240,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6TimeExceeded)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6TimeExceeded);
 
 TypeId Icmpv6TimeExceeded::GetTypeId ()
 {
@@ -1349,8 +1339,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6ParameterError)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6ParameterError);
 
 TypeId Icmpv6ParameterError::GetTypeId ()
 {
@@ -1460,8 +1449,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionHeader);
 
 TypeId Icmpv6OptionHeader::GetTypeId ()
 {
@@ -1539,8 +1527,7 @@
   NS_LOG_FUNCTION (this << &start);
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionMtu)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionMtu);
 
 TypeId Icmpv6OptionMtu::GetTypeId ()
 {
@@ -1636,8 +1623,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionPrefixInformation)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionPrefixInformation);
 
 TypeId Icmpv6OptionPrefixInformation::GetTypeId ()
 {
@@ -1810,8 +1796,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionLinkLayerAddress)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionLinkLayerAddress);
 
 TypeId Icmpv6OptionLinkLayerAddress::GetTypeId ()
 {
@@ -1910,16 +1895,16 @@
 
   SetType (i.ReadU8 ());
   SetLength (i.ReadU8 ());
-  NS_ASSERT (GetLength () * 8 - 2 <= 32);
+  // -fstrict-overflow sensitive, see bug 1868
+  NS_ASSERT (GetLength () * 8 <= 32 + 2);
   i.Read (mac, (GetLength () * 8) - 2);
 
-  m_addr.CopyFrom (mac, (GetLength () * 8)-2);
+  m_addr.CopyFrom (mac, (GetLength () * 8) - 2);
 
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionRedirected)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6OptionRedirected);
 
 TypeId Icmpv6OptionRedirected::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/icmpv6-l4-protocol.cc ns-3.20/src/internet/model/icmpv6-l4-protocol.cc
--- ns-3.19/src/internet/model/icmpv6-l4-protocol.cc	2014-06-17 10:34:00.484636306 -0700
+++ ns-3.20/src/internet/model/icmpv6-l4-protocol.cc	2014-06-17 10:33:13.805996641 -0700
@@ -39,11 +39,9 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Icmpv6L4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Icmpv6L4Protocol);
 
-NS_LOG_COMPONENT_DEFINE ("Icmpv6L4Protocol")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Icmpv6L4Protocol");
 
 const uint8_t Icmpv6L4Protocol::PROT_NUMBER = 58;
 
@@ -272,11 +270,14 @@
 
   uint8_t nextHeader = ipHeader.GetNextHeader ();
 
-  Ptr<IpL4Protocol> l4 = ipv6->GetProtocol (nextHeader);
-  if (l4 != 0)
+  if (nextHeader != Icmpv6L4Protocol::PROT_NUMBER)
     {
-      l4->ReceiveIcmp (source, ipHeader.GetHopLimit (), icmp.GetType (), icmp.GetCode (),
-                       info, ipHeader.GetSourceAddress (), ipHeader.GetDestinationAddress (), payload);
+      Ptr<IpL4Protocol> l4 = ipv6->GetProtocol (nextHeader);
+      if (l4 != 0)
+        {
+          l4->ReceiveIcmp (source, ipHeader.GetHopLimit (), icmp.GetType (), icmp.GetCode (),
+                           info, ipHeader.GetSourceAddress (), ipHeader.GetDestinationAddress (), payload);
+        }
     }
 }
 
diff -Naur ns-3.19/src/internet/model/ip-l4-protocol.cc ns-3.20/src/internet/model/ip-l4-protocol.cc
--- ns-3.19/src/internet/model/ip-l4-protocol.cc	2014-06-17 10:34:00.484636306 -0700
+++ ns-3.20/src/internet/model/ip-l4-protocol.cc	2014-06-17 10:33:13.806996633 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (IpL4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (IpL4Protocol);
 
 TypeId 
 IpL4Protocol::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4.cc ns-3.20/src/internet/model/ipv4.cc
--- ns-3.19/src/internet/model/ipv4.cc	2014-06-17 10:34:00.501636175 -0700
+++ ns-3.20/src/internet/model/ipv4.cc	2014-06-17 10:33:13.823996502 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4);
 
 TypeId 
 Ipv4::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4-end-point-demux.cc ns-3.20/src/internet/model/ipv4-end-point-demux.cc
--- ns-3.19/src/internet/model/ipv4-end-point-demux.cc	2014-06-17 10:34:00.486636291 -0700
+++ ns-3.20/src/internet/model/ipv4-end-point-demux.cc	2014-06-17 10:33:13.808996618 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv4EndPointDemux")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv4EndPointDemux");
 
 Ipv4EndPointDemux::Ipv4EndPointDemux ()
   : m_ephemeral (49152), m_portLast (65535), m_portFirst (49152)
diff -Naur ns-3.19/src/internet/model/ipv4-global-routing.cc ns-3.20/src/internet/model/ipv4-global-routing.cc
--- ns-3.19/src/internet/model/ipv4-global-routing.cc	2014-06-17 10:34:00.488636275 -0700
+++ ns-3.20/src/internet/model/ipv4-global-routing.cc	2014-06-17 10:33:13.809996610 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4GlobalRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4GlobalRouting);
 
 TypeId 
 Ipv4GlobalRouting::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4.h ns-3.20/src/internet/model/ipv4.h
--- ns-3.19/src/internet/model/ipv4.h	2014-06-17 10:34:00.502636167 -0700
+++ ns-3.20/src/internet/model/ipv4.h	2014-06-17 10:33:13.823996502 -0700
@@ -24,7 +24,6 @@
 #include "ns3/object.h"
 #include "ns3/socket.h"
 #include "ns3/callback.h"
-#include "ns3/ip-l4-protocol.h"
 #include "ns3/ipv4-address.h"
 #include "ipv4-route.h"
 #include "ipv4-interface-address.h"
@@ -35,6 +34,8 @@
 class NetDevice;
 class Packet;
 class Ipv4RoutingProtocol;
+class IpL4Protocol;
+class Ipv4Header;
 
 /**
  * \ingroup internet
diff -Naur ns-3.19/src/internet/model/ipv4-header.cc ns-3.20/src/internet/model/ipv4-header.cc
--- ns-3.19/src/internet/model/ipv4-header.cc	2014-06-17 10:34:00.489636268 -0700
+++ ns-3.20/src/internet/model/ipv4-header.cc	2014-06-17 10:33:13.810996602 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4Header);
 
 Ipv4Header::Ipv4Header ()
   : m_calcChecksum (false),
@@ -247,7 +246,8 @@
 Ipv4Header::GetFragmentOffset (void) const
 {
   NS_LOG_FUNCTION (this);
-  if ((m_fragmentOffset+m_payloadSize+5*4) > 65535)
+  // -fstrict-overflow sensitive, see bug 1868
+  if ( m_fragmentOffset + m_payloadSize > 65535 - 5*4 )
     {
       NS_LOG_WARN("Fragment will exceed the maximum packet size once reassembled");
     }
diff -Naur ns-3.19/src/internet/model/ipv4-interface.cc ns-3.20/src/internet/model/ipv4-interface.cc
--- ns-3.19/src/internet/model/ipv4-interface.cc	2014-06-17 10:34:00.491636252 -0700
+++ ns-3.20/src/internet/model/ipv4-interface.cc	2014-06-17 10:33:13.812996587 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4Interface)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4Interface);
 
 TypeId 
 Ipv4Interface::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4-l3-protocol.cc ns-3.20/src/internet/model/ipv4-l3-protocol.cc
--- ns-3.19/src/internet/model/ipv4-l3-protocol.cc	2014-06-17 10:34:00.493636237 -0700
+++ ns-3.20/src/internet/model/ipv4-l3-protocol.cc	2014-06-17 10:33:13.814996571 -0700
@@ -46,8 +46,7 @@
 
 const uint16_t Ipv4L3Protocol::PROT_NUMBER = 0x0800;
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4L3Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4L3Protocol);
 
 TypeId 
 Ipv4L3Protocol::GetTypeId (void)
@@ -91,8 +90,6 @@
 }
 
 Ipv4L3Protocol::Ipv4L3Protocol()
-  : m_identification (0)
-
 {
   NS_LOG_FUNCTION (this);
 }
@@ -541,6 +538,35 @@
 }
 
 bool
+Ipv4L3Protocol::IsUnicast (Ipv4Address ad) const
+{
+  NS_LOG_FUNCTION (this << ad);
+
+  if (ad.IsBroadcast () || ad.IsMulticast ())
+    {
+      return false;
+    }
+  else
+    {
+      // check for subnet-broadcast
+      for (uint32_t ifaceIndex = 0; ifaceIndex < GetNInterfaces (); ifaceIndex++)
+        {
+          for (uint32_t j = 0; j < GetNAddresses (ifaceIndex); j++)
+            {
+              Ipv4InterfaceAddress ifAddr = GetAddress (ifaceIndex, j);
+              NS_LOG_LOGIC ("Testing address " << ad << " with subnet-directed broadcast " << ifAddr.GetBroadcast () );
+              if (ad == ifAddr.GetBroadcast () )
+                {
+                  return false;
+                }
+            }
+        }
+    }
+
+  return true;
+}
+
+bool
 Ipv4L3Protocol::IsUnicast (Ipv4Address ad, Ipv4Mask interfaceMask) const
 {
   NS_LOG_FUNCTION (this << ad << interfaceMask);
@@ -712,15 +738,18 @@
   if (mayFragment == true)
     {
       ipHeader.SetMayFragment ();
-      ipHeader.SetIdentification (m_identification);
-      m_identification++;
+      ipHeader.SetIdentification (m_identification[protocol]);
+      m_identification[protocol]++;
     }
   else
     {
       ipHeader.SetDontFragment ();
-      // TBD:  set to zero here; will cause traces to change
-      ipHeader.SetIdentification (m_identification);
-      m_identification++;
+      // RFC 6864 does not state anything about atomic datagrams
+      // identification requirement:
+      // >> Originating sources MAY set the IPv4 ID field of atomic datagrams
+      //    to any value.
+      ipHeader.SetIdentification (m_identification[protocol]);
+      m_identification[protocol]++;
     }
   if (Node::ChecksumEnabled ())
     {
@@ -1290,8 +1319,8 @@
 {
   NS_LOG_FUNCTION (this << packet << ipHeader << iif);
 
-  uint64_t addressCombination = uint64_t (ipHeader.GetSource ().Get ()) << 32 & uint64_t (ipHeader.GetDestination ().Get ());
-  uint32_t idProto = uint32_t (ipHeader.GetIdentification ()) << 16 & uint32_t (ipHeader.GetProtocol ());
+  uint64_t addressCombination = uint64_t (ipHeader.GetSource ().Get ()) << 32 | uint64_t (ipHeader.GetDestination ().Get ());
+  uint32_t idProto = uint32_t (ipHeader.GetIdentification ()) << 16 | uint32_t (ipHeader.GetProtocol ());
   std::pair<uint64_t, uint32_t> key;
   bool ret = false;
   Ptr<Packet> p = packet->Copy ();
diff -Naur ns-3.19/src/internet/model/ipv4-l3-protocol.h ns-3.20/src/internet/model/ipv4-l3-protocol.h
--- ns-3.19/src/internet/model/ipv4-l3-protocol.h	2014-06-17 10:34:00.493636237 -0700
+++ ns-3.20/src/internet/model/ipv4-l3-protocol.h	2014-06-17 10:33:13.814996571 -0700
@@ -35,6 +35,8 @@
 #include "ns3/nstime.h"
 #include "ns3/simulator.h"
 
+class Ipv4L3ProtocolTestCase;
+
 namespace ns3 {
 
 class Packet;
@@ -134,7 +136,7 @@
    * This method is typically called by lower layers
    * to forward packets up the stack to the right protocol.
    */
-  Ptr<IpL4Protocol> GetProtocol (int protocolNumber) const;
+  virtual Ptr<IpL4Protocol> GetProtocol (int protocolNumber) const;
   /**
    * \param protocol protocol to remove from this demux.
    *
@@ -223,6 +225,18 @@
 
   Ptr<NetDevice> GetNetDevice (uint32_t i);
 
+  /**
+   * \brief Check if an IPv4 address is unicast according to the node.
+   *
+   * This function checks all the node's interfaces and the respective subnet masks.
+   * An address is considered unicast if it's not broadcast, subnet-broadcast or multicast.
+   *
+   * \param ad address
+   *
+   * \return true if the address is unicast
+   */
+  bool IsUnicast (Ipv4Address ad) const;
+
 protected:
 
   virtual void DoDispose (void);
@@ -232,7 +246,7 @@
    */
   virtual void NotifyNewAggregate ();
 private:
-  friend class Ipv4L3ProtocolTestCase;
+  friend class ::Ipv4L3ProtocolTestCase;
 
   /**
    * \brief Copy constructor.
@@ -394,7 +408,7 @@
   Ipv4InterfaceList m_interfaces; //!< List of IPv4 interfaces.
   uint8_t m_defaultTos;  //!< Default TOS
   uint8_t m_defaultTtl;  //!< Default TTL
-  uint16_t m_identification; //!< Identification
+  std::map<uint8_t, uint16_t> m_identification; //!< Identification (for each protocol)
   Ptr<Node> m_node; //!< Node attached to stack.
 
   /// Trace of sent packets
diff -Naur ns-3.19/src/internet/model/ipv4-list-routing.cc ns-3.20/src/internet/model/ipv4-list-routing.cc
--- ns-3.19/src/internet/model/ipv4-list-routing.cc	2014-06-17 10:34:00.494636229 -0700
+++ ns-3.20/src/internet/model/ipv4-list-routing.cc	2014-06-17 10:33:13.815996564 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4ListRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4ListRouting);
 
 TypeId
 Ipv4ListRouting::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4-packet-probe.cc ns-3.20/src/internet/model/ipv4-packet-probe.cc
--- ns-3.19/src/internet/model/ipv4-packet-probe.cc	2014-06-17 10:34:00.495636221 -0700
+++ ns-3.20/src/internet/model/ipv4-packet-probe.cc	2014-06-17 10:33:13.816996556 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4PacketProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4PacketProbe);
 
 TypeId
 Ipv4PacketProbe::GetTypeId ()
diff -Naur ns-3.19/src/internet/model/ipv4-raw-socket-factory.cc ns-3.20/src/internet/model/ipv4-raw-socket-factory.cc
--- ns-3.19/src/internet/model/ipv4-raw-socket-factory.cc	2014-06-17 10:34:00.496636214 -0700
+++ ns-3.20/src/internet/model/ipv4-raw-socket-factory.cc	2014-06-17 10:33:13.818996541 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4RawSocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4RawSocketFactory);
 
 TypeId Ipv4RawSocketFactory::GetTypeId (void)
 {
diff -Naur ns-3.19/src/internet/model/ipv4-raw-socket-impl.cc ns-3.20/src/internet/model/ipv4-raw-socket-impl.cc
--- ns-3.19/src/internet/model/ipv4-raw-socket-impl.cc	2014-06-17 10:34:00.497636206 -0700
+++ ns-3.20/src/internet/model/ipv4-raw-socket-impl.cc	2014-06-17 10:33:13.818996541 -0700
@@ -17,8 +17,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4RawSocketImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4RawSocketImpl);
 
 TypeId 
 Ipv4RawSocketImpl::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv4-routing-protocol.cc ns-3.20/src/internet/model/ipv4-routing-protocol.cc
--- ns-3.19/src/internet/model/ipv4-routing-protocol.cc	2014-06-17 10:34:00.499636190 -0700
+++ ns-3.20/src/internet/model/ipv4-routing-protocol.cc	2014-06-17 10:33:13.820996525 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4RoutingProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4RoutingProtocol);
 
 TypeId Ipv4RoutingProtocol::GetTypeId (void)
 {
diff -Naur ns-3.19/src/internet/model/ipv4-static-routing.cc ns-3.20/src/internet/model/ipv4-static-routing.cc
--- ns-3.19/src/internet/model/ipv4-static-routing.cc	2014-06-17 10:34:00.501636175 -0700
+++ ns-3.20/src/internet/model/ipv4-static-routing.cc	2014-06-17 10:33:13.822996510 -0700
@@ -40,8 +40,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4StaticRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4StaticRouting);
 
 TypeId
 Ipv4StaticRouting::GetTypeId (void)
@@ -627,17 +626,16 @@
 {
   NS_LOG_FUNCTION (this << i);
   // Remove all static routes that are going through this interface
-  uint32_t j = 0;
-  while (j < GetNRoutes ())
+  for (NetworkRoutesI it = m_networkRoutes.begin (); it != m_networkRoutes.end (); )
     {
-      Ipv4RoutingTableEntry route = GetRoute (j);
-      if (route.GetInterface () == i)
+      if (it->first->GetInterface () == i)
         {
-          RemoveRoute (j);
+          delete it->first;
+          it = m_networkRoutes.erase (it);
         }
       else
         {
-          j++;
+          it++;
         }
     }
 }
@@ -672,15 +670,19 @@
   Ipv4Mask networkMask = address.GetMask ();
   // Remove all static routes that are going through this interface
   // which reference this network
-  for (uint32_t j = 0; j < GetNRoutes (); j++)
+  for (NetworkRoutesI it = m_networkRoutes.begin (); it != m_networkRoutes.end (); )
     {
-      Ipv4RoutingTableEntry route = GetRoute (j);
-      if (route.GetInterface () == interface &&
-          route.IsNetwork () && 
-          route.GetDestNetwork () == networkAddress &&
-          route.GetDestNetworkMask () == networkMask)
+      if (it->first->GetInterface () == interface
+          && it->first->IsNetwork ()
+          && it->first->GetDestNetwork () == networkAddress
+          && it->first->GetDestNetworkMask () == networkMask)
+        {
+          delete it->first;
+          it = m_networkRoutes.erase (it);
+        }
+      else
         {
-          RemoveRoute (j);
+          it++;
         }
     }
 }
diff -Naur ns-3.19/src/internet/model/ipv6.cc ns-3.20/src/internet/model/ipv6.cc
--- ns-3.19/src/internet/model/ipv6.cc	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/internet/model/ipv6.cc	2014-06-17 10:33:13.845996332 -0700
@@ -29,8 +29,7 @@
 namespace ns3 
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6);
 
 TypeId Ipv6::GetTypeId (void)
 {
diff -Naur ns-3.19/src/internet/model/ipv6-end-point.cc ns-3.20/src/internet/model/ipv6-end-point.cc
--- ns-3.19/src/internet/model/ipv6-end-point.cc	2014-06-17 10:34:00.505636144 -0700
+++ ns-3.20/src/internet/model/ipv6-end-point.cc	2014-06-17 10:33:13.826996479 -0700
@@ -27,8 +27,7 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6EndPoint")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6EndPoint");
 
 Ipv6EndPoint::Ipv6EndPoint (Ipv6Address addr, uint16_t port)
   : m_localAddr (addr),
diff -Naur ns-3.19/src/internet/model/ipv6-end-point-demux.cc ns-3.20/src/internet/model/ipv6-end-point-demux.cc
--- ns-3.19/src/internet/model/ipv6-end-point-demux.cc	2014-06-17 10:34:00.504636152 -0700
+++ ns-3.20/src/internet/model/ipv6-end-point-demux.cc	2014-06-17 10:33:13.825996486 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6EndPointDemux")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6EndPointDemux");
 
 Ipv6EndPointDemux::Ipv6EndPointDemux ()
   : m_ephemeral (49152),
diff -Naur ns-3.19/src/internet/model/ipv6-extension.cc ns-3.20/src/internet/model/ipv6-extension.cc
--- ns-3.19/src/internet/model/ipv6-extension.cc	2014-06-17 10:34:00.508636121 -0700
+++ ns-3.20/src/internet/model/ipv6-extension.cc	2014-06-17 10:33:13.829996455 -0700
@@ -44,8 +44,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6Extension)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6Extension);
 
 TypeId Ipv6Extension::GetTypeId ()
 {
@@ -55,8 +54,6 @@
                    UintegerValue (0),
                    MakeUintegerAccessor (&Ipv6Extension::GetExtensionNumber),
                    MakeUintegerChecker<uint8_t> ())
-    .AddTraceSource ("Drop", "Drop IPv6 packet",
-                     MakeTraceSourceAccessor (&Ipv6Extension::m_dropTrace))
   ;
   return tid;
 }
@@ -87,7 +84,15 @@
   return m_node;
 }
 
-uint8_t Ipv6Extension::ProcessOptions (Ptr<Packet>& packet, uint8_t offset, uint8_t length, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6Extension::ProcessOptions (Ptr<Packet>& packet,
+                                       uint8_t offset,
+                                       uint8_t length,
+                                       Ipv6Header const& ipv6Header,
+                                       Ipv6Address dst,
+                                       uint8_t *nextHeader,
+                                       bool& stopProcessing,
+                                       bool& isDropped,
+                                       Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << length << ipv6Header << dst << nextHeader << isDropped);
 
@@ -126,17 +131,19 @@
 
             case 1:
               NS_LOG_LOGIC ("Unknown Option. Drop!");
-              m_dropTrace (packet);
               optionLength = 0;
               isDropped = true;
+              stopProcessing = true;
+              dropReason = Ipv6L3Protocol::DROP_UNKNOWN_OPTION;
               break;
 
             case 2:
               NS_LOG_LOGIC ("Unknown Option. Drop!");
               icmpv6->SendErrorParameterError (malformedPacket, ipv6Header.GetSourceAddress (), Icmpv6Header::ICMPV6_UNKNOWN_OPTION, offset + processedSize);
-              m_dropTrace (packet);
               optionLength = 0;
               isDropped = true;
+              stopProcessing = true;
+              dropReason = Ipv6L3Protocol::DROP_UNKNOWN_OPTION;
               break;
 
             case 3:
@@ -145,15 +152,11 @@
               if (!ipv6Header.GetDestinationAddress ().IsMulticast ())
                 {
                   icmpv6->SendErrorParameterError (malformedPacket, ipv6Header.GetSourceAddress (), Icmpv6Header::ICMPV6_UNKNOWN_OPTION, offset + processedSize);
-                  m_dropTrace (packet);
-                  optionLength = 0;
-                  isDropped = true;
-                  break;
                 }
-
-              m_dropTrace (packet);
               optionLength = 0;
               isDropped = true;
+              stopProcessing = true;
+              dropReason = Ipv6L3Protocol::DROP_UNKNOWN_OPTION;
               break;
 
             default:
@@ -183,8 +186,7 @@
   return 1;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHopByHop)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHopByHop);
 
 TypeId Ipv6ExtensionHopByHop::GetTypeId ()
 {
@@ -212,7 +214,14 @@
   return EXT_NUMBER;
 }
 
-uint8_t Ipv6ExtensionHopByHop::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionHopByHop::Process (Ptr<Packet>& packet,
+                                        uint8_t offset,
+                                        Ipv6Header const& ipv6Header,
+                                        Ipv6Address dst,
+                                        uint8_t *nextHeader,
+                                        bool& stopProcessing,
+                                        bool& isDropped,
+                                        Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -230,14 +239,13 @@
   offset += processedSize;
   uint8_t length = hopbyhopHeader.GetLength () - hopbyhopHeader.GetOptionsOffset ();
 
-  processedSize += ProcessOptions (packet, offset, length, ipv6Header, dst, nextHeader, isDropped);
+  processedSize += ProcessOptions (packet, offset, length, ipv6Header, dst, nextHeader, stopProcessing, isDropped, dropReason);
 
   return processedSize;
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDestination)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDestination);
 
 TypeId Ipv6ExtensionDestination::GetTypeId ()
 {
@@ -265,7 +273,14 @@
   return EXT_NUMBER;
 }
 
-uint8_t Ipv6ExtensionDestination::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionDestination::Process (Ptr<Packet>& packet,
+                                           uint8_t offset,
+                                           Ipv6Header const& ipv6Header,
+                                           Ipv6Address dst,
+                                           uint8_t *nextHeader,
+                                           bool& stopProcessing,
+                                           bool& isDropped,
+                                           Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -283,14 +298,13 @@
   offset += processedSize;
   uint8_t length = destinationHeader.GetLength () - destinationHeader.GetOptionsOffset ();
 
-  processedSize += ProcessOptions (packet, offset, length, ipv6Header, dst, nextHeader, isDropped);
+  processedSize += ProcessOptions (packet, offset, length, ipv6Header, dst, nextHeader, stopProcessing, isDropped, dropReason);
 
   return processedSize;
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionFragment)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionFragment);
 
 TypeId Ipv6ExtensionFragment::GetTypeId ()
 {
@@ -331,7 +345,14 @@
   return EXT_NUMBER;
 }
 
-uint8_t Ipv6ExtensionFragment::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionFragment::Process (Ptr<Packet>& packet,
+                                        uint8_t offset,
+                                        Ipv6Header const& ipv6Header,
+                                        Ipv6Address dst,
+                                        uint8_t *nextHeader,
+                                        bool& stopProcessing,
+                                        bool& isDropped,
+                                        Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -386,12 +407,11 @@
       packet = fragments->GetPacket ();
       fragments->CancelTimeout ();
       m_fragments.erase (fragmentsId);
-      isDropped = false;
+      stopProcessing = false;
     }
   else
     {
-      // the fragment is not "dropped", but Ipv6L3Protocol::LocalDeliver must stop processing it.
-      isDropped = true;
+      stopProcessing = true;
     }
 
   return 0;
@@ -573,7 +593,7 @@
 
 
 void Ipv6ExtensionFragment::HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> fragmentsId,
-                                                    Ipv6Header & ipHeader)
+                                                    Ipv6Header ipHeader)
 {
   Ptr<Fragments> fragments;
 
@@ -583,15 +603,17 @@
 
   Ptr<Packet> packet = fragments->GetPartialPacket ();
 
-  packet->AddHeader (ipHeader);
-
   // if we have at least 8 bytes, we can send an ICMP.
   if ( packet->GetSize () > 8 )
     {
+      Ptr<Packet> p = packet->Copy ();
+      p->AddHeader (ipHeader);
       Ptr<Icmpv6L4Protocol> icmp = GetNode ()->GetObject<Icmpv6L4Protocol> ();
-      icmp->SendErrorTimeExceeded (packet, ipHeader.GetSourceAddress (), Icmpv6Header::ICMPV6_FRAGTIME);
+      icmp->SendErrorTimeExceeded (p, ipHeader.GetSourceAddress (), Icmpv6Header::ICMPV6_FRAGTIME);
     }
-  m_dropTrace (packet);
+
+  Ptr<Ipv6L3Protocol> ipL3 = GetNode ()->GetObject<Ipv6L3Protocol> ();
+  ipL3->ReportDrop (ipHeader, packet, Ipv6L3Protocol::DROP_FRAGMENT_TIMEOUT);
 
   // clear the buffers
   m_fragments.erase (fragmentsId);
@@ -707,8 +729,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRouting);
 
 TypeId Ipv6ExtensionRouting::GetTypeId ()
 {
@@ -742,7 +763,14 @@
   return 0;
 }
 
-uint8_t Ipv6ExtensionRouting::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionRouting::Process (Ptr<Packet>& packet,
+                                       uint8_t offset,
+                                       Ipv6Header const& ipv6Header,
+                                       Ipv6Address dst,
+                                       uint8_t *nextHeader,
+                                       bool& stopProcessing,
+                                       bool& isDropped,
+                                       Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -782,19 +810,19 @@
           NS_LOG_LOGIC ("Malformed header. Drop!");
 
           icmpv6->SendErrorParameterError (malformedPacket, ipv6Header.GetSourceAddress (), Icmpv6Header::ICMPV6_MALFORMED_HEADER, offset + 1);
-          m_dropTrace (packet);
+          dropReason = Ipv6L3Protocol::DROP_MALFORMED_HEADER;
           isDropped = true;
+          stopProcessing = true;
         }
 
       return routingLength;
     }
 
-  return ipv6ExtensionRouting->Process (packet, offset, ipv6Header, dst, (uint8_t *)0, isDropped);
+  return ipv6ExtensionRouting->Process (packet, offset, ipv6Header, dst, (uint8_t *)0, stopProcessing, isDropped, dropReason);
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRoutingDemux)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRoutingDemux);
 
 TypeId Ipv6ExtensionRoutingDemux::GetTypeId ()
 {
@@ -856,8 +884,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionLooseRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionLooseRouting);
 
 TypeId Ipv6ExtensionLooseRouting::GetTypeId ()
 {
@@ -885,7 +912,14 @@
   return TYPE_ROUTING;
 }
 
-uint8_t Ipv6ExtensionLooseRouting::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionLooseRouting::Process (Ptr<Packet>& packet,
+                                            uint8_t offset,
+                                            Ipv6Header const& ipv6Header,
+                                            Ipv6Address dst,
+                                            uint8_t *nextHeader,
+                                            bool& stopProcessing,
+                                            bool& isDropped,
+                                            Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -938,8 +972,9 @@
     {
       NS_LOG_LOGIC ("Malformed header. Drop!");
       icmpv6->SendErrorParameterError (malformedPacket, srcAddress, Icmpv6Header::ICMPV6_MALFORMED_HEADER, offset + 1);
-      m_dropTrace (packet);
+      dropReason = Ipv6L3Protocol::DROP_MALFORMED_HEADER;
       isDropped = true;
+      stopProcessing = true;
       return routingHeader.GetSerializedSize ();
     }
 
@@ -947,8 +982,9 @@
     {
       NS_LOG_LOGIC ("Malformed header. Drop!");
       icmpv6->SendErrorParameterError (malformedPacket, srcAddress, Icmpv6Header::ICMPV6_MALFORMED_HEADER, offset + 3);
-      m_dropTrace (packet);
+      dropReason = Ipv6L3Protocol::DROP_MALFORMED_HEADER;
       isDropped = true;
+      stopProcessing = true;
       return routingHeader.GetSerializedSize ();
     }
 
@@ -958,8 +994,9 @@
 
   if (nextAddress.IsMulticast () || destAddress.IsMulticast ())
     {
-      m_dropTrace (packet);
+      dropReason = Ipv6L3Protocol::DROP_MALFORMED_HEADER;
       isDropped = true;
+      stopProcessing = true;
       return routingHeader.GetSerializedSize ();
     }
 
@@ -970,8 +1007,9 @@
     {
       NS_LOG_LOGIC ("Time Exceeded : Hop Limit <= 1. Drop!");
       icmpv6->SendErrorTimeExceeded (malformedPacket, srcAddress, Icmpv6Header::ICMPV6_HOPLIMIT);
-      m_dropTrace (packet);
+      dropReason = Ipv6L3Protocol::DROP_MALFORMED_HEADER;
       isDropped = true;
+      stopProcessing = true;
       return routingHeader.GetSerializedSize ();
     }
 
@@ -1010,8 +1048,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionESP)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionESP);
 
 TypeId Ipv6ExtensionESP::GetTypeId ()
 {
@@ -1039,7 +1076,14 @@
   return EXT_NUMBER;
 }
 
-uint8_t Ipv6ExtensionESP::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionESP::Process (Ptr<Packet>& packet,
+                                   uint8_t offset,
+                                   Ipv6Header const& ipv6Header,
+                                   Ipv6Address dst,
+                                   uint8_t *nextHeader,
+                                   bool& stopProcessing,
+                                   bool& isDropped,
+                                   Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
@@ -1049,8 +1093,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionAH)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionAH);
 
 TypeId Ipv6ExtensionAH::GetTypeId ()
 {
@@ -1078,7 +1121,14 @@
   return EXT_NUMBER;
 }
 
-uint8_t Ipv6ExtensionAH::Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped)
+uint8_t Ipv6ExtensionAH::Process (Ptr<Packet>& packet,
+                                  uint8_t offset,
+                                  Ipv6Header const& ipv6Header,
+                                  Ipv6Address dst,
+                                  uint8_t *nextHeader,
+                                  bool& stopProcessing,
+                                  bool& isDropped,
+                                  Ipv6L3Protocol::DropReason& dropReason)
 {
   NS_LOG_FUNCTION (this << packet << offset << ipv6Header << dst << nextHeader << isDropped);
 
diff -Naur ns-3.19/src/internet/model/ipv6-extension-demux.cc ns-3.20/src/internet/model/ipv6-extension-demux.cc
--- ns-3.19/src/internet/model/ipv6-extension-demux.cc	2014-06-17 10:34:00.506636137 -0700
+++ ns-3.20/src/internet/model/ipv6-extension-demux.cc	2014-06-17 10:33:13.827996471 -0700
@@ -28,8 +28,7 @@
 namespace ns3
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDemux)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDemux);
 
 TypeId Ipv6ExtensionDemux::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-extension.h ns-3.20/src/internet/model/ipv6-extension.h
--- ns-3.19/src/internet/model/ipv6-extension.h	2014-06-17 10:34:00.508636121 -0700
+++ ns-3.20/src/internet/model/ipv6-extension.h	2014-06-17 10:33:13.829996455 -0700
@@ -33,6 +33,7 @@
 #include "ns3/packet.h"
 #include "ns3/random-variable-stream.h"
 #include "ns3/ipv6-address.h"
+#include "ns3/ipv6-l3-protocol.h"
 #include "ns3/traced-callback.h"
 
 
@@ -90,10 +91,19 @@
    * \param ipv6Header the IPv6 header of packet received
    * \param dst destination address of the packet received (i.e. us)
    * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
+   * \param stopProcessing true if the packet must not be further processed
+   * \param isDropped true if the packet must be dropped
+   * \param dropReason dropping reason
    * \return the size processed
    */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped) = 0;
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason) = 0;
 
   /**
    * \brief Process options
@@ -105,10 +115,21 @@
    * \param ipv6Header the IPv6 header of packet received
    * \param dst destination address of the packet received (i.e. us)
    * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
+   * \param stopProcessing true if the packet must not be further processed
+   * \param isDropped true if the packet must be dropped
+   * \param dropReason dropping reason
    * \return the size processed
    */
-  virtual uint8_t ProcessOptions (Ptr<Packet>& packet, uint8_t offset, uint8_t length, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t ProcessOptions (Ptr<Packet>& packet,
+                                  uint8_t offset,
+                                  uint8_t length,
+                                  Ipv6Header const& ipv6Header,
+                                  Ipv6Address dst,
+                                  uint8_t *nextHeader,
+                                  bool& stopProcessing,
+                                  bool& isDropped,
+                                  Ipv6L3Protocol::DropReason& dropReason
+                                  );
 
  /**
   * Assign a fixed random variable stream number to the random variables
@@ -122,11 +143,6 @@
 
 protected:
   /**
-   * \brief Drop trace callback.
-   */
-  TracedCallback<Ptr<const Packet> > m_dropTrace;
-
-  /**
    * \brief Provides uniform random variables.
    */
   Ptr<UniformRandomVariable> m_uvar;
@@ -172,18 +188,14 @@
    */
   virtual uint8_t GetExtensionNumber () const;
 
-  /**
-   * \brief Process method
-   * Called from Ipv6L3Protocol::Receive.
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 /**
@@ -220,18 +232,14 @@
    */
   virtual uint8_t GetExtensionNumber () const;
 
-  /**
-   * \brief Process method
-   * Called from Ipv6L3Protocol::Receive.
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 /**
@@ -268,18 +276,14 @@
    */
   virtual uint8_t GetExtensionNumber () const;
 
-  /**
-   * \brief Process method
-   * Called from Ipv6L3Protocol::Receive.
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 
   /**
    * \brief Fragment a packet
@@ -382,7 +386,7 @@
    * \param key representing the packet fragments
    * \param ipHeader the IP header of the original packet
    */
-  void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ipv6Header & ipHeader);
+  void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ipv6Header ipHeader);
 
   /**
    * \brief Get the packet parts so far received.
@@ -453,19 +457,14 @@
    */
   virtual uint8_t GetTypeRouting () const;
 
-  /**
-   * \brief Process method
-   *
-   * Called from Ipv6L3Protocol::Receive.
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 /**
@@ -573,20 +572,14 @@
    */
   virtual uint8_t GetTypeRouting () const;
 
-  /**
-   * \brief Process method
-   *
-   * Called from Ipv6L3Protocol::Receive.
-   *
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 /**
@@ -623,19 +616,14 @@
    */
   virtual uint8_t GetExtensionNumber () const;
 
-  /**
-   * \brief Process method
-   * Called from Ipv6L3Protocol::Receive.
-   *
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 /**
@@ -672,19 +660,14 @@
    */
   virtual uint8_t GetExtensionNumber () const;
 
-  /**
-   * \brief Process method
-   * Called from Ipv6L3Protocol::Receive.
-   *
-   * \param packet the packet
-   * \param offset the offset of the extension to process
-   * \param ipv6Header the IPv6 header of packet received
-   * \param dst destination address of the packet received (i.e. us)
-   * \param nextHeader the next header
-   * \param isDropped if the packet must be dropped
-   * \return the size processed
-   */
-  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
+  virtual uint8_t Process (Ptr<Packet>& packet,
+                           uint8_t offset,
+                           Ipv6Header const& ipv6Header,
+                           Ipv6Address dst,
+                           uint8_t *nextHeader,
+                           bool& stopProcessing,
+                           bool& isDropped,
+                           Ipv6L3Protocol::DropReason& dropReason);
 };
 
 } /* namespace ns3 */
diff -Naur ns-3.19/src/internet/model/ipv6-extension-header.cc ns-3.20/src/internet/model/ipv6-extension-header.cc
--- ns-3.19/src/internet/model/ipv6-extension-header.cc	2014-06-17 10:34:00.507636129 -0700
+++ ns-3.20/src/internet/model/ipv6-extension-header.cc	2014-06-17 10:33:13.828996463 -0700
@@ -26,11 +26,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6ExtensionHeader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6ExtensionHeader");
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHeader);
 
 TypeId Ipv6ExtensionHeader::GetTypeId ()
 {
@@ -201,8 +199,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHopByHopHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionHopByHopHeader);
 
 TypeId Ipv6ExtensionHopByHopHeader::GetTypeId ()
 {
@@ -257,8 +254,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDestinationHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionDestinationHeader);
 
 TypeId Ipv6ExtensionDestinationHeader::GetTypeId ()
 {
@@ -313,8 +309,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionFragmentHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionFragmentHeader);
 
 TypeId Ipv6ExtensionFragmentHeader::GetTypeId ()
 {
@@ -407,8 +402,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRoutingHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionRoutingHeader);
 
 TypeId Ipv6ExtensionRoutingHeader::GetTypeId ()
 {
@@ -487,8 +481,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionLooseRoutingHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionLooseRoutingHeader);
 
 TypeId Ipv6ExtensionLooseRoutingHeader::GetTypeId ()
 {
@@ -595,8 +588,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionESPHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionESPHeader);
 
 TypeId Ipv6ExtensionESPHeader::GetTypeId ()
 {
@@ -642,8 +634,7 @@
   return 0;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionAHHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ExtensionAHHeader);
 
 TypeId Ipv6ExtensionAHHeader::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6.h ns-3.20/src/internet/model/ipv6.h
--- ns-3.19/src/internet/model/ipv6.h	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/internet/model/ipv6.h	2014-06-17 10:33:13.846996324 -0700
@@ -38,6 +38,7 @@
 class NetDevice;
 class Packet;
 class Ipv6RoutingProtocol;
+class IpL4Protocol;
 
 /**
  * \ingroup internet
@@ -304,6 +305,21 @@
   virtual void SetForwarding (uint32_t interface, bool val) = 0;
 
   /**
+   * \brief Choose the source address to use with destination address.
+   * \param interface interface index
+   * \param dest IPv6 destination address
+   * \return IPv6 source address to use
+   */
+  virtual Ipv6Address SourceAddressSelection (uint32_t interface, Ipv6Address dest) = 0;
+
+  /**
+   * \brief Get L4 protocol by protocol number.
+   * \param protocolNumber protocol number
+   * \return corresponding Ipv6L4Protocol or 0 if not found
+   */
+  virtual Ptr<IpL4Protocol> GetProtocol (int protocolNumber) const = 0;
+
+  /**
    * \brief Register the IPv6 Extensions.
    */
   virtual void RegisterExtensions () = 0;
diff -Naur ns-3.19/src/internet/model/ipv6-header.cc ns-3.20/src/internet/model/ipv6-header.cc
--- ns-3.19/src/internet/model/ipv6-header.cc	2014-06-17 10:34:00.509636113 -0700
+++ ns-3.20/src/internet/model/ipv6-header.cc	2014-06-17 10:33:13.830996448 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6Header);
 
 Ipv6Header::Ipv6Header ()
   : m_version (6),
diff -Naur ns-3.19/src/internet/model/ipv6-interface-address.cc ns-3.20/src/internet/model/ipv6-interface-address.cc
--- ns-3.19/src/internet/model/ipv6-interface-address.cc	2014-06-17 10:34:00.510636106 -0700
+++ ns-3.20/src/internet/model/ipv6-interface-address.cc	2014-06-17 10:33:13.831996440 -0700
@@ -28,8 +28,7 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6InterfaceAddress")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6InterfaceAddress");
 
 Ipv6InterfaceAddress::Ipv6InterfaceAddress () 
   : m_address (Ipv6Address ()),
@@ -138,6 +137,29 @@
   return m_scope;
 }
 
+bool Ipv6InterfaceAddress::IsInSameSubnet (Ipv6Address b) const
+{
+  NS_LOG_FUNCTION_NOARGS ();
+
+  Ipv6Address aAddr = m_address;
+  aAddr = aAddr.CombinePrefix (m_prefix);
+  Ipv6Address bAddr = b;
+  bAddr = bAddr.CombinePrefix (m_prefix);
+
+  if (aAddr == bAddr)
+    {
+      return true;
+    }
+
+  if ((bAddr.IsLinkLocalMulticast () && aAddr.IsLinkLocal ()) ||
+      (aAddr.IsLinkLocalMulticast () && bAddr.IsLinkLocal ()))
+    {
+      return true;
+    }
+
+  return false;
+}
+
 std::ostream& operator<< (std::ostream& os, const Ipv6InterfaceAddress &addr)
 {
   os << "address: " << addr.GetAddress () << addr.GetPrefix () << "; scope: ";
diff -Naur ns-3.19/src/internet/model/ipv6-interface-address.h ns-3.20/src/internet/model/ipv6-interface-address.h
--- ns-3.19/src/internet/model/ipv6-interface-address.h	2014-06-17 10:34:00.510636106 -0700
+++ ns-3.20/src/internet/model/ipv6-interface-address.h	2014-06-17 10:33:13.831996440 -0700
@@ -134,6 +134,13 @@
   Ipv6InterfaceAddress::Scope_e GetScope () const;
 
   /**
+   * \brief Checks if the address is in the same subnet.
+   * \param b the address to check
+   * \return true if the address is in the same subnet.
+   */
+  bool IsInSameSubnet (Ipv6Address b) const;
+
+  /**
    * \brief Set the latest DAD probe packet UID.
    * \param uid packet uid
    */
diff -Naur ns-3.19/src/internet/model/ipv6-interface.cc ns-3.20/src/internet/model/ipv6-interface.cc
--- ns-3.19/src/internet/model/ipv6-interface.cc	2014-06-17 10:34:00.511636098 -0700
+++ ns-3.20/src/internet/model/ipv6-interface.cc	2014-06-17 10:33:13.832996432 -0700
@@ -34,11 +34,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6Interface")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6Interface");
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6Interface)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6Interface);
 
 TypeId Ipv6Interface::GetTypeId ()
 {
@@ -116,8 +114,13 @@
       return; /* no NDISC cache for ip6-localhost */
     }
 
-  Ptr<Icmpv6L4Protocol> icmpv6 = m_node->GetObject<Ipv6L3Protocol> ()->GetIcmpv6 ();
-  if (m_device->NeedsArp ())
+  Ptr<IpL4Protocol> proto = m_node->GetObject<Ipv6> ()->GetProtocol (Icmpv6L4Protocol::GetStaticProtocolNumber ());
+  Ptr<Icmpv6L4Protocol> icmpv6;
+  if (proto)
+    {
+      icmpv6 = proto->GetObject <Icmpv6L4Protocol> ();
+    }
+  if (icmpv6)
     {
       m_ndCache = icmpv6->CreateCache (m_device, this);
     }
@@ -183,6 +186,7 @@
   NS_LOG_FUNCTION_NOARGS ();
   m_ifup = false;
   m_addresses.clear ();
+  m_ndCache->Flush ();
 }
 
 bool Ipv6Interface::IsForwarding () const
@@ -218,7 +222,12 @@
       if (!addr.IsAny () || !addr.IsLocalhost ())
         {
           /* DAD handling */
-          Ptr<Icmpv6L4Protocol> icmpv6 = m_node->GetObject<Ipv6L3Protocol> ()->GetIcmpv6 ();
+          Ptr<IpL4Protocol> proto = m_node->GetObject<Ipv6> ()->GetProtocol (Icmpv6L4Protocol::GetStaticProtocolNumber ());
+          Ptr<Icmpv6L4Protocol> icmpv6;
+          if (proto)
+            {
+              icmpv6 = proto->GetObject <Icmpv6L4Protocol> ();
+            }
 
           if (icmpv6 && icmpv6->IsAlwaysDad ())
             {
diff -Naur ns-3.19/src/internet/model/ipv6-l3-protocol.cc ns-3.20/src/internet/model/ipv6-l3-protocol.cc
--- ns-3.19/src/internet/model/ipv6-l3-protocol.cc	2014-06-17 10:34:00.512636090 -0700
+++ ns-3.20/src/internet/model/ipv6-l3-protocol.cc	2014-06-17 10:33:13.833996425 -0700
@@ -49,11 +49,9 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6L3Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6L3Protocol);
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6L3Protocol")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6L3Protocol");
 
 const uint16_t Ipv6L3Protocol::PROT_NUMBER = 0x86DD;
 
@@ -85,6 +83,13 @@
                      MakeTraceSourceAccessor (&Ipv6L3Protocol::m_rxTrace))
     .AddTraceSource ("Drop", "Drop IPv6 packet",
                      MakeTraceSourceAccessor (&Ipv6L3Protocol::m_dropTrace))
+
+    .AddTraceSource ("SendOutgoing", "A newly-generated packet by this node is about to be queued for transmission",
+                     MakeTraceSourceAccessor (&Ipv6L3Protocol::m_sendOutgoingTrace))
+    .AddTraceSource ("UnicastForward", "A unicast IPv6 packet was received by this node and is being forwarded to another node",
+                     MakeTraceSourceAccessor (&Ipv6L3Protocol::m_unicastForwardTrace))
+    .AddTraceSource ("LocalDeliver", "An IPv6 packet was received by/for this node, and it is being forward up the stack",
+                     MakeTraceSourceAccessor (&Ipv6L3Protocol::m_localDeliverTrace))
   ;
   return tid;
 }
@@ -572,6 +577,45 @@
   interface->SetForwarding (val);
 }
 
+Ipv6Address Ipv6L3Protocol::SourceAddressSelection (uint32_t interface, Ipv6Address dest)
+{
+  NS_LOG_FUNCTION (this << interface << dest);
+  Ipv6Address ret;
+
+  if (dest.IsLinkLocal () || dest.IsLinkLocalMulticast ())
+    {
+      for (uint32_t i = 0; i < GetNAddresses (interface); i++)
+        {
+          Ipv6InterfaceAddress test = GetAddress (interface, i);
+          if (test.GetScope () == Ipv6InterfaceAddress::LINKLOCAL)
+            {
+              return test.GetAddress ();
+            }
+        }
+      NS_ASSERT_MSG (false, "No link-local address found on interface " << interface);
+    }
+
+  for (uint32_t i = 0; i < GetNAddresses (interface); i++)
+    {
+      Ipv6InterfaceAddress test = GetAddress (interface, i);
+
+      if (test.GetScope () == Ipv6InterfaceAddress::GLOBAL)
+        {
+          if (test.IsInSameSubnet (dest))
+            {
+              return test.GetAddress ();
+            }
+          else
+            {
+              ret = test.GetAddress ();
+            }
+        }
+    }
+
+  // no specific match found. Use a global address (any useful is fine).
+  return ret;
+}
+
 void Ipv6L3Protocol::SetIpForward (bool forward)
 {
   NS_LOG_FUNCTION (this << forward);
@@ -747,6 +791,8 @@
     {
       NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 1: passed in with a route");
       hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tclass);
+      int32_t interface = GetInterfaceForDevice (route->GetOutputDevice ());
+      m_sendOutgoingTrace (hdr, packet, interface);
       SendRealOut (route, packet, hdr);
       return;
     }
@@ -757,6 +803,8 @@
       NS_LOG_LOGIC ("Ipv6L3Protocol::Send case 1: probably sent to machine on same IPv6 network");
       /* NS_FATAL_ERROR ("This case is not yet implemented"); */
       hdr = BuildHeader (source, destination, protocol, packet->GetSize (), ttl, tclass);
+      int32_t interface = GetInterfaceForDevice (route->GetOutputDevice ());
+      m_sendOutgoingTrace (hdr, packet, interface);
       SendRealOut (route, packet, hdr);
       return;
     }
@@ -786,6 +834,8 @@
 
   if (newRoute)
     {
+      int32_t interface = GetInterfaceForDevice (newRoute->GetOutputDevice ());
+      m_sendOutgoingTrace (hdr, packet, interface);
       SendRealOut (newRoute, packet, hdr);
     }
   else
@@ -845,7 +895,9 @@
   Ptr<Ipv6ExtensionDemux> ipv6ExtensionDemux = m_node->GetObject<Ipv6ExtensionDemux> ();
   Ptr<Ipv6Extension> ipv6Extension = 0;
   uint8_t nextHeader = hdr.GetNextHeader ();
+  bool stopProcessing = false;
   bool isDropped = false;
+  DropReason dropReason;
 
   if (nextHeader == Ipv6Header::IPV6_EXT_HOP_BY_HOP)
     {
@@ -853,11 +905,16 @@
 
       if (ipv6Extension)
         {
-          ipv6Extension->Process (packet, 0, hdr, hdr.GetDestinationAddress (), (uint8_t *)0, isDropped);
+          ipv6Extension->Process (packet, 0, hdr, hdr.GetDestinationAddress (), (uint8_t *)0, stopProcessing, isDropped, dropReason);
         }
 
       if (isDropped)
         {
+          m_dropTrace (hdr, packet, dropReason, m_node->GetObject<Ipv6> (), interface);
+        }
+
+      if (stopProcessing)
+        {
           return;
         }
     }
@@ -869,6 +926,7 @@
                                       MakeCallback (&Ipv6L3Protocol::RouteInputError, this)))
     {
       NS_LOG_WARN ("No route found for forwarding packet.  Drop.");
+      GetIcmpv6 ()->SendErrorDestinationUnreachable (p->Copy (), hdr.GetSourceAddress (), Icmpv6Header::ICMPV6_NO_ROUTE);
       m_dropTrace (hdr, packet, DROP_NO_ROUTE, m_node->GetObject<Ipv6> (), interface);
     }
 }
@@ -1027,9 +1085,8 @@
     {
       NS_LOG_WARN ("TTL exceeded.  Drop.");
       m_dropTrace (ipHeader, packet, DROP_TTL_EXPIRED, m_node->GetObject<Ipv6> (), 0);
-      // Do not reply to ICMPv6 or to multicast IPv6 address
-      if (ipHeader.GetNextHeader () != Icmpv6L4Protocol::PROT_NUMBER
-          && ipHeader.GetDestinationAddress ().IsMulticast () == false)
+      // Do not reply to multicast IPv6 address
+      if (ipHeader.GetDestinationAddress ().IsMulticast () == false)
         {
           packet->AddHeader (ipHeader);
           GetIcmpv6 ()->SendErrorTimeExceeded (packet, ipHeader.GetSourceAddress (), Icmpv6Header::ICMPV6_HOPLIMIT);
@@ -1076,7 +1133,8 @@
           icmpv6->SendRedirection (copy, linkLocal, src, target, dst, Address ());
         }
     }
-
+  int32_t interface = GetInterfaceForDevice (rtentry->GetOutputDevice ());
+  m_unicastForwardTrace (ipHeader, packet, interface);
   SendRealOut (rtentry, packet, ipHeader);
 }
 
@@ -1124,6 +1182,8 @@
   uint8_t nextHeader = ip.GetNextHeader ();
   uint8_t nextHeaderPosition = 0;
   bool isDropped = false;
+  bool stopProcessing = false;
+  DropReason dropReason;
 
   // check for a malformed hop-by-hop extension
   // this is a common case when forging IPv6 raw packets
@@ -1148,11 +1208,16 @@
         {
           uint8_t nextHeaderStep = 0;
           uint8_t curHeader = nextHeader;
-          nextHeaderStep = ipv6Extension->Process (p, nextHeaderPosition, ip, dst, &nextHeader, isDropped);
+          nextHeaderStep = ipv6Extension->Process (p, nextHeaderPosition, ip, dst, &nextHeader, stopProcessing, isDropped, dropReason);
           nextHeaderPosition += nextHeaderStep;
 
           if (isDropped)
             {
+              m_dropTrace (ip, packet, dropReason, m_node->GetObject<Ipv6> (), iif);
+            }
+
+          if (stopProcessing)
+            {
               return;
             }
           NS_ASSERT_MSG (nextHeaderStep != 0 || curHeader == Ipv6Header::IPV6_EXT_FRAGMENTATION,
@@ -1187,6 +1252,9 @@
 
               /* L4 protocol */
               Ptr<Packet> copy = p->Copy ();
+
+              m_localDeliverTrace (ip, p, iif);
+
               enum IpL4Protocol::RxStatus status = protocol->Receive (p, ip, GetInterface (iif));
 
               switch (status)
@@ -1289,5 +1357,10 @@
   m_node->AggregateObject (ipv6OptionDemux);
 }
 
+void Ipv6L3Protocol::ReportDrop (Ipv6Header ipHeader, Ptr<Packet> p, DropReason dropReason)
+{
+  m_dropTrace (ipHeader, p, dropReason, m_node->GetObject<Ipv6> (), 0);
+}
+
 } /* namespace ns3 */
 
diff -Naur ns-3.19/src/internet/model/ipv6-l3-protocol.h ns-3.20/src/internet/model/ipv6-l3-protocol.h
--- ns-3.19/src/internet/model/ipv6-l3-protocol.h	2014-06-17 10:34:00.513636082 -0700
+++ ns-3.20/src/internet/model/ipv6-l3-protocol.h	2014-06-17 10:33:13.834996417 -0700
@@ -30,6 +30,8 @@
 #include "ns3/ipv6-header.h"
 #include "ns3/ipv6-pmtu-cache.h"
 
+class Ipv6L3ProtocolTestCase;
+
 namespace ns3
 {
 
@@ -81,6 +83,9 @@
     DROP_INTERFACE_DOWN, /**< Interface is down so can not send packet */
     DROP_ROUTE_ERROR, /**< Route error */
     DROP_UNKNOWN_PROTOCOL, /**< Unknown L4 protocol */
+    DROP_UNKNOWN_OPTION, /**< Unknown option */
+    DROP_MALFORMED_HEADER, /**< Malformed header */
+    DROP_FRAGMENT_TIMEOUT, /**< Fragment timeout */
   };
 
   /**
@@ -116,7 +121,7 @@
    * \param protocolNumber protocol number
    * \return corresponding Ipv6L4Protocol or 0 if not found
    */
-  Ptr<IpL4Protocol> GetProtocol (int protocolNumber) const;
+  virtual Ptr<IpL4Protocol> GetProtocol (int protocolNumber) const;
 
   /**
    * \brief Create raw IPv6 socket.
@@ -321,6 +326,8 @@
    */
   void SetForwarding (uint32_t i, bool val);
 
+  Ipv6Address SourceAddressSelection (uint32_t interface, Ipv6Address dest);
+
   /**
    * \brief Get device by index.
    * \param i device index on this stack
@@ -367,6 +374,18 @@
    */
   virtual void RegisterOptions ();
 
+  /**
+   * \brief Report a packet drop
+   *
+   * This function is used by Fragment Timeout handling to signal a fragment drop.
+   *
+   * \param ipv6Header the IPv6 header of dropped packet
+   * \param p the packet (if available)
+   * \param dropReason the drop reason
+   *
+   */
+  virtual void ReportDrop (Ipv6Header ipHeader, Ptr<Packet> p, DropReason dropReason);
+
 protected:
   /**
    * \brief Dispose object.
@@ -382,7 +401,7 @@
 
 private:
   /* for unit-tests */
-  friend class Ipv6L3ProtocolTestCase;
+  friend class ::Ipv6L3ProtocolTestCase;
   friend class Ipv6ExtensionLooseRouting;
 
   /**
@@ -425,6 +444,13 @@
    */ 
   TracedCallback<const Ipv6Header &, Ptr<const Packet>, DropReason, Ptr<Ipv6>, uint32_t> m_dropTrace;
 
+  /// Trace of sent packets
+  TracedCallback<const Ipv6Header &, Ptr<const Packet>, uint32_t> m_sendOutgoingTrace;
+  /// Trace of unicast forwarded packets
+  TracedCallback<const Ipv6Header &, Ptr<const Packet>, uint32_t> m_unicastForwardTrace;
+  /// Trace of locally delivered packets
+  TracedCallback<const Ipv6Header &, Ptr<const Packet>, uint32_t> m_localDeliverTrace;
+
   /**
    * \brief Copy constructor.
    *
diff -Naur ns-3.19/src/internet/model/ipv6-list-routing.cc ns-3.20/src/internet/model/ipv6-list-routing.cc
--- ns-3.19/src/internet/model/ipv6-list-routing.cc	2014-06-17 10:34:00.514636075 -0700
+++ ns-3.20/src/internet/model/ipv6-list-routing.cc	2014-06-17 10:33:13.835996409 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6ListRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6ListRouting);
 
 TypeId
 Ipv6ListRouting::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ipv6-option.cc ns-3.20/src/internet/model/ipv6-option.cc
--- ns-3.19/src/internet/model/ipv6-option.cc	2014-06-17 10:34:00.516636059 -0700
+++ ns-3.20/src/internet/model/ipv6-option.cc	2014-06-17 10:33:13.837996394 -0700
@@ -29,8 +29,7 @@
 namespace ns3
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6Option)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6Option);
 
 TypeId Ipv6Option::GetTypeId ()
 {
@@ -56,8 +55,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPad1)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPad1);
 
 TypeId Ipv6OptionPad1::GetTypeId ()
 {
@@ -101,8 +99,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPadn)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPadn);
 
 TypeId Ipv6OptionPadn::GetTypeId ()
 {
@@ -146,8 +143,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionJumbogram)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionJumbogram);
 
 TypeId Ipv6OptionJumbogram::GetTypeId ()
 {
@@ -191,8 +187,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionRouterAlert)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionRouterAlert);
 
 TypeId Ipv6OptionRouterAlert::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-option-demux.cc ns-3.20/src/internet/model/ipv6-option-demux.cc
--- ns-3.19/src/internet/model/ipv6-option-demux.cc	2014-06-17 10:34:00.514636075 -0700
+++ ns-3.20/src/internet/model/ipv6-option-demux.cc	2014-06-17 10:33:13.835996409 -0700
@@ -28,8 +28,7 @@
 namespace ns3
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionDemux)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionDemux);
 
 TypeId Ipv6OptionDemux::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-option-header.cc ns-3.20/src/internet/model/ipv6-option-header.cc
--- ns-3.19/src/internet/model/ipv6-option-header.cc	2014-06-17 10:34:00.515636067 -0700
+++ ns-3.20/src/internet/model/ipv6-option-header.cc	2014-06-17 10:33:13.836996402 -0700
@@ -26,11 +26,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6OptionHeader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6OptionHeader");
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionHeader);
 
 TypeId Ipv6OptionHeader::GetTypeId ()
 {
@@ -118,8 +116,7 @@
   return (Alignment){ 1,0};
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPad1Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPad1Header);
 
 TypeId Ipv6OptionPad1Header::GetTypeId ()
 {
@@ -170,8 +167,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPadnHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionPadnHeader);
 
 TypeId Ipv6OptionPadnHeader::GetTypeId ()
 {
@@ -231,8 +227,7 @@
   return GetSerializedSize ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionJumbogramHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionJumbogramHeader);
 
 TypeId Ipv6OptionJumbogramHeader::GetTypeId ()
 {
@@ -303,8 +298,7 @@
   return (Alignment){ 4,2}; //4n+2
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionRouterAlertHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6OptionRouterAlertHeader);
 
 TypeId Ipv6OptionRouterAlertHeader::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-packet-probe.cc ns-3.20/src/internet/model/ipv6-packet-probe.cc
--- ns-3.19/src/internet/model/ipv6-packet-probe.cc	2014-06-17 10:34:00.517636052 -0700
+++ ns-3.20/src/internet/model/ipv6-packet-probe.cc	2014-06-17 10:33:13.838996386 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6PacketProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6PacketProbe);
 
 TypeId
 Ipv6PacketProbe::GetTypeId ()
diff -Naur ns-3.19/src/internet/model/ipv6-pmtu-cache.cc ns-3.20/src/internet/model/ipv6-pmtu-cache.cc
--- ns-3.19/src/internet/model/ipv6-pmtu-cache.cc	2014-06-17 10:34:00.518636044 -0700
+++ ns-3.20/src/internet/model/ipv6-pmtu-cache.cc	2014-06-17 10:33:13.839996379 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6PmtuCache)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6PmtuCache);
 
 TypeId Ipv6PmtuCache::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-raw-socket-factory.cc ns-3.20/src/internet/model/ipv6-raw-socket-factory.cc
--- ns-3.19/src/internet/model/ipv6-raw-socket-factory.cc	2014-06-17 10:34:00.519636036 -0700
+++ ns-3.20/src/internet/model/ipv6-raw-socket-factory.cc	2014-06-17 10:33:13.840996371 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6RawSocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6RawSocketFactory);
 
 TypeId Ipv6RawSocketFactory::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-raw-socket-impl.cc ns-3.20/src/internet/model/ipv6-raw-socket-impl.cc
--- ns-3.19/src/internet/model/ipv6-raw-socket-impl.cc	2014-06-17 10:34:00.520636028 -0700
+++ ns-3.20/src/internet/model/ipv6-raw-socket-impl.cc	2014-06-17 10:33:13.841996363 -0700
@@ -38,12 +38,10 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6RawSocketImpl")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6RawSocketImpl");
 
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6RawSocketImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6RawSocketImpl);
 
 TypeId Ipv6RawSocketImpl::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-routing-protocol.cc ns-3.20/src/internet/model/ipv6-routing-protocol.cc
--- ns-3.19/src/internet/model/ipv6-routing-protocol.cc	2014-06-17 10:34:00.522636013 -0700
+++ ns-3.20/src/internet/model/ipv6-routing-protocol.cc	2014-06-17 10:33:13.842996355 -0700
@@ -26,8 +26,7 @@
 namespace ns3 
 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv6RoutingProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv6RoutingProtocol);
 
 TypeId Ipv6RoutingProtocol::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/ipv6-routing-table-entry.h ns-3.20/src/internet/model/ipv6-routing-table-entry.h
--- ns-3.19/src/internet/model/ipv6-routing-table-entry.h	2014-06-17 10:34:00.523636005 -0700
+++ ns-3.20/src/internet/model/ipv6-routing-table-entry.h	2014-06-17 10:33:13.844996340 -0700
@@ -57,7 +57,7 @@
   /**
    * \brief Destructor
    */
-  ~Ipv6RoutingTableEntry ();
+  virtual ~Ipv6RoutingTableEntry ();
 
   /**
    * \brief Is the route entry correspond to a host ?
diff -Naur ns-3.19/src/internet/model/ipv6-static-routing.cc ns-3.20/src/internet/model/ipv6-static-routing.cc
--- ns-3.19/src/internet/model/ipv6-static-routing.cc	2014-06-17 10:34:00.524635997 -0700
+++ ns-3.20/src/internet/model/ipv6-static-routing.cc	2014-06-17 10:33:13.844996340 -0700
@@ -32,10 +32,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Ipv6StaticRouting")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (Ipv6StaticRouting)
-  ;
+NS_LOG_COMPONENT_DEFINE ("Ipv6StaticRouting");
+NS_OBJECT_ENSURE_REGISTERED (Ipv6StaticRouting);
 
 TypeId Ipv6StaticRouting::GetTypeId ()
 {
@@ -292,7 +290,7 @@
     {
       NS_ASSERT_MSG (interface, "Try to send on link-local multicast address, and no interface index is given!");
       rtentry = Create<Ipv6Route> ();
-      rtentry->SetSource (SourceAddressSelection (m_ipv6->GetInterfaceForDevice (interface), dst));
+      rtentry->SetSource (m_ipv6->SourceAddressSelection (m_ipv6->GetInterfaceForDevice (interface), dst));
       rtentry->SetDestination (dst);
       rtentry->SetGateway (Ipv6Address::GetZero ());
       rtentry->SetOutputDevice (interface);
@@ -311,7 +309,7 @@
 
       if (mask.IsMatch (dst, entry))
         {
-          NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << maskLen << ", metric " << metric);
+          NS_LOG_LOGIC ("Found global network route " << *j << ", mask length " << maskLen << ", metric " << metric);
 
           /* if interface is given, check the route will output on this interface */
           if (!interface || interface == m_ipv6->GetNetDevice (j->GetInterface ()))
@@ -341,15 +339,15 @@
 
               if (route->GetGateway ().IsAny ())
                 {
-                  rtentry->SetSource (SourceAddressSelection (interfaceIdx, route->GetDest ()));
+                  rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetDest ()));
                 }
               else if (route->GetDest ().IsAny ()) /* default route */
                 {
-                  rtentry->SetSource (SourceAddressSelection (interfaceIdx, route->GetPrefixToUse ().IsAny () ? dst : route->GetPrefixToUse ()));
+                  rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetPrefixToUse ().IsAny () ? dst : route->GetPrefixToUse ()));
                 }
               else
                 {
-                  rtentry->SetSource (SourceAddressSelection (interfaceIdx, route->GetGateway ()));
+                  rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetGateway ()));
                 }
 
               rtentry->SetDestination (route->GetDest ());
@@ -361,7 +359,7 @@
 
   if (rtentry)
     {
-      NS_LOG_LOGIC ("Matching route via " << rtentry->GetDestination () << " (throught " << rtentry->GetGateway () << ") at the end");
+      NS_LOG_LOGIC ("Matching route via " << rtentry->GetDestination () << " (Through " << rtentry->GetGateway () << ") at the end");
     }
   return rtentry;
 }
@@ -684,21 +682,18 @@
 void Ipv6StaticRouting::NotifyInterfaceDown (uint32_t i)
 {
   NS_LOG_FUNCTION (this << i);
-  uint32_t j = 0;
-  uint32_t max = GetNRoutes ();
 
   /* remove all static routes that are going through this interface */
-  while (j < max)
+  for (NetworkRoutesI it = m_networkRoutes.begin (); it != m_networkRoutes.end (); )
     {
-      Ipv6RoutingTableEntry route = GetRoute (j);
-
-      if (route.GetInterface () == i)
+      if (it->first->GetInterface () == i)
         {
-          RemoveRoute (j);
+          delete it->first;
+          it = m_networkRoutes.erase (it);
         }
       else
         {
-          j++;
+          it++;
         }
     }
 }
@@ -731,16 +726,19 @@
 
   // Remove all static routes that are going through this interface
   // which reference this network
-  for (uint32_t j = 0; j < GetNRoutes (); j++)
+  for (NetworkRoutesI it = m_networkRoutes.begin (); it != m_networkRoutes.end (); )
     {
-      Ipv6RoutingTableEntry route = GetRoute (j);
-
-      if (route.GetInterface () == interface
-          && route.IsNetwork ()
-          && route.GetDestNetwork () == networkAddress
-          && route.GetDestNetworkPrefix () == networkMask)
+      if (it->first->GetInterface () == interface
+          && it->first->IsNetwork ()
+          && it->first->GetDestNetwork () == networkAddress
+          && it->first->GetDestNetworkPrefix () == networkMask)
+        {
+          delete it->first;
+          it = m_networkRoutes.erase (it);
+        }
+      else
         {
-          RemoveRoute (j);
+          it++;
         }
     }
 }
@@ -795,34 +793,5 @@
     }
 }
 
-Ipv6Address Ipv6StaticRouting::SourceAddressSelection (uint32_t interface, Ipv6Address dest)
-{
-  NS_LOG_FUNCTION (this << interface << dest);
-  Ipv6Address ret;
-
-  /* first address of an IPv6 interface is link-local ones */
-  ret = m_ipv6->GetAddress (interface, 0).GetAddress ();
-
-  if (dest == Ipv6Address::GetAllNodesMulticast () || dest == Ipv6Address::GetAllRoutersMulticast () || dest == Ipv6Address::GetAllHostsMulticast ())
-    {
-      return ret;
-    }
-
-  /* usually IPv6 interfaces have one link-local address and one global address */
-
-  for (uint32_t i = 1; i < m_ipv6->GetNAddresses (interface); i++)
-    {
-      Ipv6InterfaceAddress test = m_ipv6->GetAddress (interface, i);
-      Ipv6InterfaceAddress dst(dest);
-
-      if (test.GetScope() == dst.GetScope())
-        {
-          return test.GetAddress ();
-        }
-    }
-
-  return ret;
-}
-
 } /* namespace ns3 */
 
diff -Naur ns-3.19/src/internet/model/ipv6-static-routing.h ns-3.20/src/internet/model/ipv6-static-routing.h
--- ns-3.19/src/internet/model/ipv6-static-routing.h	2014-06-17 10:34:00.524635997 -0700
+++ ns-3.20/src/internet/model/ipv6-static-routing.h	2014-06-17 10:33:13.845996332 -0700
@@ -293,14 +293,6 @@
   Ptr<Ipv6MulticastRoute> LookupStatic (Ipv6Address origin, Ipv6Address group, uint32_t ifIndex);
 
   /**
-   * \brief Choose the source address to use with destination address.
-   * \param interface interface index
-   * \param dest IPv6 destination address
-   * \return IPv6 source address to use
-   */
-  Ipv6Address SourceAddressSelection (uint32_t interface, Ipv6Address dest);
-
-  /**
    * \brief the forwarding table for network.
    */
   NetworkRoutes m_networkRoutes;
diff -Naur ns-3.19/src/internet/model/loopback-net-device.cc ns-3.20/src/internet/model/loopback-net-device.cc
--- ns-3.19/src/internet/model/loopback-net-device.cc	2014-06-17 10:34:00.526635982 -0700
+++ ns-3.20/src/internet/model/loopback-net-device.cc	2014-06-17 10:33:13.846996324 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LoopbackNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LoopbackNetDevice);
 
 TypeId 
 LoopbackNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/ndisc-cache.cc ns-3.20/src/internet/model/ndisc-cache.cc
--- ns-3.19/src/internet/model/ndisc-cache.cc	2014-06-17 10:34:00.526635982 -0700
+++ ns-3.20/src/internet/model/ndisc-cache.cc	2014-06-17 10:33:13.847996317 -0700
@@ -30,11 +30,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("NdiscCache")
-  ;
+NS_LOG_COMPONENT_DEFINE ("NdiscCache");
 
-NS_OBJECT_ENSURE_REGISTERED (NdiscCache)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NdiscCache);
 
 TypeId NdiscCache::GetTypeId ()
 {
diff -Naur ns-3.19/src/internet/model/nsc-sysctl.cc ns-3.20/src/internet/model/nsc-sysctl.cc
--- ns-3.19/src/internet/model/nsc-sysctl.cc	2014-06-17 10:34:00.527635974 -0700
+++ ns-3.20/src/internet/model/nsc-sysctl.cc	2014-06-17 10:33:13.848996309 -0700
@@ -152,8 +152,7 @@
     }
 }
 
-NS_OBJECT_ENSURE_REGISTERED (Ns3NscStack)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ns3NscStack);
 
 TypeId
 Ns3NscStack::Ns3NscStack::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/nsc-tcp-l4-protocol.cc ns-3.20/src/internet/model/nsc-tcp-l4-protocol.cc
--- ns-3.19/src/internet/model/nsc-tcp-l4-protocol.cc	2014-06-17 10:34:00.528635967 -0700
+++ ns-3.20/src/internet/model/nsc-tcp-l4-protocol.cc	2014-06-17 10:33:13.849996301 -0700
@@ -49,8 +49,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (NscTcpL4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NscTcpL4Protocol);
 
 /* see http://www.iana.org/assignments/protocol-numbers */
 const uint8_t NscTcpL4Protocol::PROT_NUMBER = 6;
diff -Naur ns-3.19/src/internet/model/nsc-tcp-socket-impl.cc ns-3.20/src/internet/model/nsc-tcp-socket-impl.cc
--- ns-3.19/src/internet/model/nsc-tcp-socket-impl.cc	2014-06-17 10:34:00.530635951 -0700
+++ ns-3.20/src/internet/model/nsc-tcp-socket-impl.cc	2014-06-17 10:33:13.851996286 -0700
@@ -47,8 +47,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (NscTcpSocketImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NscTcpSocketImpl);
 
 TypeId
 NscTcpSocketImpl::GetTypeId ()
diff -Naur ns-3.19/src/internet/model/ripng.cc ns-3.20/src/internet/model/ripng.cc
--- ns-3.19/src/internet/model/ripng.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/model/ripng.cc	2014-06-17 10:33:13.853996270 -0700
@@ -0,0 +1,1382 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include <iomanip>
+#include "ripng.h"
+#include "ns3/log.h"
+#include "ns3/abort.h"
+#include "ns3/assert.h"
+#include "ns3/unused.h"
+#include "ns3/random-variable-stream.h"
+#include "ns3/ipv6-route.h"
+#include "ns3/node.h"
+#include "ns3/names.h"
+#include "ns3/ripng-header.h"
+#include "ns3/udp-header.h"
+#include "ns3/enum.h"
+#include "ns3/ipv6-packet-info-tag.h"
+
+#define RIPNG_ALL_NODE "ff02::9"
+#define RIPNG_PORT 521
+
+NS_LOG_COMPONENT_DEFINE ("RipNg")
+ ;
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (RipNg)
+ ;
+
+RipNg::RipNg ()
+  : m_ipv6 (0), m_splitHorizonStrategy (RipNg::POISON_REVERSE), m_initialized (false)
+{
+  m_rng = CreateObject<UniformRandomVariable> ();
+}
+
+RipNg::~RipNg ()
+{
+}
+
+TypeId
+RipNg::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::RipNg")
+    .SetParent<Ipv6RoutingProtocol> ()
+    .AddConstructor<RipNg> ()
+    .AddAttribute ("UnsolicitedRoutingUpdate", "The time between two Unsolicited Routing Updates.",
+                   TimeValue (Seconds(30)),
+                   MakeTimeAccessor (&RipNg::m_unsolicitedUpdate),
+                   MakeTimeChecker ())
+    .AddAttribute ("StartupDelay", "Maximum random delay for protocol startup (send route requests).",
+                   TimeValue (Seconds(1)),
+                   MakeTimeAccessor (&RipNg::m_startupDelay),
+                   MakeTimeChecker ())
+    .AddAttribute ("TimeoutDelay", "The delay to invalidate a route.",
+                   TimeValue (Seconds(180)),
+                   MakeTimeAccessor (&RipNg::m_timeoutDelay),
+                   MakeTimeChecker ())
+    .AddAttribute ("GarbageCollectionDelay", "The delay to delete an expired route.",
+                   TimeValue (Seconds(120)),
+                   MakeTimeAccessor (&RipNg::m_garbageCollectionDelay),
+                   MakeTimeChecker ())
+    .AddAttribute ("MinTriggeredCooldown", "Min cooldown delay after a Triggered Update.",
+                   TimeValue (Seconds(1)),
+                   MakeTimeAccessor (&RipNg::m_minTriggeredUpdateDelay),
+                   MakeTimeChecker ())
+    .AddAttribute ("MaxTriggeredCooldown", "Max cooldown delay after a Triggered Update.",
+                   TimeValue (Seconds(5)),
+                   MakeTimeAccessor (&RipNg::m_maxTriggeredUpdateDelay),
+                   MakeTimeChecker ())
+    .AddAttribute ("SplitHorizon", "Split Horizon strategy.",
+                   EnumValue (RipNg::POISON_REVERSE),
+                   MakeEnumAccessor (&RipNg::m_splitHorizonStrategy),
+                   MakeEnumChecker (RipNg::NO_SPLIT_HORIZON, "NoSplitHorizon",
+                                    RipNg::SPLIT_HORIZON, "SplitHorizon",
+                                    RipNg::POISON_REVERSE, "PoisonReverse"))
+  ;
+  return tid;
+}
+
+int64_t RipNg::AssignStreams (int64_t stream)
+{
+  NS_LOG_FUNCTION (this << stream);
+
+  m_rng->SetStream (stream);
+  return 1;
+}
+
+void RipNg::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+
+  bool addedGlobal = false;
+
+  m_initialized = true;
+
+  Time delay = m_unsolicitedUpdate + Seconds (m_rng->GetValue (0, 0.5*m_unsolicitedUpdate.GetSeconds ()) );
+  m_nextUnsolicitedUpdate = Simulator::Schedule (delay, &RipNg::SendUnsolicitedRouteUpdate, this);
+
+
+  for (uint32_t i = 0 ; i < m_ipv6->GetNInterfaces (); i++)
+    {
+      bool activeInterface = false;
+      if (m_interfaceExclusions.find (i) == m_interfaceExclusions.end ())
+        {
+          activeInterface = true;
+        }
+
+      for (uint32_t j = 0; j < m_ipv6->GetNAddresses (i); j++)
+        {
+          Ipv6InterfaceAddress address = m_ipv6->GetAddress (i, j);
+          if (address.GetScope() == Ipv6InterfaceAddress::LINKLOCAL && activeInterface == true)
+            {
+              NS_LOG_LOGIC ("RIPng: adding socket to " << address.GetAddress ());
+              TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+              Ptr<Node> theNode = GetObject<Node> ();
+              Ptr<Socket> socket = Socket::CreateSocket (theNode, tid);
+              Inet6SocketAddress local = Inet6SocketAddress (address.GetAddress (), RIPNG_PORT);
+              int ret = socket->Bind (local);
+              NS_ASSERT_MSG (ret == 0, "Bind unsuccessful");
+              socket->BindToNetDevice (m_ipv6->GetNetDevice (i));
+              socket->ShutdownRecv ();
+              socket->SetIpv6RecvHopLimit (true);
+              m_sendSocketList[socket] = i;
+            }
+          else if (m_ipv6->GetAddress (i, j).GetScope() == Ipv6InterfaceAddress::GLOBAL)
+            {
+              addedGlobal = true;
+            }
+        }
+    }
+
+  if (!m_recvSocket)
+    {
+      NS_LOG_LOGIC ("RIPng: adding receiving socket");
+      TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+      Ptr<Node> theNode = GetObject<Node> ();
+      m_recvSocket = Socket::CreateSocket (theNode, tid);
+      Inet6SocketAddress local = Inet6SocketAddress (Ipv6Address::GetAny (), RIPNG_PORT);
+      m_recvSocket->Bind (local);
+      m_recvSocket->SetRecvCallback (MakeCallback (&RipNg::Receive, this));
+      m_recvSocket->SetIpv6RecvHopLimit (true);
+      m_recvSocket->SetRecvPktInfo (true);
+    }
+
+
+  if (addedGlobal)
+    {
+      Time delay = Seconds (m_rng->GetValue (m_minTriggeredUpdateDelay.GetSeconds (), m_maxTriggeredUpdateDelay.GetSeconds ()));
+      m_nextTriggeredUpdate = Simulator::Schedule (delay, &RipNg::DoSendRouteUpdate, this, false);
+    }
+
+  delay = Seconds (m_rng->GetValue (0.01, m_startupDelay.GetSeconds ()));
+  m_nextTriggeredUpdate = Simulator::Schedule (delay, &RipNg::SendRouteRequest, this);
+
+  Ipv6RoutingProtocol::DoInitialize ();
+}
+
+Ptr<Ipv6Route> RipNg::RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr)
+{
+  NS_LOG_FUNCTION (this << header << oif);
+
+  Ipv6Address destination = header.GetDestinationAddress ();
+  Ptr<Ipv6Route> rtentry = 0;
+
+  if (destination.IsMulticast ())
+    {
+      // Note:  Multicast routes for outbound packets are stored in the
+      // normal unicast table.  An implication of this is that it is not
+      // possible to source multicast datagrams on multiple interfaces.
+      // This is a well-known property of sockets implementation on
+      // many Unix variants.
+      // So, we just log it and fall through to LookupStatic ()
+      NS_LOG_LOGIC ("RouteOutput (): Multicast destination");
+    }
+
+  rtentry = Lookup (destination, oif);
+  if (rtentry)
+    {
+      sockerr = Socket::ERROR_NOTERROR;
+    }
+  else
+    {
+      sockerr = Socket::ERROR_NOROUTETOHOST;
+    }
+  return rtentry;
+}
+
+bool RipNg::RouteInput (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
+                        UnicastForwardCallback ucb, MulticastForwardCallback mcb,
+                        LocalDeliverCallback lcb, ErrorCallback ecb)
+{
+  NS_LOG_FUNCTION (this << p << header << header.GetSourceAddress () << header.GetDestinationAddress () << idev);
+
+  NS_ASSERT (m_ipv6 != 0);
+  // Check if input device supports IP
+  NS_ASSERT (m_ipv6->GetInterfaceForDevice (idev) >= 0);
+  uint32_t iif = m_ipv6->GetInterfaceForDevice (idev);
+  Ipv6Address dst = header.GetDestinationAddress ();
+
+  if (dst.IsMulticast ())
+    {
+      NS_LOG_LOGIC ("Multicast route not supported by RIPng");
+      return false; // Let other routing protocols try to handle this
+    }
+
+  /// \todo  Configurable option to enable \RFC{1222} Strong End System Model
+  // Right now, we will be permissive and allow a source to send us
+  // a packet to one of our other interface addresses; that is, the
+  // destination unicast address does not match one of the iif addresses,
+  // but we check our other interfaces.  This could be an option
+  // (to remove the outer loop immediately below and just check iif).
+  for (uint32_t j = 0; j < m_ipv6->GetNInterfaces (); j++)
+    {
+      for (uint32_t i = 0; i < m_ipv6->GetNAddresses (j); i++)
+        {
+          Ipv6InterfaceAddress iaddr = m_ipv6->GetAddress (j, i);
+          Ipv6Address addr = iaddr.GetAddress ();
+          if (addr.IsEqual (header.GetDestinationAddress ()))
+            {
+              if (j == iif)
+                {
+                  NS_LOG_LOGIC ("For me (destination " << addr << " match)");
+                }
+              else
+                {
+                  NS_LOG_LOGIC ("For me (destination " << addr << " match) on another interface " << header.GetDestinationAddress ());
+                }
+              lcb (p, header, iif);
+              return true;
+            }
+          NS_LOG_LOGIC ("Address " << addr << " not a match");
+        }
+    }
+  // Check if input device supports IP forwarding
+  if (m_ipv6->IsForwarding (iif) == false)
+    {
+      NS_LOG_LOGIC ("Forwarding disabled for this interface");
+      ecb (p, header, Socket::ERROR_NOROUTETOHOST);
+      return false;
+    }
+  // Next, try to find a route
+  NS_LOG_LOGIC ("Unicast destination");
+  Ptr<Ipv6Route> rtentry = Lookup (header.GetDestinationAddress ());
+
+  if (rtentry != 0)
+    {
+      NS_LOG_LOGIC ("Found unicast destination- calling unicast callback");
+      ucb (idev, rtentry, p, header);  // unicast forwarding callback
+      return true;
+    }
+  else
+    {
+      NS_LOG_LOGIC ("Did not find unicast destination- returning false");
+      return false; // Let other routing protocols try to handle this
+    }
+}
+
+void RipNg::NotifyInterfaceUp (uint32_t i)
+{
+  NS_LOG_FUNCTION (this << i);
+
+  for (uint32_t j = 0; j < m_ipv6->GetNAddresses (i); j++)
+    {
+      Ipv6InterfaceAddress address = m_ipv6->GetAddress (i, j);
+      Ipv6Prefix networkMask = address.GetPrefix ();
+      Ipv6Address networkAddress = address.GetAddress ().CombinePrefix (networkMask);
+
+      if (address != Ipv6Address () && networkMask != Ipv6Prefix ())
+        {
+          if (networkMask == Ipv6Prefix (128))
+            {
+              /* host route */
+              AddNetworkRouteTo (networkAddress, Ipv6Prefix::GetOnes (), 0);
+            }
+          else
+            {
+              AddNetworkRouteTo (networkAddress, networkMask, i);
+            }
+        }
+    }
+
+  if (!m_initialized)
+    {
+      return;
+    }
+
+
+  bool sendSocketFound = false;
+  for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+    {
+      if (iter->second == i)
+        {
+          sendSocketFound = true;
+          break;
+        }
+    }
+
+  bool activeInterface = false;
+  if (m_interfaceExclusions.find (i) == m_interfaceExclusions.end ())
+    {
+      activeInterface = true;
+    }
+
+  for (uint32_t j = 0; j < m_ipv6->GetNAddresses (i); j++)
+    {
+      Ipv6InterfaceAddress address = m_ipv6->GetAddress (i, j);
+
+      Ipv6Address networkAddress = address.GetAddress ().CombinePrefix (address.GetPrefix ());
+      Ipv6Prefix networkMask = address.GetPrefix ();
+      AddNetworkRouteTo (networkAddress, networkMask, i);
+
+      if (address.GetScope() == Ipv6InterfaceAddress::LINKLOCAL && sendSocketFound == false && activeInterface == true)
+        {
+          NS_LOG_LOGIC ("RIPng: adding sending socket to " << address.GetAddress ());
+          TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+          Ptr<Node> theNode = GetObject<Node> ();
+          Ptr<Socket> socket = Socket::CreateSocket (theNode, tid);
+          Inet6SocketAddress local = Inet6SocketAddress (address.GetAddress (), RIPNG_PORT);
+          socket->Bind (local);
+          socket->BindToNetDevice (m_ipv6->GetNetDevice (i));
+          socket->ShutdownRecv ();
+          socket->SetIpv6RecvHopLimit (true);
+          m_sendSocketList[socket] = i;
+        }
+      else if (address.GetScope() == Ipv6InterfaceAddress::GLOBAL)
+        {
+          SendTriggeredRouteUpdate ();
+        }
+    }
+
+  if (!m_recvSocket)
+    {
+      NS_LOG_LOGIC ("RIPng: adding receiving socket");
+      TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+      Ptr<Node> theNode = GetObject<Node> ();
+      m_recvSocket = Socket::CreateSocket (theNode, tid);
+      Inet6SocketAddress local = Inet6SocketAddress (Ipv6Address::GetAny (), RIPNG_PORT);
+      m_recvSocket->Bind (local);
+      m_recvSocket->SetRecvCallback (MakeCallback (&RipNg::Receive, this));
+      m_recvSocket->SetIpv6RecvHopLimit (true);
+      m_recvSocket->SetRecvPktInfo (true);
+    }
+}
+
+void RipNg::NotifyInterfaceDown (uint32_t interface)
+{
+  NS_LOG_FUNCTION (this << interface);
+
+  /* remove all routes that are going through this interface */
+  for (RoutesI it = m_routes.begin (); it != m_routes.end (); it++)
+    {
+      if (it->first->GetInterface () == interface)
+        {
+          InvalidateRoute (it->first);
+        }
+    }
+
+  for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+    {
+      NS_LOG_INFO ("Checking socket for interface " << interface);
+      if (iter->second == interface)
+        {
+          NS_LOG_INFO ("Removed socket for interface " << interface);
+          iter->first->Close ();
+          m_sendSocketList.erase (iter);
+          break;
+        }
+    }
+
+  if (m_interfaceExclusions.find (interface) == m_interfaceExclusions.end ())
+    {
+      SendTriggeredRouteUpdate ();
+    }
+}
+
+void RipNg::NotifyAddAddress (uint32_t interface, Ipv6InterfaceAddress address)
+{
+  NS_LOG_FUNCTION (this << interface << address);
+
+  if (!m_ipv6->IsUp (interface))
+    {
+      return;
+    }
+
+  if (m_interfaceExclusions.find (interface) != m_interfaceExclusions.end ())
+    {
+      return;
+    }
+
+  Ipv6Address networkAddress = address.GetAddress ().CombinePrefix (address.GetPrefix ());
+  Ipv6Prefix networkMask = address.GetPrefix ();
+
+  if (address.GetAddress () != Ipv6Address () && address.GetPrefix () != Ipv6Prefix ())
+    {
+      AddNetworkRouteTo (networkAddress, networkMask, interface);
+    }
+
+  SendTriggeredRouteUpdate ();
+}
+
+void RipNg::NotifyRemoveAddress (uint32_t interface, Ipv6InterfaceAddress address)
+{
+  NS_LOG_FUNCTION (this << interface << address);
+
+  if (!m_ipv6->IsUp (interface))
+    {
+      return;
+    }
+
+  if (address.GetScope() != Ipv6InterfaceAddress::GLOBAL)
+    {
+      return;
+    }
+
+  Ipv6Address networkAddress = address.GetAddress ().CombinePrefix (address.GetPrefix ());
+  Ipv6Prefix networkMask = address.GetPrefix ();
+
+  // Remove all routes that are going through this interface
+  // which reference this network
+  for (RoutesI it = m_routes.begin (); it != m_routes.end (); it++)
+    {
+      if (it->first->GetInterface () == interface
+          && it->first->IsNetwork ()
+          && it->first->GetDestNetwork () == networkAddress
+          && it->first->GetDestNetworkPrefix () == networkMask)
+        {
+          InvalidateRoute (it->first);
+        }
+    }
+
+  if (m_interfaceExclusions.find (interface) == m_interfaceExclusions.end ())
+    {
+      SendTriggeredRouteUpdate ();
+    }
+
+}
+
+void RipNg::NotifyAddRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse)
+{
+  NS_LOG_INFO (this << dst << mask << nextHop << interface << prefixToUse);
+  // \todo this can be used to add delegate routes
+}
+
+void RipNg::NotifyRemoveRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse)
+{
+  NS_LOG_FUNCTION (this << dst << mask << nextHop << interface);
+  // \todo this can be used to delete delegate routes
+}
+
+void RipNg::SetIpv6 (Ptr<Ipv6> ipv6)
+{
+  NS_LOG_FUNCTION (this << ipv6);
+
+  NS_ASSERT (m_ipv6 == 0 && ipv6 != 0);
+  uint32_t i = 0;
+  m_ipv6 = ipv6;
+
+  for (i = 0; i < m_ipv6->GetNInterfaces (); i++)
+    {
+      if (m_ipv6->IsUp (i))
+        {
+          NotifyInterfaceUp (i);
+        }
+      else
+        {
+          NotifyInterfaceDown (i);
+        }
+    }
+}
+
+void RipNg::PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const
+{
+  NS_LOG_FUNCTION (this << stream);
+
+  std::ostream* os = stream->GetStream ();
+
+  *os << "Node: " << m_ipv6->GetObject<Node> ()->GetId ()
+      << " Time: " << Simulator::Now ().GetSeconds () << "s "
+      << "Ipv6 RIPng table" << std::endl;
+
+  if (!m_routes.empty ())
+    {
+      *os << "Destination                    Next Hop                   Flag Met Ref Use If" << std::endl;
+      for (RoutesCI it = m_routes.begin (); it != m_routes.end (); it++)
+        {
+          RipNgRoutingTableEntry* route = it->first;
+          RipNgRoutingTableEntry::Status_e status = route->GetRouteStatus();
+
+          if (status == RipNgRoutingTableEntry::RIPNG_VALID)
+            {
+              std::ostringstream dest, gw, mask, flags;
+
+              dest << route->GetDest () << "/" << int(route->GetDestNetworkPrefix ().GetPrefixLength ());
+              *os << std::setiosflags (std::ios::left) << std::setw (31) << dest.str ();
+              gw << route->GetGateway ();
+              *os << std::setiosflags (std::ios::left) << std::setw (27) << gw.str ();
+              flags << "U";
+              if (route->IsHost ())
+                {
+                  flags << "H";
+                }
+              else if (route->IsGateway ())
+                {
+                  flags << "G";
+                }
+              *os << std::setiosflags (std::ios::left) << std::setw (5) << flags.str ();
+              *os << std::setiosflags (std::ios::left) << std::setw (4) << int(route->GetRouteMetric ());
+              // Ref ct not implemented
+              *os << "-" << "   ";
+              // Use not implemented
+              *os << "-" << "   ";
+              if (Names::FindName (m_ipv6->GetNetDevice (route->GetInterface ())) != "")
+                {
+                  *os << Names::FindName (m_ipv6->GetNetDevice (route->GetInterface ()));
+                }
+              else
+                {
+                  *os << route->GetInterface ();
+                }
+              *os << std::endl;
+            }
+        }
+    }
+}
+
+void RipNg::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+
+  for (RoutesI j = m_routes.begin ();  j != m_routes.end (); j = m_routes.erase (j))
+    {
+      delete j->first;
+    }
+  m_routes.clear ();
+
+  m_nextTriggeredUpdate.Cancel ();
+  m_nextUnsolicitedUpdate.Cancel ();
+  m_nextTriggeredUpdate = EventId ();
+  m_nextUnsolicitedUpdate = EventId ();
+
+  for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+    {
+      iter->first->Close ();
+    }
+  m_sendSocketList.clear ();
+
+  m_recvSocket->Close ();
+  m_recvSocket = 0;
+
+  m_ipv6 = 0;
+
+  Ipv6RoutingProtocol::DoDispose ();
+}
+
+
+Ptr<Ipv6Route> RipNg::Lookup (Ipv6Address dst, Ptr<NetDevice> interface)
+{
+  NS_LOG_FUNCTION (this << dst << interface);
+
+  Ptr<Ipv6Route> rtentry = 0;
+  uint16_t longestMask = 0;
+
+  /* when sending on link-local multicast, there have to be interface specified */
+  if (dst.IsLinkLocalMulticast ())
+    {
+      NS_ASSERT_MSG (interface, "Try to send on link-local multicast address, and no interface index is given!");
+      rtentry = Create<Ipv6Route> ();
+      rtentry->SetSource (m_ipv6->SourceAddressSelection (m_ipv6->GetInterfaceForDevice (interface), dst));
+      rtentry->SetDestination (dst);
+      rtentry->SetGateway (Ipv6Address::GetZero ());
+      rtentry->SetOutputDevice (interface);
+      return rtentry;
+    }
+
+  for (RoutesI it = m_routes.begin (); it != m_routes.end (); it++)
+    {
+      RipNgRoutingTableEntry* j = it->first;
+
+      if (j->GetRouteStatus () == RipNgRoutingTableEntry::RIPNG_VALID)
+        {
+          Ipv6Prefix mask = j->GetDestNetworkPrefix ();
+          uint16_t maskLen = mask.GetPrefixLength ();
+          Ipv6Address entry = j->GetDestNetwork ();
+
+          NS_LOG_LOGIC ("Searching for route to " << dst << ", mask length " << maskLen);
+
+          if (mask.IsMatch (dst, entry))
+            {
+              NS_LOG_LOGIC ("Found global network route " << j << ", mask length " << maskLen);
+
+              /* if interface is given, check the route will output on this interface */
+              if (!interface || interface == m_ipv6->GetNetDevice (j->GetInterface ()))
+                {
+                  if (maskLen < longestMask)
+                    {
+                      NS_LOG_LOGIC ("Previous match longer, skipping");
+                      continue;
+                    }
+
+                  longestMask = maskLen;
+
+                  Ipv6RoutingTableEntry* route = j;
+                  uint32_t interfaceIdx = route->GetInterface ();
+                  rtentry = Create<Ipv6Route> ();
+
+                  if (route->GetGateway ().IsAny ())
+                    {
+                      rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetDest ()));
+                    }
+                  else if (route->GetDest ().IsAny ()) /* default route */
+                    {
+                      rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetPrefixToUse ().IsAny () ? dst : route->GetPrefixToUse ()));
+                    }
+                  else
+                    {
+                      rtentry->SetSource (m_ipv6->SourceAddressSelection (interfaceIdx, route->GetDest ()));
+                    }
+
+                  rtentry->SetDestination (route->GetDest ());
+                  rtentry->SetGateway (route->GetGateway ());
+                  rtentry->SetOutputDevice (m_ipv6->GetNetDevice (interfaceIdx));
+                }
+            }
+        }
+    }
+
+  if (rtentry)
+    {
+      NS_LOG_LOGIC ("Matching route via " << rtentry->GetDestination () << " (through " << rtentry->GetGateway () << ") at the end");
+    }
+  return rtentry;
+}
+
+void RipNg::AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse)
+{
+  NS_LOG_FUNCTION (this << network << networkPrefix << nextHop << interface << prefixToUse);
+
+  if (nextHop.IsLinkLocal())
+    {
+      NS_LOG_WARN ("Ripng::AddNetworkRouteTo - Next hop should be link-local");
+    }
+
+  RipNgRoutingTableEntry* route = new RipNgRoutingTableEntry (network, networkPrefix, nextHop, interface, prefixToUse);
+  route->SetRouteMetric (1);
+  route->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+  route->SetRouteChanged (true);
+
+  m_routes.push_back (std::make_pair (route, EventId ()));
+}
+
+void RipNg::AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface)
+{
+  NS_LOG_FUNCTION (this << network << networkPrefix << interface);
+
+  RipNgRoutingTableEntry* route = new RipNgRoutingTableEntry (network, networkPrefix, interface);
+  route->SetRouteMetric (1);
+  route->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+  route->SetRouteChanged (true);
+
+  m_routes.push_back (std::make_pair (route, EventId ()));
+}
+
+void RipNg::InvalidateRoute (RipNgRoutingTableEntry *route)
+{
+  NS_LOG_FUNCTION (this << *route);
+
+  for (RoutesI it = m_routes.begin (); it != m_routes.end (); it++)
+    {
+      if (it->first == route)
+        {
+          route->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_INVALID);
+          route->SetRouteMetric (16);
+          route->SetRouteChanged (true);
+          if (it->second.IsRunning ())
+            {
+              it->second.Cancel ();
+            }
+          it->second = Simulator::Schedule (m_garbageCollectionDelay, &RipNg::DeleteRoute, this, route);
+          return;
+        }
+    }
+  NS_ABORT_MSG ("Ripng::InvalidateRoute - cannot find the route to update");
+}
+
+void RipNg::DeleteRoute (RipNgRoutingTableEntry *route)
+{
+  NS_LOG_FUNCTION (this << *route);
+
+  for (RoutesI it = m_routes.begin (); it != m_routes.end (); it++)
+    {
+      if (it->first == route)
+        {
+          delete route;
+          m_routes.erase (it);
+          return;
+        }
+    }
+  NS_ABORT_MSG ("Ripng::DeleteRoute - cannot find the route to delete");
+}
+
+
+void RipNg::Receive (Ptr<Socket> socket)
+{
+  NS_LOG_FUNCTION (this << socket);
+
+  Ptr<Packet> packet = socket->Recv ();
+  NS_LOG_INFO ("Received " << *packet);
+
+  Ipv6PacketInfoTag interfaceInfo;
+  if (!packet->RemovePacketTag (interfaceInfo))
+    {
+      NS_ABORT_MSG ("No incoming interface on RIPng message, aborting.");
+    }
+  uint32_t incomingIf = interfaceInfo.GetRecvIf ();
+  Ptr<Node> node = this->GetObject<Node> ();
+  Ptr<NetDevice> dev = node->GetDevice (incomingIf);
+  uint32_t ipInterfaceIndex = m_ipv6->GetInterfaceForDevice (dev);
+
+  SocketIpv6HopLimitTag hoplimitTag;
+  if (!packet->RemovePacketTag (hoplimitTag))
+    {
+      NS_ABORT_MSG ("No incoming Hop Count on RIPng message, aborting.");
+    }
+  uint8_t hopLimit = hoplimitTag.GetHopLimit ();
+
+  SocketAddressTag tag;
+  if (!packet->RemovePacketTag (tag))
+    {
+      NS_ABORT_MSG ("No incoming sender address on RIPng message, aborting.");
+    }
+  Ipv6Address senderAddress = Inet6SocketAddress::ConvertFrom (tag.GetAddress ()).GetIpv6 ();
+  uint16_t senderPort = Inet6SocketAddress::ConvertFrom (tag.GetAddress ()).GetPort ();
+
+  int32_t interfaceForAddress = m_ipv6->GetInterfaceForAddress (senderAddress);
+  if (interfaceForAddress != -1)
+    {
+      NS_LOG_LOGIC ("Ignoring a packet sent by myself.");
+      return;
+    }
+
+  RipNgHeader hdr;
+  packet->RemoveHeader (hdr);
+
+  if (hdr.GetCommand () == RipNgHeader::RESPONSE)
+    {
+      HandleResponses (hdr, senderAddress, ipInterfaceIndex, hopLimit);
+    }
+  else if (hdr.GetCommand () == RipNgHeader::REQUEST)
+    {
+      HandleRequests (hdr, senderAddress, senderPort, ipInterfaceIndex, hopLimit);
+    }
+  else
+    {
+      NS_LOG_LOGIC ("Ignoring message with unknown command: " << int (hdr.GetCommand ()));
+    }
+  return;
+}
+
+void RipNg::HandleRequests (RipNgHeader requestHdr, Ipv6Address senderAddress, uint16_t senderPort, uint32_t incomingInterface, uint8_t hopLimit)
+{
+  NS_LOG_FUNCTION (this << senderAddress << int (senderPort) << incomingInterface << int (hopLimit) << requestHdr);
+
+  std::list<RipNgRte> rtes = requestHdr.GetRteList ();
+
+  if (rtes.empty ())
+    {
+      return;
+    }
+
+  // check if it's a request for the full table from a neighbor
+  if (rtes.size () == 1 && senderAddress.IsLinkLocal ())
+    {
+      if (rtes.begin ()->GetPrefix () == Ipv6Address::GetAny () &&
+          rtes.begin ()->GetPrefixLen () == 0 &&
+          rtes.begin ()->GetRouteMetric () == 16)
+        {
+          // Output whole thing. Use Split Horizon
+          if (m_interfaceExclusions.find (incomingInterface) == m_interfaceExclusions.end ())
+            {
+              // we use one of the sending sockets, as they're bound to the right interface
+              // and the local address might be used on different interfaces.
+              Ptr<Socket> sendingSoket;
+              for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+                {
+                  if (iter->second == incomingInterface)
+                    {
+                      sendingSoket = iter->first;
+                    }
+                }
+              NS_ASSERT_MSG (sendingSoket, "HandleRequest - Impossible to find a socket to send the reply");
+
+              uint16_t mtu = m_ipv6->GetMtu (incomingInterface);
+              uint16_t maxRte = (mtu - Ipv6Header ().GetSerializedSize () - UdpHeader ().GetSerializedSize () - RipNgHeader ().GetSerializedSize ()) / RipNgRte ().GetSerializedSize ();
+
+              Ptr<Packet> p = Create<Packet> ();
+              SocketIpv6HopLimitTag tag;
+              p->RemovePacketTag (tag);
+              tag.SetHopLimit (255);
+              p->AddPacketTag (tag);
+
+              RipNgHeader hdr;
+              hdr.SetCommand (RipNgHeader::RESPONSE);
+
+              for (RoutesI rtIter = m_routes.begin (); rtIter != m_routes.end (); rtIter++)
+                {
+                  bool splitHorizoning = (rtIter->first->GetInterface () == incomingInterface);
+
+                  Ipv6InterfaceAddress rtDestAddr = Ipv6InterfaceAddress(rtIter->first->GetDestNetwork ());
+
+                  bool isGlobal = (rtDestAddr.GetScope () == Ipv6InterfaceAddress::GLOBAL);
+                  bool isDefaultRoute = ((rtIter->first->GetDestNetwork () == Ipv6Address::GetAny ()) &&
+                      (rtIter->first->GetDestNetworkPrefix () == Ipv6Prefix::GetZero ()) &&
+                      (rtIter->first->GetInterface () != incomingInterface));
+
+                  if ((isGlobal || isDefaultRoute) &&
+                      (rtIter->first->GetRouteStatus () == RipNgRoutingTableEntry::RIPNG_VALID) )
+                    {
+                      RipNgRte rte;
+                      rte.SetPrefix (rtIter->first->GetDestNetwork ());
+                      rte.SetPrefixLen (rtIter->first->GetDestNetworkPrefix ().GetPrefixLength ());
+                      if (m_splitHorizonStrategy == POISON_REVERSE && splitHorizoning)
+                        {
+                          rte.SetRouteMetric (16);
+                        }
+                      else
+                        {
+                          rte.SetRouteMetric (rtIter->first->GetRouteMetric ());
+                        }
+                      rte.SetRouteTag (rtIter->first->GetRouteTag ());
+                      if ((m_splitHorizonStrategy != SPLIT_HORIZON) ||
+                          (m_splitHorizonStrategy == SPLIT_HORIZON && !splitHorizoning))
+                        {
+                          hdr.AddRte (rte);
+                        }
+                    }
+                  if (hdr.GetRteNumber () == maxRte)
+                    {
+                      p->AddHeader (hdr);
+                      NS_LOG_DEBUG ("SendTo: " << *p);
+                      sendingSoket->SendTo (p, 0, Inet6SocketAddress (senderAddress, RIPNG_PORT));
+                      p->RemoveHeader (hdr);
+                      hdr.ClearRtes ();
+                    }
+                }
+              if (hdr.GetRteNumber () > 0)
+                {
+                  p->AddHeader (hdr);
+                  NS_LOG_DEBUG ("SendTo: " << *p);
+                  sendingSoket->SendTo (p, 0, Inet6SocketAddress (senderAddress, RIPNG_PORT));
+                }
+            }
+        }
+    }
+  else
+    {
+      // note: we got the request as a single packet, so no check is necessary for MTU limit
+
+      // we use one of the sending sockets, as they're bound to the right interface
+      // and the local address might be used on different interfaces.
+      Ptr<Socket> sendingSoket;
+      if (senderAddress.IsLinkLocal ())
+        {
+          for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+            {
+              if (iter->second == incomingInterface)
+                {
+                  sendingSoket = iter->first;
+                }
+            }
+        }
+      else
+        {
+          sendingSoket = m_recvSocket;
+        }
+
+      Ptr<Packet> p = Create<Packet> ();
+      SocketIpv6HopLimitTag tag;
+      p->RemovePacketTag (tag);
+      tag.SetHopLimit (255);
+      p->AddPacketTag (tag);
+
+      RipNgHeader hdr;
+      hdr.SetCommand (RipNgHeader::RESPONSE);
+
+      for (std::list<RipNgRte>::iterator iter = rtes.begin ();
+          iter != rtes.end (); iter++)
+        {
+          bool found = false;
+          for (RoutesI rtIter = m_routes.begin (); rtIter != m_routes.end (); rtIter++)
+            {
+              Ipv6InterfaceAddress rtDestAddr = Ipv6InterfaceAddress(rtIter->first->GetDestNetwork ());
+              if ((rtDestAddr.GetScope () == Ipv6InterfaceAddress::GLOBAL) &&
+                  (rtIter->first->GetRouteStatus () == RipNgRoutingTableEntry::RIPNG_VALID))
+                {
+                  Ipv6Address requestedAddress = iter->GetPrefix ();
+                  requestedAddress.CombinePrefix (Ipv6Prefix (iter->GetPrefixLen ()));
+                  Ipv6Address rtAddress = rtIter->first->GetDestNetwork ();
+                  rtAddress.CombinePrefix (rtIter->first->GetDestNetworkPrefix ());
+
+                  if (requestedAddress == rtAddress)
+                    {
+                      iter->SetRouteMetric (rtIter->first->GetRouteMetric ());
+                      iter->SetRouteTag (rtIter->first->GetRouteTag ());
+                      hdr.AddRte (*iter);
+                      found = true;
+                      break;
+                    }
+                }
+            }
+          if (!found)
+            {
+              iter->SetRouteMetric (16);
+              iter->SetRouteTag (0);
+              hdr.AddRte (*iter);
+            }
+        }
+      p->AddHeader (hdr);
+      NS_LOG_DEBUG ("SendTo: " << *p);
+      sendingSoket->SendTo (p, 0, Inet6SocketAddress (senderAddress, senderPort));
+    }
+
+}
+
+void RipNg::HandleResponses (RipNgHeader hdr, Ipv6Address senderAddress, uint32_t incomingInterface, uint8_t hopLimit)
+{
+  NS_LOG_FUNCTION (this << senderAddress << incomingInterface << int (hopLimit) << hdr);
+
+  if (m_interfaceExclusions.find (incomingInterface) != m_interfaceExclusions.end ())
+    {
+      NS_LOG_LOGIC ("Ignoring an update message from an excluded interface: " << incomingInterface);
+      return;
+    }
+
+  if (!senderAddress.IsLinkLocal ())
+    {
+      NS_LOG_LOGIC ("Ignoring an update message from a non-link-local source: " << senderAddress);
+      return;
+    }
+
+  if (hopLimit != 255)
+    {
+      NS_LOG_LOGIC ("Ignoring an update message with suspicious hop count: " << int (hopLimit));
+      return;
+    }
+
+  std::list<RipNgRte> rtes = hdr.GetRteList ();
+
+  // validate the RTEs before processing
+  for (std::list<RipNgRte>::iterator iter = rtes.begin ();
+      iter != rtes.end (); iter++)
+    {
+      if (iter->GetRouteMetric () == 0 || iter->GetRouteMetric () > 16)
+        {
+          NS_LOG_LOGIC ("Ignoring an update message with malformed metric: " << int (iter->GetRouteMetric ()));
+          return;
+        }
+      if (iter->GetPrefixLen () > 128)
+        {
+          NS_LOG_LOGIC ("Ignoring an update message with malformed prefix length: " << int (iter->GetPrefixLen ()));
+          return;
+        }
+      if (iter->GetPrefix ().IsLocalhost () ||
+          iter->GetPrefix ().IsLinkLocal () ||
+          iter->GetPrefix ().IsMulticast ())
+        {
+          NS_LOG_LOGIC ("Ignoring an update message with wrong prefixes: " << iter->GetPrefix ());
+          return;
+        }
+    }
+
+  bool changed = false;
+
+  for (std::list<RipNgRte>::iterator iter = rtes.begin ();
+      iter != rtes.end (); iter++)
+    {
+      Ipv6Prefix rtePrefix = Ipv6Prefix (iter->GetPrefixLen ());
+      Ipv6Address rteAddr = iter->GetPrefix ().CombinePrefix (rtePrefix);
+
+      NS_LOG_LOGIC ("Processing RTE " << *iter);
+
+      uint8_t interfaceMetric = 1;
+      if (m_interfaceMetrics.find (incomingInterface) != m_interfaceMetrics.end ())
+        {
+          interfaceMetric = m_interfaceMetrics[incomingInterface];
+        }
+      uint8_t rteMetric = std::min (iter->GetRouteMetric () + interfaceMetric, 16);
+      RoutesI it;
+      bool found = false;
+      for (it = m_routes.begin (); it != m_routes.end (); it++)
+        {
+          if (it->first->GetDestNetwork () == rteAddr &&
+              it->first->GetDestNetworkPrefix () == rtePrefix)
+            {
+              found = true;
+              if (rteMetric < it->first->GetRouteMetric ())
+                {
+                  if (senderAddress != it->first->GetGateway ())
+                    {
+                      RipNgRoutingTableEntry* route = new RipNgRoutingTableEntry (rteAddr, rtePrefix, senderAddress, incomingInterface, Ipv6Address::GetAny ());
+                      delete it->first;
+                      it->first = route;
+                    }
+                  it->first->SetRouteMetric (rteMetric);
+                  it->first->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+                  it->first->SetRouteTag (iter->GetRouteTag ());
+                  it->first->SetRouteChanged (true);
+                  it->second.Cancel ();
+                  it->second = Simulator::Schedule (m_timeoutDelay, &RipNg::InvalidateRoute, this, it->first);
+                  changed = true;
+                }
+              else if (rteMetric == it->first->GetRouteMetric ())
+                {
+                  if (senderAddress == it->first->GetGateway ())
+                    {
+                      it->second.Cancel ();
+                      it->second = Simulator::Schedule (m_timeoutDelay, &RipNg::InvalidateRoute, this, it->first);
+                    }
+                  else
+                    {
+                      if (Simulator::GetDelayLeft (it->second) < m_timeoutDelay/2)
+                        {
+                          RipNgRoutingTableEntry* route = new RipNgRoutingTableEntry (rteAddr, rtePrefix, senderAddress, incomingInterface, Ipv6Address::GetAny ());
+                          route->SetRouteMetric (rteMetric);
+                          route->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+                          route->SetRouteTag (iter->GetRouteTag ());
+                          route->SetRouteChanged (true);
+                          delete it->first;
+                          it->first = route;
+                          it->second.Cancel ();
+                          it->second = Simulator::Schedule (m_timeoutDelay, &RipNg::InvalidateRoute, this, route);
+                          changed = true;
+                        }
+                    }
+                }
+              else if (rteMetric > it->first->GetRouteMetric () && senderAddress == it->first->GetGateway ())
+                {
+                  it->second.Cancel ();
+                  if (rteMetric < 16)
+                    {
+                      it->first->SetRouteMetric (rteMetric);
+                      it->first->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+                      it->first->SetRouteTag (iter->GetRouteTag ());
+                      it->first->SetRouteChanged (true);
+                      it->second.Cancel ();
+                      it->second = Simulator::Schedule (m_timeoutDelay, &RipNg::InvalidateRoute, this, it->first);
+                    }
+                  else
+                    {
+                      InvalidateRoute (it->first);
+                    }
+                  changed = true;
+                }
+            }
+        }
+      if (!found && rteMetric != 16)
+        {
+          NS_LOG_LOGIC ("Received a RTE with new route, adding.");
+
+          RipNgRoutingTableEntry* route = new RipNgRoutingTableEntry (rteAddr, rtePrefix, senderAddress, incomingInterface, Ipv6Address::GetAny ());
+          route->SetRouteMetric (rteMetric);
+          route->SetRouteStatus (RipNgRoutingTableEntry::RIPNG_VALID);
+          route->SetRouteChanged (true);
+          m_routes.push_front (std::make_pair (route, EventId ()));
+          EventId invalidateEvent = Simulator::Schedule (m_timeoutDelay, &RipNg::InvalidateRoute, this, route);
+          (m_routes.begin ())->second = invalidateEvent;
+          changed = true;
+        }
+    }
+
+  if (changed)
+    {
+      SendTriggeredRouteUpdate ();
+    }
+}
+
+void RipNg::DoSendRouteUpdate (bool periodic)
+{
+  NS_LOG_FUNCTION (this << (periodic ? " periodic" : " triggered"));
+
+  for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+    {
+      uint32_t interface = iter->second;
+
+      if (m_interfaceExclusions.find (interface) == m_interfaceExclusions.end ())
+        {
+          uint16_t mtu = m_ipv6->GetMtu (interface);
+          uint16_t maxRte = (mtu - Ipv6Header ().GetSerializedSize () - UdpHeader ().GetSerializedSize () - RipNgHeader ().GetSerializedSize ()) / RipNgRte ().GetSerializedSize ();
+
+          Ptr<Packet> p = Create<Packet> ();
+          SocketIpv6HopLimitTag tag;
+          tag.SetHopLimit (255);
+          p->AddPacketTag (tag);
+
+          RipNgHeader hdr;
+          hdr.SetCommand (RipNgHeader::RESPONSE);
+
+          for (RoutesI rtIter = m_routes.begin (); rtIter != m_routes.end (); rtIter++)
+            {
+              bool splitHorizoning = (rtIter->first->GetInterface () == interface);
+              Ipv6InterfaceAddress rtDestAddr = Ipv6InterfaceAddress(rtIter->first->GetDestNetwork ());
+
+              NS_LOG_DEBUG ("Processing RT " << rtDestAddr << " " << int(rtIter->first->IsRouteChanged ()));
+
+              bool isGlobal = (rtDestAddr.GetScope () == Ipv6InterfaceAddress::GLOBAL);
+              bool isDefaultRoute = ((rtIter->first->GetDestNetwork () == Ipv6Address::GetAny ()) &&
+                  (rtIter->first->GetDestNetworkPrefix () == Ipv6Prefix::GetZero ()) &&
+                  (rtIter->first->GetInterface () != interface));
+
+              if ((isGlobal || isDefaultRoute) &&
+                  (periodic || rtIter->first->IsRouteChanged ()))
+                {
+                  RipNgRte rte;
+                  rte.SetPrefix (rtIter->first->GetDestNetwork ());
+                  rte.SetPrefixLen (rtIter->first->GetDestNetworkPrefix ().GetPrefixLength ());
+                  if (m_splitHorizonStrategy == POISON_REVERSE && splitHorizoning)
+                    {
+                      rte.SetRouteMetric (16);
+                    }
+                  else
+                    {
+                      rte.SetRouteMetric (rtIter->first->GetRouteMetric ());
+                    }
+                  rte.SetRouteTag (rtIter->first->GetRouteTag ());
+                  if (m_splitHorizonStrategy == SPLIT_HORIZON && !splitHorizoning)
+                    {
+                      hdr.AddRte (rte);
+                    }
+                  else if (m_splitHorizonStrategy != SPLIT_HORIZON)
+                    {
+                      hdr.AddRte (rte);
+                    }
+                }
+              if (hdr.GetRteNumber () == maxRte)
+                {
+                  p->AddHeader (hdr);
+                  NS_LOG_DEBUG ("SendTo: " << *p);
+                  iter->first->SendTo (p, 0, Inet6SocketAddress (RIPNG_ALL_NODE, RIPNG_PORT));
+                  p->RemoveHeader (hdr);
+                  hdr.ClearRtes ();
+                }
+            }
+          if (hdr.GetRteNumber () > 0)
+            {
+              p->AddHeader (hdr);
+              NS_LOG_DEBUG ("SendTo: " << *p);
+              iter->first->SendTo (p, 0, Inet6SocketAddress (RIPNG_ALL_NODE, RIPNG_PORT));
+            }
+        }
+    }
+  for (RoutesI rtIter = m_routes.begin (); rtIter != m_routes.end (); rtIter++)
+    {
+      rtIter->first->SetRouteChanged (false);
+    }
+}
+
+void RipNg::SendTriggeredRouteUpdate ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_nextTriggeredUpdate.IsRunning())
+    {
+      NS_LOG_LOGIC ("Skipping Triggered Update due to cooldown");
+      return;
+    }
+
+  // DoSendRouteUpdate (false);
+
+  // note: The RFC states:
+  //     After a triggered
+  //     update is sent, a timer should be set for a random interval between 1
+  //     and 5 seconds.  If other changes that would trigger updates occur
+  //     before the timer expires, a single update is triggered when the timer
+  //     expires.  The timer is then reset to another random value between 1
+  //     and 5 seconds.  Triggered updates may be suppressed if a regular
+  //     update is due by the time the triggered update would be sent.
+  // Here we rely on this:
+  // When an update occurs (either Triggered or Periodic) the "IsChanged ()"
+  // route field will be cleared.
+  // Hence, the following Triggered Update will be fired, but will not send
+  // any route update.
+
+  Time delay = Seconds (m_rng->GetValue (m_minTriggeredUpdateDelay.GetSeconds (), m_maxTriggeredUpdateDelay.GetSeconds ()));
+  m_nextTriggeredUpdate = Simulator::Schedule (delay, &RipNg::DoSendRouteUpdate, this, false);
+}
+
+void RipNg::SendUnsolicitedRouteUpdate ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_nextTriggeredUpdate.IsRunning())
+    {
+      m_nextTriggeredUpdate.Cancel ();
+    }
+
+  DoSendRouteUpdate (true);
+
+  Time delay = m_unsolicitedUpdate + Seconds (m_rng->GetValue (0, 0.5*m_unsolicitedUpdate.GetSeconds ()) );
+  m_nextUnsolicitedUpdate = Simulator::Schedule (delay, &RipNg::SendUnsolicitedRouteUpdate, this);
+}
+
+std::set<uint32_t> RipNg::GetInterfaceExclusions () const
+{
+  return m_interfaceExclusions;
+}
+
+void RipNg::SetInterfaceExclusions (std::set<uint32_t> exceptions)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_interfaceExclusions = exceptions;
+}
+
+uint8_t RipNg::GetInterfaceMetric (uint32_t interface) const
+{
+  NS_LOG_FUNCTION (this << interface);
+
+  std::map<uint32_t, uint8_t>::const_iterator iter = m_interfaceMetrics.find (interface);
+  if (iter != m_interfaceMetrics.end ())
+    {
+      return iter->second;
+    }
+  return 1;
+}
+
+void RipNg::SetInterfaceMetric (uint32_t interface, uint8_t metric)
+{
+  NS_LOG_FUNCTION (this << interface << int (metric));
+
+  if (metric < 16)
+    {
+      m_interfaceMetrics[interface] = metric;
+    }
+}
+
+void RipNg::SendRouteRequest ()
+{
+  NS_LOG_FUNCTION (this);
+
+  Ptr<Packet> p = Create<Packet> ();
+  SocketIpv6HopLimitTag tag;
+  p->RemovePacketTag (tag);
+  tag.SetHopLimit (255);
+  p->AddPacketTag (tag);
+
+  RipNgHeader hdr;
+  hdr.SetCommand (RipNgHeader::REQUEST);
+
+  RipNgRte rte;
+  rte.SetPrefix (Ipv6Address::GetAny ());
+  rte.SetPrefixLen (0);
+  rte.SetRouteMetric (16);
+
+  hdr.AddRte (rte);
+  p->AddHeader (hdr);
+
+  for (SocketListI iter = m_sendSocketList.begin (); iter != m_sendSocketList.end (); iter++ )
+    {
+      uint32_t interface = iter->second;
+
+      if (m_interfaceExclusions.find (interface) == m_interfaceExclusions.end ())
+        {
+          NS_LOG_DEBUG ("SendTo: " << *p);
+          iter->first->SendTo (p, 0, Inet6SocketAddress (RIPNG_ALL_NODE, RIPNG_PORT));
+        }
+    }
+}
+
+void RipNg::AddDefaultRouteTo (Ipv6Address nextHop, uint32_t interface)
+{
+  NS_LOG_FUNCTION (this << interface);
+
+  AddNetworkRouteTo (Ipv6Address ("::"), Ipv6Prefix::GetZero (), nextHop, interface, Ipv6Address ("::"));
+}
+
+
+/*
+ * RipNgRoutingTableEntry
+ */
+
+RipNgRoutingTableEntry::RipNgRoutingTableEntry ()
+  : m_tag (0), m_metric (16), m_status (RIPNG_INVALID), m_changed (false)
+{
+}
+
+RipNgRoutingTableEntry::RipNgRoutingTableEntry (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse)
+  : Ipv6RoutingTableEntry ( RipNgRoutingTableEntry::CreateNetworkRouteTo (network, networkPrefix, nextHop, interface, prefixToUse) ),
+    m_tag (0), m_metric (16), m_status (RIPNG_INVALID), m_changed (false)
+{
+}
+
+RipNgRoutingTableEntry::RipNgRoutingTableEntry (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface)
+  : Ipv6RoutingTableEntry ( Ipv6RoutingTableEntry::CreateNetworkRouteTo (network, networkPrefix, interface) ),
+    m_tag (0), m_metric (16), m_status (RIPNG_INVALID), m_changed (false)
+{
+}
+
+RipNgRoutingTableEntry::~RipNgRoutingTableEntry ()
+{
+}
+
+
+void RipNgRoutingTableEntry::SetRouteTag (uint16_t routeTag)
+{
+  if (m_tag != routeTag)
+    {
+      m_tag = routeTag;
+      m_changed = true;
+    }
+}
+
+uint16_t RipNgRoutingTableEntry::GetRouteTag () const
+{
+  return m_tag;
+}
+
+void RipNgRoutingTableEntry::SetRouteMetric (uint8_t routeMetric)
+{
+  if (m_metric != routeMetric)
+    {
+      m_metric = routeMetric;
+      m_changed = true;
+    }
+}
+
+uint8_t RipNgRoutingTableEntry::GetRouteMetric () const
+{
+  return m_metric;
+}
+
+void RipNgRoutingTableEntry::SetRouteStatus (Status_e status)
+{
+  if (m_status != status)
+    {
+      m_status = status;
+      m_changed = true;
+    }
+}
+
+RipNgRoutingTableEntry::Status_e RipNgRoutingTableEntry::GetRouteStatus (void) const
+{
+  return m_status;
+}
+
+void RipNgRoutingTableEntry::SetRouteChanged (bool changed)
+{
+  m_changed = changed;
+}
+
+bool RipNgRoutingTableEntry::IsRouteChanged (void) const
+{
+  return m_changed;
+}
+
+
+std::ostream & operator << (std::ostream& os, const RipNgRoutingTableEntry& rte)
+{
+  os << static_cast<const Ipv6RoutingTableEntry &>(rte);
+  os << ", metric: " << int (rte.GetRouteMetric ()) << ", tag: " << int (rte.GetRouteTag ());
+
+  return os;
+}
+
+
+}
+
diff -Naur ns-3.19/src/internet/model/ripng.h ns-3.20/src/internet/model/ripng.h
--- ns-3.19/src/internet/model/ripng.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/model/ripng.h	2014-06-17 10:33:13.854996262 -0700
@@ -0,0 +1,411 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#ifndef RIPNG_H
+#define RIPNG_H
+
+#include <list>
+
+#include "ns3/ipv6-routing-protocol.h"
+#include "ns3/ipv6-interface.h"
+#include "ns3/inet6-socket-address.h"
+#include "ns3/ipv6-l3-protocol.h"
+#include "ns3/ipv6-routing-table-entry.h"
+#include "ns3/random-variable-stream.h"
+#include "ns3/ripng-header.h"
+
+namespace ns3 {
+
+/**
+ * \defgroup ripng RIPng
+ *
+ * The RIPng protocol (\rfc{2080}) is a unicast-only IPv6 IGP (Interior Gateway Protocol).
+ * Its convergence time is rather long. As a consequence, it is suggested to
+ * carefully check the network topology and the route status before sending
+ * data flows.
+ *
+ * RIPng implements the Bellman-Ford algorithm (although the RFC does not state it).
+ * Bellman-Ford algorithm convergence time is O(|V|*|E|) where |V| and |E| are the
+ * number of vertices (routers) and edges (links) respectively. Since unsolicited
+ * updates are exchanged every 30 seconds, the convergence might require a long time.
+ *
+ * For the RIPng protocol, the exact convergence time is shorter, thanks to the
+ * use of triggered updates, which are sent when a route changes.
+ * Even with triggered updates, the convergence is in the order of magnitude of
+ * O(|V|*|E|) * 5 seconds, which is still quite long for complex topologies.
+ *
+ * \todo: Add routing table compression (CIDR). The most evident result: without
+ * it a router will announce to be the default router *and* more RTEs, which is silly.
+ */
+
+/**
+ * \ingroup ripng
+ * \brief RipNg Routing Table Entry
+ */
+class RipNgRoutingTableEntry : public Ipv6RoutingTableEntry
+{
+public:
+
+  /**
+   * Route status
+   */
+  enum Status_e {
+    RIPNG_VALID,
+    RIPNG_INVALID,
+  };
+
+  RipNgRoutingTableEntry (void);
+
+  /**
+   * \brief Constructor
+   * \param network network address
+   * \param networkPrefix network prefix
+   * \param nextHop next hop address to route the packet
+   * \param interface interface index
+   * \param prefixToUse prefix that should be used for source address for this destination
+   */
+  RipNgRoutingTableEntry (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse);
+
+  /**
+   * \brief Constructor
+   * \param network network address
+   * \param networkPrefix network prefix
+   * \param interface interface index
+   */
+  RipNgRoutingTableEntry (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface);
+
+  virtual ~RipNgRoutingTableEntry ();
+
+  /**
+   * \brief Set the route tag
+   * \param routeTag the route tag
+   */
+  void SetRouteTag (uint16_t routeTag);
+
+  /**
+   * \brief Get the route tag
+   * \returns the route tag
+   */
+  uint16_t GetRouteTag (void) const;
+
+  /**
+   * \brief Set the route metric
+   * \param routeMetric the route metric
+   */
+  void SetRouteMetric (uint8_t routeMetric);
+
+  /**
+   * \brief Get the route metric
+   * \returns the route metric
+   */
+  uint8_t GetRouteMetric (void) const;
+
+  /**
+   * \brief Set the route status
+   * \param status the route status
+   */
+  void SetRouteStatus (Status_e status);
+
+  /**
+   * \brief Get the route status
+   * \returns the route status
+   */
+  Status_e GetRouteStatus (void) const;
+
+  /**
+   * \brief Set the route as changed
+   *
+   * The changed routes are scheduled for a Triggered Update.
+   * After a Triggered Update, all the changed flags are cleared
+   * from the routing table.
+   *
+   * \param true if route is changed
+   */
+  void SetRouteChanged (bool changed);
+
+  /**
+   * \brief Get the route changed status
+   *
+   * \returns true if route is changed
+   */
+  bool IsRouteChanged (void) const;
+
+private:
+  uint16_t m_tag; //!< route tag
+  uint8_t m_metric; //!< route metric
+  Status_e m_status; //!< route status
+  bool m_changed; //!< route has been updated
+};
+
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the reference to the output stream
+ * \param route the Ipv6 routing table entry
+ * \returns the reference to the output stream
+ */
+std::ostream& operator<< (std::ostream& os, RipNgRoutingTableEntry const& route);
+
+
+
+/**
+ * \ingroup ripng
+ *
+ * \brief RIPng Routing Protocol, defined in \rfc{2080}.
+ */
+class RipNg : public Ipv6RoutingProtocol
+{
+public:
+  // /< C-tor
+  RipNg ();
+  virtual ~RipNg ();
+
+  static TypeId GetTypeId (void);
+
+  // \name From Ipv6RoutingProtocol
+  // \{
+  Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif,
+                              Socket::SocketErrno &sockerr);
+  bool RouteInput (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
+                   UnicastForwardCallback ucb, MulticastForwardCallback mcb,
+                   LocalDeliverCallback lcb, ErrorCallback ecb);
+  virtual void NotifyInterfaceUp (uint32_t interface);
+  virtual void NotifyInterfaceDown (uint32_t interface);
+  virtual void NotifyAddAddress (uint32_t interface, Ipv6InterfaceAddress address);
+  virtual void NotifyRemoveAddress (uint32_t interface, Ipv6InterfaceAddress address);
+  virtual void NotifyAddRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop,
+                               uint32_t interface, Ipv6Address prefixToUse = Ipv6Address::GetZero ());
+  virtual void NotifyRemoveRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop,
+                                  uint32_t interface, Ipv6Address prefixToUse = Ipv6Address::GetZero ());
+  virtual void SetIpv6 (Ptr<Ipv6> ipv6);
+  virtual void PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const;
+  // \}
+
+  enum SplitHorizonType_e {
+    NO_SPLIT_HORIZON,
+    SPLIT_HORIZON,
+    POISON_REVERSE,
+  };
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model.  Return the number of streams (possibly zero) that
+   * have been assigned.
+   *
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this model
+   */
+  int64_t AssignStreams (int64_t stream);
+
+  /**
+   * \brief Get the set of interface excluded from the protocol
+   * \return the set of excluded interfaces
+   */
+  std::set<uint32_t> GetInterfaceExclusions () const;
+
+  /**
+   * \brief Set the set of interface excluded from the protocol
+   * \param exceptions the set of excluded interfaces
+   */
+  void SetInterfaceExclusions (std::set<uint32_t> exceptions);
+
+  /**
+   * \brief Get the metric for an interface
+   * \param interface the interface
+   * \returns the interface metric
+   */
+  uint8_t GetInterfaceMetric (uint32_t interface) const;
+
+  /**
+   * \brief Set the metric for an interface
+   * \param interface the interface
+   * \param metric the interface metric
+   */
+  void SetInterfaceMetric (uint32_t interface, uint8_t metric);
+
+  /**
+   * \brief Add a default route to the router through the nextHop located on interface.
+   *
+   * The default route is usually installed manually, or it is the result of
+   * some "other" routing protocol (e.g., BGP).
+   *
+   * \param nextHop the next hop
+   * \param interface the interface
+   */
+  void AddDefaultRouteTo (Ipv6Address nextHop, uint32_t interface);
+
+protected:
+  /**
+   * \brief Dispose this object.
+   */
+  virtual void DoDispose ();
+
+  /**
+   * Start protocol operation
+   */
+  void DoInitialize ();
+
+private:
+  /// Container for the network routes - pair RipNgRoutingTableEntry *, EventId (update event)
+  typedef std::list<std::pair <RipNgRoutingTableEntry *, EventId> > Routes;
+
+  /// Const Iterator for container for the network routes
+  typedef std::list<std::pair <RipNgRoutingTableEntry *, EventId> >::const_iterator RoutesCI;
+
+  /// Iterator for container for the network routes
+  typedef std::list<std::pair <RipNgRoutingTableEntry *, EventId> >::iterator RoutesI;
+
+
+  /**
+   * \brief Receive RIPng packets.
+   *
+   * \param socket the socket the packet was received to.
+   */
+  void Receive (Ptr<Socket> socket);
+
+  /**
+   * \brief Handle RIPng requests.
+   *
+   * \param hdr message header (including RTEs)
+   * \param senderAddress sender address
+   * \param senderPort sender port
+   * \param incomingInterface incoming interface
+   * \param hopLimit packet's hop limit
+   */
+  void HandleRequests (RipNgHeader hdr, Ipv6Address senderAddress, uint16_t senderPort, uint32_t incomingInterface, uint8_t hopLimit);
+
+  /**
+   * \brief Handle RIPng responses.
+   *
+   * \param hdr message header (including RTEs)
+   * \param senderAddress sender address
+   * \param incomingInterface incoming interface
+   * \param hopLimit packet's hop limit
+   */
+  void HandleResponses (RipNgHeader hdr, Ipv6Address senderAddress, uint32_t incomingInterface, uint8_t hopLimit);
+
+  /**
+   * \brief Lookup in the forwarding table for destination.
+   * \param dest destination address
+   * \param interface output interface if any (put 0 otherwise)
+   * \return Ipv6Route to route the packet to reach dest address
+   */
+  Ptr<Ipv6Route> Lookup (Ipv6Address dest, Ptr<NetDevice> = 0);
+
+  /**
+   * Receive and process unicast packet
+   * \param socket socket where packet is arrived
+   */
+  void RecvUnicastRipng (Ptr<Socket> socket);
+  /**
+   * Receive and process multicast packet
+   * \param socket socket where packet is arrived
+   */
+  void RecvMulticastRipng (Ptr<Socket> socket);
+
+  /**
+   * \brief Add route to network.
+   * \param network network address
+   * \param networkPrefix network prefix*
+   * \param nextHop next hop address to route the packet.
+   * \param interface interface index
+   * \param prefixToUse prefix that should be used for source address for this destination
+   * \param metric metric of route in case of multiple routes to same destination
+   */
+  void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse);
+
+  /**
+   * \brief Add route to network.
+   * \param network network address
+   * \param networkPrefix network prefix
+   * \param interface interface index
+   * \param metric metric of route in case of multiple routes to same destination
+   */
+  void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface);
+
+  /**
+   * \brief Send Routing Updates on all interfaces.
+   */
+  void DoSendRouteUpdate (bool periodic);
+
+  /**
+   * \brief Send Routing Request on all interfaces.
+   */
+  void SendRouteRequest ();
+
+  /**
+   * \brief Send Triggered Routing Updates on all interfaces.
+   */
+  void SendTriggeredRouteUpdate ();
+
+  /**
+   * \brief Send Unsolicited Routing Updates on all interfaces.
+   */
+  void SendUnsolicitedRouteUpdate (void);
+
+  /**
+   * \brief Invalidate a route.
+   * \param route the route to be removed
+   */
+  void InvalidateRoute (RipNgRoutingTableEntry *route);
+
+  /**
+   * \brief Delete a route.
+   * \param route the route to be removed
+   */
+  void DeleteRoute (RipNgRoutingTableEntry *route);
+
+  Routes m_routes; //!<  the forwarding table for network.
+  Ptr<Ipv6> m_ipv6; //!< IPv6 reference
+  Time m_startupDelay; //!< Random delay before protocol startup.
+  Time m_minTriggeredUpdateDelay; //!< Min cooldown delay after a Triggered Update.
+  Time m_maxTriggeredUpdateDelay; //!< Max cooldown delay after a Triggered Update.
+  Time m_unsolicitedUpdate; //!< time between two Unsolicited Routing Updates
+  Time m_timeoutDelay; //!< Delay before invalidating a route
+  Time m_garbageCollectionDelay; //!< Delay before deleting an INVALID route
+
+  // note: we can not trust the result of socket->GetBoundNetDevice ()->GetIfIndex ();
+  // it is dependent on the interface initialization (i.e., if the loopback is already up).
+  /// Socket list type
+  typedef std::map< Ptr<Socket>, uint32_t> SocketList;
+  /// Socket list type iterator
+  typedef std::map<Ptr<Socket>, uint32_t>::iterator SocketListI;
+  /// Socket list type const iterator
+  typedef std::map<Ptr<Socket>, uint32_t>::const_iterator SocketListCI;
+
+  SocketList m_sendSocketList; //!< list of sockets for sending (socket, interface index)
+  Ptr<Socket> m_recvSocket;
+
+  EventId m_nextUnsolicitedUpdate; //!< Next Unsolicited Update event
+  EventId m_nextTriggeredUpdate; //!< Next Triggered Update event
+
+  Ptr<UniformRandomVariable> m_rng; //!< Rng stream.
+
+  std::set<uint32_t> m_interfaceExclusions; // Set of excluded interfaces
+  std::map<uint32_t, uint8_t> m_interfaceMetrics; // Map of interface metrics
+
+  SplitHorizonType_e m_splitHorizonStrategy; // Split Horizon strategy
+
+  bool m_initialized; // flag to allow socket's late-creation.
+};
+
+} // namespace ns3
+#endif /* RIPNG_H */
+
diff -Naur ns-3.19/src/internet/model/ripng-header.cc ns-3.20/src/internet/model/ripng-header.cc
--- ns-3.19/src/internet/model/ripng-header.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/model/ripng-header.cc	2014-06-17 10:33:13.852996278 -0700
@@ -0,0 +1,255 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ripng-header.h"
+
+namespace ns3 {
+
+/*
+ * RipNgRte
+ */
+NS_OBJECT_ENSURE_REGISTERED (RipNgRte)
+  ;
+
+RipNgRte::RipNgRte ()
+  : m_prefix ("::"), m_tag (0), m_prefixLen (0), m_metric (16)
+{
+}
+
+TypeId RipNgRte::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::RipNgRte").SetParent<Header> ().AddConstructor<RipNgRte> ();
+  return tid;
+}
+
+TypeId RipNgRte::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void RipNgRte::Print (std::ostream & os) const
+{
+  os << "prefix " << m_prefix << "/" << int(m_prefixLen) << " Metric " << int(m_metric) << " Tag " << int(m_tag);
+}
+
+uint32_t RipNgRte::GetSerializedSize () const
+{
+  return 20;
+}
+
+void RipNgRte::Serialize (Buffer::Iterator i) const
+{
+  uint8_t tmp[16];
+
+  m_prefix.Serialize (tmp);
+  i.Write (tmp, 16);
+
+  i.WriteHtonU16 (m_tag);
+  i.WriteU8 (m_prefixLen);
+  i.WriteU8 (m_metric);
+}
+
+uint32_t RipNgRte::Deserialize (Buffer::Iterator i)
+{
+  uint8_t tmp[16];
+
+  i.Read (tmp, 16);
+  m_prefix.Set (tmp);
+  m_tag = i.ReadNtohU16 ();
+  m_prefixLen = i.ReadU8 ();
+  m_metric = i.ReadU8 ();
+
+  return GetSerializedSize ();
+}
+
+void RipNgRte::SetPrefix (Ipv6Address prefix)
+{
+  m_prefix = prefix;
+}
+
+Ipv6Address RipNgRte::GetPrefix () const
+{
+  return m_prefix;
+}
+
+void RipNgRte::SetPrefixLen (uint8_t prefixLen)
+{
+  m_prefixLen = prefixLen;
+}
+
+uint8_t RipNgRte::GetPrefixLen () const
+{
+  return m_prefixLen;
+}
+
+void RipNgRte::SetRouteTag (uint16_t routeTag)
+{
+  m_tag = routeTag;
+}
+
+uint16_t RipNgRte::GetRouteTag () const
+{
+  return m_tag;
+}
+
+void RipNgRte::SetRouteMetric (uint8_t routeMetric)
+{
+  m_metric = routeMetric;
+}
+
+uint8_t RipNgRte::GetRouteMetric () const
+{
+  return m_metric;
+}
+
+
+std::ostream & operator << (std::ostream & os, const RipNgRte & h)
+{
+  h.Print (os);
+  return os;
+}
+
+/*
+ * RipNgHeader
+ */
+NS_OBJECT_ENSURE_REGISTERED (RipNgHeader)
+  ;
+
+RipNgHeader::RipNgHeader ()
+  : m_command (0)
+{
+}
+
+TypeId RipNgHeader::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::RipNgHeader").SetParent<Header> ().AddConstructor<RipNgHeader> ();
+  return tid;
+}
+
+TypeId RipNgHeader::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void RipNgHeader::Print (std::ostream & os) const
+{
+  os << "command " << int(m_command);
+  for (std::list<RipNgRte>::const_iterator iter = m_rteList.begin ();
+      iter != m_rteList.end (); iter ++)
+    {
+      os << " | ";
+      iter->Print (os);
+    }
+}
+
+uint32_t RipNgHeader::GetSerializedSize () const
+{
+  RipNgRte rte;
+  return 4 + m_rteList.size () * rte.GetSerializedSize ();
+}
+
+void RipNgHeader::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+
+  i.WriteU8 (uint8_t (m_command));
+  i.WriteU8 (1);
+  i.WriteU16 (0);
+
+  for (std::list<RipNgRte>::const_iterator iter = m_rteList.begin ();
+      iter != m_rteList.end (); iter ++)
+    {
+      iter->Serialize (i);
+      i.Next(iter->GetSerializedSize ());
+    }
+}
+
+uint32_t RipNgHeader::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t temp;
+  temp = i.ReadU8 ();
+  if ((temp == REQUEST) || (temp == RESPONSE))
+    {
+      m_command = temp;
+    }
+  else
+    {
+      return 0;
+    }
+
+  temp = i.ReadU8 ();
+  NS_ASSERT_MSG (temp == 1, "RipNG received a message with mismatch version, aborting.");
+
+  uint16_t temp16 = i.ReadU16 ();
+  NS_ASSERT_MSG (temp16 == 0, "RipNG received a message with invalid filled flags, aborting.");
+
+  uint8_t rteNumber = (i.GetSize () - 4)/20;
+  for (uint8_t n=0; n<rteNumber; n++)
+    {
+      RipNgRte rte;
+      i.Next (rte.Deserialize (i));
+      m_rteList.push_back (rte);
+    }
+
+  return GetSerializedSize ();
+}
+
+void RipNgHeader::SetCommand (RipNgHeader::Command_e command)
+{
+  m_command = command;
+}
+
+RipNgHeader::Command_e RipNgHeader::GetCommand () const
+{
+  return RipNgHeader::Command_e (m_command);
+}
+
+void RipNgHeader::AddRte (RipNgRte rte)
+{
+  m_rteList.push_back (rte);
+}
+
+void RipNgHeader::ClearRtes ()
+{
+  m_rteList.clear ();
+}
+
+uint16_t RipNgHeader::GetRteNumber (void) const
+{
+  return m_rteList.size ();
+}
+
+std::list<RipNgRte> RipNgHeader::GetRteList (void) const
+{
+  return m_rteList;
+}
+
+
+std::ostream & operator << (std::ostream & os, const RipNgHeader & h)
+{
+  h.Print (os);
+  return os;
+}
+
+
+}
+
diff -Naur ns-3.19/src/internet/model/ripng-header.h ns-3.20/src/internet/model/ripng-header.h
--- ns-3.19/src/internet/model/ripng-header.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/model/ripng-header.h	2014-06-17 10:33:13.853996270 -0700
@@ -0,0 +1,226 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#ifndef RIPNG_HEADER_H
+#define RIPNG_HEADER_H
+
+#include <list>
+#include "ns3/header.h"
+#include "ns3/ipv6-address.h"
+#include "ns3/packet.h"
+#include "ns3/ipv6-header.h"
+
+
+namespace ns3 {
+
+/**
+ * \ingroup ripng
+ * \brief RipNg Routing Table Entry (RTE) - see \RFC{2080}
+ */
+class RipNgRte : public Header
+{
+public:
+  RipNgRte (void);
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * \brief Return the instance type identifier.
+   * \return instance type ID
+   */
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream& os) const;
+
+  /**
+   * \brief Get the serialized size of the packet.
+   * \return size
+   */
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Serialize the packet.
+   * \param start Buffer iterator
+   */
+  virtual void Serialize (Buffer::Iterator start) const;
+
+  /**
+   * \brief Deserialize the packet.
+   * \param start Buffer iterator
+   * \return size of the packet
+   */
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  /**
+   * \brief Set the prefix
+   * \param prefix the prefix
+   */
+  void SetPrefix (Ipv6Address prefix);
+
+  /**
+   * \brief Get the prefix
+   * \returns the prefix
+   */
+  Ipv6Address GetPrefix (void) const;
+
+  /**
+   * \brief Set the prefix length
+   * \param prefixLen the prefix length
+   */
+  void SetPrefixLen (uint8_t prefixLen);
+
+  /**
+   * \brief Get the prefix length
+   * \returns the prefix length
+   */
+  uint8_t GetPrefixLen (void) const;
+
+  /**
+   * \brief Set the route tag
+   * \param routeTag the route tag
+   */
+  void SetRouteTag (uint16_t routeTag);
+
+  /**
+   * \brief Get the route tag
+   * \returns the route tag
+   */
+  uint16_t GetRouteTag (void) const;
+
+  /**
+   * \brief Set the route metric
+   * \param routeMetric the route metric
+   */
+  void SetRouteMetric (uint8_t routeMetric);
+
+  /**
+   * \brief Get the route metric
+   * \returns the route metric
+   */
+  uint8_t GetRouteMetric (void) const;
+
+
+private:
+  Ipv6Address m_prefix; //!< prefix
+  uint16_t m_tag; //!< route tag
+  uint8_t m_prefixLen; //!< prefix length
+  uint8_t m_metric; //!< route metric
+};
+
+
+/**
+ * \ingroup ripng
+ * \brief RipNgHeader - see \RFC{2080}
+ */
+class RipNgHeader : public Header
+{
+public:
+  RipNgHeader (void);
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * \brief Return the instance type identifier.
+   * \return instance type ID
+   */
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream& os) const;
+
+  /**
+   * \brief Get the serialized size of the packet.
+   * \return size
+   */
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Serialize the packet.
+   * \param start Buffer iterator
+   */
+  virtual void Serialize (Buffer::Iterator start) const;
+
+  /**
+   * \brief Deserialize the packet.
+   * \param start Buffer iterator
+   * \return size of the packet
+   */
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  /**
+   * Commands to be used in RipNg headers
+   */
+  enum Command_e
+  {
+    REQUEST = 0x1,
+    RESPONSE = 0x2,
+  };
+
+  /**
+   * \brief Set the command
+   * \param command the command
+   */
+  void SetCommand (Command_e command);
+
+  /**
+   * \brief Get the command
+   * \returns the command
+   */
+  Command_e GetCommand (void) const;
+
+  /**
+   * \brief Add a RTE to the message
+   * \param rte the RTE
+   */
+  void AddRte (RipNgRte rte);
+
+  /**
+   * \brief Clear all the RTEs from the header
+   */
+  void ClearRtes ();
+
+  /**
+   * \brief Get the number of RTE included in the message
+   * \returns the number of RTE in the message
+   */
+  uint16_t GetRteNumber (void) const;
+
+  /**
+   * \brief Get the list of the RTEs included in the message
+   * \returns the list of the RTEs in the message
+   */
+  std::list<RipNgRte> GetRteList (void) const;
+
+private:
+  uint8_t m_command; //!< command type
+  std::list<RipNgRte> m_rteList; //!< list of the RTEs in the message
+};
+
+}
+
+#endif /* RIPNG_HEADER_H */
+
diff -Naur ns-3.19/src/internet/model/rtt-estimator.cc ns-3.20/src/internet/model/rtt-estimator.cc
--- ns-3.19/src/internet/model/rtt-estimator.cc	2014-06-17 10:34:00.532635936 -0700
+++ ns-3.20/src/internet/model/rtt-estimator.cc	2014-06-17 10:33:13.854996262 -0700
@@ -38,8 +38,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RttEstimator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RttEstimator);
 
 TypeId 
 RttEstimator::GetTypeId (void)
@@ -232,8 +231,7 @@
 //-----------------------------------------------------------------------------
 // Mean-Deviation Estimator
 
-NS_OBJECT_ENSURE_REGISTERED (RttMeanDeviation)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RttMeanDeviation);
 
 TypeId 
 RttMeanDeviation::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/tcp-header.cc ns-3.20/src/internet/model/tcp-header.cc
--- ns-3.19/src/internet/model/tcp-header.cc	2014-06-17 10:34:00.533635928 -0700
+++ ns-3.20/src/internet/model/tcp-header.cc	2014-06-17 10:33:13.856996247 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpHeader);
 
 TcpHeader::TcpHeader ()
   : m_sourcePort (0),
diff -Naur ns-3.19/src/internet/model/tcp-l4-protocol.cc ns-3.20/src/internet/model/tcp-l4-protocol.cc
--- ns-3.19/src/internet/model/tcp-l4-protocol.cc	2014-06-17 10:34:00.535635912 -0700
+++ ns-3.20/src/internet/model/tcp-l4-protocol.cc	2014-06-17 10:33:13.857996239 -0700
@@ -51,8 +51,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpL4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpL4Protocol);
 
 //TcpL4Protocol stuff----------------------------------------------------------
 
diff -Naur ns-3.19/src/internet/model/tcp-newreno.cc ns-3.20/src/internet/model/tcp-newreno.cc
--- ns-3.19/src/internet/model/tcp-newreno.cc	2014-06-17 10:34:00.536635905 -0700
+++ ns-3.20/src/internet/model/tcp-newreno.cc	2014-06-17 10:33:13.859996224 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpNewReno)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpNewReno);
 
 TypeId
 TcpNewReno::GetTypeId (void)
@@ -128,8 +127,9 @@
       m_cWnd -= seq - m_txBuffer.HeadSequence ();
       m_cWnd += m_segmentSize;  // increase cwnd
       NS_LOG_INFO ("Partial ACK in fast recovery: cwnd set to " << m_cWnd);
-      TcpSocketBase::NewAck (seq); // update m_nextTxSequence and send new data if allowed by window
+      m_txBuffer.DiscardUpTo(seq);  //Bug 1850:  retransmit before newack
       DoRetransmit (); // Assume the next seq is lost. Retransmit lost packet
+      TcpSocketBase::NewAck (seq); // update m_nextTxSequence and send new data if allowed by window
       return;
     }
   else if (m_inFastRec && seq >= m_recover)
diff -Naur ns-3.19/src/internet/model/tcp-reno.cc ns-3.20/src/internet/model/tcp-reno.cc
--- ns-3.19/src/internet/model/tcp-reno.cc	2014-06-17 10:34:00.536635905 -0700
+++ ns-3.20/src/internet/model/tcp-reno.cc	2014-06-17 10:33:13.860996216 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpReno)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpReno);
 
 TypeId
 TcpReno::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/tcp-rfc793.cc ns-3.20/src/internet/model/tcp-rfc793.cc
--- ns-3.19/src/internet/model/tcp-rfc793.cc	2014-06-17 10:34:00.537635897 -0700
+++ ns-3.20/src/internet/model/tcp-rfc793.cc	2014-06-17 10:33:13.860996216 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpRfc793)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpRfc793);
 
 TypeId
 TcpRfc793::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/tcp-socket-base.cc ns-3.20/src/internet/model/tcp-socket-base.cc
--- ns-3.19/src/internet/model/tcp-socket-base.cc	2014-06-17 10:34:00.540635874 -0700
+++ ns-3.20/src/internet/model/tcp-socket-base.cc	2014-06-17 10:33:13.863996193 -0700
@@ -54,8 +54,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpSocketBase)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpSocketBase);
 
 TypeId
 TcpSocketBase::GetTypeId (void)
@@ -265,7 +264,11 @@
       m_errno = ERROR_ADDRNOTAVAIL;
       return -1;
     }
-  m_tcp->m_sockets.push_back (this);
+
+  if (std::find(m_tcp->m_sockets.begin(), m_tcp->m_sockets.end(), this) == m_tcp->m_sockets.end())
+    {
+      m_tcp->m_sockets.push_back (this);
+    }
   return SetupCallback ();
 }
 
@@ -279,7 +282,11 @@
       m_errno = ERROR_ADDRNOTAVAIL;
       return -1;
     }
-  m_tcp->m_sockets.push_back (this);
+
+  if (std::find(m_tcp->m_sockets.begin(), m_tcp->m_sockets.end(), this) == m_tcp->m_sockets.end())
+    {
+      m_tcp->m_sockets.push_back (this);
+    }
   return SetupCallback ();
 }
 
@@ -347,7 +354,11 @@
       m_errno = ERROR_INVAL;
       return -1;
     }
-  m_tcp->m_sockets.push_back (this);
+
+  if (std::find(m_tcp->m_sockets.begin(), m_tcp->m_sockets.end(), this) == m_tcp->m_sockets.end())
+    {
+      m_tcp->m_sockets.push_back (this);
+    }
   NS_LOG_LOGIC ("TcpSocketBase " << this << " got an endpoint: " << m_endPoint);
 
   return SetupCallback ();
@@ -770,10 +781,12 @@
     {
       NotifyNormalClose ();
     }
+
   if (m_state != TIME_WAIT)
     {
       DeallocateEndPoint ();
     }
+    
   m_closeNotified = true;
   NS_LOG_INFO (TcpStateName[m_state] << " -> CLOSED");
   CancelAllTimers ();
@@ -2083,7 +2096,7 @@
 
   //nextRtt will be zero for dup acks.  Don't want to update lastRtt in that case
   //but still needed to do list clearing that is done in AckSeq. 
-  if(nextRtt != 0)
+  if(nextRtt != Time (0))
   {
     m_lastRtt = nextRtt;
     NS_LOG_FUNCTION(this << m_lastRtt);
diff -Naur ns-3.19/src/internet/model/tcp-socket-base.h ns-3.20/src/internet/model/tcp-socket-base.h
--- ns-3.19/src/internet/model/tcp-socket-base.h	2014-06-17 10:34:00.540635874 -0700
+++ ns-3.20/src/internet/model/tcp-socket-base.h	2014-06-17 10:33:13.864996186 -0700
@@ -211,7 +211,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv4 header
-   * \param port the incoming port
+   * \param port the remote port
    * \param incomingInterface the incoming interface
    */
   void ForwardUp (Ptr<Packet> packet, Ipv4Header header, uint16_t port, Ptr<Ipv4Interface> incomingInterface);
@@ -221,7 +221,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv6 header
-   * \param port the incoming port
+   * \param port the remote port
    * \param incomingInterface the incoming interface
    */
   void ForwardUp6 (Ptr<Packet> packet, Ipv6Header header, uint16_t port, Ptr<Ipv6Interface> incomingInterface);
@@ -231,7 +231,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv4 header
-   * \param port the incoming port
+   * \param port the remote port
    * \param incomingInterface the incoming interface
    */
   virtual void DoForwardUp (Ptr<Packet> packet, Ipv4Header header, uint16_t port, Ptr<Ipv4Interface> incomingInterface); //Get a pkt from L3
@@ -241,7 +241,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv6 header
-   * \param port the incoming port
+   * \param port the remote port
    */
   virtual void DoForwardUp (Ptr<Packet> packet, Ipv6Header header, uint16_t port);
 
@@ -341,7 +341,7 @@
   void Destroy6 (void);
 
   /**
-   * \brief Deallocate m_endPoint
+   * \brief Deallocate m_endPoint and m_endPoint6
    */
   void DeallocateEndPoint (void);
 
diff -Naur ns-3.19/src/internet/model/tcp-socket.cc ns-3.20/src/internet/model/tcp-socket.cc
--- ns-3.19/src/internet/model/tcp-socket.cc	2014-06-17 10:34:00.542635859 -0700
+++ ns-3.20/src/internet/model/tcp-socket.cc	2014-06-17 10:33:13.865996178 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpSocket)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpSocket);
 
 const char* const TcpSocket::TcpStateName[LAST_STATE] = { "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "CLOSE_WAIT", "LAST_ACK", "FIN_WAIT_1", "FIN_WAIT_2", "CLOSING", "TIME_WAIT" };
 
diff -Naur ns-3.19/src/internet/model/tcp-socket-factory.cc ns-3.20/src/internet/model/tcp-socket-factory.cc
--- ns-3.19/src/internet/model/tcp-socket-factory.cc	2014-06-17 10:34:00.541635866 -0700
+++ ns-3.20/src/internet/model/tcp-socket-factory.cc	2014-06-17 10:33:13.865996178 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpSocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpSocketFactory);
 
 TypeId
 TcpSocketFactory::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/tcp-tahoe.cc ns-3.20/src/internet/model/tcp-tahoe.cc
--- ns-3.19/src/internet/model/tcp-tahoe.cc	2014-06-17 10:34:00.543635851 -0700
+++ ns-3.20/src/internet/model/tcp-tahoe.cc	2014-06-17 10:33:13.866996170 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TcpTahoe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TcpTahoe);
 
 TypeId
 TcpTahoe::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/tcp-westwood.cc ns-3.20/src/internet/model/tcp-westwood.cc
--- ns-3.19/src/internet/model/tcp-westwood.cc	2014-06-17 10:34:00.544635843 -0700
+++ ns-3.20/src/internet/model/tcp-westwood.cc	2014-06-17 10:33:13.868996155 -0700
@@ -46,8 +46,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED(TcpWestwood)
-  ;
+NS_OBJECT_ENSURE_REGISTERED(TcpWestwood);
 
 TypeId
 TcpWestwood::GetTypeId (void)
@@ -329,7 +328,7 @@
   TcpSocketBase::EstimateRtt (tcpHeader);
 
   // Update minRtt
-  if (m_minRtt == 0)
+  if (m_minRtt == Time (0))
     {
       m_minRtt = m_lastRtt;
     }
@@ -345,7 +344,7 @@
   // to trigger a new BW sampling event
   if (m_pType == TcpWestwood::WESTWOODPLUS)
    {
-     if(m_lastRtt != 0 && m_state == ESTABLISHED && !m_IsCount)
+     if(m_lastRtt != Time (0) && m_state == ESTABLISHED && !m_IsCount)
        {
          m_IsCount = true;
          m_bwEstimateEvent.Cancel();
diff -Naur ns-3.19/src/internet/model/udp-header.cc ns-3.20/src/internet/model/udp-header.cc
--- ns-3.19/src/internet/model/udp-header.cc	2014-06-17 10:34:00.545635835 -0700
+++ ns-3.20/src/internet/model/udp-header.cc	2014-06-17 10:33:13.868996155 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UdpHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UdpHeader);
 
 /* The magic values below are used only for debugging.
  * They can be used to easily detect memory corruption
diff -Naur ns-3.19/src/internet/model/udp-l4-protocol.cc ns-3.20/src/internet/model/udp-l4-protocol.cc
--- ns-3.19/src/internet/model/udp-l4-protocol.cc	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/internet/model/udp-l4-protocol.cc	2014-06-17 10:33:13.869996147 -0700
@@ -44,8 +44,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UdpL4Protocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UdpL4Protocol);
 
 /* see http://www.iana.org/assignments/protocol-numbers */
 const uint8_t UdpL4Protocol::PROT_NUMBER = 17;
diff -Naur ns-3.19/src/internet/model/udp-socket.cc ns-3.20/src/internet/model/udp-socket.cc
--- ns-3.19/src/internet/model/udp-socket.cc	2014-06-17 10:34:00.549635804 -0700
+++ ns-3.20/src/internet/model/udp-socket.cc	2014-06-17 10:33:13.873996116 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UdpSocket)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UdpSocket);
 
 TypeId
 UdpSocket::GetTypeId (void)
diff -Naur ns-3.19/src/internet/model/udp-socket-factory.cc ns-3.20/src/internet/model/udp-socket-factory.cc
--- ns-3.19/src/internet/model/udp-socket-factory.cc	2014-06-17 10:34:00.547635820 -0700
+++ ns-3.20/src/internet/model/udp-socket-factory.cc	2014-06-17 10:33:13.871996131 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UdpSocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UdpSocketFactory);
 
 TypeId UdpSocketFactory::GetTypeId (void)
 {
diff -Naur ns-3.19/src/internet/model/udp-socket-impl.cc ns-3.20/src/internet/model/udp-socket-impl.cc
--- ns-3.19/src/internet/model/udp-socket-impl.cc	2014-06-17 10:34:00.548635812 -0700
+++ ns-3.20/src/internet/model/udp-socket-impl.cc	2014-06-17 10:33:13.872996124 -0700
@@ -43,8 +43,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UdpSocketImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UdpSocketImpl);
 
 // The correct maximum UDP message size is 65507, as determined by the following formula:
 // 0xffff - (sizeof(IP Header) + sizeof(UDP Header)) = 65535-(20+8) = 65507
@@ -180,6 +179,25 @@
   m_endPoint6 = 0;
 }
 
+/* Deallocate the end point and cancel all the timers */
+void
+UdpSocketImpl::DeallocateEndPoint (void)
+{
+  if (m_endPoint != 0)
+    {
+      m_endPoint->SetDestroyCallback (MakeNullCallback<void> ());
+      m_udp->DeAllocate (m_endPoint);
+      m_endPoint = 0;
+    }
+  if (m_endPoint6 != 0)
+    {
+      m_endPoint6->SetDestroyCallback (MakeNullCallback<void> ());
+      m_udp->DeAllocate (m_endPoint6);
+      m_endPoint6 = 0;
+    }
+}
+
+
 int
 UdpSocketImpl::FinishBind (void)
 {
@@ -318,6 +336,7 @@
     }
   m_shutdownRecv = true;
   m_shutdownSend = true;
+  DeallocateEndPoint ();
   return 0;
 }
 
@@ -853,10 +872,14 @@
     {
       address = InetSocketAddress (m_endPoint->GetLocalAddress (), m_endPoint->GetLocalPort ());
     }
-  else
+  else if (m_endPoint6 != 0)
     {
-      // It is possible to call this method on a socket without a name
+      address = Inet6SocketAddress (m_endPoint6->GetLocalAddress (), m_endPoint6->GetLocalPort ());
+    }
+  else
+    { // It is possible to call this method on a socket without a name
       // in which case, behavior is unspecified
+      // Should this return an InetSocketAddress or an Inet6SocketAddress?
       address = InetSocketAddress (Ipv4Address::GetZero (), 0);
     }
   return 0;
diff -Naur ns-3.19/src/internet/model/udp-socket-impl.h ns-3.20/src/internet/model/udp-socket-impl.h
--- ns-3.19/src/internet/model/udp-socket-impl.h	2014-06-17 10:34:00.549635804 -0700
+++ ns-3.20/src/internet/model/udp-socket-impl.h	2014-06-17 10:33:13.872996124 -0700
@@ -38,6 +38,8 @@
 class Node;
 class Packet;
 class UdpL4Protocol;
+class Ipv6Header;
+class Ipv6Interface;
 
 /**
  * \ingroup udp
@@ -125,7 +127,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv4 header
-   * \param port the incoming port
+   * \param port the remote port
    * \param incomingInterface the incoming interface
    */
   void ForwardUp (Ptr<Packet> packet, Ipv4Header header, uint16_t port, Ptr<Ipv4Interface> incomingInterface);
@@ -135,7 +137,7 @@
    *
    * \param packet the incoming packet
    * \param header the packet's IPv6 header
-   * \param port the incoming port
+   * \param port the remote port
    * \param incomingInterface the incoming interface
    */
   void ForwardUp6 (Ptr<Packet> packet, Ipv6Header header, uint16_t port, Ptr<Ipv6Interface> incomingInterface);
@@ -157,6 +159,11 @@
   void Destroy6 (void);
 
   /**
+   * \brief Deallocate m_endPoint and m_endPoint6
+   */
+  void DeallocateEndPoint (void);
+
+  /**
    * \brief Send a packet
    * \param p packet
    * \returns 0 on success, -1 on failure
diff -Naur ns-3.19/src/internet/test/error-channel.cc ns-3.20/src/internet/test/error-channel.cc
--- ns-3.19/src/internet/test/error-channel.cc	2014-06-17 10:34:00.550635797 -0700
+++ ns-3.20/src/internet/test/error-channel.cc	2014-06-17 10:33:13.874996108 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ErrorChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ErrorChannel);
 
 TypeId 
 ErrorChannel::GetTypeId (void)
@@ -105,8 +104,7 @@
   return m_devices[i];
 }
 
-NS_OBJECT_ENSURE_REGISTERED (BinaryErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BinaryErrorModel);
 
 TypeId BinaryErrorModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/internet/test/ipv4-fragmentation-test.cc ns-3.20/src/internet/test/ipv4-fragmentation-test.cc
--- ns-3.19/src/internet/test/ipv4-fragmentation-test.cc	2014-06-17 10:34:00.553635774 -0700
+++ ns-3.20/src/internet/test/ipv4-fragmentation-test.cc	2014-06-17 10:33:13.876996093 -0700
@@ -54,6 +54,26 @@
 
 class UdpSocketImpl;
 
+/* ----------------------------------------------------------------------------------
+ * Tag
+ --------------------------------------------------------------------------------- */
+class IPv4TestTag : public Tag {
+private:
+  uint64_t token;
+public:
+  static TypeId GetTypeId () {
+    static TypeId tid = TypeId ("ns3::IPv4TestTag").SetParent<Tag> ().AddConstructor<IPv4TestTag> ();
+    return tid;
+  }
+  virtual TypeId GetInstanceTypeId () const { return GetTypeId (); }
+  virtual uint32_t GetSerializedSize () const { return sizeof (token); }
+  virtual void Serialize (TagBuffer buffer) const { buffer.WriteU64 (token); }
+  virtual void Deserialize (TagBuffer buffer) { token = buffer.ReadU64 (); }
+  virtual void Print (std::ostream &os) const { os << "token=" << token; }
+  void setToken (uint64_t token) { this->token = token; }
+  uint64_t getToken () { return token; }
+};
+
 static void
 AddInternetStack (Ptr<Node> node)
 {
@@ -161,9 +181,6 @@
     {
       if (InetSocketAddress::IsMatchingType (from))
         {
-          packet->RemoveAllPacketTags ();
-          packet->RemoveAllByteTags ();
-
           m_receivedPacketServer = packet->Copy();
         }
     }
@@ -247,6 +264,11 @@
     {
       p = Create<Packet> (m_size);
     }
+  IPv4TestTag tag;
+  tag.setToken (42);
+  p->AddPacketTag (tag);
+  p->AddByteTag (tag);
+
   m_socketClient->Send (p);
 
   return p;
@@ -398,6 +420,56 @@
       NS_TEST_EXPECT_MSG_EQ ((m_icmpType == 11), true, "Client did not receive ICMP::TIME_EXCEEDED");
     }
 
+  // Fourth test: normal channel, no errors, no delays.
+  // We check tags
+  clientDevErrorModel->Disable ();
+  serverDevErrorModel->Disable ();
+  for (int i= 0; i<5; i++)
+    {
+      uint32_t packetSize = packetSizes[i];
+
+      SetFill (fillData, 78, packetSize);
+
+      m_receivedPacketServer = Create<Packet> ();
+      Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seconds (0),
+                                      &Ipv4FragmentationTest::SendClient, this);
+      Simulator::Run ();
+
+      IPv4TestTag packetTag;
+      bool found = m_receivedPacketServer->PeekPacketTag (packetTag);
+
+      NS_TEST_EXPECT_MSG_EQ (found, true, "PacketTag not found");
+      NS_TEST_EXPECT_MSG_EQ (packetTag.getToken (), 42, "PacketTag value not correct");
+
+      ByteTagIterator iter = m_receivedPacketServer->GetByteTagIterator ();
+
+      uint32_t end = 0;
+      uint32_t tagStart = 0;
+      uint32_t tagEnd = 0;
+      while (iter.HasNext ())
+        {
+          ByteTagIterator::Item item = iter.Next ();
+          NS_TEST_EXPECT_MSG_EQ (item.GetTypeId ().GetName (), "ns3::IPv4TestTag", "ByteTag name not correct");
+          tagStart = item.GetStart ();
+          tagEnd = item.GetEnd ();
+          if (end == 0)
+            {
+              NS_TEST_EXPECT_MSG_EQ (tagStart, 0, "First ByteTag Start not correct");
+            }
+          if (end != 0)
+            {
+              NS_TEST_EXPECT_MSG_EQ (tagStart, end, "ByteTag End not correct");
+            }
+          end = tagEnd;
+          IPv4TestTag *byteTag = dynamic_cast<IPv4TestTag *> (item.GetTypeId ().GetConstructor () ());
+          NS_TEST_EXPECT_MSG_NE (byteTag, 0, "ByteTag not found");
+          item.GetTag (*byteTag);
+          NS_TEST_EXPECT_MSG_EQ (byteTag->getToken (), 42, "ByteTag value not correct");
+          delete byteTag;
+        }
+      NS_TEST_EXPECT_MSG_EQ (end, m_receivedPacketServer->GetSize (), "trivial");
+    }
+
 
   Simulator::Destroy ();
 }
diff -Naur ns-3.19/src/internet/test/ipv4-test.cc ns-3.20/src/internet/test/ipv4-test.cc
--- ns-3.19/src/internet/test/ipv4-test.cc	2014-06-17 10:34:00.554635766 -0700
+++ ns-3.20/src/internet/test/ipv4-test.cc	2014-06-17 10:33:13.878996077 -0700
@@ -30,7 +30,7 @@
 #include "ns3/ipv4-interface.h"
 #include "ns3/loopback-net-device.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class Ipv4L3ProtocolTestCase : public TestCase
 {
@@ -150,5 +150,3 @@
     AddTestCase (new Ipv4L3ProtocolTestCase (), TestCase::QUICK);
   }
 } g_ipv4protocolTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/internet/test/ipv6-fragmentation-test.cc ns-3.20/src/internet/test/ipv6-fragmentation-test.cc
--- ns-3.19/src/internet/test/ipv6-fragmentation-test.cc	2014-06-17 10:34:00.557635743 -0700
+++ ns-3.20/src/internet/test/ipv6-fragmentation-test.cc	2014-06-17 10:33:13.881996054 -0700
@@ -18,9 +18,10 @@
  * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
  */
 /**
+ * \file
+ *
  * This is the test code for ipv6-l3protocol.cc (only the fragmentation and reassembly part).
  */
-#define NS3_LOG_ENABLE 1
 
 #include "ns3/test.h"
 #include "ns3/config.h"
@@ -63,6 +64,26 @@
 
 class UdpSocketImpl;
 
+/* ----------------------------------------------------------------------------------
+ * Tag
+ --------------------------------------------------------------------------------- */
+class IPv6TestTag : public Tag {
+private:
+  uint64_t token;
+public:
+  static TypeId GetTypeId () {
+    static TypeId tid = TypeId ("ns3::IPv6TestTag").SetParent<Tag> ().AddConstructor<IPv6TestTag> ();
+    return tid;
+  }
+  virtual TypeId GetInstanceTypeId () const { return GetTypeId (); }
+  virtual uint32_t GetSerializedSize () const { return sizeof (token); }
+  virtual void Serialize (TagBuffer buffer) const { buffer.WriteU64 (token); }
+  virtual void Deserialize (TagBuffer buffer) { token = buffer.ReadU64 (); }
+  virtual void Print (std::ostream &os) const { os << "token=" << token; }
+  void setToken (uint64_t token) { this->token = token; }
+  uint64_t getToken () { return token; }
+};
+
 static void
 AddInternetStack (Ptr<Node> node)
 {
@@ -170,9 +191,6 @@
     {
       if (Inet6SocketAddress::IsMatchingType (from))
         {
-          packet->RemoveAllPacketTags ();
-          packet->RemoveAllByteTags ();
-
           m_receivedPacketServer = packet->Copy ();
         }
     }
@@ -257,6 +275,11 @@
     {
       p = Create<Packet> (m_size);
     }
+  IPv6TestTag tag;
+  tag.setToken (42);
+  p->AddPacketTag (tag);
+  p->AddByteTag (tag);
+
   m_socketClient->Send (p);
 
   return p;
@@ -409,6 +432,55 @@
                              true, "Client did not receive ICMPv6::TIME_EXCEEDED " << int(m_icmpType) << int(m_icmpCode) );
     }
 
+  // Fourth test: normal channel, no errors, no delays.
+  // We check tags
+  clientDevErrorModel->Disable ();
+  serverDevErrorModel->Disable ();
+  for (int i= 0; i<5; i++)
+    {
+      uint32_t packetSize = packetSizes[i];
+
+      SetFill (fillData, 78, packetSize);
+
+      m_receivedPacketServer = Create<Packet> ();
+      Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seconds (0),
+                                      &Ipv6FragmentationTest::SendClient, this);
+      Simulator::Run ();
+
+      IPv6TestTag packetTag;
+      bool found = m_receivedPacketServer->PeekPacketTag (packetTag);
+
+      NS_TEST_EXPECT_MSG_EQ (found, true, "PacketTag not found");
+      NS_TEST_EXPECT_MSG_EQ (packetTag.getToken (), 42, "PacketTag value not correct");
+
+      ByteTagIterator iter = m_receivedPacketServer->GetByteTagIterator ();
+
+      uint32_t end = 0;
+      uint32_t tagStart = 0;
+      uint32_t tagEnd = 0;
+      while (iter.HasNext ())
+        {
+          ByteTagIterator::Item item = iter.Next ();
+          NS_TEST_EXPECT_MSG_EQ (item.GetTypeId ().GetName (), "ns3::IPv6TestTag", "ByteTag name not correct");
+          tagStart = item.GetStart ();
+          tagEnd = item.GetEnd ();
+          if (end == 0)
+            {
+              NS_TEST_EXPECT_MSG_EQ (tagStart, 0, "First ByteTag Start not correct");
+            }
+          if (end != 0)
+            {
+              NS_TEST_EXPECT_MSG_EQ (tagStart, end, "ByteTag End not correct");
+            }
+          end = tagEnd;
+          IPv6TestTag *byteTag = dynamic_cast<IPv6TestTag *> (item.GetTypeId ().GetConstructor () ());
+          NS_TEST_EXPECT_MSG_NE (byteTag, 0, "ByteTag not found");
+          item.GetTag (*byteTag);
+          NS_TEST_EXPECT_MSG_EQ (byteTag->getToken (), 42, "ByteTag value not correct");
+          delete byteTag;
+        }
+      NS_TEST_EXPECT_MSG_EQ (end, m_receivedPacketServer->GetSize (), "trivial");
+    }
 
   Simulator::Destroy ();
 }
diff -Naur ns-3.19/src/internet/test/ipv6-ripng-test.cc ns-3.20/src/internet/test/ipv6-ripng-test.cc
--- ns-3.19/src/internet/test/ipv6-ripng-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/internet/test/ipv6-ripng-test.cc	2014-06-17 10:33:13.882996046 -0700
@@ -0,0 +1,652 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/test.h"
+#include "ns3/socket-factory.h"
+#include "ns3/udp-socket-factory.h"
+#include "ns3/simulator.h"
+#include "ns3/simple-channel.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/drop-tail-queue.h"
+#include "ns3/socket.h"
+#include "ns3/boolean.h"
+#include "ns3/enum.h"
+
+#include "ns3/log.h"
+#include "ns3/node.h"
+#include "ns3/inet6-socket-address.h"
+
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv6-address-helper.h"
+#include "ns3/ipv6-l3-protocol.h"
+#include "ns3/icmpv6-l4-protocol.h"
+#include "ns3/udp-l4-protocol.h"
+#include "ns3/ipv6-static-routing.h"
+#include "ns3/ipv6-list-routing.h"
+#include "ns3/ipv6-list-routing-helper.h"
+#include "ns3/ripng.h"
+#include "ns3/ripng-helper.h"
+#include "ns3/node-container.h"
+
+#include <string>
+#include <limits>
+
+using namespace ns3;
+
+// Ipv6RipngTest
+
+class Ipv6RipngTest : public TestCase
+{
+  Ptr<Packet> m_receivedPacket;
+  void DoSendData (Ptr<Socket> socket, std::string to);
+  void SendData (Ptr<Socket> socket, std::string to);
+
+public:
+  virtual void DoRun (void);
+  Ipv6RipngTest ();
+
+  void ReceivePkt (Ptr<Socket> socket);
+};
+
+Ipv6RipngTest::Ipv6RipngTest ()
+  : TestCase ("RIPng")
+{
+}
+
+void Ipv6RipngTest::ReceivePkt (Ptr<Socket> socket)
+{
+  uint32_t availableData;
+  availableData = socket->GetRxAvailable ();
+  m_receivedPacket = socket->Recv (std::numeric_limits<uint32_t>::max (), 0);
+  NS_ASSERT (availableData == m_receivedPacket->GetSize ());
+  //cast availableData to void, to suppress 'availableData' set but not used
+  //compiler warning
+  (void) availableData;
+}
+
+void
+Ipv6RipngTest::DoSendData (Ptr<Socket> socket, std::string to)
+{
+  Address realTo = Inet6SocketAddress (Ipv6Address (to.c_str ()), 1234);
+  NS_TEST_EXPECT_MSG_EQ (socket->SendTo (Create<Packet> (123), 0, realTo),
+                         123, "100");
+}
+
+void
+Ipv6RipngTest::SendData (Ptr<Socket> socket, std::string to)
+{
+  m_receivedPacket = Create<Packet> ();
+  Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (60),
+                                  &Ipv6RipngTest::DoSendData, this, socket, to);
+  Simulator::Stop (Seconds (66));
+  Simulator::Run ();
+}
+
+void
+Ipv6RipngTest::DoRun (void)
+{
+  // Create topology
+
+  Ptr<Node> txNode = CreateObject<Node> ();
+  Ptr<Node> rxNode = CreateObject<Node> ();
+  Ptr<Node> routerA = CreateObject<Node> ();
+  Ptr<Node> routerB = CreateObject<Node> ();
+  Ptr<Node> routerC = CreateObject<Node> ();
+
+  NodeContainer nodes (txNode, rxNode);
+  NodeContainer routers (routerA, routerB, routerC);
+  NodeContainer all (nodes, routers);
+
+  RipNgHelper ripNgRouting;
+  Ipv6ListRoutingHelper listRH;
+  listRH.Add (ripNgRouting, 0);
+  InternetStackHelper internetv6routers;
+  internetv6routers.SetRoutingHelper (listRH);
+  internetv6routers.Install (routers);
+
+  InternetStackHelper internetv6nodes;
+  internetv6nodes.Install (nodes);
+
+  NetDeviceContainer net1;
+  NetDeviceContainer net2;
+  NetDeviceContainer net3;
+  NetDeviceContainer net4;
+
+  // Sender Node
+  Ptr<SimpleNetDevice> txDev;
+  {
+    txDev = CreateObject<SimpleNetDevice> ();
+    txDev->SetAddress (Mac48Address ("00:00:00:00:00:01"));
+    txNode->AddDevice (txDev);
+  }
+  net1.Add (txDev);
+
+  // Router A
+  Ptr<SimpleNetDevice> fwDev1routerA, fwDev2routerA;
+  { // first interface
+    fwDev1routerA = CreateObject<SimpleNetDevice> ();
+    fwDev1routerA->SetAddress (Mac48Address ("00:00:00:00:00:02"));
+    routerA->AddDevice (fwDev1routerA);
+  }
+  net1.Add (fwDev1routerA);
+
+  { // second interface
+    fwDev2routerA = CreateObject<SimpleNetDevice> ();
+    fwDev2routerA->SetAddress (Mac48Address ("00:00:00:00:00:03"));
+    routerA->AddDevice (fwDev2routerA);
+  }
+  net2.Add (fwDev2routerA);
+
+  // Router B
+  Ptr<SimpleNetDevice> fwDev1routerB, fwDev2routerB;
+  { // first interface
+    fwDev1routerB = CreateObject<SimpleNetDevice> ();
+    fwDev1routerB->SetAddress (Mac48Address ("00:00:00:00:00:04"));
+    routerB->AddDevice (fwDev1routerB);
+  }
+  net2.Add (fwDev1routerB);
+
+  { // second interface
+    fwDev2routerB = CreateObject<SimpleNetDevice> ();
+    fwDev2routerB->SetAddress (Mac48Address ("00:00:00:00:00:05"));
+    routerB->AddDevice (fwDev2routerB);
+  }
+  net3.Add (fwDev2routerB);
+
+  // Router C
+  Ptr<SimpleNetDevice> fwDev1routerC, fwDev2routerC;
+  { // first interface
+    fwDev1routerC = CreateObject<SimpleNetDevice> ();
+    fwDev1routerC->SetAddress (Mac48Address ("00:00:00:00:00:06"));
+    routerC->AddDevice (fwDev1routerC);
+  }
+  net3.Add (fwDev1routerC);
+
+  { // second interface
+    fwDev2routerC = CreateObject<SimpleNetDevice> ();
+    fwDev2routerC->SetAddress (Mac48Address ("00:00:00:00:00:07"));
+    routerC->AddDevice (fwDev2routerC);
+  }
+  net4.Add (fwDev2routerC);
+
+  // Rx node
+  Ptr<SimpleNetDevice> rxDev;
+  { // first interface
+    rxDev = CreateObject<SimpleNetDevice> ();
+    rxDev->SetAddress (Mac48Address ("00:00:00:00:00:08"));
+    rxNode->AddDevice (rxDev);
+  }
+  net4.Add (rxDev);
+
+  // link the channels
+  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
+  txDev->SetChannel (channel1);
+  fwDev1routerA->SetChannel (channel1);
+
+  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
+  fwDev2routerA->SetChannel (channel2);
+  fwDev1routerB->SetChannel (channel2);
+
+  Ptr<SimpleChannel> channel3 = CreateObject<SimpleChannel> ();
+  fwDev2routerB->SetChannel (channel3);
+  fwDev1routerC->SetChannel (channel3);
+
+  Ptr<SimpleChannel> channel4 = CreateObject<SimpleChannel> ();
+  fwDev2routerC->SetChannel (channel4);
+  rxDev->SetChannel (channel4);
+
+  // Setup IPv6 addresses and forwarding
+  Ipv6AddressHelper ipv6;
+
+  ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic1 = ipv6.Assign (net1);
+  iic1.SetForwarding (1, true);
+  iic1.SetDefaultRouteInAllNodes (1);
+
+  Ipv6InterfaceContainer iic2 = ipv6.AssignWithoutAddress (net2);
+  iic2.SetForwarding (0, true);
+  iic2.SetForwarding (1, true);
+
+  Ipv6InterfaceContainer iic3 = ipv6.AssignWithoutAddress (net3);
+  iic3.SetForwarding (0, true);
+  iic3.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic4 = ipv6.Assign (net4);
+  iic4.SetForwarding (0, true);
+  iic4.SetDefaultRouteInAllNodes (0);
+
+  // Create the UDP sockets
+  Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
+  NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (Inet6SocketAddress (Ipv6Address ("2001:2::200:ff:fe00:8"), 1234)), 0, "trivial");
+  rxSocket->SetRecvCallback (MakeCallback (&Ipv6RipngTest::ReceivePkt, this));
+
+  Ptr<SocketFactory> txSocketFactory = txNode->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> txSocket = txSocketFactory->CreateSocket ();
+  txSocket->SetAllowBroadcast (true);
+
+  // ------ Now the tests ------------
+
+  // Unicast test
+  SendData (txSocket, "2001:2::200:ff:fe00:8");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "IPv6 RIPng should work.");
+
+  m_receivedPacket->RemoveAllByteTags ();
+
+  Simulator::Destroy ();
+}
+
+// Ipv6RipngCountToInfinityTest
+
+class Ipv6RipngCountToInfinityTest : public TestCase
+{
+  Ptr<Packet> m_receivedPacket;
+  void DoSendData (Ptr<Socket> socket, std::string to);
+  void SendData (Ptr<Socket> socket, std::string to);
+
+public:
+  virtual void DoRun (void);
+  Ipv6RipngCountToInfinityTest ();
+
+  void ReceivePkt (Ptr<Socket> socket);
+};
+
+Ipv6RipngCountToInfinityTest::Ipv6RipngCountToInfinityTest ()
+  : TestCase ("RIPng counting to infinity")
+{
+}
+
+void Ipv6RipngCountToInfinityTest::ReceivePkt (Ptr<Socket> socket)
+{
+  uint32_t availableData;
+  availableData = socket->GetRxAvailable ();
+  m_receivedPacket = socket->Recv (std::numeric_limits<uint32_t>::max (), 0);
+  NS_ASSERT (availableData == m_receivedPacket->GetSize ());
+  //cast availableData to void, to suppress 'availableData' set but not used
+  //compiler warning
+  (void) availableData;
+}
+
+void
+Ipv6RipngCountToInfinityTest::DoSendData (Ptr<Socket> socket, std::string to)
+{
+  Address realTo = Inet6SocketAddress (Ipv6Address (to.c_str ()), 1234);
+  NS_TEST_EXPECT_MSG_EQ (socket->SendTo (Create<Packet> (123), 0, realTo),
+                         123, "100");
+}
+
+void
+Ipv6RipngCountToInfinityTest::SendData (Ptr<Socket> socket, std::string to)
+{
+  m_receivedPacket = Create<Packet> ();
+  Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (60),
+                                  &Ipv6RipngCountToInfinityTest::DoSendData, this, socket, to);
+  Simulator::Stop (Seconds (66));
+  Simulator::Run ();
+}
+
+void
+Ipv6RipngCountToInfinityTest::DoRun (void)
+{
+  // Create topology
+
+  Ptr<Node> txNode = CreateObject<Node> ();
+  Ptr<Node> rxNode = CreateObject<Node> ();
+  Ptr<Node> routerA = CreateObject<Node> ();
+  Ptr<Node> routerB = CreateObject<Node> ();
+  Ptr<Node> routerC = CreateObject<Node> ();
+
+  NodeContainer nodes (txNode, rxNode);
+  NodeContainer routers (routerA, routerB, routerC);
+  NodeContainer all (nodes, routers);
+
+  RipNgHelper ripNgRouting;
+  // Change the router's interface metric to 10, must not send packets (count to infinity)
+  // note: Interface 0 is the loopback.
+  ripNgRouting.SetInterfaceMetric (routerA, 2, 10);
+  ripNgRouting.SetInterfaceMetric (routerB, 1, 10);
+  ripNgRouting.SetInterfaceMetric (routerB, 2, 10);
+  ripNgRouting.SetInterfaceMetric (routerC, 1, 10);
+
+  Ipv6ListRoutingHelper listRH;
+  listRH.Add (ripNgRouting, 0);
+  InternetStackHelper internetv6routers;
+  internetv6routers.SetRoutingHelper (listRH);
+  internetv6routers.Install (routers);
+
+  InternetStackHelper internetv6nodes;
+  internetv6nodes.Install (nodes);
+
+  NetDeviceContainer net1;
+  NetDeviceContainer net2;
+  NetDeviceContainer net3;
+  NetDeviceContainer net4;
+
+  // Sender Node
+  Ptr<SimpleNetDevice> txDev;
+  {
+    txDev = CreateObject<SimpleNetDevice> ();
+    txDev->SetAddress (Mac48Address ("00:00:00:00:00:01"));
+    txNode->AddDevice (txDev);
+  }
+  net1.Add (txDev);
+
+  // Router A
+  Ptr<SimpleNetDevice> fwDev1routerA, fwDev2routerA;
+  { // first interface
+    fwDev1routerA = CreateObject<SimpleNetDevice> ();
+    fwDev1routerA->SetAddress (Mac48Address ("00:00:00:00:00:02"));
+    routerA->AddDevice (fwDev1routerA);
+  }
+  net1.Add (fwDev1routerA);
+
+  { // second interface
+    fwDev2routerA = CreateObject<SimpleNetDevice> ();
+    fwDev2routerA->SetAddress (Mac48Address ("00:00:00:00:00:03"));
+    routerA->AddDevice (fwDev2routerA);
+  }
+  net2.Add (fwDev2routerA);
+
+  // Router B
+  Ptr<SimpleNetDevice> fwDev1routerB, fwDev2routerB;
+  { // first interface
+    fwDev1routerB = CreateObject<SimpleNetDevice> ();
+    fwDev1routerB->SetAddress (Mac48Address ("00:00:00:00:00:04"));
+    routerB->AddDevice (fwDev1routerB);
+  }
+  net2.Add (fwDev1routerB);
+
+  { // second interface
+    fwDev2routerB = CreateObject<SimpleNetDevice> ();
+    fwDev2routerB->SetAddress (Mac48Address ("00:00:00:00:00:05"));
+    routerB->AddDevice (fwDev2routerB);
+  }
+  net3.Add (fwDev2routerB);
+
+  // Router C
+  Ptr<SimpleNetDevice> fwDev1routerC, fwDev2routerC;
+  { // first interface
+    fwDev1routerC = CreateObject<SimpleNetDevice> ();
+    fwDev1routerC->SetAddress (Mac48Address ("00:00:00:00:00:06"));
+    routerC->AddDevice (fwDev1routerC);
+  }
+  net3.Add (fwDev1routerC);
+
+  { // second interface
+    fwDev2routerC = CreateObject<SimpleNetDevice> ();
+    fwDev2routerC->SetAddress (Mac48Address ("00:00:00:00:00:07"));
+    routerC->AddDevice (fwDev2routerC);
+  }
+  net4.Add (fwDev2routerC);
+
+  // Rx node
+  Ptr<SimpleNetDevice> rxDev;
+  { // first interface
+    rxDev = CreateObject<SimpleNetDevice> ();
+    rxDev->SetAddress (Mac48Address ("00:00:00:00:00:08"));
+    rxNode->AddDevice (rxDev);
+  }
+  net4.Add (rxDev);
+
+  // link the channels
+  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
+  txDev->SetChannel (channel1);
+  fwDev1routerA->SetChannel (channel1);
+
+  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
+  fwDev2routerA->SetChannel (channel2);
+  fwDev1routerB->SetChannel (channel2);
+
+  Ptr<SimpleChannel> channel3 = CreateObject<SimpleChannel> ();
+  fwDev2routerB->SetChannel (channel3);
+  fwDev1routerC->SetChannel (channel3);
+
+  Ptr<SimpleChannel> channel4 = CreateObject<SimpleChannel> ();
+  fwDev2routerC->SetChannel (channel4);
+  rxDev->SetChannel (channel4);
+
+  // Setup IPv6 addresses and forwarding
+  Ipv6AddressHelper ipv6;
+
+  ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic1 = ipv6.Assign (net1);
+  iic1.SetForwarding (1, true);
+  iic1.SetDefaultRouteInAllNodes (1);
+
+  Ipv6InterfaceContainer iic2 = ipv6.AssignWithoutAddress (net2);
+  iic2.SetForwarding (0, true);
+  iic2.SetForwarding (1, true);
+
+  Ipv6InterfaceContainer iic3 = ipv6.AssignWithoutAddress (net3);
+  iic3.SetForwarding (0, true);
+  iic3.SetForwarding (1, true);
+
+  ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic4 = ipv6.Assign (net4);
+  iic4.SetForwarding (0, true);
+  iic4.SetDefaultRouteInAllNodes (0);
+
+  // Create the UDP sockets
+  Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
+  NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (Inet6SocketAddress (Ipv6Address ("2001:2::200:ff:fe00:8"), 1234)), 0, "trivial");
+  rxSocket->SetRecvCallback (MakeCallback (&Ipv6RipngCountToInfinityTest::ReceivePkt, this));
+
+  Ptr<SocketFactory> txSocketFactory = txNode->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> txSocket = txSocketFactory->CreateSocket ();
+  txSocket->SetAllowBroadcast (true);
+
+  // ------ Now the tests ------------
+
+  SendData (txSocket, "2001:2::200:ff:fe00:8");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 0, "RIPng counting to infinity.");
+
+  Simulator::Destroy ();
+}
+
+// Ipv6RipngSplitHorizonStrategyTest
+
+class Ipv6RipngSplitHorizonStrategyTest : public TestCase
+{
+  RipNg::SplitHorizonType_e m_setStrategy;
+  RipNg::SplitHorizonType_e m_detectedStrategy;
+
+public:
+  virtual void DoRun (void);
+  Ipv6RipngSplitHorizonStrategyTest (RipNg::SplitHorizonType_e strategy);
+
+  void ReceivePktProbe (Ptr<Socket> socket);
+};
+
+Ipv6RipngSplitHorizonStrategyTest::Ipv6RipngSplitHorizonStrategyTest (RipNg::SplitHorizonType_e strategy)
+  : TestCase ("RIPng Split Horizon strategy")
+{
+  m_setStrategy = strategy;
+}
+
+void Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe (Ptr<Socket> socket)
+{
+  uint32_t availableData;
+  availableData = socket->GetRxAvailable ();
+  Ptr<Packet> receivedPacketProbe = socket->Recv (std::numeric_limits<uint32_t>::max (), 0);
+  NS_ASSERT (availableData == receivedPacketProbe->GetSize ());
+  SocketAddressTag tag;
+  receivedPacketProbe->RemovePacketTag (tag);
+  Ipv6Address senderAddress = Inet6SocketAddress::ConvertFrom (tag.GetAddress ()).GetIpv6 ();
+
+  if (senderAddress == "fe80::200:ff:fe00:4")
+    {
+      RipNgHeader hdr;
+      receivedPacketProbe->RemoveHeader (hdr);
+      std::list<RipNgRte> rtes = hdr.GetRteList ();
+
+      // validate the RTEs before processing
+      for (std::list<RipNgRte>::iterator iter = rtes.begin ();
+          iter != rtes.end (); iter++)
+        {
+          if (iter->GetPrefix () == "2001:1::")
+            {
+              bool correct = false;
+              if (iter->GetRouteMetric () == 16)
+                {
+                  correct = true;
+                  m_detectedStrategy = RipNg::POISON_REVERSE;
+                }
+              else if (iter->GetRouteMetric () == 2)
+                {
+                  correct = true;
+                  m_detectedStrategy = RipNg::NO_SPLIT_HORIZON;
+                }
+              NS_TEST_EXPECT_MSG_EQ (correct, true, "RIPng: unexpected metric value: " << iter->GetRouteMetric ());
+            }
+        }
+    }
+
+  //cast availableData to void, to suppress 'availableData' set but not used
+  //compiler warning
+  (void) availableData;
+}
+
+void
+Ipv6RipngSplitHorizonStrategyTest::DoRun (void)
+{
+  // Create topology
+
+  Ptr<Node> fakeNode = CreateObject<Node> ();
+  Ptr<Node> listener = CreateObject<Node> ();
+
+  Ptr<Node> routerA = CreateObject<Node> ();
+  Ptr<Node> routerB = CreateObject<Node> ();
+
+  NodeContainer listeners (listener, fakeNode);
+  NodeContainer routers (routerA, routerB);
+  NodeContainer all (routers, listeners);
+
+  RipNgHelper ripNgRouting;
+  ripNgRouting.Set ("SplitHorizon", EnumValue (m_setStrategy));
+
+  Ipv6ListRoutingHelper listRH;
+  listRH.Add (ripNgRouting, 0);
+  InternetStackHelper internetv6routers;
+  internetv6routers.SetRoutingHelper (listRH);
+  internetv6routers.Install (routers);
+
+  InternetStackHelper internetv6nodes;
+  internetv6nodes.Install (listeners);
+
+  NetDeviceContainer net0;
+  NetDeviceContainer net1;
+
+  // Fake Node
+  Ptr<SimpleNetDevice> silentDev;
+  {
+    silentDev = CreateObject<SimpleNetDevice> ();
+    silentDev->SetAddress (Mac48Address ("00:00:00:00:00:01"));
+    fakeNode->AddDevice (silentDev);
+  }
+  net0.Add (silentDev);
+
+  // Router A
+  Ptr<SimpleNetDevice> silentDevRouterA, fwDevRouterA;
+  { // silent interface
+    silentDevRouterA = CreateObject<SimpleNetDevice> ();
+    silentDevRouterA->SetAddress (Mac48Address ("00:00:00:00:00:02"));
+    routerA->AddDevice (silentDevRouterA);
+  }
+  net0.Add (silentDevRouterA);
+
+  { // first interface
+    fwDevRouterA = CreateObject<SimpleNetDevice> ();
+    fwDevRouterA->SetAddress (Mac48Address ("00:00:00:00:00:03"));
+    routerA->AddDevice (fwDevRouterA);
+  }
+  net1.Add (fwDevRouterA);
+
+  // Router B
+  Ptr<SimpleNetDevice> fwDevRouterB;
+  { // first interface
+    fwDevRouterB = CreateObject<SimpleNetDevice> ();
+    fwDevRouterB->SetAddress (Mac48Address ("00:00:00:00:00:04"));
+    routerB->AddDevice (fwDevRouterB);
+  }
+  net1.Add (fwDevRouterB);
+
+  // listener A
+  Ptr<SimpleNetDevice> listenerDev;
+  {
+    listenerDev = CreateObject<SimpleNetDevice> ();
+    listenerDev->SetAddress (Mac48Address ("00:00:00:00:00:05"));
+    listener->AddDevice (listenerDev);
+  }
+  net1.Add (listenerDev);
+
+  // link the channels
+  Ptr<SimpleChannel> channel0 = CreateObject<SimpleChannel> ();
+  silentDev->SetChannel (channel0);
+  silentDevRouterA->SetChannel (channel0);
+
+  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
+  fwDevRouterA->SetChannel (channel1);
+  fwDevRouterB->SetChannel (channel1);
+  listenerDev->SetChannel (channel1);
+
+  // Setup IPv6 addresses and forwarding
+  Ipv6AddressHelper ipv6;
+
+  ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer iic0 = ipv6.Assign (net0);
+
+  Ipv6InterfaceContainer iic1 = ipv6.AssignWithoutAddress (net1);
+  iic1.SetForwarding (0, true);
+  iic1.SetForwarding (1, true);
+
+  // Create the UDP sockets
+  Ptr<SocketFactory> rxSocketFactory = listener->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
+  NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (Inet6SocketAddress (Ipv6Address ("ff02::9"), 521)), 0, "trivial");
+  rxSocket->SetRecvCallback (MakeCallback (&Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe, this));
+
+  // ------ Now the tests ------------
+
+  // If the strategy is Split Horizon, then no packet will be received.
+  m_detectedStrategy = RipNg::SPLIT_HORIZON;
+
+  Simulator::Stop (Seconds (66));
+  Simulator::Run ();
+  NS_TEST_EXPECT_MSG_EQ (m_detectedStrategy, m_setStrategy, "RIPng counting to infinity.");
+
+  Simulator::Destroy ();
+}
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+class Ipv6RipngTestSuite : public TestSuite
+{
+public:
+  Ipv6RipngTestSuite () : TestSuite ("ipv6-ripng", UNIT)
+  {
+    AddTestCase (new Ipv6RipngTest, TestCase::QUICK);
+    AddTestCase (new Ipv6RipngCountToInfinityTest, TestCase::QUICK);
+    AddTestCase (new Ipv6RipngSplitHorizonStrategyTest (RipNg::POISON_REVERSE), TestCase::QUICK);
+    AddTestCase (new Ipv6RipngSplitHorizonStrategyTest (RipNg::SPLIT_HORIZON), TestCase::QUICK);
+    AddTestCase (new Ipv6RipngSplitHorizonStrategyTest (RipNg::NO_SPLIT_HORIZON), TestCase::QUICK);
+  }
+} g_ipv6ripngTestSuite;
diff -Naur ns-3.19/src/internet/test/ipv6-test.cc ns-3.20/src/internet/test/ipv6-test.cc
--- ns-3.19/src/internet/test/ipv6-test.cc	2014-06-17 10:34:00.558635735 -0700
+++ ns-3.20/src/internet/test/ipv6-test.cc	2014-06-17 10:33:13.883996039 -0700
@@ -30,7 +30,7 @@
 #include "ns3/ipv6-l3-protocol.h"
 #include "ns3/icmpv6-l4-protocol.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class Ipv6L3ProtocolTestCase : public TestCase
 {
@@ -189,5 +189,3 @@
     AddTestCase (new Ipv6L3ProtocolTestCase (), TestCase::QUICK);
   }
 } g_ipv6protocolTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/internet/test/tcp-test.cc ns-3.20/src/internet/test/tcp-test.cc
--- ns-3.19/src/internet/test/tcp-test.cc	2014-06-17 10:34:00.559635727 -0700
+++ ns-3.20/src/internet/test/tcp-test.cc	2014-06-17 10:33:13.883996039 -0700
@@ -108,14 +108,12 @@
   return oss.str ();
 }
 
-#ifdef NS3_LOG_ENABLE
-static std::string GetString (Ptr<Packet> p)
+static inline std::string GetString (Ptr<Packet> p)
 {
   std::ostringstream oss;
   p->CopyData (&oss, p->GetSize ());
   return oss.str ();
 }
-#endif /* NS3_LOG_ENABLE */
 
 TcpTestCase::TcpTestCase (uint32_t totalStreamSize,
                           uint32_t sourceWriteSize,
diff -Naur ns-3.19/src/internet/waf ns-3.20/src/internet/waf
--- ns-3.19/src/internet/waf	2014-06-17 10:34:00.560635719 -0700
+++ ns-3.20/src/internet/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/internet/wscript ns-3.20/src/internet/wscript
--- ns-3.19/src/internet/wscript	2014-06-17 10:34:00.561635712 -0700
+++ ns-3.20/src/internet/wscript	2014-06-17 10:33:13.885996023 -0700
@@ -192,6 +192,9 @@
         'model/ipv4-packet-probe.cc',
         'model/ipv6-packet-probe.cc',
         'model/ipv6-pmtu-cache.cc',
+        'model/ripng.cc',
+        'model/ripng-header.cc',
+        'helper/ripng-helper.cc',
         ]
 
     internet_test = bld.create_ns3_module_test_library('internet')
@@ -218,7 +221,8 @@
         'test/ipv6-dual-stack-test-suite.cc',
         'test/ipv6-fragmentation-test.cc',
         'test/ipv6-forwarding-test.cc',
-        'test/ipv6-address-helper-test-suite.cc',
+        'test/ipv6-ripng-test.cc',
+     	'test/ipv6-address-helper-test-suite.cc',
         'test/rtt-test.cc',
         ]
     headers = bld(features='ns3header')
@@ -305,6 +309,9 @@
         'model/ipv4-packet-probe.h',
         'model/ipv6-packet-probe.h',
         'model/ipv6-pmtu-cache.h',
+        'model/ripng.h',
+        'model/ripng-header.h',
+        'helper/ripng-helper.h',
        ]
 
     if bld.env['NSC_ENABLED']:
diff -Naur ns-3.19/src/lr-wpan/bindings/callbacks_list.py ns-3.20/src/lr-wpan/bindings/callbacks_list.py
--- ns-3.19/src/lr-wpan/bindings/callbacks_list.py	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/bindings/callbacks_list.py	2014-06-17 10:33:13.885996023 -0700
@@ -0,0 +1,12 @@
+callback_classes = [
+    ['void', 'ns3::LrWpanPhyEnumeration', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::LrWpanPhyEnumeration', 'unsigned char', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'unsigned int', 'ns3::Ptr<ns3::Packet>', 'unsigned char', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::LrWpanMacState', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::LrWpanPhyEnumeration', 'ns3::LrWpanPibAttributeIdentifier', 'ns3::LrWpanPhyPibAttributes*', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::McpsDataIndicationParams', 'ns3::Ptr<ns3::Packet>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::McpsDataConfirmParams', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::LrWpanPhyEnumeration', 'ns3::LrWpanPibAttributeIdentifier', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['bool', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet const>', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet const>', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+]
diff -Naur ns-3.19/src/lr-wpan/bindings/modulegen__gcc_ILP32.py ns-3.20/src/lr-wpan/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/lr-wpan/bindings/modulegen__gcc_ILP32.py	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.888996000 -0700
@@ -0,0 +1,5861 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+
+import pybindgen.settings
+import warnings
+
+class ErrorHandler(pybindgen.settings.ErrorHandler):
+    def handle_error(self, wrapper, exception, traceback_):
+        warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
+        return True
+pybindgen.settings.error_handler = ErrorHandler()
+
+
+import sys
+
+def module_init():
+    root_module = Module('ns.lr_wpan', cpp_namespace='::ns3')
+    return root_module
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyOption [enumeration]
+    module.add_enum('LrWpanPhyOption', ['IEEE_802_15_4_868MHZ_BPSK', 'IEEE_802_15_4_915MHZ_BPSK', 'IEEE_802_15_4_868MHZ_ASK', 'IEEE_802_15_4_915MHZ_ASK', 'IEEE_802_15_4_868MHZ_OQPSK', 'IEEE_802_15_4_915MHZ_OQPSK', 'IEEE_802_15_4_2_4GHZ_OQPSK', 'IEEE_802_15_4_INVALID_PHY_OPTION'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanTxOption [enumeration]
+    module.add_enum('LrWpanTxOption', ['TX_OPTION_NONE', 'TX_OPTION_ACK', 'TX_OPTION_GTS', 'TX_OPTION_INDIRECT'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMcpsDataConfirmStatus [enumeration]
+    module.add_enum('LrWpanMcpsDataConfirmStatus', ['IEEE_802_15_4_SUCCESS', 'IEEE_802_15_4_TRANSACTION_OVERFLOW', 'IEEE_802_15_4_TRANSACTION_EXPIRED', 'IEEE_802_15_4_CHANNEL_ACCESS_FAILURE', 'IEEE_802_15_4_INVALID_ADDRESS', 'IEEE_802_15_4_INVALID_GTS', 'IEEE_802_15_4_NO_ACK', 'IEEE_802_15_4_COUNTER_ERROR', 'IEEE_802_15_4_FRAME_TOO_LONG', 'IEEE_802_15_4_UNAVAILABLE_KEY', 'IEEE_802_15_4_UNSUPPORTED_SECURITY', 'IEEE_802_15_4_INVALID_PARAMETER'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyEnumeration [enumeration]
+    module.add_enum('LrWpanPhyEnumeration', ['IEEE_802_15_4_PHY_BUSY', 'IEEE_802_15_4_PHY_BUSY_RX', 'IEEE_802_15_4_PHY_BUSY_TX', 'IEEE_802_15_4_PHY_FORCE_TRX_OFF', 'IEEE_802_15_4_PHY_IDLE', 'IEEE_802_15_4_PHY_INVALID_PARAMETER', 'IEEE_802_15_4_PHY_RX_ON', 'IEEE_802_15_4_PHY_SUCCESS', 'IEEE_802_15_4_PHY_TRX_OFF', 'IEEE_802_15_4_PHY_TX_ON', 'IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE', 'IEEE_802_15_4_PHY_READ_ONLY', 'IEEE_802_15_4_PHY_UNSPECIFIED'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPibAttributeIdentifier [enumeration]
+    module.add_enum('LrWpanPibAttributeIdentifier', ['phyCurrentChannel', 'phyChannelsSupported', 'phyTransmitPower', 'phyCCAMode', 'phyCurrentPage', 'phyMaxFrameDuration', 'phySHRDuration', 'phySymbolsPerOctet'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAssociationStatus [enumeration]
+    module.add_enum('LrWpanAssociationStatus', ['ASSOCIATED', 'PAN_AT_CAPACITY', 'PAN_ACCESS_DENIED', 'ASSOCIATED_WITHOUT_ADDRESS', 'DISASSOCIATED'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMacState [enumeration]
+    module.add_enum('LrWpanMacState', ['MAC_IDLE', 'MAC_CSMA', 'MAC_SENDING', 'MAC_ACK_PENDING', 'CHANNEL_ACCESS_FAILURE', 'CHANNEL_IDLE', 'SET_PHY_TX_ON'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAddressMode [enumeration]
+    module.add_enum('LrWpanAddressMode', ['NO_PANID_ADDR', 'ADDR_MODE_RESERVED', 'SHORT_ADDR', 'EXT_ADDR'])
+    ## address.h (module 'network'): ns3::Address [class]
+    module.add_class('Address', import_from_module='ns.network')
+    ## address.h (module 'network'): ns3::Address::MaxSize_e [enumeration]
+    module.add_enum('MaxSize_e', ['MAX_SIZE'], outer_class=root_module['ns3::Address'], import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper [class]
+    module.add_class('AsciiTraceHelper', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice [class]
+    module.add_class('AsciiTraceHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList [class]
+    module.add_class('AttributeConstructionList', import_from_module='ns.core')
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item [struct]
+    module.add_class('Item', import_from_module='ns.core', outer_class=root_module['ns3::AttributeConstructionList'])
+    ## buffer.h (module 'network'): ns3::Buffer [class]
+    module.add_class('Buffer', import_from_module='ns.network')
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator [class]
+    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::Buffer'])
+    ## packet.h (module 'network'): ns3::ByteTagIterator [class]
+    module.add_class('ByteTagIterator', import_from_module='ns.network')
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item [class]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagIterator'])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList [class]
+    module.add_class('ByteTagList', import_from_module='ns.network')
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator [class]
+    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList'])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item [struct]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
+    ## callback.h (module 'core'): ns3::CallbackBase [class]
+    module.add_class('CallbackBase', import_from_module='ns.core')
+    ## event-id.h (module 'core'): ns3::EventId [class]
+    module.add_class('EventId', import_from_module='ns.core')
+    ## hash.h (module 'core'): ns3::Hasher [class]
+    module.add_class('Hasher', import_from_module='ns.core')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
+    module.add_class('Ipv4Address', import_from_module='ns.network')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
+    root_module['ns3::Ipv4Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask [class]
+    module.add_class('Ipv4Mask', import_from_module='ns.network')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
+    module.add_class('Ipv6Address', import_from_module='ns.network')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
+    root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
+    module.add_class('Ipv6Prefix', import_from_module='ns.network')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower [struct]
+    module.add_class('LrWpanEdPower')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates [struct]
+    module.add_class('LrWpanPhyDataAndSymbolRates')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes [struct]
+    module.add_class('LrWpanPhyPibAttributes')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber [struct]
+    module.add_class('LrWpanPhyPpduHeaderSymbolNumber')
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper [class]
+    module.add_class('LrWpanSpectrumValueHelper')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address [class]
+    module.add_class('Mac16Address', import_from_module='ns.network')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address [class]
+    root_module['ns3::Mac16Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address [class]
+    module.add_class('Mac64Address', import_from_module='ns.network')
+    ## mac64-address.h (module 'network'): ns3::Mac64Address [class]
+    root_module['ns3::Mac64Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams [struct]
+    module.add_class('McpsDataConfirmParams')
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams [struct]
+    module.add_class('McpsDataIndicationParams')
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams [struct]
+    module.add_class('McpsDataRequestParams')
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer [class]
+    module.add_class('NetDeviceContainer', import_from_module='ns.network')
+    ## node-container.h (module 'network'): ns3::NodeContainer [class]
+    module.add_class('NodeContainer', import_from_module='ns.network')
+    ## object-base.h (module 'core'): ns3::ObjectBase [class]
+    module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
+    ## object.h (module 'core'): ns3::ObjectDeleter [struct]
+    module.add_class('ObjectDeleter', import_from_module='ns.core')
+    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
+    module.add_class('ObjectFactory', import_from_module='ns.core')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
+    module.add_class('PacketMetadata', import_from_module='ns.network')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [enumeration]
+    module.add_enum('', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator [class]
+    module.add_class('ItemIterator', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
+    ## packet.h (module 'network'): ns3::PacketTagIterator [class]
+    module.add_class('PacketTagIterator', import_from_module='ns.network')
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item [class]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagIterator'])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList [class]
+    module.add_class('PacketTagList', import_from_module='ns.network')
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData [struct]
+    module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData_e [enumeration]
+    module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
+    ## pcap-file.h (module 'network'): ns3::PcapFile [class]
+    module.add_class('PcapFile', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
+    module.add_class('PcapHelper', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
+    module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char> [class]
+    module.add_class('SequenceNumber8', import_from_module='ns.network')
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simulator.h (module 'core'): ns3::Simulator [class]
+    module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
+    ## tag.h (module 'network'): ns3::Tag [class]
+    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
+    module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId [class]
+    module.add_class('TypeId', import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
+    module.add_enum('AttributeFlag', ['ATTR_GET', 'ATTR_SET', 'ATTR_CONSTRUCT', 'ATTR_SGC'], outer_class=root_module['ns3::TypeId'], import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation [struct]
+    module.add_class('AttributeInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation [struct]
+    module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
+    ## empty.h (module 'core'): ns3::empty [class]
+    module.add_class('empty', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
+    module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
+    ## chunk.h (module 'network'): ns3::Chunk [class]
+    module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
+    ## header.h (module 'network'): ns3::Header [class]
+    module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::LrWpanHelper [class]
+    module.add_class('LrWpanHelper', parent=[root_module['ns3::PcapHelperForDevice'], root_module['ns3::AsciiTraceHelperForDevice']])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag [class]
+    module.add_class('LrWpanLqiTag', parent=root_module['ns3::Tag'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader [class]
+    module.add_class('LrWpanMacHeader', parent=root_module['ns3::Header'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacType [enumeration]
+    module.add_enum('LrWpanMacType', ['LRWPAN_MAC_BEACON', 'LRWPAN_MAC_DATA', 'LRWPAN_MAC_ACKNOWLEDGMENT', 'LRWPAN_MAC_COMMAND', 'LRWPAN_MAC_RESERVED'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::AddrModeType [enumeration]
+    module.add_enum('AddrModeType', ['NOADDR', 'RESADDR', 'SHORTADDR', 'EXTADDR'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::KeyIdModeType [enumeration]
+    module.add_enum('KeyIdModeType', ['IMPLICIT', 'NOKEYSOURCE', 'SHORTKEYSOURCE', 'LONGKEYSOURCE'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## object.h (module 'core'): ns3::Object [class]
+    module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
+    module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
+    ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper [class]
+    module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeChecker', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeChecker>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Hash::Implementation', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Hash::Implementation>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LrWpanInterferenceHelper', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::OutputStreamWrapper', 'ns3::empty', 'ns3::DefaultDeleter<ns3::OutputStreamWrapper>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Packet', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Packet>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::SpectrumSignalParameters', 'ns3::empty', 'ns3::DefaultDeleter<ns3::SpectrumSignalParameters>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::TraceSourceAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::TraceSourceAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## spectrum-phy.h (module 'spectrum'): ns3::SpectrumPhy [class]
+    module.add_class('SpectrumPhy', import_from_module='ns.spectrum', parent=root_module['ns3::Object'])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters [struct]
+    module.add_class('SpectrumSignalParameters', import_from_module='ns.spectrum', parent=root_module['ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >'])
+    ## nstime.h (module 'core'): ns3::Time [class]
+    module.add_class('Time', import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
+    module.add_enum('Unit', ['Y', 'D', 'H', 'MIN', 'S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::Time [class]
+    root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
+    module.add_class('TraceSourceAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    ## trailer.h (module 'network'): ns3::Trailer [class]
+    module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
+    module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
+    ## attribute.h (module 'core'): ns3::AttributeChecker [class]
+    module.add_class('AttributeChecker', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
+    ## attribute.h (module 'core'): ns3::AttributeValue [class]
+    module.add_class('AttributeValue', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
+    ## callback.h (module 'core'): ns3::CallbackChecker [class]
+    module.add_class('CallbackChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## callback.h (module 'core'): ns3::CallbackImplBase [class]
+    module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
+    ## callback.h (module 'core'): ns3::CallbackValue [class]
+    module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
+    module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## event-impl.h (module 'core'): ns3::EventImpl [class]
+    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
+    module.add_class('Ipv4AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue [class]
+    module.add_class('Ipv4AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker [class]
+    module.add_class('Ipv4MaskChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue [class]
+    module.add_class('Ipv4MaskValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker [class]
+    module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
+    module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
+    module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
+    module.add_class('Ipv6PrefixValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::LrWpanCsmaCa [class]
+    module.add_class('LrWpanCsmaCa', parent=root_module['ns3::Object'])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel [class]
+    module.add_class('LrWpanErrorModel', parent=root_module['ns3::Object'])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::LrWpanInterferenceHelper [class]
+    module.add_class('LrWpanInterferenceHelper', parent=root_module['ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac [class]
+    module.add_class('LrWpanMac', parent=root_module['ns3::Object'])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer [class]
+    module.add_class('LrWpanMacTrailer', parent=root_module['ns3::Trailer'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy [class]
+    module.add_class('LrWpanPhy', parent=root_module['ns3::SpectrumPhy'])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters [struct]
+    module.add_class('LrWpanSpectrumSignalParameters', parent=root_module['ns3::SpectrumSignalParameters'])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker [class]
+    module.add_class('Mac16AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue [class]
+    module.add_class('Mac16AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker [class]
+    module.add_class('Mac64AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue [class]
+    module.add_class('Mac64AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## net-device.h (module 'network'): ns3::NetDevice [class]
+    module.add_class('NetDevice', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## net-device.h (module 'network'): ns3::NetDevice::PacketType [enumeration]
+    module.add_enum('PacketType', ['PACKET_HOST', 'NS3_PACKET_HOST', 'PACKET_BROADCAST', 'NS3_PACKET_BROADCAST', 'PACKET_MULTICAST', 'NS3_PACKET_MULTICAST', 'PACKET_OTHERHOST', 'NS3_PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'], import_from_module='ns.network')
+    ## nix-vector.h (module 'network'): ns3::NixVector [class]
+    module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
+    ## node.h (module 'network'): ns3::Node [class]
+    module.add_class('Node', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
+    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
+    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper [class]
+    module.add_class('OutputStreamWrapper', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
+    ## packet.h (module 'network'): ns3::Packet [class]
+    module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    ## nstime.h (module 'core'): ns3::TimeValue [class]
+    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
+    module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## type-id.h (module 'core'): ns3::TypeIdValue [class]
+    module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## address.h (module 'network'): ns3::AddressChecker [class]
+    module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## address.h (module 'network'): ns3::AddressValue [class]
+    module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice [class]
+    module.add_class('LrWpanNetDevice', parent=root_module['ns3::NetDevice'])
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeCcaConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeCcaConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeCcaConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeEdConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeEdConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeEdConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PdDataIndicationCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PdDataIndicationCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PdDataIndicationCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LrWpanMacStateCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LrWpanMacStateCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LrWpanMacStateCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeGetAttributeConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeGetAttributeConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeGetAttributeConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PdDataConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PdDataConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PdDataConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::McpsDataIndicationCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::McpsDataIndicationCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::McpsDataIndicationCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::McpsDataConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::McpsDataConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::McpsDataConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeSetAttributeConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeSetAttributeConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeSetAttributeConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeSetTRXStateConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeSetTRXStateConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeSetTRXStateConfirmCallback&')
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace Hash
+    
+    nested_module = module.add_cpp_namespace('Hash')
+    register_types_ns3_Hash(nested_module)
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_Hash(module):
+    root_module = module.get_root()
+    
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
+    module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    
+    ## Register a nested module for the namespace Function
+    
+    nested_module = module.add_cpp_namespace('Function')
+    register_types_ns3_Hash_Function(nested_module)
+    
+
+def register_types_ns3_Hash_Function(module):
+    root_module = module.get_root()
+    
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a [class]
+    module.add_class('Fnv1a', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32 [class]
+    module.add_class('Hash32', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64 [class]
+    module.add_class('Hash64', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3 [class]
+    module.add_class('Murmur3', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+
+def register_methods(root_module):
+    register_Ns3Address_methods(root_module, root_module['ns3::Address'])
+    register_Ns3AsciiTraceHelper_methods(root_module, root_module['ns3::AsciiTraceHelper'])
+    register_Ns3AsciiTraceHelperForDevice_methods(root_module, root_module['ns3::AsciiTraceHelperForDevice'])
+    register_Ns3AttributeConstructionList_methods(root_module, root_module['ns3::AttributeConstructionList'])
+    register_Ns3AttributeConstructionListItem_methods(root_module, root_module['ns3::AttributeConstructionList::Item'])
+    register_Ns3Buffer_methods(root_module, root_module['ns3::Buffer'])
+    register_Ns3BufferIterator_methods(root_module, root_module['ns3::Buffer::Iterator'])
+    register_Ns3ByteTagIterator_methods(root_module, root_module['ns3::ByteTagIterator'])
+    register_Ns3ByteTagIteratorItem_methods(root_module, root_module['ns3::ByteTagIterator::Item'])
+    register_Ns3ByteTagList_methods(root_module, root_module['ns3::ByteTagList'])
+    register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
+    register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
+    register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
+    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
+    register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
+    register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
+    register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
+    register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
+    register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
+    register_Ns3LrWpanEdPower_methods(root_module, root_module['ns3::LrWpanEdPower'])
+    register_Ns3LrWpanPhyDataAndSymbolRates_methods(root_module, root_module['ns3::LrWpanPhyDataAndSymbolRates'])
+    register_Ns3LrWpanPhyPibAttributes_methods(root_module, root_module['ns3::LrWpanPhyPibAttributes'])
+    register_Ns3LrWpanPhyPpduHeaderSymbolNumber_methods(root_module, root_module['ns3::LrWpanPhyPpduHeaderSymbolNumber'])
+    register_Ns3LrWpanSpectrumValueHelper_methods(root_module, root_module['ns3::LrWpanSpectrumValueHelper'])
+    register_Ns3Mac16Address_methods(root_module, root_module['ns3::Mac16Address'])
+    register_Ns3Mac64Address_methods(root_module, root_module['ns3::Mac64Address'])
+    register_Ns3McpsDataConfirmParams_methods(root_module, root_module['ns3::McpsDataConfirmParams'])
+    register_Ns3McpsDataIndicationParams_methods(root_module, root_module['ns3::McpsDataIndicationParams'])
+    register_Ns3McpsDataRequestParams_methods(root_module, root_module['ns3::McpsDataRequestParams'])
+    register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
+    register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
+    register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
+    register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
+    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
+    register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
+    register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
+    register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
+    register_Ns3PacketTagIterator_methods(root_module, root_module['ns3::PacketTagIterator'])
+    register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
+    register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
+    register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
+    register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
+    register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
+    register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
+    register_Ns3SequenceNumber8_methods(root_module, root_module['ns3::SequenceNumber8'])
+    register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
+    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
+    register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
+    register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
+    register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
+    register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
+    register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
+    register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
+    register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
+    register_Ns3Header_methods(root_module, root_module['ns3::Header'])
+    register_Ns3LrWpanHelper_methods(root_module, root_module['ns3::LrWpanHelper'])
+    register_Ns3LrWpanLqiTag_methods(root_module, root_module['ns3::LrWpanLqiTag'])
+    register_Ns3LrWpanMacHeader_methods(root_module, root_module['ns3::LrWpanMacHeader'])
+    register_Ns3Object_methods(root_module, root_module['ns3::Object'])
+    register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
+    register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
+    register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
+    register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
+    register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
+    register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
+    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
+    register_Ns3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >'])
+    register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
+    register_Ns3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
+    register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    register_Ns3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >'])
+    register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    register_Ns3SpectrumPhy_methods(root_module, root_module['ns3::SpectrumPhy'])
+    register_Ns3SpectrumSignalParameters_methods(root_module, root_module['ns3::SpectrumSignalParameters'])
+    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
+    register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
+    register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
+    register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
+    register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
+    register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
+    register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
+    register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
+    register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+    register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
+    register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
+    register_Ns3Ipv4MaskChecker_methods(root_module, root_module['ns3::Ipv4MaskChecker'])
+    register_Ns3Ipv4MaskValue_methods(root_module, root_module['ns3::Ipv4MaskValue'])
+    register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
+    register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
+    register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
+    register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
+    register_Ns3LrWpanCsmaCa_methods(root_module, root_module['ns3::LrWpanCsmaCa'])
+    register_Ns3LrWpanErrorModel_methods(root_module, root_module['ns3::LrWpanErrorModel'])
+    register_Ns3LrWpanInterferenceHelper_methods(root_module, root_module['ns3::LrWpanInterferenceHelper'])
+    register_Ns3LrWpanMac_methods(root_module, root_module['ns3::LrWpanMac'])
+    register_Ns3LrWpanMacTrailer_methods(root_module, root_module['ns3::LrWpanMacTrailer'])
+    register_Ns3LrWpanPhy_methods(root_module, root_module['ns3::LrWpanPhy'])
+    register_Ns3LrWpanSpectrumSignalParameters_methods(root_module, root_module['ns3::LrWpanSpectrumSignalParameters'])
+    register_Ns3Mac16AddressChecker_methods(root_module, root_module['ns3::Mac16AddressChecker'])
+    register_Ns3Mac16AddressValue_methods(root_module, root_module['ns3::Mac16AddressValue'])
+    register_Ns3Mac64AddressChecker_methods(root_module, root_module['ns3::Mac64AddressChecker'])
+    register_Ns3Mac64AddressValue_methods(root_module, root_module['ns3::Mac64AddressValue'])
+    register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
+    register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
+    register_Ns3Node_methods(root_module, root_module['ns3::Node'])
+    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
+    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
+    register_Ns3OutputStreamWrapper_methods(root_module, root_module['ns3::OutputStreamWrapper'])
+    register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
+    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
+    register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
+    register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
+    register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
+    register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
+    register_Ns3LrWpanNetDevice_methods(root_module, root_module['ns3::LrWpanNetDevice'])
+    register_Ns3HashImplementation_methods(root_module, root_module['ns3::Hash::Implementation'])
+    register_Ns3HashFunctionFnv1a_methods(root_module, root_module['ns3::Hash::Function::Fnv1a'])
+    register_Ns3HashFunctionHash32_methods(root_module, root_module['ns3::Hash::Function::Hash32'])
+    register_Ns3HashFunctionHash64_methods(root_module, root_module['ns3::Hash::Function::Hash64'])
+    register_Ns3HashFunctionMurmur3_methods(root_module, root_module['ns3::Hash::Function::Murmur3'])
+    return
+
+def register_Ns3Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## address.h (module 'network'): ns3::Address::Address() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::Address::Address(uint8_t type, uint8_t const * buffer, uint8_t len) [constructor]
+    cls.add_constructor([param('uint8_t', 'type'), param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): ns3::Address::Address(ns3::Address const & address) [copy constructor]
+    cls.add_constructor([param('ns3::Address const &', 'address')])
+    ## address.h (module 'network'): bool ns3::Address::CheckCompatible(uint8_t type, uint8_t len) const [member function]
+    cls.add_method('CheckCompatible', 
+                   'bool', 
+                   [param('uint8_t', 'type'), param('uint8_t', 'len')], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyAllFrom(uint8_t const * buffer, uint8_t len) [member function]
+    cls.add_method('CopyAllFrom', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyAllTo(uint8_t * buffer, uint8_t len) const [member function]
+    cls.add_method('CopyAllTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint8_t', 'len')], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyFrom(uint8_t const * buffer, uint8_t len) [member function]
+    cls.add_method('CopyFrom', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## address.h (module 'network'): void ns3::Address::Deserialize(ns3::TagBuffer buffer) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')])
+    ## address.h (module 'network'): uint8_t ns3::Address::GetLength() const [member function]
+    cls.add_method('GetLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): bool ns3::Address::IsInvalid() const [member function]
+    cls.add_method('IsInvalid', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): bool ns3::Address::IsMatchingType(uint8_t type) const [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('uint8_t', 'type')], 
+                   is_const=True)
+    ## address.h (module 'network'): static uint8_t ns3::Address::Register() [member function]
+    cls.add_method('Register', 
+                   'uint8_t', 
+                   [], 
+                   is_static=True)
+    ## address.h (module 'network'): void ns3::Address::Serialize(ns3::TagBuffer buffer) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')], 
+                   is_const=True)
+    return
+
+def register_Ns3AsciiTraceHelper_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper(ns3::AsciiTraceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceHelper const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): ns3::Ptr<ns3::OutputStreamWrapper> ns3::AsciiTraceHelper::CreateFileStream(std::string filename, std::_Ios_Openmode filemode=std::ios_base::out) [member function]
+    cls.add_method('CreateFileStream', 
+                   'ns3::Ptr< ns3::OutputStreamWrapper >', 
+                   [param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode', default_value='std::ios_base::out')])
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDequeueSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDequeueSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDropSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDropSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultEnqueueSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultEnqueueSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultReceiveSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultReceiveSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): std::string ns3::AsciiTraceHelper::GetFilenameFromDevice(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromDevice', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
+    ## trace-helper.h (module 'network'): std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromInterfacePair', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+    return
+
+def register_Ns3AsciiTraceHelperForDevice_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice(ns3::AsciiTraceHelperForDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceHelperForDevice const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename=false) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, std::string ndName, bool explicitFilename=false) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string ndName) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'ndName')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::NetDeviceContainer d) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::NetDeviceContainer', 'd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::NodeContainer', 'n')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'explicitFilename')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamWrapper> stream) [member function]
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename) [member function]
+    cls.add_method('EnableAsciiInternal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeConstructionList_methods(root_module, cls):
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList(ns3::AttributeConstructionList const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeConstructionList const &', 'arg0')])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList() [constructor]
+    cls.add_constructor([])
+    ## attribute-construction-list.h (module 'core'): void ns3::AttributeConstructionList::Add(std::string name, ns3::Ptr<ns3::AttributeChecker const> checker, ns3::Ptr<ns3::AttributeValue> value) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker'), param('ns3::Ptr< ns3::AttributeValue >', 'value')])
+    ## attribute-construction-list.h (module 'core'): std::_List_const_iterator<ns3::AttributeConstructionList::Item> ns3::AttributeConstructionList::Begin() const [member function]
+    cls.add_method('Begin', 
+                   'std::_List_const_iterator< ns3::AttributeConstructionList::Item >', 
+                   [], 
+                   is_const=True)
+    ## attribute-construction-list.h (module 'core'): std::_List_const_iterator<ns3::AttributeConstructionList::Item> ns3::AttributeConstructionList::End() const [member function]
+    cls.add_method('End', 
+                   'std::_List_const_iterator< ns3::AttributeConstructionList::Item >', 
+                   [], 
+                   is_const=True)
+    ## attribute-construction-list.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeConstructionList::Find(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('Find', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True)
+    return
+
+def register_Ns3AttributeConstructionListItem_methods(root_module, cls):
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item() [constructor]
+    cls.add_constructor([])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item(ns3::AttributeConstructionList::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeConstructionList::Item const &', 'arg0')])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::checker [variable]
+    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::value [variable]
+    cls.add_instance_attribute('value', 'ns3::Ptr< ns3::AttributeValue >', is_const=False)
+    return
+
+def register_Ns3Buffer_methods(root_module, cls):
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer() [constructor]
+    cls.add_constructor([])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
+    cls.add_constructor([param('uint32_t', 'dataSize')])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize, bool initialize) [constructor]
+    cls.add_constructor([param('uint32_t', 'dataSize'), param('bool', 'initialize')])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Buffer const &', 'o')])
+    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtEnd(uint32_t end) [member function]
+    cls.add_method('AddAtEnd', 
+                   'bool', 
+                   [param('uint32_t', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::AddAtEnd(ns3::Buffer const & o) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Buffer const &', 'o')])
+    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtStart(uint32_t start) [member function]
+    cls.add_method('AddAtStart', 
+                   'bool', 
+                   [param('uint32_t', 'start')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::CopyData(std::ostream * os, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'void', 
+                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::CopyData(uint8_t * buffer, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFragment(uint32_t start, uint32_t length) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::Buffer', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFullCopy() const [member function]
+    cls.add_method('CreateFullCopy', 
+                   'ns3::Buffer', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::End() const [member function]
+    cls.add_method('End', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentEndOffset() const [member function]
+    cls.add_method('GetCurrentEndOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentStartOffset() const [member function]
+    cls.add_method('GetCurrentStartOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint8_t const * ns3::Buffer::PeekData() const [member function]
+    cls.add_method('PeekData', 
+                   'uint8_t const *', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtEnd(uint32_t end) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtStart(uint32_t start) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'start')])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3BufferIterator_methods(root_module, cls):
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator() [constructor]
+    cls.add_constructor([])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size) [member function]
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size')])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size, uint32_t initialChecksum) [member function]
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetDistanceFrom(ns3::Buffer::Iterator const & o) const [member function]
+    cls.add_method('GetDistanceFrom', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator const &', 'o')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsEnd() const [member function]
+    cls.add_method('IsEnd', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsStart() const [member function]
+    cls.add_method('IsStart', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next() [member function]
+    cls.add_method('Next', 
+                   'void', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next(uint32_t delta) [member function]
+    cls.add_method('Next', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
+    cls.add_method('Prev', 
+                   'void', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev(uint32_t delta) [member function]
+    cls.add_method('Prev', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(uint8_t * buffer, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
+    cls.add_method('ReadLsbtohU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadLsbtohU32() [member function]
+    cls.add_method('ReadLsbtohU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadLsbtohU64() [member function]
+    cls.add_method('ReadLsbtohU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadNtohU16() [member function]
+    cls.add_method('ReadNtohU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadNtohU32() [member function]
+    cls.add_method('ReadNtohU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadNtohU64() [member function]
+    cls.add_method('ReadNtohU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadU16() [member function]
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadU32() [member function]
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadU64() [member function]
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::ReadU8() [member function]
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU16(uint16_t data) [member function]
+    cls.add_method('WriteHtolsbU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU32(uint32_t data) [member function]
+    cls.add_method('WriteHtolsbU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU64(uint64_t data) [member function]
+    cls.add_method('WriteHtolsbU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU16(uint16_t data) [member function]
+    cls.add_method('WriteHtonU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU32(uint32_t data) [member function]
+    cls.add_method('WriteHtonU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU64(uint64_t data) [member function]
+    cls.add_method('WriteHtonU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU16(uint16_t data) [member function]
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU32(uint32_t data) [member function]
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU64(uint64_t data) [member function]
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data, uint32_t len) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data'), param('uint32_t', 'len')])
+    return
+
+def register_Ns3ByteTagIterator_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagIterator const &', 'arg0')])
+    ## packet.h (module 'network'): bool ns3::ByteTagIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item ns3::ByteTagIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::ByteTagIterator::Item', 
+                   [])
+    return
+
+def register_Ns3ByteTagIteratorItem_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagIterator::Item const &', 'arg0')])
+    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetEnd() const [member function]
+    cls.add_method('GetEnd', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetStart() const [member function]
+    cls.add_method('GetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::ByteTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
+    cls.add_method('GetTag', 
+                   'void', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::TypeId ns3::ByteTagIterator::Item::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3ByteTagList_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList() [constructor]
+    cls.add_constructor([])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList const &', 'o')])
+    ## byte-tag-list.h (module 'network'): ns3::TagBuffer ns3::ByteTagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
+    cls.add_method('Add', 
+                   'ns3::TagBuffer', 
+                   [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::Add(ns3::ByteTagList const & o) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::ByteTagList const &', 'o')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtEnd(int32_t adjustment, int32_t appendOffset) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtStart(int32_t adjustment, int32_t prependOffset) [member function]
+    cls.add_method('AddAtStart', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator ns3::ByteTagList::Begin(int32_t offsetStart, int32_t offsetEnd) const [member function]
+    cls.add_method('Begin', 
+                   'ns3::ByteTagList::Iterator', 
+                   [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::RemoveAll() [member function]
+    cls.add_method('RemoveAll', 
+                   'void', 
+                   [])
+    return
+
+def register_Ns3ByteTagListIterator_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList::Iterator const &', 'arg0')])
+    ## byte-tag-list.h (module 'network'): uint32_t ns3::ByteTagList::Iterator::GetOffsetStart() const [member function]
+    cls.add_method('GetOffsetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): bool ns3::ByteTagList::Iterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item ns3::ByteTagList::Iterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::ByteTagList::Iterator::Item', 
+                   [])
+    return
+
+def register_Ns3ByteTagListIteratorItem_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList::Iterator::Item const &', 'arg0')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
+    cls.add_constructor([param('ns3::TagBuffer', 'buf')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::buf [variable]
+    cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::end [variable]
+    cls.add_instance_attribute('end', 'int32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::size [variable]
+    cls.add_instance_attribute('size', 'uint32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::start [variable]
+    cls.add_instance_attribute('start', 'int32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3CallbackBase_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
+    cls.add_method('GetImpl', 
+                   'ns3::Ptr< ns3::CallbackImplBase >', 
+                   [], 
+                   is_const=True)
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
+                        visibility='protected')
+    ## callback.h (module 'core'): static std::string ns3::CallbackBase::Demangle(std::string const & mangled) [member function]
+    cls.add_method('Demangle', 
+                   'std::string', 
+                   [param('std::string const &', 'mangled')], 
+                   is_static=True, visibility='protected')
+    return
+
+def register_Ns3EventId_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_comparison_operator('==')
+    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
+    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
+    cls.add_constructor([])
+    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
+    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
+    cls.add_method('GetContext', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
+    cls.add_method('GetTs', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
+    cls.add_method('IsRunning', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
+    cls.add_method('PeekEventImpl', 
+                   'ns3::EventImpl *', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3Hasher_methods(root_module, cls):
+    ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hasher const &', 'arg0')])
+    ## hash.h (module 'core'): ns3::Hasher::Hasher() [constructor]
+    cls.add_constructor([])
+    ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Ptr<ns3::Hash::Implementation> hp) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Hash::Implementation >', 'hp')])
+    ## hash.h (module 'core'): uint32_t ns3::Hasher::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')])
+    ## hash.h (module 'core'): uint32_t ns3::Hasher::GetHash32(std::string const s) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('std::string const', 's')])
+    ## hash.h (module 'core'): uint64_t ns3::Hasher::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')])
+    ## hash.h (module 'core'): uint64_t ns3::Hasher::GetHash64(std::string const s) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('std::string const', 's')])
+    ## hash.h (module 'core'): ns3::Hasher & ns3::Hasher::clear() [member function]
+    cls.add_method('clear', 
+                   'ns3::Hasher &', 
+                   [])
+    return
+
+def register_Ns3Ipv4Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(ns3::Ipv4Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Address const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(uint32_t address) [constructor]
+    cls.add_constructor([param('uint32_t', 'address')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(char const * address) [constructor]
+    cls.add_constructor([param('char const *', 'address')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4Address::CombineMask(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('CombineMask', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::Deserialize(uint8_t const * buf) [member function]
+    cls.add_method('Deserialize', 
+                   'ns3::Ipv4Address', 
+                   [param('uint8_t const *', 'buf')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Address::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetAny() [member function]
+    cls.add_method('GetAny', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetBroadcast() [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4Address::GetSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('GetSubnetDirectedBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsEqual(ns3::Ipv4Address const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Address const &', 'other')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsLocalMulticast() const [member function]
+    cls.add_method('IsLocalMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static bool ns3::Ipv4Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('IsSubnetDirectedBroadcast', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Serialize(uint8_t * buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Set(uint32_t address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'address')])
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Set(char const * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('char const *', 'address')])
+    return
+
+def register_Ns3Ipv4Mask_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(ns3::Ipv4Mask const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Mask const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(uint32_t mask) [constructor]
+    cls.add_constructor([param('uint32_t', 'mask')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(char const * mask) [constructor]
+    cls.add_constructor([param('char const *', 'mask')])
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Mask::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Mask::GetInverse() const [member function]
+    cls.add_method('GetInverse', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): uint16_t ns3::Ipv4Mask::GetPrefixLength() const [member function]
+    cls.add_method('GetPrefixLength', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Mask::IsEqual(ns3::Ipv4Mask other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask', 'other')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Mask::IsMatch(ns3::Ipv4Address a, ns3::Ipv4Address b) const [member function]
+    cls.add_method('IsMatch', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'a'), param('ns3::Ipv4Address', 'b')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Mask::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Mask::Set(uint32_t mask) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'mask')])
+    return
+
+def register_Ns3Ipv6Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(char const * address) [constructor]
+    cls.add_constructor([param('char const *', 'address')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(uint8_t * address) [constructor]
+    cls.add_constructor([param('uint8_t *', 'address')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const & addr) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const &', 'addr')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const * addr) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const *', 'addr')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address ns3::Ipv6Address::CombinePrefix(ns3::Ipv6Prefix const & prefix) [member function]
+    cls.add_method('CombinePrefix', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv6Prefix const &', 'prefix')])
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::Deserialize(uint8_t const * buf) [member function]
+    cls.add_method('Deserialize', 
+                   'ns3::Ipv6Address', 
+                   [param('uint8_t const *', 'buf')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllHostsMulticast() [member function]
+    cls.add_method('GetAllHostsMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllNodesMulticast() [member function]
+    cls.add_method('GetAllNodesMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllRoutersMulticast() [member function]
+    cls.add_method('GetAllRoutersMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAny() [member function]
+    cls.add_method('GetAny', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::GetBytes(uint8_t * buf) const [member function]
+    cls.add_method('GetBytes', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv6Address::GetIpv4MappedAddress() const [member function]
+    cls.add_method('GetIpv4MappedAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllHostsMulticast() const [member function]
+    cls.add_method('IsAllHostsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllNodesMulticast() const [member function]
+    cls.add_method('IsAllNodesMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllRoutersMulticast() const [member function]
+    cls.add_method('IsAllRoutersMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAny() const [member function]
+    cls.add_method('IsAny', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsDocumentation() const [member function]
+    cls.add_method('IsDocumentation', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsEqual(ns3::Ipv6Address const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv6Address const &', 'other')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
+    cls.add_method('IsIpv4MappedAddress', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
+    cls.add_method('IsLinkLocal', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocalMulticast() const [member function]
+    cls.add_method('IsLinkLocalMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLocalhost() const [member function]
+    cls.add_method('IsLocalhost', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static bool ns3::Ipv6Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsSolicitedMulticast() const [member function]
+    cls.add_method('IsSolicitedMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac16Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac16Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac48Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac48Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac64Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac64Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac16Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac16Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac48Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac48Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac64Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac64Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeIpv4MappedAddress(ns3::Ipv4Address addr) [member function]
+    cls.add_method('MakeIpv4MappedAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeSolicitedAddress(ns3::Ipv6Address addr) [member function]
+    cls.add_method('MakeSolicitedAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Serialize(uint8_t * buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Set(char const * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('char const *', 'address')])
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Set(uint8_t * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint8_t *', 'address')])
+    return
+
+def register_Ns3Ipv6Prefix_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t * prefix) [constructor]
+    cls.add_constructor([param('uint8_t *', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(char const * prefix) [constructor]
+    cls.add_constructor([param('char const *', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t prefix) [constructor]
+    cls.add_constructor([param('uint8_t', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const & prefix) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const &', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const * prefix) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const *', 'prefix')])
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Prefix::GetBytes(uint8_t * buf) const [member function]
+    cls.add_method('GetBytes', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): uint8_t ns3::Ipv6Prefix::GetPrefixLength() const [member function]
+    cls.add_method('GetPrefixLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Prefix::IsEqual(ns3::Ipv6Prefix const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv6Prefix const &', 'other')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Prefix::IsMatch(ns3::Ipv6Address a, ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsMatch', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'a'), param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Prefix::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    return
+
+def register_Ns3LrWpanEdPower_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::LrWpanEdPower() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::LrWpanEdPower(ns3::LrWpanEdPower const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanEdPower const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::averagePower [variable]
+    cls.add_instance_attribute('averagePower', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::lastUpdate [variable]
+    cls.add_instance_attribute('lastUpdate', 'ns3::Time', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::measurementLength [variable]
+    cls.add_instance_attribute('measurementLength', 'ns3::Time', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyDataAndSymbolRates_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::LrWpanPhyDataAndSymbolRates() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::LrWpanPhyDataAndSymbolRates(ns3::LrWpanPhyDataAndSymbolRates const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyDataAndSymbolRates const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::bitRate [variable]
+    cls.add_instance_attribute('bitRate', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::symbolRate [variable]
+    cls.add_instance_attribute('symbolRate', 'double', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyPibAttributes_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::LrWpanPhyPibAttributes() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::LrWpanPhyPibAttributes(ns3::LrWpanPhyPibAttributes const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyPibAttributes const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCCAMode [variable]
+    cls.add_instance_attribute('phyCCAMode', 'uint8_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyChannelsSupported [variable]
+    cls.add_instance_attribute('phyChannelsSupported', 'uint32_t [ 32 ]', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCurrentChannel [variable]
+    cls.add_instance_attribute('phyCurrentChannel', 'uint8_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCurrentPage [variable]
+    cls.add_instance_attribute('phyCurrentPage', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyMaxFrameDuration [variable]
+    cls.add_instance_attribute('phyMaxFrameDuration', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phySHRDuration [variable]
+    cls.add_instance_attribute('phySHRDuration', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phySymbolsPerOctet [variable]
+    cls.add_instance_attribute('phySymbolsPerOctet', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyTransmitPower [variable]
+    cls.add_instance_attribute('phyTransmitPower', 'uint8_t', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyPpduHeaderSymbolNumber_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::LrWpanPhyPpduHeaderSymbolNumber() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::LrWpanPhyPpduHeaderSymbolNumber(ns3::LrWpanPhyPpduHeaderSymbolNumber const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyPpduHeaderSymbolNumber const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::phr [variable]
+    cls.add_instance_attribute('phr', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::shrPreamble [variable]
+    cls.add_instance_attribute('shrPreamble', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::shrSfd [variable]
+    cls.add_instance_attribute('shrSfd', 'double', is_const=False)
+    return
+
+def register_Ns3LrWpanSpectrumValueHelper_methods(root_module, cls):
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper(ns3::LrWpanSpectrumValueHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanSpectrumValueHelper const &', 'arg0')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanSpectrumValueHelper::CreateNoisePowerSpectralDensity(uint32_t channel) [member function]
+    cls.add_method('CreateNoisePowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('uint32_t', 'channel')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanSpectrumValueHelper::CreateTxPowerSpectralDensity(double txPower, uint32_t channel) [member function]
+    cls.add_method('CreateTxPowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('double', 'txPower'), param('uint32_t', 'channel')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): static double ns3::LrWpanSpectrumValueHelper::TotalAvgPower(ns3::Ptr<ns3::SpectrumValue const> psd) [member function]
+    cls.add_method('TotalAvgPower', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'psd')], 
+                   is_static=True)
+    return
+
+def register_Ns3Mac16Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(ns3::Mac16Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16Address const &', 'arg0')])
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(char const * str) [constructor]
+    cls.add_constructor([param('char const *', 'str')])
+    ## mac16-address.h (module 'network'): static ns3::Mac16Address ns3::Mac16Address::Allocate() [member function]
+    cls.add_method('Allocate', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_static=True)
+    ## mac16-address.h (module 'network'): static ns3::Mac16Address ns3::Mac16Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac16Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## mac16-address.h (module 'network'): void ns3::Mac16Address::CopyFrom(uint8_t const * buffer) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer')])
+    ## mac16-address.h (module 'network'): void ns3::Mac16Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## mac16-address.h (module 'network'): static bool ns3::Mac16Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    return
+
+def register_Ns3Mac64Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(ns3::Mac64Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64Address const &', 'arg0')])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(char const * str) [constructor]
+    cls.add_constructor([param('char const *', 'str')])
+    ## mac64-address.h (module 'network'): static ns3::Mac64Address ns3::Mac64Address::Allocate() [member function]
+    cls.add_method('Allocate', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_static=True)
+    ## mac64-address.h (module 'network'): static ns3::Mac64Address ns3::Mac64Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac64Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## mac64-address.h (module 'network'): void ns3::Mac64Address::CopyFrom(uint8_t const * buffer) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer')])
+    ## mac64-address.h (module 'network'): void ns3::Mac64Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## mac64-address.h (module 'network'): static bool ns3::Mac64Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    return
+
+def register_Ns3McpsDataConfirmParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::McpsDataConfirmParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::McpsDataConfirmParams(ns3::McpsDataConfirmParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataConfirmParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::m_msduHandle [variable]
+    cls.add_instance_attribute('m_msduHandle', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::m_status [variable]
+    cls.add_instance_attribute('m_status', 'ns3::LrWpanMcpsDataConfirmStatus', is_const=False)
+    return
+
+def register_Ns3McpsDataIndicationParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::McpsDataIndicationParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::McpsDataIndicationParams(ns3::McpsDataIndicationParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataIndicationParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dsn [variable]
+    cls.add_instance_attribute('m_dsn', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstAddr [variable]
+    cls.add_instance_attribute('m_dstAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstAddrMode [variable]
+    cls.add_instance_attribute('m_dstAddrMode', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstPanId [variable]
+    cls.add_instance_attribute('m_dstPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_mpduLinkQuality [variable]
+    cls.add_instance_attribute('m_mpduLinkQuality', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcAddr [variable]
+    cls.add_instance_attribute('m_srcAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcAddrMode [variable]
+    cls.add_instance_attribute('m_srcAddrMode', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcPanId [variable]
+    cls.add_instance_attribute('m_srcPanId', 'uint16_t', is_const=False)
+    return
+
+def register_Ns3McpsDataRequestParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::McpsDataRequestParams(ns3::McpsDataRequestParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataRequestParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::McpsDataRequestParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstAddr [variable]
+    cls.add_instance_attribute('m_dstAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstAddrMode [variable]
+    cls.add_instance_attribute('m_dstAddrMode', 'ns3::LrWpanAddressMode', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstPanId [variable]
+    cls.add_instance_attribute('m_dstPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_msduHandle [variable]
+    cls.add_instance_attribute('m_msduHandle', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_srcAddrMode [variable]
+    cls.add_instance_attribute('m_srcAddrMode', 'ns3::LrWpanAddressMode', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_txOptions [variable]
+    cls.add_instance_attribute('m_txOptions', 'uint8_t', is_const=False)
+    return
+
+def register_Ns3NetDeviceContainer_methods(root_module, cls):
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer() [constructor]
+    cls.add_constructor([])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::Ptr<ns3::NetDevice> dev) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::NetDevice >', 'dev')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(std::string devName) [constructor]
+    cls.add_constructor([param('std::string', 'devName')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & a, ns3::NetDeviceContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::NetDeviceContainer const &', 'a'), param('ns3::NetDeviceContainer const &', 'b')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(ns3::NetDeviceContainer other) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'other')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(std::string deviceName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'deviceName')])
+    ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::NetDevice > const, std::vector< ns3::Ptr< ns3::NetDevice > > >', 
+                   [], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::NetDevice > const, std::vector< ns3::Ptr< ns3::NetDevice > > >', 
+                   [], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::NetDeviceContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): uint32_t ns3::NetDeviceContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3NodeContainer_methods(root_module, cls):
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'arg0')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer() [constructor]
+    cls.add_constructor([])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(std::string nodeName) [constructor]
+    cls.add_constructor([param('std::string', 'nodeName')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c, ns3::NodeContainer const & d) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c'), param('ns3::NodeContainer const &', 'd')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c, ns3::NodeContainer const & d, ns3::NodeContainer const & e) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c'), param('ns3::NodeContainer const &', 'd'), param('ns3::NodeContainer const &', 'e')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(ns3::NodeContainer other) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'other')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(std::string nodeName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'nodeName')])
+    ## node-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Node > const, std::vector< ns3::Ptr< ns3::Node > > >', 
+                   [], 
+                   is_const=True)
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Create(uint32_t n) [member function]
+    cls.add_method('Create', 
+                   'void', 
+                   [param('uint32_t', 'n')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Create(uint32_t n, uint32_t systemId) [member function]
+    cls.add_method('Create', 
+                   'void', 
+                   [param('uint32_t', 'n'), param('uint32_t', 'systemId')])
+    ## node-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Node > const, std::vector< ns3::Ptr< ns3::Node > > >', 
+                   [], 
+                   is_const=True)
+    ## node-container.h (module 'network'): ns3::Ptr<ns3::Node> ns3::NodeContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## node-container.h (module 'network'): static ns3::NodeContainer ns3::NodeContainer::GetGlobal() [member function]
+    cls.add_method('GetGlobal', 
+                   'ns3::NodeContainer', 
+                   [], 
+                   is_static=True)
+    ## node-container.h (module 'network'): uint32_t ns3::NodeContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3ObjectBase_methods(root_module, cls):
+    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
+    cls.add_constructor([])
+    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectBase const &', 'arg0')])
+    ## object-base.h (module 'core'): void ns3::ObjectBase::GetAttribute(std::string name, ns3::AttributeValue & value) const [member function]
+    cls.add_method('GetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'value')], 
+                   is_const=True)
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::GetAttributeFailSafe(std::string name, ns3::AttributeValue & attribute) const [member function]
+    cls.add_method('GetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'attribute')], 
+                   is_const=True)
+    ## object-base.h (module 'core'): ns3::TypeId ns3::ObjectBase::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## object-base.h (module 'core'): static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## object-base.h (module 'core'): void ns3::ObjectBase::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::SetAttributeFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('SetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceConnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceConnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceDisconnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceDisconnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): void ns3::ObjectBase::ConstructSelf(ns3::AttributeConstructionList const & attributes) [member function]
+    cls.add_method('ConstructSelf', 
+                   'void', 
+                   [param('ns3::AttributeConstructionList const &', 'attributes')], 
+                   visibility='protected')
+    ## object-base.h (module 'core'): void ns3::ObjectBase::NotifyConstructionCompleted() [member function]
+    cls.add_method('NotifyConstructionCompleted', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectDeleter_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter(ns3::ObjectDeleter const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectDeleter const &', 'arg0')])
+    ## object.h (module 'core'): static void ns3::ObjectDeleter::Delete(ns3::Object * object) [member function]
+    cls.add_method('Delete', 
+                   'void', 
+                   [param('ns3::Object *', 'object')], 
+                   is_static=True)
+    return
+
+def register_Ns3ObjectFactory_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(std::string typeId) [constructor]
+    cls.add_constructor([param('std::string', 'typeId')])
+    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('ns3::TypeId', 'tid')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('char const *', 'tid')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('std::string', 'tid')])
+    return
+
+def register_Ns3PacketMetadata_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
+    cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(ns3::PacketMetadata const & o) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata const &', 'o')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddAtEnd(ns3::PacketMetadata const & o) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::PacketMetadata const &', 'o')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddHeader(ns3::Header const & header, uint32_t size) [member function]
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddPaddingAtEnd(uint32_t end) [member function]
+    cls.add_method('AddPaddingAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
+    cls.add_method('AddTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::PacketMetadata::BeginItem(ns3::Buffer buffer) const [member function]
+    cls.add_method('BeginItem', 
+                   'ns3::PacketMetadata::ItemIterator', 
+                   [param('ns3::Buffer', 'buffer')], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata ns3::PacketMetadata::CreateFragment(uint32_t start, uint32_t end) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::PacketMetadata', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'end')], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::Enable() [member function]
+    cls.add_method('Enable', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::EnableChecking() [member function]
+    cls.add_method('EnableChecking', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): uint64_t ns3::PacketMetadata::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtEnd(uint32_t end) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtStart(uint32_t start) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'start')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveHeader(ns3::Header const & header, uint32_t size) [member function]
+    cls.add_method('RemoveHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
+    cls.add_method('RemoveTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3PacketMetadataItem_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item() [constructor]
+    cls.add_constructor([])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item(ns3::PacketMetadata::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata::Item const &', 'arg0')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::current [variable]
+    cls.add_instance_attribute('current', 'ns3::Buffer::Iterator', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentSize [variable]
+    cls.add_instance_attribute('currentSize', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromEnd [variable]
+    cls.add_instance_attribute('currentTrimedFromEnd', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromStart [variable]
+    cls.add_instance_attribute('currentTrimedFromStart', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::isFragment [variable]
+    cls.add_instance_attribute('isFragment', 'bool', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3PacketMetadataItemIterator_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata::ItemIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata::ItemIterator const &', 'arg0')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata const * metadata, ns3::Buffer buffer) [constructor]
+    cls.add_constructor([param('ns3::PacketMetadata const *', 'metadata'), param('ns3::Buffer', 'buffer')])
+    ## packet-metadata.h (module 'network'): bool ns3::PacketMetadata::ItemIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item ns3::PacketMetadata::ItemIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::PacketMetadata::Item', 
+                   [])
+    return
+
+def register_Ns3PacketTagIterator_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::PacketTagIterator::PacketTagIterator(ns3::PacketTagIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagIterator const &', 'arg0')])
+    ## packet.h (module 'network'): bool ns3::PacketTagIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item ns3::PacketTagIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::PacketTagIterator::Item', 
+                   [])
+    return
+
+def register_Ns3PacketTagIteratorItem_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item::Item(ns3::PacketTagIterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagIterator::Item const &', 'arg0')])
+    ## packet.h (module 'network'): void ns3::PacketTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
+    cls.add_method('GetTag', 
+                   'void', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::TypeId ns3::PacketTagIterator::Item::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3PacketTagList_methods(root_module, cls):
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList() [constructor]
+    cls.add_constructor([])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList(ns3::PacketTagList const & o) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagList const &', 'o')])
+    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::Add(ns3::Tag const & tag) const [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData const * ns3::PacketTagList::Head() const [member function]
+    cls.add_method('Head', 
+                   'ns3::PacketTagList::TagData const *', 
+                   [], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Peek(ns3::Tag & tag) const [member function]
+    cls.add_method('Peek', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Remove(ns3::Tag & tag) [member function]
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::RemoveAll() [member function]
+    cls.add_method('RemoveAll', 
+                   'void', 
+                   [])
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Replace(ns3::Tag & tag) [member function]
+    cls.add_method('Replace', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    return
+
+def register_Ns3PacketTagListTagData_methods(root_module, cls):
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData() [constructor]
+    cls.add_constructor([])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData(ns3::PacketTagList::TagData const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagList::TagData const &', 'arg0')])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::count [variable]
+    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::data [variable]
+    cls.add_instance_attribute('data', 'uint8_t [ 20 ]', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::next [variable]
+    cls.add_instance_attribute('next', 'ns3::PacketTagList::TagData *', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3PcapFile_methods(root_module, cls):
+    ## pcap-file.h (module 'network'): ns3::PcapFile::PcapFile() [constructor]
+    cls.add_constructor([])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Close() [member function]
+    cls.add_method('Close', 
+                   'void', 
+                   [])
+    ## pcap-file.h (module 'network'): static bool ns3::PcapFile::Diff(std::string const & f1, std::string const & f2, uint32_t & sec, uint32_t & usec, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT) [member function]
+    cls.add_method('Diff', 
+                   'bool', 
+                   [param('std::string const &', 'f1'), param('std::string const &', 'f2'), param('uint32_t &', 'sec'), param('uint32_t &', 'usec'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT')], 
+                   is_static=True)
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::Eof() const [member function]
+    cls.add_method('Eof', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::Fail() const [member function]
+    cls.add_method('Fail', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetDataLinkType() [member function]
+    cls.add_method('GetDataLinkType', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetMagic() [member function]
+    cls.add_method('GetMagic', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetSigFigs() [member function]
+    cls.add_method('GetSigFigs', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetSnapLen() [member function]
+    cls.add_method('GetSnapLen', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::GetSwapMode() [member function]
+    cls.add_method('GetSwapMode', 
+                   'bool', 
+                   [])
+    ## pcap-file.h (module 'network'): int32_t ns3::PcapFile::GetTimeZoneOffset() [member function]
+    cls.add_method('GetTimeZoneOffset', 
+                   'int32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint16_t ns3::PcapFile::GetVersionMajor() [member function]
+    cls.add_method('GetVersionMajor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint16_t ns3::PcapFile::GetVersionMinor() [member function]
+    cls.add_method('GetVersionMinor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Init(uint32_t dataLinkType, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT, int32_t timeZoneCorrection=ns3::PcapFile::ZONE_DEFAULT, bool swapMode=false) [member function]
+    cls.add_method('Init', 
+                   'void', 
+                   [param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT'), param('int32_t', 'timeZoneCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT'), param('bool', 'swapMode', default_value='false')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Open(std::string const & filename, std::_Ios_Openmode mode) [member function]
+    cls.add_method('Open', 
+                   'void', 
+                   [param('std::string const &', 'filename'), param('std::_Ios_Openmode', 'mode')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Read(uint8_t * const data, uint32_t maxBytes, uint32_t & tsSec, uint32_t & tsUsec, uint32_t & inclLen, uint32_t & origLen, uint32_t & readLen) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t * const', 'data'), param('uint32_t', 'maxBytes'), param('uint32_t &', 'tsSec'), param('uint32_t &', 'tsUsec'), param('uint32_t &', 'inclLen'), param('uint32_t &', 'origLen'), param('uint32_t &', 'readLen')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, uint8_t const * const data, uint32_t totalLen) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('uint8_t const * const', 'data'), param('uint32_t', 'totalLen')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, ns3::Header & header, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('ns3::Header &', 'header'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file.h (module 'network'): ns3::PcapFile::SNAPLEN_DEFAULT [variable]
+    cls.add_static_attribute('SNAPLEN_DEFAULT', 'uint32_t const', is_const=True)
+    ## pcap-file.h (module 'network'): ns3::PcapFile::ZONE_DEFAULT [variable]
+    cls.add_static_attribute('ZONE_DEFAULT', 'int32_t const', is_const=True)
+    return
+
+def register_Ns3PcapHelper_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::PcapHelper::PcapHelper(ns3::PcapHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapHelper const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::PcapHelper::PcapHelper() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): ns3::Ptr<ns3::PcapFileWrapper> ns3::PcapHelper::CreateFile(std::string filename, std::_Ios_Openmode filemode, uint32_t dataLinkType, uint32_t snapLen=65535, int32_t tzCorrection=0) [member function]
+    cls.add_method('CreateFile', 
+                   'ns3::Ptr< ns3::PcapFileWrapper >', 
+                   [param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode'), param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='65535'), param('int32_t', 'tzCorrection', default_value='0')])
+    ## trace-helper.h (module 'network'): std::string ns3::PcapHelper::GetFilenameFromDevice(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromDevice', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
+    ## trace-helper.h (module 'network'): std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromInterfacePair', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+    return
+
+def register_Ns3PcapHelperForDevice_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice::PcapHelperForDevice(ns3::PcapHelperForDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapHelperForDevice const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice::PcapHelperForDevice() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false, bool explicitFilename=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false, bool explicitFilename=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'promiscuous', default_value='false'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous, bool explicitFilename) [member function]
+    cls.add_method('EnablePcapInternal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous'), param('bool', 'explicitFilename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3SequenceNumber8_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('ns3::SequenceNumber< unsigned char, signed char > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('signed char', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('signed char', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('signed char', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('signed char', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('>=')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber() [constructor]
+    cls.add_constructor([])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber(unsigned char value) [constructor]
+    cls.add_constructor([param('unsigned char', 'value')])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber(ns3::SequenceNumber<unsigned char, signed char> const & value) [copy constructor]
+    cls.add_constructor([param('ns3::SequenceNumber< unsigned char, signed char > const &', 'value')])
+    ## sequence-number.h (module 'network'): unsigned char ns3::SequenceNumber<unsigned char, signed char>::GetValue() const [member function]
+    cls.add_method('GetValue', 
+                   'unsigned char', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount(ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3Simulator_methods(root_module, cls):
+    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
+    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
+    cls.add_method('Destroy', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
+    cls.add_method('GetContext', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
+    cls.add_method('GetDelayLeft', 
+                   'ns3::Time', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
+    cls.add_method('GetImplementation', 
+                   'ns3::Ptr< ns3::SimulatorImpl >', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
+    cls.add_method('GetMaximumSimulationTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
+    cls.add_method('GetSystemId', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
+    cls.add_method('IsFinished', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
+    cls.add_method('Now', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
+    cls.add_method('SetImplementation', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
+    cls.add_method('SetScheduler', 
+                   'void', 
+                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
+    cls.add_method('Stop', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::Time const &', 'time')], 
+                   is_static=True)
+    return
+
+def register_Ns3Tag_methods(root_module, cls):
+    ## tag.h (module 'network'): ns3::Tag::Tag() [constructor]
+    cls.add_constructor([])
+    ## tag.h (module 'network'): ns3::Tag::Tag(ns3::Tag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Tag const &', 'arg0')])
+    ## tag.h (module 'network'): void ns3::Tag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## tag.h (module 'network'): uint32_t ns3::Tag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tag.h (module 'network'): static ns3::TypeId ns3::Tag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tag.h (module 'network'): void ns3::Tag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tag.h (module 'network'): void ns3::Tag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3TagBuffer_methods(root_module, cls):
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(ns3::TagBuffer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TagBuffer const &', 'arg0')])
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
+    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::CopyFrom(ns3::TagBuffer o) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'o')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Read(uint8_t * buffer, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## tag-buffer.h (module 'network'): double ns3::TagBuffer::ReadDouble() [member function]
+    cls.add_method('ReadDouble', 
+                   'double', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint16_t ns3::TagBuffer::ReadU16() [member function]
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint32_t ns3::TagBuffer::ReadU32() [member function]
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint64_t ns3::TagBuffer::ReadU64() [member function]
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint8_t ns3::TagBuffer::ReadU8() [member function]
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
+    cls.add_method('TrimAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'trim')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Write(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteDouble(double v) [member function]
+    cls.add_method('WriteDouble', 
+                   'void', 
+                   [param('double', 'v')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU16(uint16_t data) [member function]
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU32(uint32_t data) [member function]
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU64(uint64_t v) [member function]
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'v')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU8(uint8_t v) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'v')])
+    return
+
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
+def register_Ns3TypeId_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId(char const * name) [constructor]
+    cls.add_constructor([param('char const *', 'name')])
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId(ns3::TypeId const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId const &', 'o')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, uint32_t flags, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr<ns3::TraceSourceAccessor const> accessor) [member function]
+    cls.add_method('AddTraceSource', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation ns3::TypeId::GetAttribute(uint32_t i) const [member function]
+    cls.add_method('GetAttribute', 
+                   'ns3::TypeId::AttributeInformation', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeFullName(uint32_t i) const [member function]
+    cls.add_method('GetAttributeFullName', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeN() const [member function]
+    cls.add_method('GetAttributeN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::Callback<ns3::ObjectBase*,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::TypeId::GetConstructor() const [member function]
+    cls.add_method('GetConstructor', 
+                   'ns3::Callback< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetGroupName() const [member function]
+    cls.add_method('GetGroupName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetHash() const [member function]
+    cls.add_method('GetHash', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetName() const [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::GetParent() const [member function]
+    cls.add_method('GetParent', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::GetRegistered(uint32_t i) [member function]
+    cls.add_method('GetRegistered', 
+                   'ns3::TypeId', 
+                   [param('uint32_t', 'i')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static uint32_t ns3::TypeId::GetRegisteredN() [member function]
+    cls.add_method('GetRegisteredN', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation ns3::TypeId::GetTraceSource(uint32_t i) const [member function]
+    cls.add_method('GetTraceSource', 
+                   'ns3::TypeId::TraceSourceInformation', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetTraceSourceN() const [member function]
+    cls.add_method('GetTraceSourceN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint16_t ns3::TypeId::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::HasConstructor() const [member function]
+    cls.add_method('HasConstructor', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::HasParent() const [member function]
+    cls.add_method('HasParent', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::HideFromDocumentation() [member function]
+    cls.add_method('HideFromDocumentation', 
+                   'ns3::TypeId', 
+                   [])
+    ## type-id.h (module 'core'): bool ns3::TypeId::IsChildOf(ns3::TypeId other) const [member function]
+    cls.add_method('IsChildOf', 
+                   'bool', 
+                   [param('ns3::TypeId', 'other')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInformation * info) const [member function]
+    cls.add_method('LookupAttributeByName', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::TypeId::AttributeInformation *', 'info', transfer_ownership=False)], 
+                   is_const=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByHash(uint32_t hash) [member function]
+    cls.add_method('LookupByHash', 
+                   'ns3::TypeId', 
+                   [param('uint32_t', 'hash')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static bool ns3::TypeId::LookupByHashFailSafe(uint32_t hash, ns3::TypeId * tid) [member function]
+    cls.add_method('LookupByHashFailSafe', 
+                   'bool', 
+                   [param('uint32_t', 'hash'), param('ns3::TypeId *', 'tid')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByName(std::string name) [member function]
+    cls.add_method('LookupByName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): ns3::Ptr<ns3::TraceSourceAccessor const> ns3::TypeId::LookupTraceSourceByName(std::string name) const [member function]
+    cls.add_method('LookupTraceSourceByName', 
+                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
+                   [param('std::string', 'name')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::MustHideFromDocumentation() const [member function]
+    cls.add_method('MustHideFromDocumentation', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::SetAttributeInitialValue(uint32_t i, ns3::Ptr<ns3::AttributeValue const> initialValue) [member function]
+    cls.add_method('SetAttributeInitialValue', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ptr< ns3::AttributeValue const >', 'initialValue')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetGroupName(std::string groupName) [member function]
+    cls.add_method('SetGroupName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'groupName')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetParent(ns3::TypeId tid) [member function]
+    cls.add_method('SetParent', 
+                   'ns3::TypeId', 
+                   [param('ns3::TypeId', 'tid')])
+    ## type-id.h (module 'core'): void ns3::TypeId::SetUid(uint16_t tid) [member function]
+    cls.add_method('SetUid', 
+                   'void', 
+                   [param('uint16_t', 'tid')])
+    return
+
+def register_Ns3TypeIdAttributeInformation_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::AttributeInformation() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::AttributeInformation(ns3::TypeId::AttributeInformation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId::AttributeInformation const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::accessor [variable]
+    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::AttributeAccessor const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::checker [variable]
+    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::flags [variable]
+    cls.add_instance_attribute('flags', 'uint32_t', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::help [variable]
+    cls.add_instance_attribute('help', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::initialValue [variable]
+    cls.add_instance_attribute('initialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::originalInitialValue [variable]
+    cls.add_instance_attribute('originalInitialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
+    return
+
+def register_Ns3TypeIdTraceSourceInformation_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::TraceSourceInformation() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::TraceSourceInformation(ns3::TypeId::TraceSourceInformation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId::TraceSourceInformation const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::accessor [variable]
+    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::TraceSourceAccessor const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::help [variable]
+    cls.add_instance_attribute('help', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    return
+
+def register_Ns3Empty_methods(root_module, cls):
+    ## empty.h (module 'core'): ns3::empty::empty() [constructor]
+    cls.add_constructor([])
+    ## empty.h (module 'core'): ns3::empty::empty(ns3::empty const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::empty const &', 'arg0')])
+    return
+
+def register_Ns3Int64x64_t_methods(root_module, cls):
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_unary_numeric_operator('-')
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>=')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
+    cls.add_constructor([])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
+    cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
+    cls.add_constructor([param('int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
+    cls.add_constructor([param('long int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long int v) [constructor]
+    cls.add_constructor([param('long long int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(unsigned int v) [constructor]
+    cls.add_constructor([param('unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long unsigned int v) [constructor]
+    cls.add_constructor([param('long unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long unsigned int v) [constructor]
+    cls.add_constructor([param('long long unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int64_t hi, uint64_t lo) [constructor]
+    cls.add_constructor([param('int64_t', 'hi'), param('uint64_t', 'lo')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(ns3::int64x64_t const & o) [copy constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): double ns3::int64x64_t::GetDouble() const [member function]
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): int64_t ns3::int64x64_t::GetHigh() const [member function]
+    cls.add_method('GetHigh', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): uint64_t ns3::int64x64_t::GetLow() const [member function]
+    cls.add_method('GetLow', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): static ns3::int64x64_t ns3::int64x64_t::Invert(uint64_t v) [member function]
+    cls.add_method('Invert', 
+                   'ns3::int64x64_t', 
+                   [param('uint64_t', 'v')], 
+                   is_static=True)
+    ## int64x64-double.h (module 'core'): void ns3::int64x64_t::MulByInvert(ns3::int64x64_t const & o) [member function]
+    cls.add_method('MulByInvert', 
+                   'void', 
+                   [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
+    return
+
+def register_Ns3Chunk_methods(root_module, cls):
+    ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
+    cls.add_constructor([])
+    ## chunk.h (module 'network'): ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Chunk const &', 'arg0')])
+    ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## chunk.h (module 'network'): void ns3::Chunk::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Header_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## header.h (module 'network'): ns3::Header::Header() [constructor]
+    cls.add_constructor([])
+    ## header.h (module 'network'): ns3::Header::Header(ns3::Header const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Header const &', 'arg0')])
+    ## header.h (module 'network'): uint32_t ns3::Header::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## header.h (module 'network'): uint32_t ns3::Header::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## header.h (module 'network'): static ns3::TypeId ns3::Header::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## header.h (module 'network'): void ns3::Header::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## header.h (module 'network'): void ns3::Header::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3LrWpanHelper_methods(root_module, cls):
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::LrWpanHelper::LrWpanHelper() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::AddMobility(ns3::Ptr<ns3::LrWpanPhy> phy, ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('AddMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy'), param('ns3::Ptr< ns3::MobilityModel >', 'm')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::NetDeviceContainer ns3::LrWpanHelper::Install(ns3::NodeContainer c) [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer', 'c')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::AssociateToPan(ns3::NetDeviceContainer c, uint16_t panId) [member function]
+    cls.add_method('AssociateToPan', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'c'), param('uint16_t', 'panId')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnableLogComponents() [member function]
+    cls.add_method('EnableLogComponents', 
+                   'void', 
+                   [])
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration arg0) [member function]
+    cls.add_method('LrWpanPhyEnumerationPrinter', 
+                   'std::string', 
+                   [param('ns3::LrWpanPhyEnumeration', 'arg0')], 
+                   is_static=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanMacStatePrinter(ns3::LrWpanMacState e) [member function]
+    cls.add_method('LrWpanMacStatePrinter', 
+                   'std::string', 
+                   [param('ns3::LrWpanMacState', 'e')], 
+                   is_static=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): int64_t ns3::LrWpanHelper::AssignStreams(ns3::NetDeviceContainer c, int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('ns3::NetDeviceContainer', 'c'), param('int64_t', 'stream')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous, bool explicitFilename) [member function]
+    cls.add_method('EnablePcapInternal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous'), param('bool', 'explicitFilename')], 
+                   visibility='private', is_virtual=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename) [member function]
+    cls.add_method('EnableAsciiInternal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename')], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanLqiTag_methods(root_module, cls):
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag(ns3::LrWpanLqiTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanLqiTag const &', 'arg0')])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag(uint8_t lqi) [constructor]
+    cls.add_constructor([param('uint8_t', 'lqi')])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): uint8_t ns3::LrWpanLqiTag::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanLqiTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): uint32_t ns3::LrWpanLqiTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanLqiTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Set(uint8_t lqi) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint8_t', 'lqi')])
+    return
+
+def register_Ns3LrWpanMacHeader_methods(root_module, cls):
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader(ns3::LrWpanMacHeader const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMacHeader const &', 'arg0')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader(ns3::LrWpanMacHeader::LrWpanMacType wpanMacType, uint8_t seqNum) [constructor]
+    cls.add_constructor([param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType'), param('uint8_t', 'seqNum')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetDstAddrMode() const [member function]
+    cls.add_method('GetDstAddrMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetDstPanId() const [member function]
+    cls.add_method('GetDstPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMacHeader::GetExtDstAddr() const [member function]
+    cls.add_method('GetExtDstAddr', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMacHeader::GetExtSrcAddr() const [member function]
+    cls.add_method('GetExtSrcAddr', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetFrameControl() const [member function]
+    cls.add_method('GetFrameControl', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetFrameVer() const [member function]
+    cls.add_method('GetFrameVer', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetFrmCounter() const [member function]
+    cls.add_method('GetFrmCounter', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetFrmCtrlRes() const [member function]
+    cls.add_method('GetFrmCtrlRes', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanMacHeader::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetKeyIdIndex() const [member function]
+    cls.add_method('GetKeyIdIndex', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetKeyIdMode() const [member function]
+    cls.add_method('GetKeyIdMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetKeyIdSrc32() const [member function]
+    cls.add_method('GetKeyIdSrc32', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint64_t ns3::LrWpanMacHeader::GetKeyIdSrc64() const [member function]
+    cls.add_method('GetKeyIdSrc64', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): std::string ns3::LrWpanMacHeader::GetName() const [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecControl() const [member function]
+    cls.add_method('GetSecControl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecLevel() const [member function]
+    cls.add_method('GetSecLevel', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSeqNum() const [member function]
+    cls.add_method('GetSeqNum', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMacHeader::GetShortDstAddr() const [member function]
+    cls.add_method('GetShortDstAddr', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMacHeader::GetShortSrcAddr() const [member function]
+    cls.add_method('GetShortSrcAddr', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSrcAddrMode() const [member function]
+    cls.add_method('GetSrcAddrMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetSrcPanId() const [member function]
+    cls.add_method('GetSrcPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacType ns3::LrWpanMacHeader::GetType() const [member function]
+    cls.add_method('GetType', 
+                   'ns3::LrWpanMacHeader::LrWpanMacType', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMacHeader::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetsecctrlReserved() const [member function]
+    cls.add_method('GetsecctrlReserved', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAckReq() const [member function]
+    cls.add_method('IsAckReq', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAcknowledgment() const [member function]
+    cls.add_method('IsAcknowledgment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsBeacon() const [member function]
+    cls.add_method('IsBeacon', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsCommand() const [member function]
+    cls.add_method('IsCommand', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsData() const [member function]
+    cls.add_method('IsData', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsFrmPend() const [member function]
+    cls.add_method('IsFrmPend', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoAckReq() const [member function]
+    cls.add_method('IsNoAckReq', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoFrmPend() const [member function]
+    cls.add_method('IsNoFrmPend', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoPanIdComp() const [member function]
+    cls.add_method('IsNoPanIdComp', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsPanIdComp() const [member function]
+    cls.add_method('IsPanIdComp', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecDisable() const [member function]
+    cls.add_method('IsSecDisable', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecEnable() const [member function]
+    cls.add_method('IsSecEnable', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::PrintFrameControl(std::ostream & os) const [member function]
+    cls.add_method('PrintFrameControl', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetAckReq() [member function]
+    cls.add_method('SetAckReq', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrFields(uint16_t panId, ns3::Mac16Address addr) [member function]
+    cls.add_method('SetDstAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac16Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrFields(uint16_t panId, ns3::Mac64Address addr) [member function]
+    cls.add_method('SetDstAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac64Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrMode(uint8_t addrMode) [member function]
+    cls.add_method('SetDstAddrMode', 
+                   'void', 
+                   [param('uint8_t', 'addrMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrameControl(uint16_t frameControl) [member function]
+    cls.add_method('SetFrameControl', 
+                   'void', 
+                   [param('uint16_t', 'frameControl')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrameVer(uint8_t ver) [member function]
+    cls.add_method('SetFrameVer', 
+                   'void', 
+                   [param('uint8_t', 'ver')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmCounter(uint32_t frmCntr) [member function]
+    cls.add_method('SetFrmCounter', 
+                   'void', 
+                   [param('uint32_t', 'frmCntr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmCtrlRes(uint8_t res) [member function]
+    cls.add_method('SetFrmCtrlRes', 
+                   'void', 
+                   [param('uint8_t', 'res')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmPend() [member function]
+    cls.add_method('SetFrmPend', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint32_t keySrc, uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint32_t', 'keySrc'), param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint64_t keySrc, uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint64_t', 'keySrc'), param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyIdMode(uint8_t keyIdMode) [member function]
+    cls.add_method('SetKeyIdMode', 
+                   'void', 
+                   [param('uint8_t', 'keyIdMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoAckReq() [member function]
+    cls.add_method('SetNoAckReq', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoFrmPend() [member function]
+    cls.add_method('SetNoFrmPend', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoPanIdComp() [member function]
+    cls.add_method('SetNoPanIdComp', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetPanIdComp() [member function]
+    cls.add_method('SetPanIdComp', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecControl(uint8_t secLevel) [member function]
+    cls.add_method('SetSecControl', 
+                   'void', 
+                   [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecDisable() [member function]
+    cls.add_method('SetSecDisable', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecEnable() [member function]
+    cls.add_method('SetSecEnable', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecLevel(uint8_t secLevel) [member function]
+    cls.add_method('SetSecLevel', 
+                   'void', 
+                   [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSeqNum(uint8_t seqNum) [member function]
+    cls.add_method('SetSeqNum', 
+                   'void', 
+                   [param('uint8_t', 'seqNum')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrFields(uint16_t panId, ns3::Mac16Address addr) [member function]
+    cls.add_method('SetSrcAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac16Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrFields(uint16_t panId, ns3::Mac64Address addr) [member function]
+    cls.add_method('SetSrcAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac64Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrMode(uint8_t addrMode) [member function]
+    cls.add_method('SetSrcAddrMode', 
+                   'void', 
+                   [param('uint8_t', 'addrMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetType(ns3::LrWpanMacHeader::LrWpanMacType wpanMacType) [member function]
+    cls.add_method('SetType', 
+                   'void', 
+                   [param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetsecctrlReserved(uint8_t res) [member function]
+    cls.add_method('SetsecctrlReserved', 
+                   'void', 
+                   [param('uint8_t', 'res')])
+    return
+
+def register_Ns3Object_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::Object() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
+    cls.add_method('AggregateObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'other')])
+    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
+    cls.add_method('Dispose', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
+    cls.add_method('GetAggregateIterator', 
+                   'ns3::Object::AggregateIterator', 
+                   [], 
+                   is_const=True)
+    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
+    cls.add_method('Initialize', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Object const &', 'o')], 
+                        visibility='protected')
+    ## object.h (module 'core'): void ns3::Object::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## object.h (module 'core'): void ns3::Object::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## object.h (module 'core'): void ns3::Object::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator(ns3::Object::AggregateIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Object::AggregateIterator const &', 'arg0')])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): bool ns3::Object::AggregateIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## object.h (module 'core'): ns3::Ptr<ns3::Object const> ns3::Object::AggregateIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::Ptr< ns3::Object const >', 
+                   [])
+    return
+
+def register_Ns3PcapFileWrapper_methods(root_module, cls):
+    ## pcap-file-wrapper.h (module 'network'): static ns3::TypeId ns3::PcapFileWrapper::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper::PcapFileWrapper() [constructor]
+    cls.add_constructor([])
+    ## pcap-file-wrapper.h (module 'network'): bool ns3::PcapFileWrapper::Fail() const [member function]
+    cls.add_method('Fail', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file-wrapper.h (module 'network'): bool ns3::PcapFileWrapper::Eof() const [member function]
+    cls.add_method('Eof', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Open(std::string const & filename, std::_Ios_Openmode mode) [member function]
+    cls.add_method('Open', 
+                   'void', 
+                   [param('std::string const &', 'filename'), param('std::_Ios_Openmode', 'mode')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Close() [member function]
+    cls.add_method('Close', 
+                   'void', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Init(uint32_t dataLinkType, uint32_t snapLen=std::numeric_limits<unsigned int>::max(), int32_t tzCorrection=ns3::PcapFile::ZONE_DEFAULT) [member function]
+    cls.add_method('Init', 
+                   'void', 
+                   [param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='std::numeric_limits<unsigned int>::max()'), param('int32_t', 'tzCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, ns3::Header & header, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('ns3::Header &', 'header'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, uint8_t const * buffer, uint32_t length) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('uint8_t const *', 'buffer'), param('uint32_t', 'length')])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetMagic() [member function]
+    cls.add_method('GetMagic', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint16_t ns3::PcapFileWrapper::GetVersionMajor() [member function]
+    cls.add_method('GetVersionMajor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint16_t ns3::PcapFileWrapper::GetVersionMinor() [member function]
+    cls.add_method('GetVersionMinor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): int32_t ns3::PcapFileWrapper::GetTimeZoneOffset() [member function]
+    cls.add_method('GetTimeZoneOffset', 
+                   'int32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetSigFigs() [member function]
+    cls.add_method('GetSigFigs', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetSnapLen() [member function]
+    cls.add_method('GetSnapLen', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetDataLinkType() [member function]
+    cls.add_method('GetDataLinkType', 
+                   'uint32_t', 
+                   [])
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter< ns3::AttributeAccessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter< ns3::AttributeChecker > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter< ns3::AttributeValue > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter< ns3::CallbackImplBase > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter< ns3::Hash::Implementation > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter< ns3::LrWpanInterferenceHelper > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount(ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter< ns3::NixVector > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::SimpleRefCount(ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter< ns3::OutputStreamWrapper > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter< ns3::Packet > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::SimpleRefCount(ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter< ns3::SpectrumSignalParameters > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter< ns3::TraceSourceAccessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SpectrumPhy_methods(root_module, cls):
+    ## spectrum-phy.h (module 'spectrum'): ns3::SpectrumPhy::SpectrumPhy() [constructor]
+    cls.add_constructor([])
+    ## spectrum-phy.h (module 'spectrum'): static ns3::TypeId ns3::SpectrumPhy::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetDevice(ns3::Ptr<ns3::NetDevice> d) [member function]
+    cls.add_method('SetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'd')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::NetDevice> ns3::SpectrumPhy::GetDevice() [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetMobility(ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('SetMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::MobilityModel> ns3::SpectrumPhy::GetMobility() [member function]
+    cls.add_method('GetMobility', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetChannel(ns3::Ptr<ns3::SpectrumChannel> c) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'c')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::SpectrumModel const> ns3::SpectrumPhy::GetRxSpectrumModel() const [member function]
+    cls.add_method('GetRxSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::AntennaModel> ns3::SpectrumPhy::GetRxAntenna() [member function]
+    cls.add_method('GetRxAntenna', 
+                   'ns3::Ptr< ns3::AntennaModel >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::StartRx(ns3::Ptr<ns3::SpectrumSignalParameters> params) [member function]
+    cls.add_method('StartRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumSignalParameters >', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3SpectrumSignalParameters_methods(root_module, cls):
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::SpectrumSignalParameters() [constructor]
+    cls.add_constructor([])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::SpectrumSignalParameters(ns3::SpectrumSignalParameters const & p) [copy constructor]
+    cls.add_constructor([param('ns3::SpectrumSignalParameters const &', 'p')])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::Ptr<ns3::SpectrumSignalParameters> ns3::SpectrumSignalParameters::Copy() [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::SpectrumSignalParameters >', 
+                   [], 
+                   is_virtual=True)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::duration [variable]
+    cls.add_instance_attribute('duration', 'ns3::Time', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::psd [variable]
+    cls.add_instance_attribute('psd', 'ns3::Ptr< ns3::SpectrumValue >', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::txAntenna [variable]
+    cls.add_instance_attribute('txAntenna', 'ns3::Ptr< ns3::AntennaModel >', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::txPhy [variable]
+    cls.add_instance_attribute('txPhy', 'ns3::Ptr< ns3::SpectrumPhy >', is_const=False)
+    return
+
+def register_Ns3Time_methods(root_module, cls):
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>=')
+    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
+    cls.add_constructor([])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Time const &', 'o')])
+    ## nstime.h (module 'core'): ns3::Time::Time(double v) [constructor]
+    cls.add_constructor([param('double', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(int v) [constructor]
+    cls.add_constructor([param('int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long int v) [constructor]
+    cls.add_constructor([param('long int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long long int v) [constructor]
+    cls.add_constructor([param('long long int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(unsigned int v) [constructor]
+    cls.add_constructor([param('unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long unsigned int v) [constructor]
+    cls.add_constructor([param('long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
+    cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
+    cls.add_constructor([param('std::string const &', 's')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
+    cls.add_method('Compare', 
+                   'int', 
+                   [param('ns3::Time const &', 'o')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('From', 
+                   'ns3::Time', 
+                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    cls.add_method('From', 
+                   'ns3::Time', 
+                   [param('ns3::int64x64_t const &', 'value')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('FromDouble', 
+                   'ns3::Time', 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('FromInteger', 
+                   'ns3::Time', 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
+    cls.add_method('GetDays', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
+    cls.add_method('GetFemtoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetHours() const [member function]
+    cls.add_method('GetHours', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
+    cls.add_method('GetInteger', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
+    cls.add_method('GetMicroSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
+    cls.add_method('GetMilliSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetMinutes() const [member function]
+    cls.add_method('GetMinutes', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
+    cls.add_method('GetNanoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
+    cls.add_method('GetPicoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
+    cls.add_method('GetResolution', 
+                   'ns3::Time::Unit', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
+    cls.add_method('GetSeconds', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
+    cls.add_method('GetTimeStep', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetYears() const [member function]
+    cls.add_method('GetYears', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
+    cls.add_method('IsNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
+    cls.add_method('IsPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
+    cls.add_method('IsStrictlyNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
+    cls.add_method('IsStrictlyPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
+    cls.add_method('IsZero', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Max() [member function]
+    cls.add_method('Max', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Min() [member function]
+    cls.add_method('Min', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
+    cls.add_method('SetResolution', 
+                   'void', 
+                   [param('ns3::Time::Unit', 'resolution')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static bool ns3::Time::StaticInit() [member function]
+    cls.add_method('StaticInit', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('To', 
+                   'ns3::int64x64_t', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('ToDouble', 
+                   'double', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('ToInteger', 
+                   'int64_t', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    return
+
+def register_Ns3TraceSourceAccessor_methods(root_module, cls):
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor(ns3::TraceSourceAccessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TraceSourceAccessor const &', 'arg0')])
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor() [constructor]
+    cls.add_constructor([])
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::Connect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('Connect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::ConnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::Disconnect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('Disconnect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::DisconnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Trailer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## trailer.h (module 'network'): ns3::Trailer::Trailer() [constructor]
+    cls.add_constructor([])
+    ## trailer.h (module 'network'): ns3::Trailer::Trailer(ns3::Trailer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Trailer const &', 'arg0')])
+    ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator end) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'end')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trailer.h (module 'network'): static ns3::TypeId ns3::Trailer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## trailer.h (module 'network'): void ns3::Trailer::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trailer.h (module 'network'): void ns3::Trailer::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeAccessor_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & attribute) const [member function]
+    cls.add_method('Get', 
+                   'bool', 
+                   [param('ns3::ObjectBase const *', 'object'), param('ns3::AttributeValue &', 'attribute')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasGetter() const [member function]
+    cls.add_method('HasGetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasSetter() const [member function]
+    cls.add_method('HasSetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
+    cls.add_method('Set', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue const &', 'value')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeChecker_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker(ns3::AttributeChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeChecker const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
+    cls.add_method('Check', 
+                   'bool', 
+                   [param('ns3::AttributeValue const &', 'value')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Copy(ns3::AttributeValue const & source, ns3::AttributeValue & destination) const [member function]
+    cls.add_method('Copy', 
+                   'bool', 
+                   [param('ns3::AttributeValue const &', 'source'), param('ns3::AttributeValue &', 'destination')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::Create() const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::CreateValidValue(ns3::AttributeValue const & value) const [member function]
+    cls.add_method('CreateValidValue', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [param('ns3::AttributeValue const &', 'value')], 
+                   is_const=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetUnderlyingTypeInformation() const [member function]
+    cls.add_method('GetUnderlyingTypeInformation', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetValueTypeName() const [member function]
+    cls.add_method('GetValueTypeName', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::HasUnderlyingTypeInformation() const [member function]
+    cls.add_method('HasUnderlyingTypeInformation', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeValue_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue(ns3::AttributeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeValue const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3CallbackChecker_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker(ns3::CallbackChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackChecker const &', 'arg0')])
+    return
+
+def register_Ns3CallbackImplBase_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase(ns3::CallbackImplBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackImplBase const &', 'arg0')])
+    ## callback.h (module 'core'): bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3CallbackValue_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackValue const &', 'arg0')])
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackBase const & base) [constructor]
+    cls.add_constructor([param('ns3::CallbackBase const &', 'base')])
+    ## callback.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::CallbackValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## callback.h (module 'core'): bool ns3::CallbackValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## callback.h (module 'core'): std::string ns3::CallbackValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## callback.h (module 'core'): void ns3::CallbackValue::Set(ns3::CallbackBase base) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::CallbackBase', 'base')])
+    return
+
+def register_Ns3EmptyAttributeValue_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::EmptyAttributeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::EmptyAttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   visibility='private', is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::EmptyAttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3EventImpl_methods(root_module, cls):
+    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
+    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
+    cls.add_constructor([])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
+    cls.add_method('Invoke', 
+                   'void', 
+                   [])
+    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
+    cls.add_method('IsCancelled', 
+                   'bool', 
+                   [])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
+    cls.add_method('Notify', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker(ns3::Ipv4AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv4AddressValue_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AddressValue const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Address const &', 'value')])
+    ## ipv4-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv4AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): std::string ns3::Ipv4AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4AddressValue::Set(ns3::Ipv4Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'value')])
+    return
+
+def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker(ns3::Ipv4MaskChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MaskChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv4MaskValue_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4MaskValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MaskValue const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4Mask const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Mask const &', 'value')])
+    ## ipv4-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv4MaskValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4MaskValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask ns3::Ipv4MaskValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): std::string ns3::Ipv4MaskValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4MaskValue::Set(ns3::Ipv4Mask const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Mask const &', 'value')])
+    return
+
+def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker(ns3::Ipv6AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv6AddressValue_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6AddressValue const &', 'arg0')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const &', 'value')])
+    ## ipv6-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv6AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address ns3::Ipv6AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): std::string ns3::Ipv6AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6AddressValue::Set(ns3::Ipv6Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv6Address const &', 'value')])
+    return
+
+def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker(ns3::Ipv6PrefixChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PrefixChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv6PrefixValue_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6PrefixValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PrefixValue const &', 'arg0')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6Prefix const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const &', 'value')])
+    ## ipv6-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv6PrefixValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6PrefixValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix ns3::Ipv6PrefixValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): std::string ns3::Ipv6PrefixValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6PrefixValue::Set(ns3::Ipv6Prefix const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv6Prefix const &', 'value')])
+    return
+
+def register_Ns3LrWpanCsmaCa_methods(root_module, cls):
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanCsmaCa::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::LrWpanCsmaCa::LrWpanCsmaCa() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMac(ns3::Ptr<ns3::LrWpanMac> mac) [member function]
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanMac >', 'mac')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanMac> ns3::LrWpanCsmaCa::GetMac() const [member function]
+    cls.add_method('GetMac', 
+                   'ns3::Ptr< ns3::LrWpanMac >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetSlottedCsmaCa() [member function]
+    cls.add_method('SetSlottedCsmaCa', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetUnSlottedCsmaCa() [member function]
+    cls.add_method('SetUnSlottedCsmaCa', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): bool ns3::LrWpanCsmaCa::IsSlottedCsmaCa() const [member function]
+    cls.add_method('IsSlottedCsmaCa', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): bool ns3::LrWpanCsmaCa::IsUnSlottedCsmaCa() const [member function]
+    cls.add_method('IsUnSlottedCsmaCa', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMinBE(uint8_t macMinBE) [member function]
+    cls.add_method('SetMacMinBE', 
+                   'void', 
+                   [param('uint8_t', 'macMinBE')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMinBE() const [member function]
+    cls.add_method('GetMacMinBE', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMaxBE(uint8_t macMaxBE) [member function]
+    cls.add_method('SetMacMaxBE', 
+                   'void', 
+                   [param('uint8_t', 'macMaxBE')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMaxBE() const [member function]
+    cls.add_method('GetMacMaxBE', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMaxCSMABackoffs(uint8_t macMaxCSMABackoffs) [member function]
+    cls.add_method('SetMacMaxCSMABackoffs', 
+                   'void', 
+                   [param('uint8_t', 'macMaxCSMABackoffs')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMaxCSMABackoffs() const [member function]
+    cls.add_method('GetMacMaxCSMABackoffs', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetUnitBackoffPeriod(uint64_t unitBackoffPeriod) [member function]
+    cls.add_method('SetUnitBackoffPeriod', 
+                   'void', 
+                   [param('uint64_t', 'unitBackoffPeriod')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint64_t ns3::LrWpanCsmaCa::GetUnitBackoffPeriod() const [member function]
+    cls.add_method('GetUnitBackoffPeriod', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::Time ns3::LrWpanCsmaCa::GetTimeToNextSlot() const [member function]
+    cls.add_method('GetTimeToNextSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::Start() [member function]
+    cls.add_method('Start', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::RandomBackoffDelay() [member function]
+    cls.add_method('RandomBackoffDelay', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::CanProceed() [member function]
+    cls.add_method('CanProceed', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::RequestCCA() [member function]
+    cls.add_method('RequestCCA', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::PlmeCcaConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeCcaConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetLrWpanMacStateCallback(ns3::LrWpanMacStateCallback macState) [member function]
+    cls.add_method('SetLrWpanMacStateCallback', 
+                   'void', 
+                   [param('ns3::LrWpanMacStateCallback', 'macState')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): int64_t ns3::LrWpanCsmaCa::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetNB() [member function]
+    cls.add_method('GetNB', 
+                   'uint8_t', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanErrorModel_methods(root_module, cls):
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel::LrWpanErrorModel(ns3::LrWpanErrorModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanErrorModel const &', 'arg0')])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel::LrWpanErrorModel() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): double ns3::LrWpanErrorModel::GetChunkSuccessRate(double snr, uint32_t nbits) const [member function]
+    cls.add_method('GetChunkSuccessRate', 
+                   'double', 
+                   [param('double', 'snr'), param('uint32_t', 'nbits')], 
+                   is_const=True)
+    ## lr-wpan-error-model.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanErrorModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3LrWpanInterferenceHelper_methods(root_module, cls):
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::LrWpanInterferenceHelper::LrWpanInterferenceHelper(ns3::Ptr<ns3::SpectrumModel const> spectrumModel) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::SpectrumModel const >', 'spectrumModel')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): bool ns3::LrWpanInterferenceHelper::AddSignal(ns3::Ptr<ns3::SpectrumValue const> signal) [member function]
+    cls.add_method('AddSignal', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'signal')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): bool ns3::LrWpanInterferenceHelper::RemoveSignal(ns3::Ptr<ns3::SpectrumValue const> signal) [member function]
+    cls.add_method('RemoveSignal', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'signal')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): void ns3::LrWpanInterferenceHelper::ClearSignals() [member function]
+    cls.add_method('ClearSignals', 
+                   'void', 
+                   [])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanInterferenceHelper::GetSignalPsd() const [member function]
+    cls.add_method('GetSignalPsd', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumModel const> ns3::LrWpanInterferenceHelper::GetSpectrumModel() const [member function]
+    cls.add_method('GetSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3LrWpanMac_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::LrWpanMac(ns3::LrWpanMac const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMac const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::LrWpanMac() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAssociationStatus ns3::LrWpanMac::GetAssociationStatus() const [member function]
+    cls.add_method('GetAssociationStatus', 
+                   'ns3::LrWpanAssociationStatus', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMac::GetExtendedAddress() const [member function]
+    cls.add_method('GetExtendedAddress', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint64_t ns3::LrWpanMac::GetMacAckWaitDuration() const [member function]
+    cls.add_method('GetMacAckWaitDuration', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint8_t ns3::LrWpanMac::GetMacMaxFrameRetries() const [member function]
+    cls.add_method('GetMacMaxFrameRetries', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint16_t ns3::LrWpanMac::GetPanId() const [member function]
+    cls.add_method('GetPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanPhy> ns3::LrWpanMac::GetPhy() [member function]
+    cls.add_method('GetPhy', 
+                   'ns3::Ptr< ns3::LrWpanPhy >', 
+                   [])
+    ## lr-wpan-mac.h (module 'lr-wpan'): bool ns3::LrWpanMac::GetRxOnWhenIdle() [member function]
+    cls.add_method('GetRxOnWhenIdle', 
+                   'bool', 
+                   [])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMac::GetShortAddress() const [member function]
+    cls.add_method('GetShortAddress', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMac::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::McpsDataRequest(ns3::McpsDataRequestParams params, ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('McpsDataRequest', 
+                   'void', 
+                   [param('ns3::McpsDataRequestParams', 'params'), param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PdDataConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PdDataConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PdDataIndication(uint32_t psduLength, ns3::Ptr<ns3::Packet> p, uint8_t lqi) [member function]
+    cls.add_method('PdDataIndication', 
+                   'void', 
+                   [param('uint32_t', 'psduLength'), param('ns3::Ptr< ns3::Packet >', 'p'), param('uint8_t', 'lqi')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeCcaConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeCcaConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeEdConfirm(ns3::LrWpanPhyEnumeration status, uint8_t energyLevel) [member function]
+    cls.add_method('PlmeEdConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('uint8_t', 'energyLevel')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeGetAttributeConfirm(ns3::LrWpanPhyEnumeration status, ns3::LrWpanPibAttributeIdentifier id, ns3::LrWpanPhyPibAttributes * attribute) [member function]
+    cls.add_method('PlmeGetAttributeConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('ns3::LrWpanPibAttributeIdentifier', 'id'), param('ns3::LrWpanPhyPibAttributes *', 'attribute')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeSetAttributeConfirm(ns3::LrWpanPhyEnumeration status, ns3::LrWpanPibAttributeIdentifier id) [member function]
+    cls.add_method('PlmeSetAttributeConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('ns3::LrWpanPibAttributeIdentifier', 'id')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeSetTRXStateConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeSetTRXStateConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetAssociationStatus(ns3::LrWpanAssociationStatus status) [member function]
+    cls.add_method('SetAssociationStatus', 
+                   'void', 
+                   [param('ns3::LrWpanAssociationStatus', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetCsmaCa(ns3::Ptr<ns3::LrWpanCsmaCa> csmaCa) [member function]
+    cls.add_method('SetCsmaCa', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanCsmaCa >', 'csmaCa')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetExtendedAddress(ns3::Mac64Address address) [member function]
+    cls.add_method('SetExtendedAddress', 
+                   'void', 
+                   [param('ns3::Mac64Address', 'address')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetLrWpanMacState(ns3::LrWpanMacState macState) [member function]
+    cls.add_method('SetLrWpanMacState', 
+                   'void', 
+                   [param('ns3::LrWpanMacState', 'macState')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMacMaxFrameRetries(uint8_t retries) [member function]
+    cls.add_method('SetMacMaxFrameRetries', 
+                   'void', 
+                   [param('uint8_t', 'retries')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMcpsDataConfirmCallback(ns3::McpsDataConfirmCallback c) [member function]
+    cls.add_method('SetMcpsDataConfirmCallback', 
+                   'void', 
+                   [param('ns3::McpsDataConfirmCallback', 'c')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMcpsDataIndicationCallback(ns3::McpsDataIndicationCallback c) [member function]
+    cls.add_method('SetMcpsDataIndicationCallback', 
+                   'void', 
+                   [param('ns3::McpsDataIndicationCallback', 'c')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetPanId(uint16_t panId) [member function]
+    cls.add_method('SetPanId', 
+                   'void', 
+                   [param('uint16_t', 'panId')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetPhy(ns3::Ptr<ns3::LrWpanPhy> phy) [member function]
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetRxOnWhenIdle(bool rxOnWhenIdle) [member function]
+    cls.add_method('SetRxOnWhenIdle', 
+                   'void', 
+                   [param('bool', 'rxOnWhenIdle')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetShortAddress(ns3::Mac16Address address) [member function]
+    cls.add_method('SetShortAddress', 
+                   'void', 
+                   [param('ns3::Mac16Address', 'address')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::aMinMPDUOverhead [variable]
+    cls.add_static_attribute('aMinMPDUOverhead', 'uint32_t const', is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aBaseSlotDuration [variable]
+    cls.add_instance_attribute('m_aBaseSlotDuration', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aBaseSuperframeDuration [variable]
+    cls.add_instance_attribute('m_aBaseSuperframeDuration', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aNumSuperframeSlots [variable]
+    cls.add_instance_attribute('m_aNumSuperframeSlots', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macBeaconOrder [variable]
+    cls.add_instance_attribute('m_macBeaconOrder', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macBeaconTxTime [variable]
+    cls.add_instance_attribute('m_macBeaconTxTime', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macDsn [variable]
+    cls.add_instance_attribute('m_macDsn', 'ns3::SequenceNumber8', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macMaxFrameRetries [variable]
+    cls.add_instance_attribute('m_macMaxFrameRetries', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macPanId [variable]
+    cls.add_instance_attribute('m_macPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macPromiscuousMode [variable]
+    cls.add_instance_attribute('m_macPromiscuousMode', 'bool', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macRxOnWhenIdle [variable]
+    cls.add_instance_attribute('m_macRxOnWhenIdle', 'bool', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macSuperframeOrder [variable]
+    cls.add_instance_attribute('m_macSuperframeOrder', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macSyncSymbolOffset [variable]
+    cls.add_instance_attribute('m_macSyncSymbolOffset', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LrWpanMacTrailer_methods(root_module, cls):
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LrWpanMacTrailer(ns3::LrWpanMacTrailer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMacTrailer const &', 'arg0')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LrWpanMacTrailer() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): bool ns3::LrWpanMacTrailer::CheckFcs(ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('CheckFcs', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacTrailer::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::EnableFcs(bool enable) [member function]
+    cls.add_method('EnableFcs', 
+                   'void', 
+                   [param('bool', 'enable')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacTrailer::GetFcs() const [member function]
+    cls.add_method('GetFcs', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanMacTrailer::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacTrailer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMacTrailer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): bool ns3::LrWpanMacTrailer::IsFcsEnabled() [member function]
+    cls.add_method('IsFcsEnabled', 
+                   'bool', 
+                   [])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::SetFcs(ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('SetFcs', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LR_WPAN_MAC_FCS_LENGTH [variable]
+    cls.add_static_attribute('LR_WPAN_MAC_FCS_LENGTH', 'uint16_t const', is_const=True)
+    return
+
+def register_Ns3LrWpanPhy_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::aMaxPhyPacketSize [variable]
+    cls.add_static_attribute('aMaxPhyPacketSize', 'uint32_t const', is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::aTurnaroundTime [variable]
+    cls.add_static_attribute('aTurnaroundTime', 'uint32_t const', is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanPhy::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::LrWpanPhy() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetMobility(ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('SetMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'm')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::MobilityModel> ns3::LrWpanPhy::GetMobility() [member function]
+    cls.add_method('GetMobility', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetChannel(ns3::Ptr<ns3::SpectrumChannel> c) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'c')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumChannel> ns3::LrWpanPhy::GetChannel() [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::SpectrumChannel >', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetDevice(ns3::Ptr<ns3::NetDevice> d) [member function]
+    cls.add_method('SetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'd')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::NetDevice> ns3::LrWpanPhy::GetDevice() [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetAntenna(ns3::Ptr<ns3::AntennaModel> a) [member function]
+    cls.add_method('SetAntenna', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::AntennaModel >', 'a')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::AntennaModel> ns3::LrWpanPhy::GetRxAntenna() [member function]
+    cls.add_method('GetRxAntenna', 
+                   'ns3::Ptr< ns3::AntennaModel >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumModel const> ns3::LrWpanPhy::GetRxSpectrumModel() const [member function]
+    cls.add_method('GetRxSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetTxPowerSpectralDensity(ns3::Ptr<ns3::SpectrumValue> txPsd) [member function]
+    cls.add_method('SetTxPowerSpectralDensity', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumValue >', 'txPsd')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetNoisePowerSpectralDensity(ns3::Ptr<ns3::SpectrumValue const> noisePsd) [member function]
+    cls.add_method('SetNoisePowerSpectralDensity', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'noisePsd')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue const> ns3::LrWpanPhy::GetNoisePowerSpectralDensity() [member function]
+    cls.add_method('GetNoisePowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue const >', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::StartRx(ns3::Ptr<ns3::SpectrumSignalParameters> params) [member function]
+    cls.add_method('StartRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumSignalParameters >', 'params')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PdDataRequest(uint32_t const psduLength, ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('PdDataRequest', 
+                   'void', 
+                   [param('uint32_t const', 'psduLength'), param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeCcaRequest() [member function]
+    cls.add_method('PlmeCcaRequest', 
+                   'void', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeEdRequest() [member function]
+    cls.add_method('PlmeEdRequest', 
+                   'void', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeGetAttributeRequest(ns3::LrWpanPibAttributeIdentifier id) [member function]
+    cls.add_method('PlmeGetAttributeRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPibAttributeIdentifier', 'id')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeSetTRXStateRequest(ns3::LrWpanPhyEnumeration state) [member function]
+    cls.add_method('PlmeSetTRXStateRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'state')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeSetAttributeRequest(ns3::LrWpanPibAttributeIdentifier id, ns3::LrWpanPhyPibAttributes * attribute) [member function]
+    cls.add_method('PlmeSetAttributeRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPibAttributeIdentifier', 'id'), param('ns3::LrWpanPhyPibAttributes *', 'attribute')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPdDataIndicationCallback(ns3::PdDataIndicationCallback c) [member function]
+    cls.add_method('SetPdDataIndicationCallback', 
+                   'void', 
+                   [param('ns3::PdDataIndicationCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPdDataConfirmCallback(ns3::PdDataConfirmCallback c) [member function]
+    cls.add_method('SetPdDataConfirmCallback', 
+                   'void', 
+                   [param('ns3::PdDataConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeCcaConfirmCallback(ns3::PlmeCcaConfirmCallback c) [member function]
+    cls.add_method('SetPlmeCcaConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeCcaConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeEdConfirmCallback(ns3::PlmeEdConfirmCallback c) [member function]
+    cls.add_method('SetPlmeEdConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeEdConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeGetAttributeConfirmCallback(ns3::PlmeGetAttributeConfirmCallback c) [member function]
+    cls.add_method('SetPlmeGetAttributeConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeGetAttributeConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeSetTRXStateConfirmCallback(ns3::PlmeSetTRXStateConfirmCallback c) [member function]
+    cls.add_method('SetPlmeSetTRXStateConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeSetTRXStateConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeSetAttributeConfirmCallback(ns3::PlmeSetAttributeConfirmCallback c) [member function]
+    cls.add_method('SetPlmeSetAttributeConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeSetAttributeConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): double ns3::LrWpanPhy::GetDataOrSymbolRate(bool isData) [member function]
+    cls.add_method('GetDataOrSymbolRate', 
+                   'double', 
+                   [param('bool', 'isData')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetErrorModel(ns3::Ptr<ns3::LrWpanErrorModel> e) [member function]
+    cls.add_method('SetErrorModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanErrorModel >', 'e')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanErrorModel> ns3::LrWpanPhy::GetErrorModel() const [member function]
+    cls.add_method('GetErrorModel', 
+                   'ns3::Ptr< ns3::LrWpanErrorModel >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): uint64_t ns3::LrWpanPhy::GetPhySHRDuration() const [member function]
+    cls.add_method('GetPhySHRDuration', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): double ns3::LrWpanPhy::GetPhySymbolsPerOctet() const [member function]
+    cls.add_method('GetPhySymbolsPerOctet', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): int64_t ns3::LrWpanPhy::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanSpectrumSignalParameters_methods(root_module, cls):
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters(ns3::LrWpanSpectrumSignalParameters const & p) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanSpectrumSignalParameters const &', 'p')])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumSignalParameters> ns3::LrWpanSpectrumSignalParameters::Copy() [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::SpectrumSignalParameters >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::packetBurst [variable]
+    cls.add_instance_attribute('packetBurst', 'ns3::Ptr< ns3::PacketBurst >', is_const=False)
+    return
+
+def register_Ns3Mac16AddressChecker_methods(root_module, cls):
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker::Mac16AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker::Mac16AddressChecker(ns3::Mac16AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Mac16AddressValue_methods(root_module, cls):
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue(ns3::Mac16AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16AddressValue const &', 'arg0')])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue(ns3::Mac16Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Mac16Address const &', 'value')])
+    ## mac16-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Mac16AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## mac16-address.h (module 'network'): bool ns3::Mac16AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## mac16-address.h (module 'network'): ns3::Mac16Address ns3::Mac16AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## mac16-address.h (module 'network'): std::string ns3::Mac16AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## mac16-address.h (module 'network'): void ns3::Mac16AddressValue::Set(ns3::Mac16Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Mac16Address const &', 'value')])
+    return
+
+def register_Ns3Mac64AddressChecker_methods(root_module, cls):
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker::Mac64AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker::Mac64AddressChecker(ns3::Mac64AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Mac64AddressValue_methods(root_module, cls):
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue(ns3::Mac64AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64AddressValue const &', 'arg0')])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue(ns3::Mac64Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Mac64Address const &', 'value')])
+    ## mac64-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Mac64AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## mac64-address.h (module 'network'): bool ns3::Mac64AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## mac64-address.h (module 'network'): ns3::Mac64Address ns3::Mac64AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## mac64-address.h (module 'network'): std::string ns3::Mac64AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## mac64-address.h (module 'network'): void ns3::Mac64AddressValue::Set(ns3::Mac64Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Mac64Address const &', 'value')])
+    return
+
+def register_Ns3NetDevice_methods(root_module, cls):
+    ## net-device.h (module 'network'): ns3::NetDevice::NetDevice() [constructor]
+    cls.add_constructor([])
+    ## net-device.h (module 'network'): ns3::NetDevice::NetDevice(ns3::NetDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NetDevice const &', 'arg0')])
+    ## net-device.h (module 'network'): void ns3::NetDevice::AddLinkChangeCallback(ns3::Callback<void,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> callback) [member function]
+    cls.add_method('AddLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Ptr<ns3::Channel> ns3::NetDevice::GetChannel() const [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): uint32_t ns3::NetDevice::GetIfIndex() const [member function]
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): uint16_t ns3::NetDevice::GetMtu() const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Ptr<ns3::Node> ns3::NetDevice::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): static ns3::TypeId ns3::NetDevice::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsBridge() const [member function]
+    cls.add_method('IsBridge', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsLinkUp() const [member function]
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsPointToPoint() const [member function]
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::NeedsArp() const [member function]
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetAddress(ns3::Address address) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetIfIndex(uint32_t const index) [member function]
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t const', 'index')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SetMtu(uint16_t const mtu) [member function]
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t const', 'mtu')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetPromiscReceiveCallback(ns3::Callback<bool,ns3::Ptr<ns3::NetDevice>,ns3::Ptr<const ns3::Packet>,short unsigned int,const ns3::Address&,const ns3::Address&,ns3::NetDevice::PacketType,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, short unsigned int, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SupportsSendFrom() const [member function]
+    cls.add_method('SupportsSendFrom', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3NixVector_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
+    cls.add_constructor([])
+    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector(ns3::NixVector const & o) [copy constructor]
+    cls.add_constructor([param('ns3::NixVector const &', 'o')])
+    ## nix-vector.h (module 'network'): void ns3::NixVector::AddNeighborIndex(uint32_t newBits, uint32_t numberOfBits) [member function]
+    cls.add_method('AddNeighborIndex', 
+                   'void', 
+                   [param('uint32_t', 'newBits'), param('uint32_t', 'numberOfBits')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::BitCount(uint32_t numberOfNeighbors) const [member function]
+    cls.add_method('BitCount', 
+                   'uint32_t', 
+                   [param('uint32_t', 'numberOfNeighbors')], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::NixVector::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::NixVector >', 
+                   [], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Deserialize(uint32_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint32_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::ExtractNeighborIndex(uint32_t numberOfBits) [member function]
+    cls.add_method('ExtractNeighborIndex', 
+                   'uint32_t', 
+                   [param('uint32_t', 'numberOfBits')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetRemainingBits() [member function]
+    cls.add_method('GetRemainingBits', 
+                   'uint32_t', 
+                   [])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Serialize(uint32_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint32_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3Node_methods(root_module, cls):
+    ## node.h (module 'network'): ns3::Node::Node(ns3::Node const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Node const &', 'arg0')])
+    ## node.h (module 'network'): ns3::Node::Node() [constructor]
+    cls.add_constructor([])
+    ## node.h (module 'network'): ns3::Node::Node(uint32_t systemId) [constructor]
+    cls.add_constructor([param('uint32_t', 'systemId')])
+    ## node.h (module 'network'): uint32_t ns3::Node::AddApplication(ns3::Ptr<ns3::Application> application) [member function]
+    cls.add_method('AddApplication', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::Application >', 'application')])
+    ## node.h (module 'network'): uint32_t ns3::Node::AddDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddDevice', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    ## node.h (module 'network'): static bool ns3::Node::ChecksumEnabled() [member function]
+    cls.add_method('ChecksumEnabled', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## node.h (module 'network'): ns3::Ptr<ns3::Application> ns3::Node::GetApplication(uint32_t index) const [member function]
+    cls.add_method('GetApplication', 
+                   'ns3::Ptr< ns3::Application >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
+    ## node.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::Node::GetDevice(uint32_t index) const [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetId() const [member function]
+    cls.add_method('GetId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetNApplications() const [member function]
+    cls.add_method('GetNApplications', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetNDevices() const [member function]
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetSystemId() const [member function]
+    cls.add_method('GetSystemId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): static ns3::TypeId ns3::Node::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## node.h (module 'network'): void ns3::Node::RegisterDeviceAdditionListener(ns3::Callback<void,ns3::Ptr<ns3::NetDevice>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> listener) [member function]
+    cls.add_method('RegisterDeviceAdditionListener', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'listener')])
+    ## node.h (module 'network'): void ns3::Node::RegisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> handler, uint16_t protocolType, ns3::Ptr<ns3::NetDevice> device, bool promiscuous=false) [member function]
+    cls.add_method('RegisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'handler'), param('uint16_t', 'protocolType'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'promiscuous', default_value='false')])
+    ## node.h (module 'network'): void ns3::Node::UnregisterDeviceAdditionListener(ns3::Callback<void,ns3::Ptr<ns3::NetDevice>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> listener) [member function]
+    cls.add_method('UnregisterDeviceAdditionListener', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'listener')])
+    ## node.h (module 'network'): void ns3::Node::UnregisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> handler) [member function]
+    cls.add_method('UnregisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'handler')])
+    ## node.h (module 'network'): void ns3::Node::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## node.h (module 'network'): void ns3::Node::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
+    return
+
+def register_Ns3ObjectFactoryValue_methods(root_module, cls):
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
+    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
+    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::ObjectFactory', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::ObjectFactory const &', 'value')])
+    return
+
+def register_Ns3OutputStreamWrapper_methods(root_module, cls):
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(ns3::OutputStreamWrapper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::OutputStreamWrapper const &', 'arg0')])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(std::string filename, std::_Ios_Openmode filemode) [constructor]
+    cls.add_constructor([param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode')])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(std::ostream * os) [constructor]
+    cls.add_constructor([param('std::ostream *', 'os')])
+    ## output-stream-wrapper.h (module 'network'): std::ostream * ns3::OutputStreamWrapper::GetStream() [member function]
+    cls.add_method('GetStream', 
+                   'std::ostream *', 
+                   [])
+    return
+
+def register_Ns3Packet_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## packet.h (module 'network'): ns3::Packet::Packet() [constructor]
+    cls.add_constructor([])
+    ## packet.h (module 'network'): ns3::Packet::Packet(ns3::Packet const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Packet const &', 'o')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint32_t size) [constructor]
+    cls.add_constructor([param('uint32_t', 'size')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size, bool magic) [constructor]
+    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size'), param('bool', 'magic')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
+    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::AddAtEnd(ns3::Ptr<const ns3::Packet> packet) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## packet.h (module 'network'): void ns3::Packet::AddByteTag(ns3::Tag const & tag) const [member function]
+    cls.add_method('AddByteTag', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::AddHeader(ns3::Header const & header) [member function]
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header')])
+    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Tag const & tag) const [member function]
+    cls.add_method('AddPacketTag', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
+    cls.add_method('AddPaddingAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::AddTrailer(ns3::Trailer const & trailer) [member function]
+    cls.add_method('AddTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer')])
+    ## packet.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::Packet::BeginItem() const [member function]
+    cls.add_method('BeginItem', 
+                   'ns3::PacketMetadata::ItemIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::CopyData(uint8_t * buffer, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::CopyData(std::ostream * os, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'void', 
+                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
+    ## packet.h (module 'network'): static void ns3::Packet::EnableChecking() [member function]
+    cls.add_method('EnableChecking', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet.h (module 'network'): static void ns3::Packet::EnablePrinting() [member function]
+    cls.add_method('EnablePrinting', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet.h (module 'network'): bool ns3::Packet::FindFirstMatchingByteTag(ns3::Tag & tag) const [member function]
+    cls.add_method('FindFirstMatchingByteTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::ByteTagIterator ns3::Packet::GetByteTagIterator() const [member function]
+    cls.add_method('GetByteTagIterator', 
+                   'ns3::ByteTagIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::Packet::GetNixVector() const [member function]
+    cls.add_method('GetNixVector', 
+                   'ns3::Ptr< ns3::NixVector >', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::PacketTagIterator ns3::Packet::GetPacketTagIterator() const [member function]
+    cls.add_method('GetPacketTagIterator', 
+                   'ns3::PacketTagIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint64_t ns3::Packet::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint8_t const * ns3::Packet::PeekData() const [member function]
+    cls.add_method('PeekData', 
+                   'uint8_t const *', 
+                   [], 
+                   deprecated=True, is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header) const [member function]
+    cls.add_method('PeekHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header &', 'header')], 
+                   is_const=True)
+    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
+    cls.add_method('PeekPacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
+    cls.add_method('PeekTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer &', 'trailer')])
+    ## packet.h (module 'network'): void ns3::Packet::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::PrintByteTags(std::ostream & os) const [member function]
+    cls.add_method('PrintByteTags', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::PrintPacketTags(std::ostream & os) const [member function]
+    cls.add_method('PrintPacketTags', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAllByteTags() [member function]
+    cls.add_method('RemoveAllByteTags', 
+                   'void', 
+                   [])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAllPacketTags() [member function]
+    cls.add_method('RemoveAllPacketTags', 
+                   'void', 
+                   [])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAtEnd(uint32_t size) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAtStart(uint32_t size) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header) [member function]
+    cls.add_method('RemoveHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header &', 'header')])
+    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
+    cls.add_method('RemovePacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
+    cls.add_method('RemoveTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer &', 'trailer')])
+    ## packet.h (module 'network'): bool ns3::Packet::ReplacePacketTag(ns3::Tag & tag) [member function]
+    cls.add_method('ReplacePacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
+    cls.add_method('SetNixVector', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
+    return
+
+def register_Ns3TimeValue_methods(root_module, cls):
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
+    cls.add_constructor([])
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
+    cls.add_constructor([param('ns3::Time const &', 'value')])
+    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Time const &', 'value')])
+    return
+
+def register_Ns3TypeIdChecker_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker(ns3::TypeIdChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeIdChecker const &', 'arg0')])
+    return
+
+def register_Ns3TypeIdValue_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeIdValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeIdValue const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
+    cls.add_constructor([param('ns3::TypeId const &', 'value')])
+    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TypeIdValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## type-id.h (module 'core'): bool ns3::TypeIdValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeIdValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeIdValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## type-id.h (module 'core'): void ns3::TypeIdValue::Set(ns3::TypeId const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::TypeId const &', 'value')])
+    return
+
+def register_Ns3AddressChecker_methods(root_module, cls):
+    ## address.h (module 'network'): ns3::AddressChecker::AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::AddressChecker::AddressChecker(ns3::AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3AddressValue_methods(root_module, cls):
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue(ns3::AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AddressValue const &', 'arg0')])
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue(ns3::Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Address const &', 'value')])
+    ## address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## address.h (module 'network'): bool ns3::AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## address.h (module 'network'): ns3::Address ns3::AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): std::string ns3::AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## address.h (module 'network'): void ns3::AddressValue::Set(ns3::Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Address const &', 'value')])
+    return
+
+def register_Ns3LrWpanNetDevice_methods(root_module, cls):
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice::LrWpanNetDevice(ns3::LrWpanNetDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanNetDevice const &', 'arg0')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice::LrWpanNetDevice() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::AddLinkChangeCallback(ns3::Callback<void,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> callback) [member function]
+    cls.add_method('AddLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): int64_t ns3::LrWpanNetDevice::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::Channel> ns3::LrWpanNetDevice::GetChannel() const [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanCsmaCa> ns3::LrWpanNetDevice::GetCsmaCa() const [member function]
+    cls.add_method('GetCsmaCa', 
+                   'ns3::Ptr< ns3::LrWpanCsmaCa >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): uint32_t ns3::LrWpanNetDevice::GetIfIndex() const [member function]
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanMac> ns3::LrWpanNetDevice::GetMac() const [member function]
+    cls.add_method('GetMac', 
+                   'ns3::Ptr< ns3::LrWpanMac >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): uint16_t ns3::LrWpanNetDevice::GetMtu() const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::Node> ns3::LrWpanNetDevice::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanPhy> ns3::LrWpanNetDevice::GetPhy() const [member function]
+    cls.add_method('GetPhy', 
+                   'ns3::Ptr< ns3::LrWpanPhy >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanNetDevice::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsBridge() const [member function]
+    cls.add_method('IsBridge', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsLinkUp() const [member function]
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsPointToPoint() const [member function]
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::McpsDataIndication(ns3::McpsDataIndicationParams params, ns3::Ptr<ns3::Packet> pkt) [member function]
+    cls.add_method('McpsDataIndication', 
+                   'void', 
+                   [param('ns3::McpsDataIndicationParams', 'params'), param('ns3::Ptr< ns3::Packet >', 'pkt')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::NeedsArp() const [member function]
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetAddress(ns3::Address address) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'address')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetChannel(ns3::Ptr<ns3::SpectrumChannel> channel) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'channel')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetCsmaCa(ns3::Ptr<ns3::LrWpanCsmaCa> csmaca) [member function]
+    cls.add_method('SetCsmaCa', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanCsmaCa >', 'csmaca')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetIfIndex(uint32_t const index) [member function]
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t const', 'index')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetMac(ns3::Ptr<ns3::LrWpanMac> mac) [member function]
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanMac >', 'mac')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SetMtu(uint16_t const mtu) [member function]
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t const', 'mtu')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetPhy(ns3::Ptr<ns3::LrWpanPhy> phy) [member function]
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool,ns3::Ptr<ns3::NetDevice>,ns3::Ptr<const ns3::Packet>,short unsigned int,const ns3::Address&,const ns3::Address&,ns3::NetDevice::PacketType,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, short unsigned int, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SupportsSendFrom() const [member function]
+    cls.add_method('SupportsSendFrom', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3HashImplementation_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation::Implementation(ns3::Hash::Implementation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Implementation const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation::Implementation() [constructor]
+    cls.add_constructor([])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Implementation::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## hash-function.h (module 'core'): uint64_t ns3::Hash::Implementation::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Implementation::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3HashFunctionFnv1a_methods(root_module, cls):
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a::Fnv1a(ns3::Hash::Function::Fnv1a const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Fnv1a const &', 'arg0')])
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a::Fnv1a() [constructor]
+    cls.add_constructor([])
+    ## hash-fnv.h (module 'core'): uint32_t ns3::Hash::Function::Fnv1a::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-fnv.h (module 'core'): uint64_t ns3::Hash::Function::Fnv1a::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-fnv.h (module 'core'): void ns3::Hash::Function::Fnv1a::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionHash32_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32::Hash32(ns3::Hash::Function::Hash32 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Hash32 const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32::Hash32(ns3::Hash::Hash32Function_ptr hp) [constructor]
+    cls.add_constructor([param('ns3::Hash::Hash32Function_ptr', 'hp')])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Function::Hash32::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Function::Hash32::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionHash64_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64::Hash64(ns3::Hash::Function::Hash64 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Hash64 const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64::Hash64(ns3::Hash::Hash64Function_ptr hp) [constructor]
+    cls.add_constructor([param('ns3::Hash::Hash64Function_ptr', 'hp')])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Function::Hash64::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): uint64_t ns3::Hash::Function::Hash64::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Function::Hash64::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionMurmur3_methods(root_module, cls):
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3::Murmur3(ns3::Hash::Function::Murmur3 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Murmur3 const &', 'arg0')])
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3::Murmur3() [constructor]
+    cls.add_constructor([])
+    ## hash-murmur3.h (module 'core'): uint32_t ns3::Hash::Function::Murmur3::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-murmur3.h (module 'core'): uint64_t ns3::Hash::Function::Murmur3::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-murmur3.h (module 'core'): void ns3::Hash::Function::Murmur3::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_Hash(module.get_submodule('Hash'), root_module)
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_Hash(module, root_module):
+    register_functions_ns3_Hash_Function(module.get_submodule('Function'), root_module)
+    return
+
+def register_functions_ns3_Hash_Function(module, root_module):
+    return
+
+def main():
+    out = FileCodeSink(sys.stdout)
+    root_module = module_init()
+    register_types(root_module)
+    register_methods(root_module)
+    register_functions(root_module)
+    root_module.generate(out)
+
+if __name__ == '__main__':
+    main()
+
diff -Naur ns-3.19/src/lr-wpan/bindings/modulegen__gcc_LP64.py ns-3.20/src/lr-wpan/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/lr-wpan/bindings/modulegen__gcc_LP64.py	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.892995969 -0700
@@ -0,0 +1,5861 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+
+import pybindgen.settings
+import warnings
+
+class ErrorHandler(pybindgen.settings.ErrorHandler):
+    def handle_error(self, wrapper, exception, traceback_):
+        warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
+        return True
+pybindgen.settings.error_handler = ErrorHandler()
+
+
+import sys
+
+def module_init():
+    root_module = Module('ns.lr_wpan', cpp_namespace='::ns3')
+    return root_module
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyEnumeration [enumeration]
+    module.add_enum('LrWpanPhyEnumeration', ['IEEE_802_15_4_PHY_BUSY', 'IEEE_802_15_4_PHY_BUSY_RX', 'IEEE_802_15_4_PHY_BUSY_TX', 'IEEE_802_15_4_PHY_FORCE_TRX_OFF', 'IEEE_802_15_4_PHY_IDLE', 'IEEE_802_15_4_PHY_INVALID_PARAMETER', 'IEEE_802_15_4_PHY_RX_ON', 'IEEE_802_15_4_PHY_SUCCESS', 'IEEE_802_15_4_PHY_TRX_OFF', 'IEEE_802_15_4_PHY_TX_ON', 'IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE', 'IEEE_802_15_4_PHY_READ_ONLY', 'IEEE_802_15_4_PHY_UNSPECIFIED'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanTxOption [enumeration]
+    module.add_enum('LrWpanTxOption', ['TX_OPTION_NONE', 'TX_OPTION_ACK', 'TX_OPTION_GTS', 'TX_OPTION_INDIRECT'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMcpsDataConfirmStatus [enumeration]
+    module.add_enum('LrWpanMcpsDataConfirmStatus', ['IEEE_802_15_4_SUCCESS', 'IEEE_802_15_4_TRANSACTION_OVERFLOW', 'IEEE_802_15_4_TRANSACTION_EXPIRED', 'IEEE_802_15_4_CHANNEL_ACCESS_FAILURE', 'IEEE_802_15_4_INVALID_ADDRESS', 'IEEE_802_15_4_INVALID_GTS', 'IEEE_802_15_4_NO_ACK', 'IEEE_802_15_4_COUNTER_ERROR', 'IEEE_802_15_4_FRAME_TOO_LONG', 'IEEE_802_15_4_UNAVAILABLE_KEY', 'IEEE_802_15_4_UNSUPPORTED_SECURITY', 'IEEE_802_15_4_INVALID_PARAMETER'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPibAttributeIdentifier [enumeration]
+    module.add_enum('LrWpanPibAttributeIdentifier', ['phyCurrentChannel', 'phyChannelsSupported', 'phyTransmitPower', 'phyCCAMode', 'phyCurrentPage', 'phyMaxFrameDuration', 'phySHRDuration', 'phySymbolsPerOctet'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMacState [enumeration]
+    module.add_enum('LrWpanMacState', ['MAC_IDLE', 'MAC_CSMA', 'MAC_SENDING', 'MAC_ACK_PENDING', 'CHANNEL_ACCESS_FAILURE', 'CHANNEL_IDLE', 'SET_PHY_TX_ON'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAssociationStatus [enumeration]
+    module.add_enum('LrWpanAssociationStatus', ['ASSOCIATED', 'PAN_AT_CAPACITY', 'PAN_ACCESS_DENIED', 'ASSOCIATED_WITHOUT_ADDRESS', 'DISASSOCIATED'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyOption [enumeration]
+    module.add_enum('LrWpanPhyOption', ['IEEE_802_15_4_868MHZ_BPSK', 'IEEE_802_15_4_915MHZ_BPSK', 'IEEE_802_15_4_868MHZ_ASK', 'IEEE_802_15_4_915MHZ_ASK', 'IEEE_802_15_4_868MHZ_OQPSK', 'IEEE_802_15_4_915MHZ_OQPSK', 'IEEE_802_15_4_2_4GHZ_OQPSK', 'IEEE_802_15_4_INVALID_PHY_OPTION'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAddressMode [enumeration]
+    module.add_enum('LrWpanAddressMode', ['NO_PANID_ADDR', 'ADDR_MODE_RESERVED', 'SHORT_ADDR', 'EXT_ADDR'])
+    ## address.h (module 'network'): ns3::Address [class]
+    module.add_class('Address', import_from_module='ns.network')
+    ## address.h (module 'network'): ns3::Address::MaxSize_e [enumeration]
+    module.add_enum('MaxSize_e', ['MAX_SIZE'], outer_class=root_module['ns3::Address'], import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper [class]
+    module.add_class('AsciiTraceHelper', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice [class]
+    module.add_class('AsciiTraceHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList [class]
+    module.add_class('AttributeConstructionList', import_from_module='ns.core')
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item [struct]
+    module.add_class('Item', import_from_module='ns.core', outer_class=root_module['ns3::AttributeConstructionList'])
+    ## buffer.h (module 'network'): ns3::Buffer [class]
+    module.add_class('Buffer', import_from_module='ns.network')
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator [class]
+    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::Buffer'])
+    ## packet.h (module 'network'): ns3::ByteTagIterator [class]
+    module.add_class('ByteTagIterator', import_from_module='ns.network')
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item [class]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagIterator'])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList [class]
+    module.add_class('ByteTagList', import_from_module='ns.network')
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator [class]
+    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList'])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item [struct]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
+    ## callback.h (module 'core'): ns3::CallbackBase [class]
+    module.add_class('CallbackBase', import_from_module='ns.core')
+    ## event-id.h (module 'core'): ns3::EventId [class]
+    module.add_class('EventId', import_from_module='ns.core')
+    ## hash.h (module 'core'): ns3::Hasher [class]
+    module.add_class('Hasher', import_from_module='ns.core')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
+    module.add_class('Ipv4Address', import_from_module='ns.network')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
+    root_module['ns3::Ipv4Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask [class]
+    module.add_class('Ipv4Mask', import_from_module='ns.network')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
+    module.add_class('Ipv6Address', import_from_module='ns.network')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
+    root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
+    module.add_class('Ipv6Prefix', import_from_module='ns.network')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower [struct]
+    module.add_class('LrWpanEdPower')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates [struct]
+    module.add_class('LrWpanPhyDataAndSymbolRates')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes [struct]
+    module.add_class('LrWpanPhyPibAttributes')
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber [struct]
+    module.add_class('LrWpanPhyPpduHeaderSymbolNumber')
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper [class]
+    module.add_class('LrWpanSpectrumValueHelper')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address [class]
+    module.add_class('Mac16Address', import_from_module='ns.network')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address [class]
+    root_module['ns3::Mac16Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address [class]
+    module.add_class('Mac64Address', import_from_module='ns.network')
+    ## mac64-address.h (module 'network'): ns3::Mac64Address [class]
+    root_module['ns3::Mac64Address'].implicitly_converts_to(root_module['ns3::Address'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams [struct]
+    module.add_class('McpsDataConfirmParams')
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams [struct]
+    module.add_class('McpsDataIndicationParams')
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams [struct]
+    module.add_class('McpsDataRequestParams')
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer [class]
+    module.add_class('NetDeviceContainer', import_from_module='ns.network')
+    ## node-container.h (module 'network'): ns3::NodeContainer [class]
+    module.add_class('NodeContainer', import_from_module='ns.network')
+    ## object-base.h (module 'core'): ns3::ObjectBase [class]
+    module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
+    ## object.h (module 'core'): ns3::ObjectDeleter [struct]
+    module.add_class('ObjectDeleter', import_from_module='ns.core')
+    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
+    module.add_class('ObjectFactory', import_from_module='ns.core')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
+    module.add_class('PacketMetadata', import_from_module='ns.network')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [enumeration]
+    module.add_enum('', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator [class]
+    module.add_class('ItemIterator', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
+    ## packet.h (module 'network'): ns3::PacketTagIterator [class]
+    module.add_class('PacketTagIterator', import_from_module='ns.network')
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item [class]
+    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagIterator'])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList [class]
+    module.add_class('PacketTagList', import_from_module='ns.network')
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData [struct]
+    module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData_e [enumeration]
+    module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
+    ## pcap-file.h (module 'network'): ns3::PcapFile [class]
+    module.add_class('PcapFile', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
+    module.add_class('PcapHelper', import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
+    module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char> [class]
+    module.add_class('SequenceNumber8', import_from_module='ns.network')
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simulator.h (module 'core'): ns3::Simulator [class]
+    module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
+    ## tag.h (module 'network'): ns3::Tag [class]
+    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
+    module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId [class]
+    module.add_class('TypeId', import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
+    module.add_enum('AttributeFlag', ['ATTR_GET', 'ATTR_SET', 'ATTR_CONSTRUCT', 'ATTR_SGC'], outer_class=root_module['ns3::TypeId'], import_from_module='ns.core')
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation [struct]
+    module.add_class('AttributeInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation [struct]
+    module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
+    ## empty.h (module 'core'): ns3::empty [class]
+    module.add_class('empty', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
+    module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
+    ## chunk.h (module 'network'): ns3::Chunk [class]
+    module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
+    ## header.h (module 'network'): ns3::Header [class]
+    module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::LrWpanHelper [class]
+    module.add_class('LrWpanHelper', parent=[root_module['ns3::PcapHelperForDevice'], root_module['ns3::AsciiTraceHelperForDevice']])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag [class]
+    module.add_class('LrWpanLqiTag', parent=root_module['ns3::Tag'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader [class]
+    module.add_class('LrWpanMacHeader', parent=root_module['ns3::Header'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacType [enumeration]
+    module.add_enum('LrWpanMacType', ['LRWPAN_MAC_BEACON', 'LRWPAN_MAC_DATA', 'LRWPAN_MAC_ACKNOWLEDGMENT', 'LRWPAN_MAC_COMMAND', 'LRWPAN_MAC_RESERVED'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::AddrModeType [enumeration]
+    module.add_enum('AddrModeType', ['NOADDR', 'RESADDR', 'SHORTADDR', 'EXTADDR'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::KeyIdModeType [enumeration]
+    module.add_enum('KeyIdModeType', ['IMPLICIT', 'NOKEYSOURCE', 'SHORTKEYSOURCE', 'LONGKEYSOURCE'], outer_class=root_module['ns3::LrWpanMacHeader'])
+    ## object.h (module 'core'): ns3::Object [class]
+    module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
+    module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
+    ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper [class]
+    module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeChecker', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeChecker>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Hash::Implementation', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Hash::Implementation>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LrWpanInterferenceHelper', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::OutputStreamWrapper', 'ns3::empty', 'ns3::DefaultDeleter<ns3::OutputStreamWrapper>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Packet', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Packet>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::SpectrumSignalParameters', 'ns3::empty', 'ns3::DefaultDeleter<ns3::SpectrumSignalParameters>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::TraceSourceAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::TraceSourceAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## spectrum-phy.h (module 'spectrum'): ns3::SpectrumPhy [class]
+    module.add_class('SpectrumPhy', import_from_module='ns.spectrum', parent=root_module['ns3::Object'])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters [struct]
+    module.add_class('SpectrumSignalParameters', import_from_module='ns.spectrum', parent=root_module['ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >'])
+    ## nstime.h (module 'core'): ns3::Time [class]
+    module.add_class('Time', import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
+    module.add_enum('Unit', ['Y', 'D', 'H', 'MIN', 'S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::Time [class]
+    root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
+    module.add_class('TraceSourceAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    ## trailer.h (module 'network'): ns3::Trailer [class]
+    module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
+    module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
+    ## attribute.h (module 'core'): ns3::AttributeChecker [class]
+    module.add_class('AttributeChecker', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
+    ## attribute.h (module 'core'): ns3::AttributeValue [class]
+    module.add_class('AttributeValue', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
+    ## callback.h (module 'core'): ns3::CallbackChecker [class]
+    module.add_class('CallbackChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## callback.h (module 'core'): ns3::CallbackImplBase [class]
+    module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
+    ## callback.h (module 'core'): ns3::CallbackValue [class]
+    module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
+    module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## event-impl.h (module 'core'): ns3::EventImpl [class]
+    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
+    module.add_class('Ipv4AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue [class]
+    module.add_class('Ipv4AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker [class]
+    module.add_class('Ipv4MaskChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue [class]
+    module.add_class('Ipv4MaskValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker [class]
+    module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
+    module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
+    module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
+    module.add_class('Ipv6PrefixValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::LrWpanCsmaCa [class]
+    module.add_class('LrWpanCsmaCa', parent=root_module['ns3::Object'])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel [class]
+    module.add_class('LrWpanErrorModel', parent=root_module['ns3::Object'])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::LrWpanInterferenceHelper [class]
+    module.add_class('LrWpanInterferenceHelper', parent=root_module['ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >'])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac [class]
+    module.add_class('LrWpanMac', parent=root_module['ns3::Object'])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer [class]
+    module.add_class('LrWpanMacTrailer', parent=root_module['ns3::Trailer'])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy [class]
+    module.add_class('LrWpanPhy', parent=root_module['ns3::SpectrumPhy'])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters [struct]
+    module.add_class('LrWpanSpectrumSignalParameters', parent=root_module['ns3::SpectrumSignalParameters'])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker [class]
+    module.add_class('Mac16AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue [class]
+    module.add_class('Mac16AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker [class]
+    module.add_class('Mac64AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue [class]
+    module.add_class('Mac64AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## net-device.h (module 'network'): ns3::NetDevice [class]
+    module.add_class('NetDevice', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## net-device.h (module 'network'): ns3::NetDevice::PacketType [enumeration]
+    module.add_enum('PacketType', ['PACKET_HOST', 'NS3_PACKET_HOST', 'PACKET_BROADCAST', 'NS3_PACKET_BROADCAST', 'PACKET_MULTICAST', 'NS3_PACKET_MULTICAST', 'PACKET_OTHERHOST', 'NS3_PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'], import_from_module='ns.network')
+    ## nix-vector.h (module 'network'): ns3::NixVector [class]
+    module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
+    ## node.h (module 'network'): ns3::Node [class]
+    module.add_class('Node', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
+    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
+    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper [class]
+    module.add_class('OutputStreamWrapper', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
+    ## packet.h (module 'network'): ns3::Packet [class]
+    module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    ## nstime.h (module 'core'): ns3::TimeValue [class]
+    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
+    module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## type-id.h (module 'core'): ns3::TypeIdValue [class]
+    module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## address.h (module 'network'): ns3::AddressChecker [class]
+    module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+    ## address.h (module 'network'): ns3::AddressValue [class]
+    module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice [class]
+    module.add_class('LrWpanNetDevice', parent=root_module['ns3::NetDevice'])
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeCcaConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeCcaConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeCcaConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeEdConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeEdConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeEdConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PdDataIndicationCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PdDataIndicationCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned int, ns3::Ptr< ns3::Packet >, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PdDataIndicationCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LrWpanMacStateCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LrWpanMacStateCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LrWpanMacStateCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeGetAttributeConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeGetAttributeConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::LrWpanPhyPibAttributes *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeGetAttributeConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PdDataConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PdDataConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PdDataConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::McpsDataIndicationCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::McpsDataIndicationCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataIndicationParams, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::McpsDataIndicationCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::McpsDataConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::McpsDataConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::McpsDataConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeSetAttributeConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeSetAttributeConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeSetAttributeConfirmCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::PlmeSetTRXStateConfirmCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::PlmeSetTRXStateConfirmCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::PlmeSetTRXStateConfirmCallback&')
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace Hash
+    
+    nested_module = module.add_cpp_namespace('Hash')
+    register_types_ns3_Hash(nested_module)
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_Hash(module):
+    root_module = module.get_root()
+    
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
+    module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    
+    ## Register a nested module for the namespace Function
+    
+    nested_module = module.add_cpp_namespace('Function')
+    register_types_ns3_Hash_Function(nested_module)
+    
+
+def register_types_ns3_Hash_Function(module):
+    root_module = module.get_root()
+    
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a [class]
+    module.add_class('Fnv1a', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32 [class]
+    module.add_class('Hash32', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64 [class]
+    module.add_class('Hash64', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3 [class]
+    module.add_class('Murmur3', import_from_module='ns.core', parent=root_module['ns3::Hash::Implementation'])
+
+def register_methods(root_module):
+    register_Ns3Address_methods(root_module, root_module['ns3::Address'])
+    register_Ns3AsciiTraceHelper_methods(root_module, root_module['ns3::AsciiTraceHelper'])
+    register_Ns3AsciiTraceHelperForDevice_methods(root_module, root_module['ns3::AsciiTraceHelperForDevice'])
+    register_Ns3AttributeConstructionList_methods(root_module, root_module['ns3::AttributeConstructionList'])
+    register_Ns3AttributeConstructionListItem_methods(root_module, root_module['ns3::AttributeConstructionList::Item'])
+    register_Ns3Buffer_methods(root_module, root_module['ns3::Buffer'])
+    register_Ns3BufferIterator_methods(root_module, root_module['ns3::Buffer::Iterator'])
+    register_Ns3ByteTagIterator_methods(root_module, root_module['ns3::ByteTagIterator'])
+    register_Ns3ByteTagIteratorItem_methods(root_module, root_module['ns3::ByteTagIterator::Item'])
+    register_Ns3ByteTagList_methods(root_module, root_module['ns3::ByteTagList'])
+    register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
+    register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
+    register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
+    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
+    register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
+    register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
+    register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
+    register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
+    register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
+    register_Ns3LrWpanEdPower_methods(root_module, root_module['ns3::LrWpanEdPower'])
+    register_Ns3LrWpanPhyDataAndSymbolRates_methods(root_module, root_module['ns3::LrWpanPhyDataAndSymbolRates'])
+    register_Ns3LrWpanPhyPibAttributes_methods(root_module, root_module['ns3::LrWpanPhyPibAttributes'])
+    register_Ns3LrWpanPhyPpduHeaderSymbolNumber_methods(root_module, root_module['ns3::LrWpanPhyPpduHeaderSymbolNumber'])
+    register_Ns3LrWpanSpectrumValueHelper_methods(root_module, root_module['ns3::LrWpanSpectrumValueHelper'])
+    register_Ns3Mac16Address_methods(root_module, root_module['ns3::Mac16Address'])
+    register_Ns3Mac64Address_methods(root_module, root_module['ns3::Mac64Address'])
+    register_Ns3McpsDataConfirmParams_methods(root_module, root_module['ns3::McpsDataConfirmParams'])
+    register_Ns3McpsDataIndicationParams_methods(root_module, root_module['ns3::McpsDataIndicationParams'])
+    register_Ns3McpsDataRequestParams_methods(root_module, root_module['ns3::McpsDataRequestParams'])
+    register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
+    register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
+    register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
+    register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
+    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
+    register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
+    register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
+    register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
+    register_Ns3PacketTagIterator_methods(root_module, root_module['ns3::PacketTagIterator'])
+    register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
+    register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
+    register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
+    register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
+    register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
+    register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
+    register_Ns3SequenceNumber8_methods(root_module, root_module['ns3::SequenceNumber8'])
+    register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
+    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
+    register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
+    register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
+    register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
+    register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
+    register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
+    register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
+    register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
+    register_Ns3Header_methods(root_module, root_module['ns3::Header'])
+    register_Ns3LrWpanHelper_methods(root_module, root_module['ns3::LrWpanHelper'])
+    register_Ns3LrWpanLqiTag_methods(root_module, root_module['ns3::LrWpanLqiTag'])
+    register_Ns3LrWpanMacHeader_methods(root_module, root_module['ns3::LrWpanMacHeader'])
+    register_Ns3Object_methods(root_module, root_module['ns3::Object'])
+    register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
+    register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
+    register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
+    register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
+    register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
+    register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
+    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
+    register_Ns3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >'])
+    register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
+    register_Ns3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >'])
+    register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    register_Ns3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >'])
+    register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    register_Ns3SpectrumPhy_methods(root_module, root_module['ns3::SpectrumPhy'])
+    register_Ns3SpectrumSignalParameters_methods(root_module, root_module['ns3::SpectrumSignalParameters'])
+    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
+    register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
+    register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
+    register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
+    register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
+    register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
+    register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
+    register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
+    register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+    register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
+    register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
+    register_Ns3Ipv4MaskChecker_methods(root_module, root_module['ns3::Ipv4MaskChecker'])
+    register_Ns3Ipv4MaskValue_methods(root_module, root_module['ns3::Ipv4MaskValue'])
+    register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
+    register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
+    register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
+    register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
+    register_Ns3LrWpanCsmaCa_methods(root_module, root_module['ns3::LrWpanCsmaCa'])
+    register_Ns3LrWpanErrorModel_methods(root_module, root_module['ns3::LrWpanErrorModel'])
+    register_Ns3LrWpanInterferenceHelper_methods(root_module, root_module['ns3::LrWpanInterferenceHelper'])
+    register_Ns3LrWpanMac_methods(root_module, root_module['ns3::LrWpanMac'])
+    register_Ns3LrWpanMacTrailer_methods(root_module, root_module['ns3::LrWpanMacTrailer'])
+    register_Ns3LrWpanPhy_methods(root_module, root_module['ns3::LrWpanPhy'])
+    register_Ns3LrWpanSpectrumSignalParameters_methods(root_module, root_module['ns3::LrWpanSpectrumSignalParameters'])
+    register_Ns3Mac16AddressChecker_methods(root_module, root_module['ns3::Mac16AddressChecker'])
+    register_Ns3Mac16AddressValue_methods(root_module, root_module['ns3::Mac16AddressValue'])
+    register_Ns3Mac64AddressChecker_methods(root_module, root_module['ns3::Mac64AddressChecker'])
+    register_Ns3Mac64AddressValue_methods(root_module, root_module['ns3::Mac64AddressValue'])
+    register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
+    register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
+    register_Ns3Node_methods(root_module, root_module['ns3::Node'])
+    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
+    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
+    register_Ns3OutputStreamWrapper_methods(root_module, root_module['ns3::OutputStreamWrapper'])
+    register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
+    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
+    register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
+    register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
+    register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
+    register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
+    register_Ns3LrWpanNetDevice_methods(root_module, root_module['ns3::LrWpanNetDevice'])
+    register_Ns3HashImplementation_methods(root_module, root_module['ns3::Hash::Implementation'])
+    register_Ns3HashFunctionFnv1a_methods(root_module, root_module['ns3::Hash::Function::Fnv1a'])
+    register_Ns3HashFunctionHash32_methods(root_module, root_module['ns3::Hash::Function::Hash32'])
+    register_Ns3HashFunctionHash64_methods(root_module, root_module['ns3::Hash::Function::Hash64'])
+    register_Ns3HashFunctionMurmur3_methods(root_module, root_module['ns3::Hash::Function::Murmur3'])
+    return
+
+def register_Ns3Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## address.h (module 'network'): ns3::Address::Address() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::Address::Address(uint8_t type, uint8_t const * buffer, uint8_t len) [constructor]
+    cls.add_constructor([param('uint8_t', 'type'), param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): ns3::Address::Address(ns3::Address const & address) [copy constructor]
+    cls.add_constructor([param('ns3::Address const &', 'address')])
+    ## address.h (module 'network'): bool ns3::Address::CheckCompatible(uint8_t type, uint8_t len) const [member function]
+    cls.add_method('CheckCompatible', 
+                   'bool', 
+                   [param('uint8_t', 'type'), param('uint8_t', 'len')], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyAllFrom(uint8_t const * buffer, uint8_t len) [member function]
+    cls.add_method('CopyAllFrom', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyAllTo(uint8_t * buffer, uint8_t len) const [member function]
+    cls.add_method('CopyAllTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint8_t', 'len')], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyFrom(uint8_t const * buffer, uint8_t len) [member function]
+    cls.add_method('CopyFrom', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
+    ## address.h (module 'network'): uint32_t ns3::Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## address.h (module 'network'): void ns3::Address::Deserialize(ns3::TagBuffer buffer) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')])
+    ## address.h (module 'network'): uint8_t ns3::Address::GetLength() const [member function]
+    cls.add_method('GetLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): uint32_t ns3::Address::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): bool ns3::Address::IsInvalid() const [member function]
+    cls.add_method('IsInvalid', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): bool ns3::Address::IsMatchingType(uint8_t type) const [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('uint8_t', 'type')], 
+                   is_const=True)
+    ## address.h (module 'network'): static uint8_t ns3::Address::Register() [member function]
+    cls.add_method('Register', 
+                   'uint8_t', 
+                   [], 
+                   is_static=True)
+    ## address.h (module 'network'): void ns3::Address::Serialize(ns3::TagBuffer buffer) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')], 
+                   is_const=True)
+    return
+
+def register_Ns3AsciiTraceHelper_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper(ns3::AsciiTraceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceHelper const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): ns3::Ptr<ns3::OutputStreamWrapper> ns3::AsciiTraceHelper::CreateFileStream(std::string filename, std::_Ios_Openmode filemode=std::ios_base::out) [member function]
+    cls.add_method('CreateFileStream', 
+                   'ns3::Ptr< ns3::OutputStreamWrapper >', 
+                   [param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode', default_value='std::ios_base::out')])
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDequeueSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDequeueSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDropSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultDropSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultEnqueueSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultEnqueueSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithContext(ns3::Ptr<ns3::OutputStreamWrapper> file, std::string context, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultReceiveSinkWithContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithoutContext(ns3::Ptr<ns3::OutputStreamWrapper> file, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('DefaultReceiveSinkWithoutContext', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')], 
+                   is_static=True)
+    ## trace-helper.h (module 'network'): std::string ns3::AsciiTraceHelper::GetFilenameFromDevice(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromDevice', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
+    ## trace-helper.h (module 'network'): std::string ns3::AsciiTraceHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromInterfacePair', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+    return
+
+def register_Ns3AsciiTraceHelperForDevice_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice(ns3::AsciiTraceHelperForDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AsciiTraceHelperForDevice const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename=false) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::Ptr<ns3::NetDevice> nd) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, std::string ndName, bool explicitFilename=false) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string ndName) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'ndName')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::NetDeviceContainer d) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::NetDeviceContainer d) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::NetDeviceContainer', 'd')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, ns3::NodeContainer n) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('ns3::NodeContainer', 'n')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'explicitFilename')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAscii(ns3::Ptr<ns3::OutputStreamWrapper> stream, uint32_t nodeid, uint32_t deviceid) [member function]
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiAll(std::string prefix) [member function]
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('std::string', 'prefix')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiAll(ns3::Ptr<ns3::OutputStreamWrapper> stream) [member function]
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')])
+    ## trace-helper.h (module 'network'): void ns3::AsciiTraceHelperForDevice::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename) [member function]
+    cls.add_method('EnableAsciiInternal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeConstructionList_methods(root_module, cls):
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList(ns3::AttributeConstructionList const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeConstructionList const &', 'arg0')])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList() [constructor]
+    cls.add_constructor([])
+    ## attribute-construction-list.h (module 'core'): void ns3::AttributeConstructionList::Add(std::string name, ns3::Ptr<ns3::AttributeChecker const> checker, ns3::Ptr<ns3::AttributeValue> value) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker'), param('ns3::Ptr< ns3::AttributeValue >', 'value')])
+    ## attribute-construction-list.h (module 'core'): std::_List_const_iterator<ns3::AttributeConstructionList::Item> ns3::AttributeConstructionList::Begin() const [member function]
+    cls.add_method('Begin', 
+                   'std::_List_const_iterator< ns3::AttributeConstructionList::Item >', 
+                   [], 
+                   is_const=True)
+    ## attribute-construction-list.h (module 'core'): std::_List_const_iterator<ns3::AttributeConstructionList::Item> ns3::AttributeConstructionList::End() const [member function]
+    cls.add_method('End', 
+                   'std::_List_const_iterator< ns3::AttributeConstructionList::Item >', 
+                   [], 
+                   is_const=True)
+    ## attribute-construction-list.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeConstructionList::Find(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('Find', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True)
+    return
+
+def register_Ns3AttributeConstructionListItem_methods(root_module, cls):
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item() [constructor]
+    cls.add_constructor([])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item(ns3::AttributeConstructionList::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeConstructionList::Item const &', 'arg0')])
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::checker [variable]
+    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::value [variable]
+    cls.add_instance_attribute('value', 'ns3::Ptr< ns3::AttributeValue >', is_const=False)
+    return
+
+def register_Ns3Buffer_methods(root_module, cls):
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer() [constructor]
+    cls.add_constructor([])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
+    cls.add_constructor([param('uint32_t', 'dataSize')])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize, bool initialize) [constructor]
+    cls.add_constructor([param('uint32_t', 'dataSize'), param('bool', 'initialize')])
+    ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Buffer const &', 'o')])
+    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtEnd(uint32_t end) [member function]
+    cls.add_method('AddAtEnd', 
+                   'bool', 
+                   [param('uint32_t', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::AddAtEnd(ns3::Buffer const & o) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Buffer const &', 'o')])
+    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtStart(uint32_t start) [member function]
+    cls.add_method('AddAtStart', 
+                   'bool', 
+                   [param('uint32_t', 'start')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::CopyData(std::ostream * os, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'void', 
+                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::CopyData(uint8_t * buffer, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFragment(uint32_t start, uint32_t length) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::Buffer', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFullCopy() const [member function]
+    cls.add_method('CreateFullCopy', 
+                   'ns3::Buffer', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::End() const [member function]
+    cls.add_method('End', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentEndOffset() const [member function]
+    cls.add_method('GetCurrentEndOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentStartOffset() const [member function]
+    cls.add_method('GetCurrentStartOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint8_t const * ns3::Buffer::PeekData() const [member function]
+    cls.add_method('PeekData', 
+                   'uint8_t const *', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtEnd(uint32_t end) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtStart(uint32_t start) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'start')])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3BufferIterator_methods(root_module, cls):
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
+    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator() [constructor]
+    cls.add_constructor([])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size) [member function]
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size')])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size, uint32_t initialChecksum) [member function]
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetDistanceFrom(ns3::Buffer::Iterator const & o) const [member function]
+    cls.add_method('GetDistanceFrom', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator const &', 'o')], 
+                   is_const=True)
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsEnd() const [member function]
+    cls.add_method('IsEnd', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsStart() const [member function]
+    cls.add_method('IsStart', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next() [member function]
+    cls.add_method('Next', 
+                   'void', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next(uint32_t delta) [member function]
+    cls.add_method('Next', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
+    cls.add_method('Prev', 
+                   'void', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev(uint32_t delta) [member function]
+    cls.add_method('Prev', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(uint8_t * buffer, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
+    cls.add_method('ReadLsbtohU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadLsbtohU32() [member function]
+    cls.add_method('ReadLsbtohU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadLsbtohU64() [member function]
+    cls.add_method('ReadLsbtohU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadNtohU16() [member function]
+    cls.add_method('ReadNtohU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadNtohU32() [member function]
+    cls.add_method('ReadNtohU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadNtohU64() [member function]
+    cls.add_method('ReadNtohU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadU16() [member function]
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
+    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadU32() [member function]
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
+    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadU64() [member function]
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::ReadU8() [member function]
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU16(uint16_t data) [member function]
+    cls.add_method('WriteHtolsbU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU32(uint32_t data) [member function]
+    cls.add_method('WriteHtolsbU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU64(uint64_t data) [member function]
+    cls.add_method('WriteHtolsbU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU16(uint16_t data) [member function]
+    cls.add_method('WriteHtonU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU32(uint32_t data) [member function]
+    cls.add_method('WriteHtonU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU64(uint64_t data) [member function]
+    cls.add_method('WriteHtonU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU16(uint16_t data) [member function]
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU32(uint32_t data) [member function]
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU64(uint64_t data) [member function]
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data, uint32_t len) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data'), param('uint32_t', 'len')])
+    return
+
+def register_Ns3ByteTagIterator_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagIterator const &', 'arg0')])
+    ## packet.h (module 'network'): bool ns3::ByteTagIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item ns3::ByteTagIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::ByteTagIterator::Item', 
+                   [])
+    return
+
+def register_Ns3ByteTagIteratorItem_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagIterator::Item const &', 'arg0')])
+    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetEnd() const [member function]
+    cls.add_method('GetEnd', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetStart() const [member function]
+    cls.add_method('GetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::ByteTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
+    cls.add_method('GetTag', 
+                   'void', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::TypeId ns3::ByteTagIterator::Item::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3ByteTagList_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList() [constructor]
+    cls.add_constructor([])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList const &', 'o')])
+    ## byte-tag-list.h (module 'network'): ns3::TagBuffer ns3::ByteTagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
+    cls.add_method('Add', 
+                   'ns3::TagBuffer', 
+                   [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::Add(ns3::ByteTagList const & o) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::ByteTagList const &', 'o')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtEnd(int32_t adjustment, int32_t appendOffset) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtStart(int32_t adjustment, int32_t prependOffset) [member function]
+    cls.add_method('AddAtStart', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator ns3::ByteTagList::Begin(int32_t offsetStart, int32_t offsetEnd) const [member function]
+    cls.add_method('Begin', 
+                   'ns3::ByteTagList::Iterator', 
+                   [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::RemoveAll() [member function]
+    cls.add_method('RemoveAll', 
+                   'void', 
+                   [])
+    return
+
+def register_Ns3ByteTagListIterator_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList::Iterator const &', 'arg0')])
+    ## byte-tag-list.h (module 'network'): uint32_t ns3::ByteTagList::Iterator::GetOffsetStart() const [member function]
+    cls.add_method('GetOffsetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): bool ns3::ByteTagList::Iterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item ns3::ByteTagList::Iterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::ByteTagList::Iterator::Item', 
+                   [])
+    return
+
+def register_Ns3ByteTagListIteratorItem_methods(root_module, cls):
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ByteTagList::Iterator::Item const &', 'arg0')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
+    cls.add_constructor([param('ns3::TagBuffer', 'buf')])
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::buf [variable]
+    cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::end [variable]
+    cls.add_instance_attribute('end', 'int32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::size [variable]
+    cls.add_instance_attribute('size', 'uint32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::start [variable]
+    cls.add_instance_attribute('start', 'int32_t', is_const=False)
+    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3CallbackBase_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
+    cls.add_method('GetImpl', 
+                   'ns3::Ptr< ns3::CallbackImplBase >', 
+                   [], 
+                   is_const=True)
+    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
+                        visibility='protected')
+    ## callback.h (module 'core'): static std::string ns3::CallbackBase::Demangle(std::string const & mangled) [member function]
+    cls.add_method('Demangle', 
+                   'std::string', 
+                   [param('std::string const &', 'mangled')], 
+                   is_static=True, visibility='protected')
+    return
+
+def register_Ns3EventId_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_comparison_operator('==')
+    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
+    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
+    cls.add_constructor([])
+    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
+    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
+    cls.add_method('GetContext', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
+    cls.add_method('GetTs', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
+    cls.add_method('IsRunning', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
+    cls.add_method('PeekEventImpl', 
+                   'ns3::EventImpl *', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3Hasher_methods(root_module, cls):
+    ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hasher const &', 'arg0')])
+    ## hash.h (module 'core'): ns3::Hasher::Hasher() [constructor]
+    cls.add_constructor([])
+    ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Ptr<ns3::Hash::Implementation> hp) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Hash::Implementation >', 'hp')])
+    ## hash.h (module 'core'): uint32_t ns3::Hasher::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')])
+    ## hash.h (module 'core'): uint32_t ns3::Hasher::GetHash32(std::string const s) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('std::string const', 's')])
+    ## hash.h (module 'core'): uint64_t ns3::Hasher::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')])
+    ## hash.h (module 'core'): uint64_t ns3::Hasher::GetHash64(std::string const s) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('std::string const', 's')])
+    ## hash.h (module 'core'): ns3::Hasher & ns3::Hasher::clear() [member function]
+    cls.add_method('clear', 
+                   'ns3::Hasher &', 
+                   [])
+    return
+
+def register_Ns3Ipv4Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(ns3::Ipv4Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Address const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(uint32_t address) [constructor]
+    cls.add_constructor([param('uint32_t', 'address')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(char const * address) [constructor]
+    cls.add_constructor([param('char const *', 'address')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4Address::CombineMask(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('CombineMask', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::Deserialize(uint8_t const * buf) [member function]
+    cls.add_method('Deserialize', 
+                   'ns3::Ipv4Address', 
+                   [param('uint8_t const *', 'buf')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Address::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetAny() [member function]
+    cls.add_method('GetAny', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetBroadcast() [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4Address::GetSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('GetSubnetDirectedBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Address ns3::Ipv4Address::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsEqual(ns3::Ipv4Address const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Address const &', 'other')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsLocalMulticast() const [member function]
+    cls.add_method('IsLocalMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static bool ns3::Ipv4Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Address::IsSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
+    cls.add_method('IsSubnetDirectedBroadcast', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask const &', 'mask')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Serialize(uint8_t * buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Set(uint32_t address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'address')])
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Address::Set(char const * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('char const *', 'address')])
+    return
+
+def register_Ns3Ipv4Mask_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(ns3::Ipv4Mask const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Mask const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(uint32_t mask) [constructor]
+    cls.add_constructor([param('uint32_t', 'mask')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(char const * mask) [constructor]
+    cls.add_constructor([param('char const *', 'mask')])
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Mask::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): uint32_t ns3::Ipv4Mask::GetInverse() const [member function]
+    cls.add_method('GetInverse', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): uint16_t ns3::Ipv4Mask::GetPrefixLength() const [member function]
+    cls.add_method('GetPrefixLength', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): static ns3::Ipv4Mask ns3::Ipv4Mask::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Mask::IsEqual(ns3::Ipv4Mask other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask', 'other')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4Mask::IsMatch(ns3::Ipv4Address a, ns3::Ipv4Address b) const [member function]
+    cls.add_method('IsMatch', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'a'), param('ns3::Ipv4Address', 'b')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Mask::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4Mask::Set(uint32_t mask) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'mask')])
+    return
+
+def register_Ns3Ipv6Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(char const * address) [constructor]
+    cls.add_constructor([param('char const *', 'address')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(uint8_t * address) [constructor]
+    cls.add_constructor([param('uint8_t *', 'address')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const & addr) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const &', 'addr')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const * addr) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const *', 'addr')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address ns3::Ipv6Address::CombinePrefix(ns3::Ipv6Prefix const & prefix) [member function]
+    cls.add_method('CombinePrefix', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv6Prefix const &', 'prefix')])
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::Deserialize(uint8_t const * buf) [member function]
+    cls.add_method('Deserialize', 
+                   'ns3::Ipv6Address', 
+                   [param('uint8_t const *', 'buf')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllHostsMulticast() [member function]
+    cls.add_method('GetAllHostsMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllNodesMulticast() [member function]
+    cls.add_method('GetAllNodesMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAllRoutersMulticast() [member function]
+    cls.add_method('GetAllRoutersMulticast', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetAny() [member function]
+    cls.add_method('GetAny', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::GetBytes(uint8_t * buf) const [member function]
+    cls.add_method('GetBytes', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv6Address::GetIpv4MappedAddress() const [member function]
+    cls.add_method('GetIpv4MappedAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllHostsMulticast() const [member function]
+    cls.add_method('IsAllHostsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllNodesMulticast() const [member function]
+    cls.add_method('IsAllNodesMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllRoutersMulticast() const [member function]
+    cls.add_method('IsAllRoutersMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAny() const [member function]
+    cls.add_method('IsAny', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsDocumentation() const [member function]
+    cls.add_method('IsDocumentation', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsEqual(ns3::Ipv6Address const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv6Address const &', 'other')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
+    cls.add_method('IsIpv4MappedAddress', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
+    cls.add_method('IsLinkLocal', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocalMulticast() const [member function]
+    cls.add_method('IsLinkLocalMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLocalhost() const [member function]
+    cls.add_method('IsLocalhost', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static bool ns3::Ipv6Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsSolicitedMulticast() const [member function]
+    cls.add_method('IsSolicitedMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac16Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac16Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac48Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac48Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac64Address addr, ns3::Ipv6Address prefix) [member function]
+    cls.add_method('MakeAutoconfiguredAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac64Address', 'addr'), param('ns3::Ipv6Address', 'prefix')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac16Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac16Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac48Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac48Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac64Address mac) [member function]
+    cls.add_method('MakeAutoconfiguredLinkLocalAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Mac64Address', 'mac')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeIpv4MappedAddress(ns3::Ipv4Address addr) [member function]
+    cls.add_method('MakeIpv4MappedAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeSolicitedAddress(ns3::Ipv6Address addr) [member function]
+    cls.add_method('MakeSolicitedAddress', 
+                   'ns3::Ipv6Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Serialize(uint8_t * buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Set(char const * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('char const *', 'address')])
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Address::Set(uint8_t * address) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint8_t *', 'address')])
+    return
+
+def register_Ns3Ipv6Prefix_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t * prefix) [constructor]
+    cls.add_constructor([param('uint8_t *', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(char const * prefix) [constructor]
+    cls.add_constructor([param('char const *', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t prefix) [constructor]
+    cls.add_constructor([param('uint8_t', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const & prefix) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const &', 'prefix')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const * prefix) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const *', 'prefix')])
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Prefix::GetBytes(uint8_t * buf) const [member function]
+    cls.add_method('GetBytes', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetLoopback() [member function]
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetOnes() [member function]
+    cls.add_method('GetOnes', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): uint8_t ns3::Ipv6Prefix::GetPrefixLength() const [member function]
+    cls.add_method('GetPrefixLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): static ns3::Ipv6Prefix ns3::Ipv6Prefix::GetZero() [member function]
+    cls.add_method('GetZero', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_static=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Prefix::IsEqual(ns3::Ipv6Prefix const & other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv6Prefix const &', 'other')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Prefix::IsMatch(ns3::Ipv6Address a, ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsMatch', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'a'), param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6Prefix::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    return
+
+def register_Ns3LrWpanEdPower_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::LrWpanEdPower(ns3::LrWpanEdPower const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanEdPower const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::LrWpanEdPower() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::averagePower [variable]
+    cls.add_instance_attribute('averagePower', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::lastUpdate [variable]
+    cls.add_instance_attribute('lastUpdate', 'ns3::Time', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanEdPower::measurementLength [variable]
+    cls.add_instance_attribute('measurementLength', 'ns3::Time', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyDataAndSymbolRates_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::LrWpanPhyDataAndSymbolRates() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::LrWpanPhyDataAndSymbolRates(ns3::LrWpanPhyDataAndSymbolRates const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyDataAndSymbolRates const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::bitRate [variable]
+    cls.add_instance_attribute('bitRate', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyDataAndSymbolRates::symbolRate [variable]
+    cls.add_instance_attribute('symbolRate', 'double', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyPibAttributes_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::LrWpanPhyPibAttributes() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::LrWpanPhyPibAttributes(ns3::LrWpanPhyPibAttributes const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyPibAttributes const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCCAMode [variable]
+    cls.add_instance_attribute('phyCCAMode', 'uint8_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyChannelsSupported [variable]
+    cls.add_instance_attribute('phyChannelsSupported', 'uint32_t [ 32 ]', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCurrentChannel [variable]
+    cls.add_instance_attribute('phyCurrentChannel', 'uint8_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyCurrentPage [variable]
+    cls.add_instance_attribute('phyCurrentPage', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyMaxFrameDuration [variable]
+    cls.add_instance_attribute('phyMaxFrameDuration', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phySHRDuration [variable]
+    cls.add_instance_attribute('phySHRDuration', 'uint32_t', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phySymbolsPerOctet [variable]
+    cls.add_instance_attribute('phySymbolsPerOctet', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPibAttributes::phyTransmitPower [variable]
+    cls.add_instance_attribute('phyTransmitPower', 'uint8_t', is_const=False)
+    return
+
+def register_Ns3LrWpanPhyPpduHeaderSymbolNumber_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::LrWpanPhyPpduHeaderSymbolNumber() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::LrWpanPhyPpduHeaderSymbolNumber(ns3::LrWpanPhyPpduHeaderSymbolNumber const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanPhyPpduHeaderSymbolNumber const &', 'arg0')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::phr [variable]
+    cls.add_instance_attribute('phr', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::shrPreamble [variable]
+    cls.add_instance_attribute('shrPreamble', 'double', is_const=False)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhyPpduHeaderSymbolNumber::shrSfd [variable]
+    cls.add_instance_attribute('shrSfd', 'double', is_const=False)
+    return
+
+def register_Ns3LrWpanSpectrumValueHelper_methods(root_module, cls):
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper(ns3::LrWpanSpectrumValueHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanSpectrumValueHelper const &', 'arg0')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanSpectrumValueHelper::CreateNoisePowerSpectralDensity(uint32_t channel) [member function]
+    cls.add_method('CreateNoisePowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('uint32_t', 'channel')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanSpectrumValueHelper::CreateTxPowerSpectralDensity(double txPower, uint32_t channel) [member function]
+    cls.add_method('CreateTxPowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('double', 'txPower'), param('uint32_t', 'channel')])
+    ## lr-wpan-spectrum-value-helper.h (module 'lr-wpan'): static double ns3::LrWpanSpectrumValueHelper::TotalAvgPower(ns3::Ptr<ns3::SpectrumValue const> psd) [member function]
+    cls.add_method('TotalAvgPower', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'psd')], 
+                   is_static=True)
+    return
+
+def register_Ns3Mac16Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(ns3::Mac16Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16Address const &', 'arg0')])
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(char const * str) [constructor]
+    cls.add_constructor([param('char const *', 'str')])
+    ## mac16-address.h (module 'network'): static ns3::Mac16Address ns3::Mac16Address::Allocate() [member function]
+    cls.add_method('Allocate', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_static=True)
+    ## mac16-address.h (module 'network'): static ns3::Mac16Address ns3::Mac16Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac16Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## mac16-address.h (module 'network'): void ns3::Mac16Address::CopyFrom(uint8_t const * buffer) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer')])
+    ## mac16-address.h (module 'network'): void ns3::Mac16Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## mac16-address.h (module 'network'): static bool ns3::Mac16Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    return
+
+def register_Ns3Mac64Address_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(ns3::Mac64Address const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64Address const &', 'arg0')])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(char const * str) [constructor]
+    cls.add_constructor([param('char const *', 'str')])
+    ## mac64-address.h (module 'network'): static ns3::Mac64Address ns3::Mac64Address::Allocate() [member function]
+    cls.add_method('Allocate', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_static=True)
+    ## mac64-address.h (module 'network'): static ns3::Mac64Address ns3::Mac64Address::ConvertFrom(ns3::Address const & address) [member function]
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac64Address', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    ## mac64-address.h (module 'network'): void ns3::Mac64Address::CopyFrom(uint8_t const * buffer) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer')])
+    ## mac64-address.h (module 'network'): void ns3::Mac64Address::CopyTo(uint8_t * buffer) const [member function]
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
+    ## mac64-address.h (module 'network'): static bool ns3::Mac64Address::IsMatchingType(ns3::Address const & address) [member function]
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_static=True)
+    return
+
+def register_Ns3McpsDataConfirmParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::McpsDataConfirmParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::McpsDataConfirmParams(ns3::McpsDataConfirmParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataConfirmParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::m_msduHandle [variable]
+    cls.add_instance_attribute('m_msduHandle', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataConfirmParams::m_status [variable]
+    cls.add_instance_attribute('m_status', 'ns3::LrWpanMcpsDataConfirmStatus', is_const=False)
+    return
+
+def register_Ns3McpsDataIndicationParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::McpsDataIndicationParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::McpsDataIndicationParams(ns3::McpsDataIndicationParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataIndicationParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dsn [variable]
+    cls.add_instance_attribute('m_dsn', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstAddr [variable]
+    cls.add_instance_attribute('m_dstAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstAddrMode [variable]
+    cls.add_instance_attribute('m_dstAddrMode', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_dstPanId [variable]
+    cls.add_instance_attribute('m_dstPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_mpduLinkQuality [variable]
+    cls.add_instance_attribute('m_mpduLinkQuality', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcAddr [variable]
+    cls.add_instance_attribute('m_srcAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcAddrMode [variable]
+    cls.add_instance_attribute('m_srcAddrMode', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataIndicationParams::m_srcPanId [variable]
+    cls.add_instance_attribute('m_srcPanId', 'uint16_t', is_const=False)
+    return
+
+def register_Ns3McpsDataRequestParams_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::McpsDataRequestParams(ns3::McpsDataRequestParams const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::McpsDataRequestParams const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::McpsDataRequestParams() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstAddr [variable]
+    cls.add_instance_attribute('m_dstAddr', 'ns3::Mac16Address', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstAddrMode [variable]
+    cls.add_instance_attribute('m_dstAddrMode', 'ns3::LrWpanAddressMode', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_dstPanId [variable]
+    cls.add_instance_attribute('m_dstPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_msduHandle [variable]
+    cls.add_instance_attribute('m_msduHandle', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_srcAddrMode [variable]
+    cls.add_instance_attribute('m_srcAddrMode', 'ns3::LrWpanAddressMode', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::McpsDataRequestParams::m_txOptions [variable]
+    cls.add_instance_attribute('m_txOptions', 'uint8_t', is_const=False)
+    return
+
+def register_Ns3NetDeviceContainer_methods(root_module, cls):
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer() [constructor]
+    cls.add_constructor([])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::Ptr<ns3::NetDevice> dev) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::NetDevice >', 'dev')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(std::string devName) [constructor]
+    cls.add_constructor([param('std::string', 'devName')])
+    ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & a, ns3::NetDeviceContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::NetDeviceContainer const &', 'a'), param('ns3::NetDeviceContainer const &', 'b')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(ns3::NetDeviceContainer other) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'other')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    ## net-device-container.h (module 'network'): void ns3::NetDeviceContainer::Add(std::string deviceName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'deviceName')])
+    ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::NetDevice > const, std::vector< ns3::Ptr< ns3::NetDevice > > >', 
+                   [], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::NetDevice > const, std::vector< ns3::Ptr< ns3::NetDevice > > >', 
+                   [], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::NetDeviceContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## net-device-container.h (module 'network'): uint32_t ns3::NetDeviceContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3NodeContainer_methods(root_module, cls):
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'arg0')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer() [constructor]
+    cls.add_constructor([])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(std::string nodeName) [constructor]
+    cls.add_constructor([param('std::string', 'nodeName')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c, ns3::NodeContainer const & d) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c'), param('ns3::NodeContainer const &', 'd')])
+    ## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c, ns3::NodeContainer const & d, ns3::NodeContainer const & e) [constructor]
+    cls.add_constructor([param('ns3::NodeContainer const &', 'a'), param('ns3::NodeContainer const &', 'b'), param('ns3::NodeContainer const &', 'c'), param('ns3::NodeContainer const &', 'd'), param('ns3::NodeContainer const &', 'e')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(ns3::NodeContainer other) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'other')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Add(std::string nodeName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'nodeName')])
+    ## node-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Node > const, std::vector< ns3::Ptr< ns3::Node > > >', 
+                   [], 
+                   is_const=True)
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Create(uint32_t n) [member function]
+    cls.add_method('Create', 
+                   'void', 
+                   [param('uint32_t', 'n')])
+    ## node-container.h (module 'network'): void ns3::NodeContainer::Create(uint32_t n, uint32_t systemId) [member function]
+    cls.add_method('Create', 
+                   'void', 
+                   [param('uint32_t', 'n'), param('uint32_t', 'systemId')])
+    ## node-container.h (module 'network'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Node > const, std::vector< ns3::Ptr< ns3::Node > > >', 
+                   [], 
+                   is_const=True)
+    ## node-container.h (module 'network'): ns3::Ptr<ns3::Node> ns3::NodeContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## node-container.h (module 'network'): static ns3::NodeContainer ns3::NodeContainer::GetGlobal() [member function]
+    cls.add_method('GetGlobal', 
+                   'ns3::NodeContainer', 
+                   [], 
+                   is_static=True)
+    ## node-container.h (module 'network'): uint32_t ns3::NodeContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3ObjectBase_methods(root_module, cls):
+    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
+    cls.add_constructor([])
+    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectBase const &', 'arg0')])
+    ## object-base.h (module 'core'): void ns3::ObjectBase::GetAttribute(std::string name, ns3::AttributeValue & value) const [member function]
+    cls.add_method('GetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'value')], 
+                   is_const=True)
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::GetAttributeFailSafe(std::string name, ns3::AttributeValue & attribute) const [member function]
+    cls.add_method('GetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'attribute')], 
+                   is_const=True)
+    ## object-base.h (module 'core'): ns3::TypeId ns3::ObjectBase::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## object-base.h (module 'core'): static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## object-base.h (module 'core'): void ns3::ObjectBase::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::SetAttributeFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('SetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceConnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceConnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceDisconnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
+    cls.add_method('TraceDisconnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
+    ## object-base.h (module 'core'): void ns3::ObjectBase::ConstructSelf(ns3::AttributeConstructionList const & attributes) [member function]
+    cls.add_method('ConstructSelf', 
+                   'void', 
+                   [param('ns3::AttributeConstructionList const &', 'attributes')], 
+                   visibility='protected')
+    ## object-base.h (module 'core'): void ns3::ObjectBase::NotifyConstructionCompleted() [member function]
+    cls.add_method('NotifyConstructionCompleted', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectDeleter_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter(ns3::ObjectDeleter const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectDeleter const &', 'arg0')])
+    ## object.h (module 'core'): static void ns3::ObjectDeleter::Delete(ns3::Object * object) [member function]
+    cls.add_method('Delete', 
+                   'void', 
+                   [param('ns3::Object *', 'object')], 
+                   is_static=True)
+    return
+
+def register_Ns3ObjectFactory_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(std::string typeId) [constructor]
+    cls.add_constructor([param('std::string', 'typeId')])
+    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('ns3::TypeId', 'tid')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('char const *', 'tid')])
+    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('std::string', 'tid')])
+    return
+
+def register_Ns3PacketMetadata_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
+    cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(ns3::PacketMetadata const & o) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata const &', 'o')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddAtEnd(ns3::PacketMetadata const & o) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::PacketMetadata const &', 'o')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddHeader(ns3::Header const & header, uint32_t size) [member function]
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddPaddingAtEnd(uint32_t end) [member function]
+    cls.add_method('AddPaddingAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
+    cls.add_method('AddTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::PacketMetadata::BeginItem(ns3::Buffer buffer) const [member function]
+    cls.add_method('BeginItem', 
+                   'ns3::PacketMetadata::ItemIterator', 
+                   [param('ns3::Buffer', 'buffer')], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata ns3::PacketMetadata::CreateFragment(uint32_t start, uint32_t end) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::PacketMetadata', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'end')], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::Enable() [member function]
+    cls.add_method('Enable', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::EnableChecking() [member function]
+    cls.add_method('EnableChecking', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): uint64_t ns3::PacketMetadata::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtEnd(uint32_t end) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtStart(uint32_t start) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'start')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveHeader(ns3::Header const & header, uint32_t size) [member function]
+    cls.add_method('RemoveHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
+    cls.add_method('RemoveTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
+    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3PacketMetadataItem_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item() [constructor]
+    cls.add_constructor([])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item(ns3::PacketMetadata::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata::Item const &', 'arg0')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::current [variable]
+    cls.add_instance_attribute('current', 'ns3::Buffer::Iterator', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentSize [variable]
+    cls.add_instance_attribute('currentSize', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromEnd [variable]
+    cls.add_instance_attribute('currentTrimedFromEnd', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromStart [variable]
+    cls.add_instance_attribute('currentTrimedFromStart', 'uint32_t', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::isFragment [variable]
+    cls.add_instance_attribute('isFragment', 'bool', is_const=False)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3PacketMetadataItemIterator_methods(root_module, cls):
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata::ItemIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketMetadata::ItemIterator const &', 'arg0')])
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata const * metadata, ns3::Buffer buffer) [constructor]
+    cls.add_constructor([param('ns3::PacketMetadata const *', 'metadata'), param('ns3::Buffer', 'buffer')])
+    ## packet-metadata.h (module 'network'): bool ns3::PacketMetadata::ItemIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item ns3::PacketMetadata::ItemIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::PacketMetadata::Item', 
+                   [])
+    return
+
+def register_Ns3PacketTagIterator_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::PacketTagIterator::PacketTagIterator(ns3::PacketTagIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagIterator const &', 'arg0')])
+    ## packet.h (module 'network'): bool ns3::PacketTagIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item ns3::PacketTagIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::PacketTagIterator::Item', 
+                   [])
+    return
+
+def register_Ns3PacketTagIteratorItem_methods(root_module, cls):
+    ## packet.h (module 'network'): ns3::PacketTagIterator::Item::Item(ns3::PacketTagIterator::Item const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagIterator::Item const &', 'arg0')])
+    ## packet.h (module 'network'): void ns3::PacketTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
+    cls.add_method('GetTag', 
+                   'void', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::TypeId ns3::PacketTagIterator::Item::GetTypeId() const [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3PacketTagList_methods(root_module, cls):
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList() [constructor]
+    cls.add_constructor([])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList(ns3::PacketTagList const & o) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagList const &', 'o')])
+    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::Add(ns3::Tag const & tag) const [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData const * ns3::PacketTagList::Head() const [member function]
+    cls.add_method('Head', 
+                   'ns3::PacketTagList::TagData const *', 
+                   [], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Peek(ns3::Tag & tag) const [member function]
+    cls.add_method('Peek', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Remove(ns3::Tag & tag) [member function]
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::RemoveAll() [member function]
+    cls.add_method('RemoveAll', 
+                   'void', 
+                   [])
+    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Replace(ns3::Tag & tag) [member function]
+    cls.add_method('Replace', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    return
+
+def register_Ns3PacketTagListTagData_methods(root_module, cls):
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData() [constructor]
+    cls.add_constructor([])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData(ns3::PacketTagList::TagData const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketTagList::TagData const &', 'arg0')])
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::count [variable]
+    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::data [variable]
+    cls.add_instance_attribute('data', 'uint8_t [ 20 ]', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::next [variable]
+    cls.add_instance_attribute('next', 'ns3::PacketTagList::TagData *', is_const=False)
+    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::tid [variable]
+    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
+    return
+
+def register_Ns3PcapFile_methods(root_module, cls):
+    ## pcap-file.h (module 'network'): ns3::PcapFile::PcapFile() [constructor]
+    cls.add_constructor([])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Close() [member function]
+    cls.add_method('Close', 
+                   'void', 
+                   [])
+    ## pcap-file.h (module 'network'): static bool ns3::PcapFile::Diff(std::string const & f1, std::string const & f2, uint32_t & sec, uint32_t & usec, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT) [member function]
+    cls.add_method('Diff', 
+                   'bool', 
+                   [param('std::string const &', 'f1'), param('std::string const &', 'f2'), param('uint32_t &', 'sec'), param('uint32_t &', 'usec'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT')], 
+                   is_static=True)
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::Eof() const [member function]
+    cls.add_method('Eof', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::Fail() const [member function]
+    cls.add_method('Fail', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetDataLinkType() [member function]
+    cls.add_method('GetDataLinkType', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetMagic() [member function]
+    cls.add_method('GetMagic', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetSigFigs() [member function]
+    cls.add_method('GetSigFigs', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint32_t ns3::PcapFile::GetSnapLen() [member function]
+    cls.add_method('GetSnapLen', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): bool ns3::PcapFile::GetSwapMode() [member function]
+    cls.add_method('GetSwapMode', 
+                   'bool', 
+                   [])
+    ## pcap-file.h (module 'network'): int32_t ns3::PcapFile::GetTimeZoneOffset() [member function]
+    cls.add_method('GetTimeZoneOffset', 
+                   'int32_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint16_t ns3::PcapFile::GetVersionMajor() [member function]
+    cls.add_method('GetVersionMajor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file.h (module 'network'): uint16_t ns3::PcapFile::GetVersionMinor() [member function]
+    cls.add_method('GetVersionMinor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Init(uint32_t dataLinkType, uint32_t snapLen=ns3::PcapFile::SNAPLEN_DEFAULT, int32_t timeZoneCorrection=ns3::PcapFile::ZONE_DEFAULT, bool swapMode=false) [member function]
+    cls.add_method('Init', 
+                   'void', 
+                   [param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='ns3::PcapFile::SNAPLEN_DEFAULT'), param('int32_t', 'timeZoneCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT'), param('bool', 'swapMode', default_value='false')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Open(std::string const & filename, std::_Ios_Openmode mode) [member function]
+    cls.add_method('Open', 
+                   'void', 
+                   [param('std::string const &', 'filename'), param('std::_Ios_Openmode', 'mode')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Read(uint8_t * const data, uint32_t maxBytes, uint32_t & tsSec, uint32_t & tsUsec, uint32_t & inclLen, uint32_t & origLen, uint32_t & readLen) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t * const', 'data'), param('uint32_t', 'maxBytes'), param('uint32_t &', 'tsSec'), param('uint32_t &', 'tsUsec'), param('uint32_t &', 'inclLen'), param('uint32_t &', 'origLen'), param('uint32_t &', 'readLen')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, uint8_t const * const data, uint32_t totalLen) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('uint8_t const * const', 'data'), param('uint32_t', 'totalLen')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file.h (module 'network'): void ns3::PcapFile::Write(uint32_t tsSec, uint32_t tsUsec, ns3::Header & header, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint32_t', 'tsSec'), param('uint32_t', 'tsUsec'), param('ns3::Header &', 'header'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file.h (module 'network'): ns3::PcapFile::SNAPLEN_DEFAULT [variable]
+    cls.add_static_attribute('SNAPLEN_DEFAULT', 'uint32_t const', is_const=True)
+    ## pcap-file.h (module 'network'): ns3::PcapFile::ZONE_DEFAULT [variable]
+    cls.add_static_attribute('ZONE_DEFAULT', 'int32_t const', is_const=True)
+    return
+
+def register_Ns3PcapHelper_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::PcapHelper::PcapHelper(ns3::PcapHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapHelper const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::PcapHelper::PcapHelper() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): ns3::Ptr<ns3::PcapFileWrapper> ns3::PcapHelper::CreateFile(std::string filename, std::_Ios_Openmode filemode, uint32_t dataLinkType, uint32_t snapLen=65535, int32_t tzCorrection=0) [member function]
+    cls.add_method('CreateFile', 
+                   'ns3::Ptr< ns3::PcapFileWrapper >', 
+                   [param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode'), param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='65535'), param('int32_t', 'tzCorrection', default_value='0')])
+    ## trace-helper.h (module 'network'): std::string ns3::PcapHelper::GetFilenameFromDevice(std::string prefix, ns3::Ptr<ns3::NetDevice> device, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromDevice', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'useObjectNames', default_value='true')])
+    ## trace-helper.h (module 'network'): std::string ns3::PcapHelper::GetFilenameFromInterfacePair(std::string prefix, ns3::Ptr<ns3::Object> object, uint32_t interface, bool useObjectNames=true) [member function]
+    cls.add_method('GetFilenameFromInterfacePair', 
+                   'std::string', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::Object >', 'object'), param('uint32_t', 'interface'), param('bool', 'useObjectNames', default_value='true')])
+    return
+
+def register_Ns3PcapHelperForDevice_methods(root_module, cls):
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice::PcapHelperForDevice(ns3::PcapHelperForDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PcapHelperForDevice const &', 'arg0')])
+    ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice::PcapHelperForDevice() [constructor]
+    cls.add_constructor([])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous=false, bool explicitFilename=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous', default_value='false'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, std::string ndName, bool promiscuous=false, bool explicitFilename=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('std::string', 'ndName'), param('bool', 'promiscuous', default_value='false'), param('bool', 'explicitFilename', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::NetDeviceContainer d, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NetDeviceContainer', 'd'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, ns3::NodeContainer n, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::NodeContainer', 'n'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcap(std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcapAll(std::string prefix, bool promiscuous=false) [member function]
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('bool', 'promiscuous', default_value='false')])
+    ## trace-helper.h (module 'network'): void ns3::PcapHelperForDevice::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous, bool explicitFilename) [member function]
+    cls.add_method('EnablePcapInternal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous'), param('bool', 'explicitFilename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3SequenceNumber8_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('ns3::SequenceNumber< unsigned char, signed char > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('signed char', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('signed char', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber8'], root_module['ns3::SequenceNumber8'], param('signed char', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('signed char', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('>=')
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber() [constructor]
+    cls.add_constructor([])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber(unsigned char value) [constructor]
+    cls.add_constructor([param('unsigned char', 'value')])
+    ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned char, signed char>::SequenceNumber(ns3::SequenceNumber<unsigned char, signed char> const & value) [copy constructor]
+    cls.add_constructor([param('ns3::SequenceNumber< unsigned char, signed char > const &', 'value')])
+    ## sequence-number.h (module 'network'): unsigned char ns3::SequenceNumber<unsigned char, signed char>::GetValue() const [member function]
+    cls.add_method('GetValue', 
+                   'unsigned char', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount(ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3Simulator_methods(root_module, cls):
+    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
+    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
+    cls.add_method('Destroy', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
+    cls.add_method('GetContext', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
+    cls.add_method('GetDelayLeft', 
+                   'ns3::Time', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
+    cls.add_method('GetImplementation', 
+                   'ns3::Ptr< ns3::SimulatorImpl >', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
+    cls.add_method('GetMaximumSimulationTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
+    cls.add_method('GetSystemId', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
+    cls.add_method('IsFinished', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
+    cls.add_method('Now', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::EventId const &', 'id')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
+    cls.add_method('SetImplementation', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
+    cls.add_method('SetScheduler', 
+                   'void', 
+                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
+    cls.add_method('Stop', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::Time const &', 'time')], 
+                   is_static=True)
+    return
+
+def register_Ns3Tag_methods(root_module, cls):
+    ## tag.h (module 'network'): ns3::Tag::Tag() [constructor]
+    cls.add_constructor([])
+    ## tag.h (module 'network'): ns3::Tag::Tag(ns3::Tag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Tag const &', 'arg0')])
+    ## tag.h (module 'network'): void ns3::Tag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## tag.h (module 'network'): uint32_t ns3::Tag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tag.h (module 'network'): static ns3::TypeId ns3::Tag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tag.h (module 'network'): void ns3::Tag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tag.h (module 'network'): void ns3::Tag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3TagBuffer_methods(root_module, cls):
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(ns3::TagBuffer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TagBuffer const &', 'arg0')])
+    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
+    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::CopyFrom(ns3::TagBuffer o) [member function]
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'o')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Read(uint8_t * buffer, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## tag-buffer.h (module 'network'): double ns3::TagBuffer::ReadDouble() [member function]
+    cls.add_method('ReadDouble', 
+                   'double', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint16_t ns3::TagBuffer::ReadU16() [member function]
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint32_t ns3::TagBuffer::ReadU32() [member function]
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint64_t ns3::TagBuffer::ReadU64() [member function]
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): uint8_t ns3::TagBuffer::ReadU8() [member function]
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
+    cls.add_method('TrimAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'trim')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Write(uint8_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteDouble(double v) [member function]
+    cls.add_method('WriteDouble', 
+                   'void', 
+                   [param('double', 'v')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU16(uint16_t data) [member function]
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU32(uint32_t data) [member function]
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU64(uint64_t v) [member function]
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'v')])
+    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU8(uint8_t v) [member function]
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'v')])
+    return
+
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
+def register_Ns3TypeId_methods(root_module, cls):
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId(char const * name) [constructor]
+    cls.add_constructor([param('char const *', 'name')])
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::TypeId(ns3::TypeId const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId const &', 'o')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, uint32_t flags, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr<ns3::TraceSourceAccessor const> accessor) [member function]
+    cls.add_method('AddTraceSource', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation ns3::TypeId::GetAttribute(uint32_t i) const [member function]
+    cls.add_method('GetAttribute', 
+                   'ns3::TypeId::AttributeInformation', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeFullName(uint32_t i) const [member function]
+    cls.add_method('GetAttributeFullName', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeN() const [member function]
+    cls.add_method('GetAttributeN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::Callback<ns3::ObjectBase*,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::TypeId::GetConstructor() const [member function]
+    cls.add_method('GetConstructor', 
+                   'ns3::Callback< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetGroupName() const [member function]
+    cls.add_method('GetGroupName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetHash() const [member function]
+    cls.add_method('GetHash', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeId::GetName() const [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::GetParent() const [member function]
+    cls.add_method('GetParent', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::GetRegistered(uint32_t i) [member function]
+    cls.add_method('GetRegistered', 
+                   'ns3::TypeId', 
+                   [param('uint32_t', 'i')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static uint32_t ns3::TypeId::GetRegisteredN() [member function]
+    cls.add_method('GetRegisteredN', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation ns3::TypeId::GetTraceSource(uint32_t i) const [member function]
+    cls.add_method('GetTraceSource', 
+                   'ns3::TypeId::TraceSourceInformation', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetTraceSourceN() const [member function]
+    cls.add_method('GetTraceSourceN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): uint16_t ns3::TypeId::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::HasConstructor() const [member function]
+    cls.add_method('HasConstructor', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::HasParent() const [member function]
+    cls.add_method('HasParent', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::HideFromDocumentation() [member function]
+    cls.add_method('HideFromDocumentation', 
+                   'ns3::TypeId', 
+                   [])
+    ## type-id.h (module 'core'): bool ns3::TypeId::IsChildOf(ns3::TypeId other) const [member function]
+    cls.add_method('IsChildOf', 
+                   'bool', 
+                   [param('ns3::TypeId', 'other')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInformation * info) const [member function]
+    cls.add_method('LookupAttributeByName', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::TypeId::AttributeInformation *', 'info', transfer_ownership=False)], 
+                   is_const=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByHash(uint32_t hash) [member function]
+    cls.add_method('LookupByHash', 
+                   'ns3::TypeId', 
+                   [param('uint32_t', 'hash')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static bool ns3::TypeId::LookupByHashFailSafe(uint32_t hash, ns3::TypeId * tid) [member function]
+    cls.add_method('LookupByHashFailSafe', 
+                   'bool', 
+                   [param('uint32_t', 'hash'), param('ns3::TypeId *', 'tid')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByName(std::string name) [member function]
+    cls.add_method('LookupByName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name')], 
+                   is_static=True)
+    ## type-id.h (module 'core'): ns3::Ptr<ns3::TraceSourceAccessor const> ns3::TypeId::LookupTraceSourceByName(std::string name) const [member function]
+    cls.add_method('LookupTraceSourceByName', 
+                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
+                   [param('std::string', 'name')], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::MustHideFromDocumentation() const [member function]
+    cls.add_method('MustHideFromDocumentation', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): bool ns3::TypeId::SetAttributeInitialValue(uint32_t i, ns3::Ptr<ns3::AttributeValue const> initialValue) [member function]
+    cls.add_method('SetAttributeInitialValue', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ptr< ns3::AttributeValue const >', 'initialValue')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetGroupName(std::string groupName) [member function]
+    cls.add_method('SetGroupName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'groupName')])
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetParent(ns3::TypeId tid) [member function]
+    cls.add_method('SetParent', 
+                   'ns3::TypeId', 
+                   [param('ns3::TypeId', 'tid')])
+    ## type-id.h (module 'core'): void ns3::TypeId::SetUid(uint16_t tid) [member function]
+    cls.add_method('SetUid', 
+                   'void', 
+                   [param('uint16_t', 'tid')])
+    return
+
+def register_Ns3TypeIdAttributeInformation_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::AttributeInformation() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::AttributeInformation(ns3::TypeId::AttributeInformation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId::AttributeInformation const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::accessor [variable]
+    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::AttributeAccessor const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::checker [variable]
+    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::flags [variable]
+    cls.add_instance_attribute('flags', 'uint32_t', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::help [variable]
+    cls.add_instance_attribute('help', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::initialValue [variable]
+    cls.add_instance_attribute('initialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::AttributeInformation::originalInitialValue [variable]
+    cls.add_instance_attribute('originalInitialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
+    return
+
+def register_Ns3TypeIdTraceSourceInformation_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::TraceSourceInformation() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::TraceSourceInformation(ns3::TypeId::TraceSourceInformation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeId::TraceSourceInformation const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::accessor [variable]
+    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::TraceSourceAccessor const >', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::help [variable]
+    cls.add_instance_attribute('help', 'std::string', is_const=False)
+    ## type-id.h (module 'core'): ns3::TypeId::TraceSourceInformation::name [variable]
+    cls.add_instance_attribute('name', 'std::string', is_const=False)
+    return
+
+def register_Ns3Empty_methods(root_module, cls):
+    ## empty.h (module 'core'): ns3::empty::empty() [constructor]
+    cls.add_constructor([])
+    ## empty.h (module 'core'): ns3::empty::empty(ns3::empty const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::empty const &', 'arg0')])
+    return
+
+def register_Ns3Int64x64_t_methods(root_module, cls):
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_unary_numeric_operator('-')
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>=')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
+    cls.add_constructor([])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
+    cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
+    cls.add_constructor([param('int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
+    cls.add_constructor([param('long int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long int v) [constructor]
+    cls.add_constructor([param('long long int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(unsigned int v) [constructor]
+    cls.add_constructor([param('unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long unsigned int v) [constructor]
+    cls.add_constructor([param('long unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long long unsigned int v) [constructor]
+    cls.add_constructor([param('long long unsigned int', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int64_t hi, uint64_t lo) [constructor]
+    cls.add_constructor([param('int64_t', 'hi'), param('uint64_t', 'lo')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(ns3::int64x64_t const & o) [copy constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): double ns3::int64x64_t::GetDouble() const [member function]
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): int64_t ns3::int64x64_t::GetHigh() const [member function]
+    cls.add_method('GetHigh', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): uint64_t ns3::int64x64_t::GetLow() const [member function]
+    cls.add_method('GetLow', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## int64x64-double.h (module 'core'): static ns3::int64x64_t ns3::int64x64_t::Invert(uint64_t v) [member function]
+    cls.add_method('Invert', 
+                   'ns3::int64x64_t', 
+                   [param('uint64_t', 'v')], 
+                   is_static=True)
+    ## int64x64-double.h (module 'core'): void ns3::int64x64_t::MulByInvert(ns3::int64x64_t const & o) [member function]
+    cls.add_method('MulByInvert', 
+                   'void', 
+                   [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
+    return
+
+def register_Ns3Chunk_methods(root_module, cls):
+    ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
+    cls.add_constructor([])
+    ## chunk.h (module 'network'): ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Chunk const &', 'arg0')])
+    ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## chunk.h (module 'network'): void ns3::Chunk::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Header_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## header.h (module 'network'): ns3::Header::Header() [constructor]
+    cls.add_constructor([])
+    ## header.h (module 'network'): ns3::Header::Header(ns3::Header const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Header const &', 'arg0')])
+    ## header.h (module 'network'): uint32_t ns3::Header::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## header.h (module 'network'): uint32_t ns3::Header::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## header.h (module 'network'): static ns3::TypeId ns3::Header::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## header.h (module 'network'): void ns3::Header::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## header.h (module 'network'): void ns3::Header::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3LrWpanHelper_methods(root_module, cls):
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::LrWpanHelper::LrWpanHelper() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::AddMobility(ns3::Ptr<ns3::LrWpanPhy> phy, ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('AddMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy'), param('ns3::Ptr< ns3::MobilityModel >', 'm')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): ns3::NetDeviceContainer ns3::LrWpanHelper::Install(ns3::NodeContainer c) [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer', 'c')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::AssociateToPan(ns3::NetDeviceContainer c, uint16_t panId) [member function]
+    cls.add_method('AssociateToPan', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'c'), param('uint16_t', 'panId')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnableLogComponents() [member function]
+    cls.add_method('EnableLogComponents', 
+                   'void', 
+                   [])
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration arg0) [member function]
+    cls.add_method('LrWpanPhyEnumerationPrinter', 
+                   'std::string', 
+                   [param('ns3::LrWpanPhyEnumeration', 'arg0')], 
+                   is_static=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanMacStatePrinter(ns3::LrWpanMacState e) [member function]
+    cls.add_method('LrWpanMacStatePrinter', 
+                   'std::string', 
+                   [param('ns3::LrWpanMacState', 'e')], 
+                   is_static=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): int64_t ns3::LrWpanHelper::AssignStreams(ns3::NetDeviceContainer c, int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('ns3::NetDeviceContainer', 'c'), param('int64_t', 'stream')])
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnablePcapInternal(std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool promiscuous, bool explicitFilename) [member function]
+    cls.add_method('EnablePcapInternal', 
+                   'void', 
+                   [param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'promiscuous'), param('bool', 'explicitFilename')], 
+                   visibility='private', is_virtual=True)
+    ## lr-wpan-helper.h (module 'lr-wpan'): void ns3::LrWpanHelper::EnableAsciiInternal(ns3::Ptr<ns3::OutputStreamWrapper> stream, std::string prefix, ns3::Ptr<ns3::NetDevice> nd, bool explicitFilename) [member function]
+    cls.add_method('EnableAsciiInternal', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::NetDevice >', 'nd'), param('bool', 'explicitFilename')], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanLqiTag_methods(root_module, cls):
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag(ns3::LrWpanLqiTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanLqiTag const &', 'arg0')])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::LrWpanLqiTag::LrWpanLqiTag(uint8_t lqi) [constructor]
+    cls.add_constructor([param('uint8_t', 'lqi')])
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): uint8_t ns3::LrWpanLqiTag::Get() const [member function]
+    cls.add_method('Get', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanLqiTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): uint32_t ns3::LrWpanLqiTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanLqiTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-lqi-tag.h (module 'lr-wpan'): void ns3::LrWpanLqiTag::Set(uint8_t lqi) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint8_t', 'lqi')])
+    return
+
+def register_Ns3LrWpanMacHeader_methods(root_module, cls):
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader(ns3::LrWpanMacHeader const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMacHeader const &', 'arg0')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacHeader(ns3::LrWpanMacHeader::LrWpanMacType wpanMacType, uint8_t seqNum) [constructor]
+    cls.add_constructor([param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType'), param('uint8_t', 'seqNum')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetDstAddrMode() const [member function]
+    cls.add_method('GetDstAddrMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetDstPanId() const [member function]
+    cls.add_method('GetDstPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMacHeader::GetExtDstAddr() const [member function]
+    cls.add_method('GetExtDstAddr', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMacHeader::GetExtSrcAddr() const [member function]
+    cls.add_method('GetExtSrcAddr', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetFrameControl() const [member function]
+    cls.add_method('GetFrameControl', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetFrameVer() const [member function]
+    cls.add_method('GetFrameVer', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetFrmCounter() const [member function]
+    cls.add_method('GetFrmCounter', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetFrmCtrlRes() const [member function]
+    cls.add_method('GetFrmCtrlRes', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanMacHeader::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetKeyIdIndex() const [member function]
+    cls.add_method('GetKeyIdIndex', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetKeyIdMode() const [member function]
+    cls.add_method('GetKeyIdMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetKeyIdSrc32() const [member function]
+    cls.add_method('GetKeyIdSrc32', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint64_t ns3::LrWpanMacHeader::GetKeyIdSrc64() const [member function]
+    cls.add_method('GetKeyIdSrc64', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): std::string ns3::LrWpanMacHeader::GetName() const [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecControl() const [member function]
+    cls.add_method('GetSecControl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecLevel() const [member function]
+    cls.add_method('GetSecLevel', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSeqNum() const [member function]
+    cls.add_method('GetSeqNum', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacHeader::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMacHeader::GetShortDstAddr() const [member function]
+    cls.add_method('GetShortDstAddr', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMacHeader::GetShortSrcAddr() const [member function]
+    cls.add_method('GetShortSrcAddr', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSrcAddrMode() const [member function]
+    cls.add_method('GetSrcAddrMode', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacHeader::GetSrcPanId() const [member function]
+    cls.add_method('GetSrcPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): ns3::LrWpanMacHeader::LrWpanMacType ns3::LrWpanMacHeader::GetType() const [member function]
+    cls.add_method('GetType', 
+                   'ns3::LrWpanMacHeader::LrWpanMacType', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMacHeader::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetsecctrlReserved() const [member function]
+    cls.add_method('GetsecctrlReserved', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAckReq() const [member function]
+    cls.add_method('IsAckReq', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAcknowledgment() const [member function]
+    cls.add_method('IsAcknowledgment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsBeacon() const [member function]
+    cls.add_method('IsBeacon', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsCommand() const [member function]
+    cls.add_method('IsCommand', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsData() const [member function]
+    cls.add_method('IsData', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsFrmPend() const [member function]
+    cls.add_method('IsFrmPend', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoAckReq() const [member function]
+    cls.add_method('IsNoAckReq', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoFrmPend() const [member function]
+    cls.add_method('IsNoFrmPend', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoPanIdComp() const [member function]
+    cls.add_method('IsNoPanIdComp', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsPanIdComp() const [member function]
+    cls.add_method('IsPanIdComp', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecDisable() const [member function]
+    cls.add_method('IsSecDisable', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecEnable() const [member function]
+    cls.add_method('IsSecEnable', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::PrintFrameControl(std::ostream & os) const [member function]
+    cls.add_method('PrintFrameControl', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetAckReq() [member function]
+    cls.add_method('SetAckReq', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrFields(uint16_t panId, ns3::Mac16Address addr) [member function]
+    cls.add_method('SetDstAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac16Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrFields(uint16_t panId, ns3::Mac64Address addr) [member function]
+    cls.add_method('SetDstAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac64Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetDstAddrMode(uint8_t addrMode) [member function]
+    cls.add_method('SetDstAddrMode', 
+                   'void', 
+                   [param('uint8_t', 'addrMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrameControl(uint16_t frameControl) [member function]
+    cls.add_method('SetFrameControl', 
+                   'void', 
+                   [param('uint16_t', 'frameControl')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrameVer(uint8_t ver) [member function]
+    cls.add_method('SetFrameVer', 
+                   'void', 
+                   [param('uint8_t', 'ver')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmCounter(uint32_t frmCntr) [member function]
+    cls.add_method('SetFrmCounter', 
+                   'void', 
+                   [param('uint32_t', 'frmCntr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmCtrlRes(uint8_t res) [member function]
+    cls.add_method('SetFrmCtrlRes', 
+                   'void', 
+                   [param('uint8_t', 'res')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetFrmPend() [member function]
+    cls.add_method('SetFrmPend', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint32_t keySrc, uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint32_t', 'keySrc'), param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyId(uint64_t keySrc, uint8_t keyIndex) [member function]
+    cls.add_method('SetKeyId', 
+                   'void', 
+                   [param('uint64_t', 'keySrc'), param('uint8_t', 'keyIndex')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetKeyIdMode(uint8_t keyIdMode) [member function]
+    cls.add_method('SetKeyIdMode', 
+                   'void', 
+                   [param('uint8_t', 'keyIdMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoAckReq() [member function]
+    cls.add_method('SetNoAckReq', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoFrmPend() [member function]
+    cls.add_method('SetNoFrmPend', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetNoPanIdComp() [member function]
+    cls.add_method('SetNoPanIdComp', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetPanIdComp() [member function]
+    cls.add_method('SetPanIdComp', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecControl(uint8_t secLevel) [member function]
+    cls.add_method('SetSecControl', 
+                   'void', 
+                   [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecDisable() [member function]
+    cls.add_method('SetSecDisable', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecEnable() [member function]
+    cls.add_method('SetSecEnable', 
+                   'void', 
+                   [])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecLevel(uint8_t secLevel) [member function]
+    cls.add_method('SetSecLevel', 
+                   'void', 
+                   [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSeqNum(uint8_t seqNum) [member function]
+    cls.add_method('SetSeqNum', 
+                   'void', 
+                   [param('uint8_t', 'seqNum')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrFields(uint16_t panId, ns3::Mac16Address addr) [member function]
+    cls.add_method('SetSrcAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac16Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrFields(uint16_t panId, ns3::Mac64Address addr) [member function]
+    cls.add_method('SetSrcAddrFields', 
+                   'void', 
+                   [param('uint16_t', 'panId'), param('ns3::Mac64Address', 'addr')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSrcAddrMode(uint8_t addrMode) [member function]
+    cls.add_method('SetSrcAddrMode', 
+                   'void', 
+                   [param('uint8_t', 'addrMode')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetType(ns3::LrWpanMacHeader::LrWpanMacType wpanMacType) [member function]
+    cls.add_method('SetType', 
+                   'void', 
+                   [param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetsecctrlReserved(uint8_t res) [member function]
+    cls.add_method('SetsecctrlReserved', 
+                   'void', 
+                   [param('uint8_t', 'res')])
+    return
+
+def register_Ns3Object_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::Object() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
+    cls.add_method('AggregateObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'other')])
+    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
+    cls.add_method('Dispose', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
+    cls.add_method('GetAggregateIterator', 
+                   'ns3::Object::AggregateIterator', 
+                   [], 
+                   is_const=True)
+    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
+    cls.add_method('Initialize', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Object const &', 'o')], 
+                        visibility='protected')
+    ## object.h (module 'core'): void ns3::Object::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## object.h (module 'core'): void ns3::Object::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## object.h (module 'core'): void ns3::Object::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator(ns3::Object::AggregateIterator const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Object::AggregateIterator const &', 'arg0')])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator() [constructor]
+    cls.add_constructor([])
+    ## object.h (module 'core'): bool ns3::Object::AggregateIterator::HasNext() const [member function]
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## object.h (module 'core'): ns3::Ptr<ns3::Object const> ns3::Object::AggregateIterator::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::Ptr< ns3::Object const >', 
+                   [])
+    return
+
+def register_Ns3PcapFileWrapper_methods(root_module, cls):
+    ## pcap-file-wrapper.h (module 'network'): static ns3::TypeId ns3::PcapFileWrapper::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper::PcapFileWrapper() [constructor]
+    cls.add_constructor([])
+    ## pcap-file-wrapper.h (module 'network'): bool ns3::PcapFileWrapper::Fail() const [member function]
+    cls.add_method('Fail', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file-wrapper.h (module 'network'): bool ns3::PcapFileWrapper::Eof() const [member function]
+    cls.add_method('Eof', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Open(std::string const & filename, std::_Ios_Openmode mode) [member function]
+    cls.add_method('Open', 
+                   'void', 
+                   [param('std::string const &', 'filename'), param('std::_Ios_Openmode', 'mode')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Close() [member function]
+    cls.add_method('Close', 
+                   'void', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Init(uint32_t dataLinkType, uint32_t snapLen=std::numeric_limits<unsigned int>::max(), int32_t tzCorrection=ns3::PcapFile::ZONE_DEFAULT) [member function]
+    cls.add_method('Init', 
+                   'void', 
+                   [param('uint32_t', 'dataLinkType'), param('uint32_t', 'snapLen', default_value='std::numeric_limits<unsigned int>::max()'), param('int32_t', 'tzCorrection', default_value='ns3::PcapFile::ZONE_DEFAULT')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, ns3::Header & header, ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('ns3::Header &', 'header'), param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## pcap-file-wrapper.h (module 'network'): void ns3::PcapFileWrapper::Write(ns3::Time t, uint8_t const * buffer, uint32_t length) [member function]
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Time', 't'), param('uint8_t const *', 'buffer'), param('uint32_t', 'length')])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetMagic() [member function]
+    cls.add_method('GetMagic', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint16_t ns3::PcapFileWrapper::GetVersionMajor() [member function]
+    cls.add_method('GetVersionMajor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint16_t ns3::PcapFileWrapper::GetVersionMinor() [member function]
+    cls.add_method('GetVersionMinor', 
+                   'uint16_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): int32_t ns3::PcapFileWrapper::GetTimeZoneOffset() [member function]
+    cls.add_method('GetTimeZoneOffset', 
+                   'int32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetSigFigs() [member function]
+    cls.add_method('GetSigFigs', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetSnapLen() [member function]
+    cls.add_method('GetSnapLen', 
+                   'uint32_t', 
+                   [])
+    ## pcap-file-wrapper.h (module 'network'): uint32_t ns3::PcapFileWrapper::GetDataLinkType() [member function]
+    cls.add_method('GetDataLinkType', 
+                   'uint32_t', 
+                   [])
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter< ns3::AttributeAccessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter< ns3::AttributeChecker > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter< ns3::AttributeValue > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter< ns3::CallbackImplBase > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter< ns3::Hash::Implementation > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter< ns3::LrWpanInterferenceHelper > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount(ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter< ns3::NixVector > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::SimpleRefCount(ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter< ns3::OutputStreamWrapper > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter< ns3::Packet > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::SimpleRefCount(ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter< ns3::SpectrumSignalParameters > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter< ns3::TraceSourceAccessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SpectrumPhy_methods(root_module, cls):
+    ## spectrum-phy.h (module 'spectrum'): ns3::SpectrumPhy::SpectrumPhy() [constructor]
+    cls.add_constructor([])
+    ## spectrum-phy.h (module 'spectrum'): static ns3::TypeId ns3::SpectrumPhy::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetDevice(ns3::Ptr<ns3::NetDevice> d) [member function]
+    cls.add_method('SetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'd')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::NetDevice> ns3::SpectrumPhy::GetDevice() [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetMobility(ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('SetMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::MobilityModel> ns3::SpectrumPhy::GetMobility() [member function]
+    cls.add_method('GetMobility', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::SetChannel(ns3::Ptr<ns3::SpectrumChannel> c) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'c')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::SpectrumModel const> ns3::SpectrumPhy::GetRxSpectrumModel() const [member function]
+    cls.add_method('GetRxSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): ns3::Ptr<ns3::AntennaModel> ns3::SpectrumPhy::GetRxAntenna() [member function]
+    cls.add_method('GetRxAntenna', 
+                   'ns3::Ptr< ns3::AntennaModel >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## spectrum-phy.h (module 'spectrum'): void ns3::SpectrumPhy::StartRx(ns3::Ptr<ns3::SpectrumSignalParameters> params) [member function]
+    cls.add_method('StartRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumSignalParameters >', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3SpectrumSignalParameters_methods(root_module, cls):
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::SpectrumSignalParameters() [constructor]
+    cls.add_constructor([])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::SpectrumSignalParameters(ns3::SpectrumSignalParameters const & p) [copy constructor]
+    cls.add_constructor([param('ns3::SpectrumSignalParameters const &', 'p')])
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::Ptr<ns3::SpectrumSignalParameters> ns3::SpectrumSignalParameters::Copy() [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::SpectrumSignalParameters >', 
+                   [], 
+                   is_virtual=True)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::duration [variable]
+    cls.add_instance_attribute('duration', 'ns3::Time', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::psd [variable]
+    cls.add_instance_attribute('psd', 'ns3::Ptr< ns3::SpectrumValue >', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::txAntenna [variable]
+    cls.add_instance_attribute('txAntenna', 'ns3::Ptr< ns3::AntennaModel >', is_const=False)
+    ## spectrum-signal-parameters.h (module 'spectrum'): ns3::SpectrumSignalParameters::txPhy [variable]
+    cls.add_instance_attribute('txPhy', 'ns3::Ptr< ns3::SpectrumPhy >', is_const=False)
+    return
+
+def register_Ns3Time_methods(root_module, cls):
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_comparison_operator('<')
+    cls.add_binary_comparison_operator('>')
+    cls.add_binary_comparison_operator('!=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('<=')
+    cls.add_binary_comparison_operator('==')
+    cls.add_binary_comparison_operator('>=')
+    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
+    cls.add_constructor([])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Time const &', 'o')])
+    ## nstime.h (module 'core'): ns3::Time::Time(double v) [constructor]
+    cls.add_constructor([param('double', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(int v) [constructor]
+    cls.add_constructor([param('int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long int v) [constructor]
+    cls.add_constructor([param('long int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long long int v) [constructor]
+    cls.add_constructor([param('long long int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(unsigned int v) [constructor]
+    cls.add_constructor([param('unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long unsigned int v) [constructor]
+    cls.add_constructor([param('long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
+    cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
+    cls.add_constructor([param('std::string const &', 's')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
+    cls.add_method('Compare', 
+                   'int', 
+                   [param('ns3::Time const &', 'o')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('From', 
+                   'ns3::Time', 
+                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    cls.add_method('From', 
+                   'ns3::Time', 
+                   [param('ns3::int64x64_t const &', 'value')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('FromDouble', 
+                   'ns3::Time', 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    cls.add_method('FromInteger', 
+                   'ns3::Time', 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
+    cls.add_method('GetDays', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
+    cls.add_method('GetFemtoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetHours() const [member function]
+    cls.add_method('GetHours', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
+    cls.add_method('GetInteger', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
+    cls.add_method('GetMicroSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
+    cls.add_method('GetMilliSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetMinutes() const [member function]
+    cls.add_method('GetMinutes', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
+    cls.add_method('GetNanoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
+    cls.add_method('GetPicoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
+    cls.add_method('GetResolution', 
+                   'ns3::Time::Unit', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
+    cls.add_method('GetSeconds', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
+    cls.add_method('GetTimeStep', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetYears() const [member function]
+    cls.add_method('GetYears', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
+    cls.add_method('IsNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
+    cls.add_method('IsPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
+    cls.add_method('IsStrictlyNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
+    cls.add_method('IsStrictlyPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
+    cls.add_method('IsZero', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Max() [member function]
+    cls.add_method('Max', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::Min() [member function]
+    cls.add_method('Min', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
+    cls.add_method('SetResolution', 
+                   'void', 
+                   [param('ns3::Time::Unit', 'resolution')], 
+                   is_static=True)
+    ## nstime.h (module 'core'): static bool ns3::Time::StaticInit() [member function]
+    cls.add_method('StaticInit', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('To', 
+                   'ns3::int64x64_t', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('ToDouble', 
+                   'double', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    cls.add_method('ToInteger', 
+                   'int64_t', 
+                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   is_const=True)
+    return
+
+def register_Ns3TraceSourceAccessor_methods(root_module, cls):
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor(ns3::TraceSourceAccessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TraceSourceAccessor const &', 'arg0')])
+    ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor::TraceSourceAccessor() [constructor]
+    cls.add_constructor([])
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::Connect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('Connect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::ConnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::Disconnect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('Disconnect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trace-source-accessor.h (module 'core'): bool ns3::TraceSourceAccessor::DisconnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase const &', 'cb')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3Trailer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## trailer.h (module 'network'): ns3::Trailer::Trailer() [constructor]
+    cls.add_constructor([])
+    ## trailer.h (module 'network'): ns3::Trailer::Trailer(ns3::Trailer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Trailer const &', 'arg0')])
+    ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator end) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'end')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trailer.h (module 'network'): static ns3::TypeId ns3::Trailer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## trailer.h (module 'network'): void ns3::Trailer::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## trailer.h (module 'network'): void ns3::Trailer::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeAccessor_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & attribute) const [member function]
+    cls.add_method('Get', 
+                   'bool', 
+                   [param('ns3::ObjectBase const *', 'object'), param('ns3::AttributeValue &', 'attribute')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasGetter() const [member function]
+    cls.add_method('HasGetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasSetter() const [member function]
+    cls.add_method('HasSetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
+    cls.add_method('Set', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue const &', 'value')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeChecker_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker(ns3::AttributeChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeChecker const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
+    cls.add_method('Check', 
+                   'bool', 
+                   [param('ns3::AttributeValue const &', 'value')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Copy(ns3::AttributeValue const & source, ns3::AttributeValue & destination) const [member function]
+    cls.add_method('Copy', 
+                   'bool', 
+                   [param('ns3::AttributeValue const &', 'source'), param('ns3::AttributeValue &', 'destination')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::Create() const [member function]
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::CreateValidValue(ns3::AttributeValue const & value) const [member function]
+    cls.add_method('CreateValidValue', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [param('ns3::AttributeValue const &', 'value')], 
+                   is_const=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetUnderlyingTypeInformation() const [member function]
+    cls.add_method('GetUnderlyingTypeInformation', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetValueTypeName() const [member function]
+    cls.add_method('GetValueTypeName', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeChecker::HasUnderlyingTypeInformation() const [member function]
+    cls.add_method('HasUnderlyingTypeInformation', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3AttributeValue_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue(ns3::AttributeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AttributeValue const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::AttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::AttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3CallbackChecker_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker(ns3::CallbackChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackChecker const &', 'arg0')])
+    return
+
+def register_Ns3CallbackImplBase_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase(ns3::CallbackImplBase const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackImplBase const &', 'arg0')])
+    ## callback.h (module 'core'): bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3CallbackValue_methods(root_module, cls):
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CallbackValue const &', 'arg0')])
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue() [constructor]
+    cls.add_constructor([])
+    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackBase const & base) [constructor]
+    cls.add_constructor([param('ns3::CallbackBase const &', 'base')])
+    ## callback.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::CallbackValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## callback.h (module 'core'): bool ns3::CallbackValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## callback.h (module 'core'): std::string ns3::CallbackValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## callback.h (module 'core'): void ns3::CallbackValue::Set(ns3::CallbackBase base) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::CallbackBase', 'base')])
+    return
+
+def register_Ns3EmptyAttributeValue_methods(root_module, cls):
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
+    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue() [constructor]
+    cls.add_constructor([])
+    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::EmptyAttributeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## attribute.h (module 'core'): bool ns3::EmptyAttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   visibility='private', is_virtual=True)
+    ## attribute.h (module 'core'): std::string ns3::EmptyAttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3EventImpl_methods(root_module, cls):
+    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
+    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
+    cls.add_constructor([])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
+    cls.add_method('Invoke', 
+                   'void', 
+                   [])
+    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
+    cls.add_method('IsCancelled', 
+                   'bool', 
+                   [])
+    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
+    cls.add_method('Notify', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker(ns3::Ipv4AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv4AddressValue_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AddressValue const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Address const &', 'value')])
+    ## ipv4-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv4AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Address ns3::Ipv4AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): std::string ns3::Ipv4AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4AddressValue::Set(ns3::Ipv4Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'value')])
+    return
+
+def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker(ns3::Ipv4MaskChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MaskChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv4MaskValue_methods(root_module, cls):
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue() [constructor]
+    cls.add_constructor([])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4MaskValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MaskValue const &', 'arg0')])
+    ## ipv4-address.h (module 'network'): ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4Mask const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Mask const &', 'value')])
+    ## ipv4-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv4MaskValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): bool ns3::Ipv4MaskValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv4-address.h (module 'network'): ns3::Ipv4Mask ns3::Ipv4MaskValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
+    ## ipv4-address.h (module 'network'): std::string ns3::Ipv4MaskValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-address.h (module 'network'): void ns3::Ipv4MaskValue::Set(ns3::Ipv4Mask const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Mask const &', 'value')])
+    return
+
+def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker(ns3::Ipv6AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv6AddressValue_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6AddressValue const &', 'arg0')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Address const &', 'value')])
+    ## ipv6-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv6AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Address ns3::Ipv6AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv6Address', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): std::string ns3::Ipv6AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6AddressValue::Set(ns3::Ipv6Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv6Address const &', 'value')])
+    return
+
+def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker(ns3::Ipv6PrefixChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PrefixChecker const &', 'arg0')])
+    return
+
+def register_Ns3Ipv6PrefixValue_methods(root_module, cls):
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue() [constructor]
+    cls.add_constructor([])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6PrefixValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv6PrefixValue const &', 'arg0')])
+    ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6Prefix const & value) [constructor]
+    cls.add_constructor([param('ns3::Ipv6Prefix const &', 'value')])
+    ## ipv6-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Ipv6PrefixValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6PrefixValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix ns3::Ipv6PrefixValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ipv6Prefix', 
+                   [], 
+                   is_const=True)
+    ## ipv6-address.h (module 'network'): std::string ns3::Ipv6PrefixValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## ipv6-address.h (module 'network'): void ns3::Ipv6PrefixValue::Set(ns3::Ipv6Prefix const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv6Prefix const &', 'value')])
+    return
+
+def register_Ns3LrWpanCsmaCa_methods(root_module, cls):
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanCsmaCa::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::LrWpanCsmaCa::LrWpanCsmaCa() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMac(ns3::Ptr<ns3::LrWpanMac> mac) [member function]
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanMac >', 'mac')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanMac> ns3::LrWpanCsmaCa::GetMac() const [member function]
+    cls.add_method('GetMac', 
+                   'ns3::Ptr< ns3::LrWpanMac >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetSlottedCsmaCa() [member function]
+    cls.add_method('SetSlottedCsmaCa', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetUnSlottedCsmaCa() [member function]
+    cls.add_method('SetUnSlottedCsmaCa', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): bool ns3::LrWpanCsmaCa::IsSlottedCsmaCa() const [member function]
+    cls.add_method('IsSlottedCsmaCa', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): bool ns3::LrWpanCsmaCa::IsUnSlottedCsmaCa() const [member function]
+    cls.add_method('IsUnSlottedCsmaCa', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMinBE(uint8_t macMinBE) [member function]
+    cls.add_method('SetMacMinBE', 
+                   'void', 
+                   [param('uint8_t', 'macMinBE')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMinBE() const [member function]
+    cls.add_method('GetMacMinBE', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMaxBE(uint8_t macMaxBE) [member function]
+    cls.add_method('SetMacMaxBE', 
+                   'void', 
+                   [param('uint8_t', 'macMaxBE')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMaxBE() const [member function]
+    cls.add_method('GetMacMaxBE', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetMacMaxCSMABackoffs(uint8_t macMaxCSMABackoffs) [member function]
+    cls.add_method('SetMacMaxCSMABackoffs', 
+                   'void', 
+                   [param('uint8_t', 'macMaxCSMABackoffs')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetMacMaxCSMABackoffs() const [member function]
+    cls.add_method('GetMacMaxCSMABackoffs', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetUnitBackoffPeriod(uint64_t unitBackoffPeriod) [member function]
+    cls.add_method('SetUnitBackoffPeriod', 
+                   'void', 
+                   [param('uint64_t', 'unitBackoffPeriod')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint64_t ns3::LrWpanCsmaCa::GetUnitBackoffPeriod() const [member function]
+    cls.add_method('GetUnitBackoffPeriod', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): ns3::Time ns3::LrWpanCsmaCa::GetTimeToNextSlot() const [member function]
+    cls.add_method('GetTimeToNextSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::Start() [member function]
+    cls.add_method('Start', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::Cancel() [member function]
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::RandomBackoffDelay() [member function]
+    cls.add_method('RandomBackoffDelay', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::CanProceed() [member function]
+    cls.add_method('CanProceed', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::RequestCCA() [member function]
+    cls.add_method('RequestCCA', 
+                   'void', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::PlmeCcaConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeCcaConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::SetLrWpanMacStateCallback(ns3::LrWpanMacStateCallback macState) [member function]
+    cls.add_method('SetLrWpanMacStateCallback', 
+                   'void', 
+                   [param('ns3::LrWpanMacStateCallback', 'macState')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): int64_t ns3::LrWpanCsmaCa::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): uint8_t ns3::LrWpanCsmaCa::GetNB() [member function]
+    cls.add_method('GetNB', 
+                   'uint8_t', 
+                   [])
+    ## lr-wpan-csmaca.h (module 'lr-wpan'): void ns3::LrWpanCsmaCa::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanErrorModel_methods(root_module, cls):
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel::LrWpanErrorModel(ns3::LrWpanErrorModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanErrorModel const &', 'arg0')])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): ns3::LrWpanErrorModel::LrWpanErrorModel() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-error-model.h (module 'lr-wpan'): double ns3::LrWpanErrorModel::GetChunkSuccessRate(double snr, uint32_t nbits) const [member function]
+    cls.add_method('GetChunkSuccessRate', 
+                   'double', 
+                   [param('double', 'snr'), param('uint32_t', 'nbits')], 
+                   is_const=True)
+    ## lr-wpan-error-model.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanErrorModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3LrWpanInterferenceHelper_methods(root_module, cls):
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::LrWpanInterferenceHelper::LrWpanInterferenceHelper(ns3::Ptr<ns3::SpectrumModel const> spectrumModel) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::SpectrumModel const >', 'spectrumModel')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): bool ns3::LrWpanInterferenceHelper::AddSignal(ns3::Ptr<ns3::SpectrumValue const> signal) [member function]
+    cls.add_method('AddSignal', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'signal')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): bool ns3::LrWpanInterferenceHelper::RemoveSignal(ns3::Ptr<ns3::SpectrumValue const> signal) [member function]
+    cls.add_method('RemoveSignal', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'signal')])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): void ns3::LrWpanInterferenceHelper::ClearSignals() [member function]
+    cls.add_method('ClearSignals', 
+                   'void', 
+                   [])
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue> ns3::LrWpanInterferenceHelper::GetSignalPsd() const [member function]
+    cls.add_method('GetSignalPsd', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-interference-helper.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumModel const> ns3::LrWpanInterferenceHelper::GetSpectrumModel() const [member function]
+    cls.add_method('GetSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3LrWpanMac_methods(root_module, cls):
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::LrWpanMac(ns3::LrWpanMac const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMac const &', 'arg0')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::LrWpanMac() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanAssociationStatus ns3::LrWpanMac::GetAssociationStatus() const [member function]
+    cls.add_method('GetAssociationStatus', 
+                   'ns3::LrWpanAssociationStatus', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Mac64Address ns3::LrWpanMac::GetExtendedAddress() const [member function]
+    cls.add_method('GetExtendedAddress', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint64_t ns3::LrWpanMac::GetMacAckWaitDuration() const [member function]
+    cls.add_method('GetMacAckWaitDuration', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint8_t ns3::LrWpanMac::GetMacMaxFrameRetries() const [member function]
+    cls.add_method('GetMacMaxFrameRetries', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): uint16_t ns3::LrWpanMac::GetPanId() const [member function]
+    cls.add_method('GetPanId', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanPhy> ns3::LrWpanMac::GetPhy() [member function]
+    cls.add_method('GetPhy', 
+                   'ns3::Ptr< ns3::LrWpanPhy >', 
+                   [])
+    ## lr-wpan-mac.h (module 'lr-wpan'): bool ns3::LrWpanMac::GetRxOnWhenIdle() [member function]
+    cls.add_method('GetRxOnWhenIdle', 
+                   'bool', 
+                   [])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::Mac16Address ns3::LrWpanMac::GetShortAddress() const [member function]
+    cls.add_method('GetShortAddress', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMac::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::McpsDataRequest(ns3::McpsDataRequestParams params, ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('McpsDataRequest', 
+                   'void', 
+                   [param('ns3::McpsDataRequestParams', 'params'), param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PdDataConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PdDataConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PdDataIndication(uint32_t psduLength, ns3::Ptr<ns3::Packet> p, uint8_t lqi) [member function]
+    cls.add_method('PdDataIndication', 
+                   'void', 
+                   [param('uint32_t', 'psduLength'), param('ns3::Ptr< ns3::Packet >', 'p'), param('uint8_t', 'lqi')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeCcaConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeCcaConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeEdConfirm(ns3::LrWpanPhyEnumeration status, uint8_t energyLevel) [member function]
+    cls.add_method('PlmeEdConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('uint8_t', 'energyLevel')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeGetAttributeConfirm(ns3::LrWpanPhyEnumeration status, ns3::LrWpanPibAttributeIdentifier id, ns3::LrWpanPhyPibAttributes * attribute) [member function]
+    cls.add_method('PlmeGetAttributeConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('ns3::LrWpanPibAttributeIdentifier', 'id'), param('ns3::LrWpanPhyPibAttributes *', 'attribute')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeSetAttributeConfirm(ns3::LrWpanPhyEnumeration status, ns3::LrWpanPibAttributeIdentifier id) [member function]
+    cls.add_method('PlmeSetAttributeConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status'), param('ns3::LrWpanPibAttributeIdentifier', 'id')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::PlmeSetTRXStateConfirm(ns3::LrWpanPhyEnumeration status) [member function]
+    cls.add_method('PlmeSetTRXStateConfirm', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetAssociationStatus(ns3::LrWpanAssociationStatus status) [member function]
+    cls.add_method('SetAssociationStatus', 
+                   'void', 
+                   [param('ns3::LrWpanAssociationStatus', 'status')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetCsmaCa(ns3::Ptr<ns3::LrWpanCsmaCa> csmaCa) [member function]
+    cls.add_method('SetCsmaCa', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanCsmaCa >', 'csmaCa')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetExtendedAddress(ns3::Mac64Address address) [member function]
+    cls.add_method('SetExtendedAddress', 
+                   'void', 
+                   [param('ns3::Mac64Address', 'address')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetLrWpanMacState(ns3::LrWpanMacState macState) [member function]
+    cls.add_method('SetLrWpanMacState', 
+                   'void', 
+                   [param('ns3::LrWpanMacState', 'macState')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMacMaxFrameRetries(uint8_t retries) [member function]
+    cls.add_method('SetMacMaxFrameRetries', 
+                   'void', 
+                   [param('uint8_t', 'retries')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMcpsDataConfirmCallback(ns3::McpsDataConfirmCallback c) [member function]
+    cls.add_method('SetMcpsDataConfirmCallback', 
+                   'void', 
+                   [param('ns3::McpsDataConfirmCallback', 'c')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetMcpsDataIndicationCallback(ns3::McpsDataIndicationCallback c) [member function]
+    cls.add_method('SetMcpsDataIndicationCallback', 
+                   'void', 
+                   [param('ns3::McpsDataIndicationCallback', 'c')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetPanId(uint16_t panId) [member function]
+    cls.add_method('SetPanId', 
+                   'void', 
+                   [param('uint16_t', 'panId')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetPhy(ns3::Ptr<ns3::LrWpanPhy> phy) [member function]
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetRxOnWhenIdle(bool rxOnWhenIdle) [member function]
+    cls.add_method('SetRxOnWhenIdle', 
+                   'void', 
+                   [param('bool', 'rxOnWhenIdle')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::SetShortAddress(ns3::Mac16Address address) [member function]
+    cls.add_method('SetShortAddress', 
+                   'void', 
+                   [param('ns3::Mac16Address', 'address')])
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::aMinMPDUOverhead [variable]
+    cls.add_static_attribute('aMinMPDUOverhead', 'uint32_t const', is_const=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aBaseSlotDuration [variable]
+    cls.add_instance_attribute('m_aBaseSlotDuration', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aBaseSuperframeDuration [variable]
+    cls.add_instance_attribute('m_aBaseSuperframeDuration', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_aNumSuperframeSlots [variable]
+    cls.add_instance_attribute('m_aNumSuperframeSlots', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macBeaconOrder [variable]
+    cls.add_instance_attribute('m_macBeaconOrder', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macBeaconTxTime [variable]
+    cls.add_instance_attribute('m_macBeaconTxTime', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macDsn [variable]
+    cls.add_instance_attribute('m_macDsn', 'ns3::SequenceNumber8', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macMaxFrameRetries [variable]
+    cls.add_instance_attribute('m_macMaxFrameRetries', 'uint8_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macPanId [variable]
+    cls.add_instance_attribute('m_macPanId', 'uint16_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macPromiscuousMode [variable]
+    cls.add_instance_attribute('m_macPromiscuousMode', 'bool', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macRxOnWhenIdle [variable]
+    cls.add_instance_attribute('m_macRxOnWhenIdle', 'bool', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macSuperframeOrder [variable]
+    cls.add_instance_attribute('m_macSuperframeOrder', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): ns3::LrWpanMac::m_macSyncSymbolOffset [variable]
+    cls.add_instance_attribute('m_macSyncSymbolOffset', 'uint64_t', is_const=False)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lr-wpan-mac.h (module 'lr-wpan'): void ns3::LrWpanMac::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LrWpanMacTrailer_methods(root_module, cls):
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LrWpanMacTrailer(ns3::LrWpanMacTrailer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanMacTrailer const &', 'arg0')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LrWpanMacTrailer() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): bool ns3::LrWpanMacTrailer::CheckFcs(ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('CheckFcs', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacTrailer::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::EnableFcs(bool enable) [member function]
+    cls.add_method('EnableFcs', 
+                   'void', 
+                   [param('bool', 'enable')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint16_t ns3::LrWpanMacTrailer::GetFcs() const [member function]
+    cls.add_method('GetFcs', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::TypeId ns3::LrWpanMacTrailer::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): uint32_t ns3::LrWpanMacTrailer::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanMacTrailer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): bool ns3::LrWpanMacTrailer::IsFcsEnabled() [member function]
+    cls.add_method('IsFcsEnabled', 
+                   'bool', 
+                   [])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): void ns3::LrWpanMacTrailer::SetFcs(ns3::Ptr<const ns3::Packet> p) [member function]
+    cls.add_method('SetFcs', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'p')])
+    ## lr-wpan-mac-trailer.h (module 'lr-wpan'): ns3::LrWpanMacTrailer::LR_WPAN_MAC_FCS_LENGTH [variable]
+    cls.add_static_attribute('LR_WPAN_MAC_FCS_LENGTH', 'uint16_t const', is_const=True)
+    return
+
+def register_Ns3LrWpanPhy_methods(root_module, cls):
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::aMaxPhyPacketSize [variable]
+    cls.add_static_attribute('aMaxPhyPacketSize', 'uint32_t const', is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::aTurnaroundTime [variable]
+    cls.add_static_attribute('aTurnaroundTime', 'uint32_t const', is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanPhy::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::LrWpanPhy::LrWpanPhy() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetMobility(ns3::Ptr<ns3::MobilityModel> m) [member function]
+    cls.add_method('SetMobility', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'm')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::MobilityModel> ns3::LrWpanPhy::GetMobility() [member function]
+    cls.add_method('GetMobility', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetChannel(ns3::Ptr<ns3::SpectrumChannel> c) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'c')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumChannel> ns3::LrWpanPhy::GetChannel() [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::SpectrumChannel >', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetDevice(ns3::Ptr<ns3::NetDevice> d) [member function]
+    cls.add_method('SetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'd')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::NetDevice> ns3::LrWpanPhy::GetDevice() [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetAntenna(ns3::Ptr<ns3::AntennaModel> a) [member function]
+    cls.add_method('SetAntenna', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::AntennaModel >', 'a')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::AntennaModel> ns3::LrWpanPhy::GetRxAntenna() [member function]
+    cls.add_method('GetRxAntenna', 
+                   'ns3::Ptr< ns3::AntennaModel >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumModel const> ns3::LrWpanPhy::GetRxSpectrumModel() const [member function]
+    cls.add_method('GetRxSpectrumModel', 
+                   'ns3::Ptr< ns3::SpectrumModel const >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetTxPowerSpectralDensity(ns3::Ptr<ns3::SpectrumValue> txPsd) [member function]
+    cls.add_method('SetTxPowerSpectralDensity', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumValue >', 'txPsd')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetNoisePowerSpectralDensity(ns3::Ptr<ns3::SpectrumValue const> noisePsd) [member function]
+    cls.add_method('SetNoisePowerSpectralDensity', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumValue const >', 'noisePsd')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumValue const> ns3::LrWpanPhy::GetNoisePowerSpectralDensity() [member function]
+    cls.add_method('GetNoisePowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue const >', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::StartRx(ns3::Ptr<ns3::SpectrumSignalParameters> params) [member function]
+    cls.add_method('StartRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumSignalParameters >', 'params')], 
+                   is_virtual=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PdDataRequest(uint32_t const psduLength, ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('PdDataRequest', 
+                   'void', 
+                   [param('uint32_t const', 'psduLength'), param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeCcaRequest() [member function]
+    cls.add_method('PlmeCcaRequest', 
+                   'void', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeEdRequest() [member function]
+    cls.add_method('PlmeEdRequest', 
+                   'void', 
+                   [])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeGetAttributeRequest(ns3::LrWpanPibAttributeIdentifier id) [member function]
+    cls.add_method('PlmeGetAttributeRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPibAttributeIdentifier', 'id')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeSetTRXStateRequest(ns3::LrWpanPhyEnumeration state) [member function]
+    cls.add_method('PlmeSetTRXStateRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPhyEnumeration', 'state')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::PlmeSetAttributeRequest(ns3::LrWpanPibAttributeIdentifier id, ns3::LrWpanPhyPibAttributes * attribute) [member function]
+    cls.add_method('PlmeSetAttributeRequest', 
+                   'void', 
+                   [param('ns3::LrWpanPibAttributeIdentifier', 'id'), param('ns3::LrWpanPhyPibAttributes *', 'attribute')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPdDataIndicationCallback(ns3::PdDataIndicationCallback c) [member function]
+    cls.add_method('SetPdDataIndicationCallback', 
+                   'void', 
+                   [param('ns3::PdDataIndicationCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPdDataConfirmCallback(ns3::PdDataConfirmCallback c) [member function]
+    cls.add_method('SetPdDataConfirmCallback', 
+                   'void', 
+                   [param('ns3::PdDataConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeCcaConfirmCallback(ns3::PlmeCcaConfirmCallback c) [member function]
+    cls.add_method('SetPlmeCcaConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeCcaConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeEdConfirmCallback(ns3::PlmeEdConfirmCallback c) [member function]
+    cls.add_method('SetPlmeEdConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeEdConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeGetAttributeConfirmCallback(ns3::PlmeGetAttributeConfirmCallback c) [member function]
+    cls.add_method('SetPlmeGetAttributeConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeGetAttributeConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeSetTRXStateConfirmCallback(ns3::PlmeSetTRXStateConfirmCallback c) [member function]
+    cls.add_method('SetPlmeSetTRXStateConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeSetTRXStateConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetPlmeSetAttributeConfirmCallback(ns3::PlmeSetAttributeConfirmCallback c) [member function]
+    cls.add_method('SetPlmeSetAttributeConfirmCallback', 
+                   'void', 
+                   [param('ns3::PlmeSetAttributeConfirmCallback', 'c')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): double ns3::LrWpanPhy::GetDataOrSymbolRate(bool isData) [member function]
+    cls.add_method('GetDataOrSymbolRate', 
+                   'double', 
+                   [param('bool', 'isData')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::SetErrorModel(ns3::Ptr<ns3::LrWpanErrorModel> e) [member function]
+    cls.add_method('SetErrorModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanErrorModel >', 'e')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanErrorModel> ns3::LrWpanPhy::GetErrorModel() const [member function]
+    cls.add_method('GetErrorModel', 
+                   'ns3::Ptr< ns3::LrWpanErrorModel >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): uint64_t ns3::LrWpanPhy::GetPhySHRDuration() const [member function]
+    cls.add_method('GetPhySHRDuration', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): double ns3::LrWpanPhy::GetPhySymbolsPerOctet() const [member function]
+    cls.add_method('GetPhySymbolsPerOctet', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-phy.h (module 'lr-wpan'): int64_t ns3::LrWpanPhy::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-phy.h (module 'lr-wpan'): void ns3::LrWpanPhy::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3LrWpanSpectrumSignalParameters_methods(root_module, cls):
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters(ns3::LrWpanSpectrumSignalParameters const & p) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanSpectrumSignalParameters const &', 'p')])
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::Ptr<ns3::SpectrumSignalParameters> ns3::LrWpanSpectrumSignalParameters::Copy() [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::SpectrumSignalParameters >', 
+                   [], 
+                   is_virtual=True)
+    ## lr-wpan-spectrum-signal-parameters.h (module 'lr-wpan'): ns3::LrWpanSpectrumSignalParameters::packetBurst [variable]
+    cls.add_instance_attribute('packetBurst', 'ns3::Ptr< ns3::PacketBurst >', is_const=False)
+    return
+
+def register_Ns3Mac16AddressChecker_methods(root_module, cls):
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker::Mac16AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressChecker::Mac16AddressChecker(ns3::Mac16AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Mac16AddressValue_methods(root_module, cls):
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue() [constructor]
+    cls.add_constructor([])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue(ns3::Mac16AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac16AddressValue const &', 'arg0')])
+    ## mac16-address.h (module 'network'): ns3::Mac16AddressValue::Mac16AddressValue(ns3::Mac16Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Mac16Address const &', 'value')])
+    ## mac16-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Mac16AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## mac16-address.h (module 'network'): bool ns3::Mac16AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## mac16-address.h (module 'network'): ns3::Mac16Address ns3::Mac16AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Mac16Address', 
+                   [], 
+                   is_const=True)
+    ## mac16-address.h (module 'network'): std::string ns3::Mac16AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## mac16-address.h (module 'network'): void ns3::Mac16AddressValue::Set(ns3::Mac16Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Mac16Address const &', 'value')])
+    return
+
+def register_Ns3Mac64AddressChecker_methods(root_module, cls):
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker::Mac64AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressChecker::Mac64AddressChecker(ns3::Mac64AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3Mac64AddressValue_methods(root_module, cls):
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue() [constructor]
+    cls.add_constructor([])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue(ns3::Mac64AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Mac64AddressValue const &', 'arg0')])
+    ## mac64-address.h (module 'network'): ns3::Mac64AddressValue::Mac64AddressValue(ns3::Mac64Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Mac64Address const &', 'value')])
+    ## mac64-address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::Mac64AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## mac64-address.h (module 'network'): bool ns3::Mac64AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## mac64-address.h (module 'network'): ns3::Mac64Address ns3::Mac64AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_const=True)
+    ## mac64-address.h (module 'network'): std::string ns3::Mac64AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## mac64-address.h (module 'network'): void ns3::Mac64AddressValue::Set(ns3::Mac64Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Mac64Address const &', 'value')])
+    return
+
+def register_Ns3NetDevice_methods(root_module, cls):
+    ## net-device.h (module 'network'): ns3::NetDevice::NetDevice() [constructor]
+    cls.add_constructor([])
+    ## net-device.h (module 'network'): ns3::NetDevice::NetDevice(ns3::NetDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NetDevice const &', 'arg0')])
+    ## net-device.h (module 'network'): void ns3::NetDevice::AddLinkChangeCallback(ns3::Callback<void,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> callback) [member function]
+    cls.add_method('AddLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Ptr<ns3::Channel> ns3::NetDevice::GetChannel() const [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): uint32_t ns3::NetDevice::GetIfIndex() const [member function]
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): uint16_t ns3::NetDevice::GetMtu() const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Address ns3::NetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): ns3::Ptr<ns3::Node> ns3::NetDevice::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): static ns3::TypeId ns3::NetDevice::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsBridge() const [member function]
+    cls.add_method('IsBridge', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsLinkUp() const [member function]
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::IsPointToPoint() const [member function]
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::NeedsArp() const [member function]
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetAddress(ns3::Address address) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetIfIndex(uint32_t const index) [member function]
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t const', 'index')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SetMtu(uint16_t const mtu) [member function]
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t const', 'mtu')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetPromiscReceiveCallback(ns3::Callback<bool,ns3::Ptr<ns3::NetDevice>,ns3::Ptr<const ns3::Packet>,short unsigned int,const ns3::Address&,const ns3::Address&,ns3::NetDevice::PacketType,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, short unsigned int, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): void ns3::NetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h (module 'network'): bool ns3::NetDevice::SupportsSendFrom() const [member function]
+    cls.add_method('SupportsSendFrom', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3NixVector_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
+    cls.add_constructor([])
+    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector(ns3::NixVector const & o) [copy constructor]
+    cls.add_constructor([param('ns3::NixVector const &', 'o')])
+    ## nix-vector.h (module 'network'): void ns3::NixVector::AddNeighborIndex(uint32_t newBits, uint32_t numberOfBits) [member function]
+    cls.add_method('AddNeighborIndex', 
+                   'void', 
+                   [param('uint32_t', 'newBits'), param('uint32_t', 'numberOfBits')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::BitCount(uint32_t numberOfNeighbors) const [member function]
+    cls.add_method('BitCount', 
+                   'uint32_t', 
+                   [param('uint32_t', 'numberOfNeighbors')], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::NixVector::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::NixVector >', 
+                   [], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Deserialize(uint32_t const * buffer, uint32_t size) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('uint32_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::ExtractNeighborIndex(uint32_t numberOfBits) [member function]
+    cls.add_method('ExtractNeighborIndex', 
+                   'uint32_t', 
+                   [param('uint32_t', 'numberOfBits')])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetRemainingBits() [member function]
+    cls.add_method('GetRemainingBits', 
+                   'uint32_t', 
+                   [])
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Serialize(uint32_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint32_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    return
+
+def register_Ns3Node_methods(root_module, cls):
+    ## node.h (module 'network'): ns3::Node::Node(ns3::Node const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Node const &', 'arg0')])
+    ## node.h (module 'network'): ns3::Node::Node() [constructor]
+    cls.add_constructor([])
+    ## node.h (module 'network'): ns3::Node::Node(uint32_t systemId) [constructor]
+    cls.add_constructor([param('uint32_t', 'systemId')])
+    ## node.h (module 'network'): uint32_t ns3::Node::AddApplication(ns3::Ptr<ns3::Application> application) [member function]
+    cls.add_method('AddApplication', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::Application >', 'application')])
+    ## node.h (module 'network'): uint32_t ns3::Node::AddDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddDevice', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    ## node.h (module 'network'): static bool ns3::Node::ChecksumEnabled() [member function]
+    cls.add_method('ChecksumEnabled', 
+                   'bool', 
+                   [], 
+                   is_static=True)
+    ## node.h (module 'network'): ns3::Ptr<ns3::Application> ns3::Node::GetApplication(uint32_t index) const [member function]
+    cls.add_method('GetApplication', 
+                   'ns3::Ptr< ns3::Application >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
+    ## node.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::Node::GetDevice(uint32_t index) const [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetId() const [member function]
+    cls.add_method('GetId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetNApplications() const [member function]
+    cls.add_method('GetNApplications', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetNDevices() const [member function]
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): uint32_t ns3::Node::GetSystemId() const [member function]
+    cls.add_method('GetSystemId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h (module 'network'): static ns3::TypeId ns3::Node::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## node.h (module 'network'): void ns3::Node::RegisterDeviceAdditionListener(ns3::Callback<void,ns3::Ptr<ns3::NetDevice>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> listener) [member function]
+    cls.add_method('RegisterDeviceAdditionListener', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'listener')])
+    ## node.h (module 'network'): void ns3::Node::RegisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> handler, uint16_t protocolType, ns3::Ptr<ns3::NetDevice> device, bool promiscuous=false) [member function]
+    cls.add_method('RegisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'handler'), param('uint16_t', 'protocolType'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'promiscuous', default_value='false')])
+    ## node.h (module 'network'): void ns3::Node::UnregisterDeviceAdditionListener(ns3::Callback<void,ns3::Ptr<ns3::NetDevice>,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> listener) [member function]
+    cls.add_method('UnregisterDeviceAdditionListener', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'listener')])
+    ## node.h (module 'network'): void ns3::Node::UnregisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> handler) [member function]
+    cls.add_method('UnregisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'handler')])
+    ## node.h (module 'network'): void ns3::Node::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## node.h (module 'network'): void ns3::Node::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
+    return
+
+def register_Ns3ObjectFactoryValue_methods(root_module, cls):
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
+    cls.add_constructor([])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
+    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
+    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
+    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::ObjectFactory', 
+                   [], 
+                   is_const=True)
+    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::ObjectFactory const &', 'value')])
+    return
+
+def register_Ns3OutputStreamWrapper_methods(root_module, cls):
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(ns3::OutputStreamWrapper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::OutputStreamWrapper const &', 'arg0')])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(std::string filename, std::_Ios_Openmode filemode) [constructor]
+    cls.add_constructor([param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode')])
+    ## output-stream-wrapper.h (module 'network'): ns3::OutputStreamWrapper::OutputStreamWrapper(std::ostream * os) [constructor]
+    cls.add_constructor([param('std::ostream *', 'os')])
+    ## output-stream-wrapper.h (module 'network'): std::ostream * ns3::OutputStreamWrapper::GetStream() [member function]
+    cls.add_method('GetStream', 
+                   'std::ostream *', 
+                   [])
+    return
+
+def register_Ns3Packet_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## packet.h (module 'network'): ns3::Packet::Packet() [constructor]
+    cls.add_constructor([])
+    ## packet.h (module 'network'): ns3::Packet::Packet(ns3::Packet const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Packet const &', 'o')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint32_t size) [constructor]
+    cls.add_constructor([param('uint32_t', 'size')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size, bool magic) [constructor]
+    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size'), param('bool', 'magic')])
+    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
+    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::AddAtEnd(ns3::Ptr<const ns3::Packet> packet) [member function]
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    ## packet.h (module 'network'): void ns3::Packet::AddByteTag(ns3::Tag const & tag) const [member function]
+    cls.add_method('AddByteTag', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::AddHeader(ns3::Header const & header) [member function]
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Header const &', 'header')])
+    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Tag const & tag) const [member function]
+    cls.add_method('AddPacketTag', 
+                   'void', 
+                   [param('ns3::Tag const &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
+    cls.add_method('AddPaddingAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::AddTrailer(ns3::Trailer const & trailer) [member function]
+    cls.add_method('AddTrailer', 
+                   'void', 
+                   [param('ns3::Trailer const &', 'trailer')])
+    ## packet.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::Packet::BeginItem() const [member function]
+    cls.add_method('BeginItem', 
+                   'ns3::PacketMetadata::ItemIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::CopyData(uint8_t * buffer, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::CopyData(std::ostream * os, uint32_t size) const [member function]
+    cls.add_method('CopyData', 
+                   'void', 
+                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function]
+    cls.add_method('CreateFragment', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
+    ## packet.h (module 'network'): static void ns3::Packet::EnableChecking() [member function]
+    cls.add_method('EnableChecking', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet.h (module 'network'): static void ns3::Packet::EnablePrinting() [member function]
+    cls.add_method('EnablePrinting', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## packet.h (module 'network'): bool ns3::Packet::FindFirstMatchingByteTag(ns3::Tag & tag) const [member function]
+    cls.add_method('FindFirstMatchingByteTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::ByteTagIterator ns3::Packet::GetByteTagIterator() const [member function]
+    cls.add_method('GetByteTagIterator', 
+                   'ns3::ByteTagIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::Packet::GetNixVector() const [member function]
+    cls.add_method('GetNixVector', 
+                   'ns3::Ptr< ns3::NixVector >', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): ns3::PacketTagIterator ns3::Packet::GetPacketTagIterator() const [member function]
+    cls.add_method('GetPacketTagIterator', 
+                   'ns3::PacketTagIterator', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSize() const [member function]
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint64_t ns3::Packet::GetUid() const [member function]
+    cls.add_method('GetUid', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint8_t const * ns3::Packet::PeekData() const [member function]
+    cls.add_method('PeekData', 
+                   'uint8_t const *', 
+                   [], 
+                   deprecated=True, is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header) const [member function]
+    cls.add_method('PeekHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header &', 'header')], 
+                   is_const=True)
+    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
+    cls.add_method('PeekPacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')], 
+                   is_const=True)
+    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
+    cls.add_method('PeekTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer &', 'trailer')])
+    ## packet.h (module 'network'): void ns3::Packet::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::PrintByteTags(std::ostream & os) const [member function]
+    cls.add_method('PrintByteTags', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::PrintPacketTags(std::ostream & os) const [member function]
+    cls.add_method('PrintPacketTags', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAllByteTags() [member function]
+    cls.add_method('RemoveAllByteTags', 
+                   'void', 
+                   [])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAllPacketTags() [member function]
+    cls.add_method('RemoveAllPacketTags', 
+                   'void', 
+                   [])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAtEnd(uint32_t size) [member function]
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): void ns3::Packet::RemoveAtStart(uint32_t size) [member function]
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'size')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header) [member function]
+    cls.add_method('RemoveHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header &', 'header')])
+    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
+    cls.add_method('RemovePacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
+    cls.add_method('RemoveTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer &', 'trailer')])
+    ## packet.h (module 'network'): bool ns3::Packet::ReplacePacketTag(ns3::Tag & tag) [member function]
+    cls.add_method('ReplacePacketTag', 
+                   'bool', 
+                   [param('ns3::Tag &', 'tag')])
+    ## packet.h (module 'network'): uint32_t ns3::Packet::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
+    cls.add_method('Serialize', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
+                   is_const=True)
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
+    cls.add_method('SetNixVector', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
+    return
+
+def register_Ns3TimeValue_methods(root_module, cls):
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
+    cls.add_constructor([])
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
+    cls.add_constructor([param('ns3::Time const &', 'value')])
+    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Time const &', 'value')])
+    return
+
+def register_Ns3TypeIdChecker_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker(ns3::TypeIdChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeIdChecker const &', 'arg0')])
+    return
+
+def register_Ns3TypeIdValue_methods(root_module, cls):
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue() [constructor]
+    cls.add_constructor([])
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeIdValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TypeIdValue const &', 'arg0')])
+    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
+    cls.add_constructor([param('ns3::TypeId const &', 'value')])
+    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TypeIdValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## type-id.h (module 'core'): bool ns3::TypeIdValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeIdValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
+    ## type-id.h (module 'core'): std::string ns3::TypeIdValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## type-id.h (module 'core'): void ns3::TypeIdValue::Set(ns3::TypeId const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::TypeId const &', 'value')])
+    return
+
+def register_Ns3AddressChecker_methods(root_module, cls):
+    ## address.h (module 'network'): ns3::AddressChecker::AddressChecker() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::AddressChecker::AddressChecker(ns3::AddressChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AddressChecker const &', 'arg0')])
+    return
+
+def register_Ns3AddressValue_methods(root_module, cls):
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue() [constructor]
+    cls.add_constructor([])
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue(ns3::AddressValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::AddressValue const &', 'arg0')])
+    ## address.h (module 'network'): ns3::AddressValue::AddressValue(ns3::Address const & value) [constructor]
+    cls.add_constructor([param('ns3::Address const &', 'value')])
+    ## address.h (module 'network'): ns3::Ptr<ns3::AttributeValue> ns3::AddressValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## address.h (module 'network'): bool ns3::AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## address.h (module 'network'): ns3::Address ns3::AddressValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True)
+    ## address.h (module 'network'): std::string ns3::AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## address.h (module 'network'): void ns3::AddressValue::Set(ns3::Address const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Address const &', 'value')])
+    return
+
+def register_Ns3LrWpanNetDevice_methods(root_module, cls):
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice::LrWpanNetDevice(ns3::LrWpanNetDevice const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LrWpanNetDevice const &', 'arg0')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::LrWpanNetDevice::LrWpanNetDevice() [constructor]
+    cls.add_constructor([])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::AddLinkChangeCallback(ns3::Callback<void,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> callback) [member function]
+    cls.add_method('AddLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): int64_t ns3::LrWpanNetDevice::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::Channel> ns3::LrWpanNetDevice::GetChannel() const [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanCsmaCa> ns3::LrWpanNetDevice::GetCsmaCa() const [member function]
+    cls.add_method('GetCsmaCa', 
+                   'ns3::Ptr< ns3::LrWpanCsmaCa >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): uint32_t ns3::LrWpanNetDevice::GetIfIndex() const [member function]
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanMac> ns3::LrWpanNetDevice::GetMac() const [member function]
+    cls.add_method('GetMac', 
+                   'ns3::Ptr< ns3::LrWpanMac >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): uint16_t ns3::LrWpanNetDevice::GetMtu() const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetMulticast(ns3::Ipv4Address multicastGroup) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Address ns3::LrWpanNetDevice::GetMulticast(ns3::Ipv6Address addr) const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv6Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::Node> ns3::LrWpanNetDevice::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): ns3::Ptr<ns3::LrWpanPhy> ns3::LrWpanNetDevice::GetPhy() const [member function]
+    cls.add_method('GetPhy', 
+                   'ns3::Ptr< ns3::LrWpanPhy >', 
+                   [], 
+                   is_const=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): static ns3::TypeId ns3::LrWpanNetDevice::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsBridge() const [member function]
+    cls.add_method('IsBridge', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsLinkUp() const [member function]
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::IsPointToPoint() const [member function]
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::McpsDataIndication(ns3::McpsDataIndicationParams params, ns3::Ptr<ns3::Packet> pkt) [member function]
+    cls.add_method('McpsDataIndication', 
+                   'void', 
+                   [param('ns3::McpsDataIndicationParams', 'params'), param('ns3::Ptr< ns3::Packet >', 'pkt')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::NeedsArp() const [member function]
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address const &', 'source'), param('ns3::Address const &', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetAddress(ns3::Address address) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'address')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetChannel(ns3::Ptr<ns3::SpectrumChannel> channel) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SpectrumChannel >', 'channel')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetCsmaCa(ns3::Ptr<ns3::LrWpanCsmaCa> csmaca) [member function]
+    cls.add_method('SetCsmaCa', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanCsmaCa >', 'csmaca')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetIfIndex(uint32_t const index) [member function]
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t const', 'index')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetMac(ns3::Ptr<ns3::LrWpanMac> mac) [member function]
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanMac >', 'mac')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SetMtu(uint16_t const mtu) [member function]
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t const', 'mtu')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetPhy(ns3::Ptr<ns3::LrWpanPhy> phy) [member function]
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LrWpanPhy >', 'phy')])
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool,ns3::Ptr<ns3::NetDevice>,ns3::Ptr<const ns3::Packet>,short unsigned int,const ns3::Address&,const ns3::Address&,ns3::NetDevice::PacketType,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, short unsigned int, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): bool ns3::LrWpanNetDevice::SupportsSendFrom() const [member function]
+    cls.add_method('SupportsSendFrom', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## lr-wpan-net-device.h (module 'lr-wpan'): void ns3::LrWpanNetDevice::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3HashImplementation_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation::Implementation(ns3::Hash::Implementation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Implementation const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Implementation::Implementation() [constructor]
+    cls.add_constructor([])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Implementation::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## hash-function.h (module 'core'): uint64_t ns3::Hash::Implementation::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Implementation::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3HashFunctionFnv1a_methods(root_module, cls):
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a::Fnv1a(ns3::Hash::Function::Fnv1a const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Fnv1a const &', 'arg0')])
+    ## hash-fnv.h (module 'core'): ns3::Hash::Function::Fnv1a::Fnv1a() [constructor]
+    cls.add_constructor([])
+    ## hash-fnv.h (module 'core'): uint32_t ns3::Hash::Function::Fnv1a::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-fnv.h (module 'core'): uint64_t ns3::Hash::Function::Fnv1a::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-fnv.h (module 'core'): void ns3::Hash::Function::Fnv1a::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionHash32_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32::Hash32(ns3::Hash::Function::Hash32 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Hash32 const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash32::Hash32(ns3::Hash::Hash32Function_ptr hp) [constructor]
+    cls.add_constructor([param('ns3::Hash::Hash32Function_ptr', 'hp')])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Function::Hash32::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Function::Hash32::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionHash64_methods(root_module, cls):
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64::Hash64(ns3::Hash::Function::Hash64 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Hash64 const &', 'arg0')])
+    ## hash-function.h (module 'core'): ns3::Hash::Function::Hash64::Hash64(ns3::Hash::Hash64Function_ptr hp) [constructor]
+    cls.add_constructor([param('ns3::Hash::Hash64Function_ptr', 'hp')])
+    ## hash-function.h (module 'core'): uint32_t ns3::Hash::Function::Hash64::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): uint64_t ns3::Hash::Function::Hash64::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-function.h (module 'core'): void ns3::Hash::Function::Hash64::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3HashFunctionMurmur3_methods(root_module, cls):
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3::Murmur3(ns3::Hash::Function::Murmur3 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Hash::Function::Murmur3 const &', 'arg0')])
+    ## hash-murmur3.h (module 'core'): ns3::Hash::Function::Murmur3::Murmur3() [constructor]
+    cls.add_constructor([])
+    ## hash-murmur3.h (module 'core'): uint32_t ns3::Hash::Function::Murmur3::GetHash32(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash32', 
+                   'uint32_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-murmur3.h (module 'core'): uint64_t ns3::Hash::Function::Murmur3::GetHash64(char const * buffer, size_t const size) [member function]
+    cls.add_method('GetHash64', 
+                   'uint64_t', 
+                   [param('char const *', 'buffer'), param('size_t const', 'size')], 
+                   is_virtual=True)
+    ## hash-murmur3.h (module 'core'): void ns3::Hash::Function::Murmur3::clear() [member function]
+    cls.add_method('clear', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_Hash(module.get_submodule('Hash'), root_module)
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_Hash(module, root_module):
+    register_functions_ns3_Hash_Function(module.get_submodule('Function'), root_module)
+    return
+
+def register_functions_ns3_Hash_Function(module, root_module):
+    return
+
+def main():
+    out = FileCodeSink(sys.stdout)
+    root_module = module_init()
+    register_types(root_module)
+    register_methods(root_module)
+    register_functions(root_module)
+    root_module.generate(out)
+
+if __name__ == '__main__':
+    main()
+
diff -Naur ns-3.19/src/lr-wpan/doc/802-15-4-ber.eps ns-3.20/src/lr-wpan/doc/802-15-4-ber.eps
--- ns-3.19/src/lr-wpan/doc/802-15-4-ber.eps	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/802-15-4-ber.eps	2014-06-17 10:33:13.892995969 -0700
@@ -0,0 +1,1030 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 802.15.4-ber.eps
+%%Creator: gnuplot 4.4 patchlevel 2
+%%CreationDate: Tue Oct  4 14:51:04 2011
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 410 302
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color true def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+Level1 {} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (802.15.4-ber.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.4 patchlevel 2)
+  /Author (tomh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue Oct  4 14:51:04 2011)
+  /DOCINFO pdfmark
+end
+} ifelse
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+	dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc
+	2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 450 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+	2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 360 arc closepath fill
+	vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+	neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+	exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+	Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+	Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%	x,y = lower left corner of box to be filled
+%	w,h = width and height of box
+%	  a = angle in degrees between lines and x-axis
+%	 XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+	0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+	{/InterpretLevel1 true def}
+	{/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+	bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+	0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+	8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+	0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+	0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+	0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+	0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+	12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+	-4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+end
+%%EndProlog
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Times-BoldItalic) findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTa
+938 448 M
+6009 0 V
+stroke
+LTb
+938 448 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 448 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-09)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 596 M
+31 0 V
+5978 0 R
+-31 0 V
+938 792 M
+31 0 V
+5978 0 R
+-31 0 V
+938 892 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 939 M
+6009 0 V
+stroke
+LTb
+938 939 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 939 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-08)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 1087 M
+31 0 V
+5978 0 R
+-31 0 V
+938 1283 M
+31 0 V
+5978 0 R
+-31 0 V
+938 1383 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 1431 M
+6009 0 V
+stroke
+LTb
+938 1431 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 1431 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-07)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 1579 M
+31 0 V
+5978 0 R
+-31 0 V
+938 1774 M
+31 0 V
+5978 0 R
+-31 0 V
+938 1875 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 1922 M
+6009 0 V
+stroke
+LTb
+938 1922 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 1922 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-06)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 2070 M
+31 0 V
+5978 0 R
+-31 0 V
+938 2266 M
+31 0 V
+5978 0 R
+-31 0 V
+938 2366 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 2414 M
+6009 0 V
+stroke
+LTb
+938 2414 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 2414 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-05)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 2562 M
+31 0 V
+5978 0 R
+-31 0 V
+938 2757 M
+31 0 V
+5978 0 R
+-31 0 V
+938 2858 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 2905 M
+6009 0 V
+stroke
+LTb
+938 2905 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 2905 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.0001)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 3053 M
+31 0 V
+5978 0 R
+-31 0 V
+938 3249 M
+31 0 V
+5978 0 R
+-31 0 V
+938 3349 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 3397 M
+6009 0 V
+stroke
+LTb
+938 3397 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 3397 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.001)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 3545 M
+31 0 V
+5978 0 R
+-31 0 V
+938 3740 M
+31 0 V
+5978 0 R
+-31 0 V
+938 3840 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 3888 M
+6009 0 V
+stroke
+LTb
+938 3888 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 3888 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.01)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 4036 M
+31 0 V
+5978 0 R
+-31 0 V
+938 4232 M
+31 0 V
+5978 0 R
+-31 0 V
+938 4332 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 4380 M
+6009 0 V
+stroke
+LTb
+938 4380 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 4380 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.1)]
+] -46.7 MRshow
+1.000 UL
+LTb
+938 4527 M
+31 0 V
+5978 0 R
+-31 0 V
+938 4723 M
+31 0 V
+5978 0 R
+-31 0 V
+938 4823 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+938 4871 M
+6009 0 V
+stroke
+LTb
+938 4871 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 4871 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+938 448 M
+0 4423 V
+stroke
+LTb
+938 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+938 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-10)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+2140 448 M
+0 4423 V
+stroke
+LTb
+2140 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+2140 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-5)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+3342 448 M
+0 4423 V
+stroke
+LTb
+3342 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+3342 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+4543 448 M
+0 4423 V
+stroke
+LTb
+4543 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+4543 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 5)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+5745 448 M
+0 4220 V
+0 140 R
+0 63 V
+stroke
+LTb
+5745 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+5745 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 10)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+6947 448 M
+0 4423 V
+stroke
+LTb
+6947 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+6947 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 15)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+938 4871 N
+938 448 L
+6009 0 V
+0 4423 V
+-6009 0 V
+Z stroke
+LCb setrgbcolor
+112 2659 M
+currentpoint gsave translate -270 rotate 0 0 moveto
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Bit Error Rate \(BER\))]
+] -46.7 MCshow
+grestore
+LTb
+LCb setrgbcolor
+3942 98 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (SNR \(dB\))]
+] -46.7 MCshow
+LTb
+1.000 UP
+1.000 UL
+LTb
+% Begin plot #1
+5.000 UL
+LT0
+LCb setrgbcolor
+6296 4738 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (802.15.4)]
+] -46.7 MRshow
+LT0
+6380 4738 M
+399 0 V
+938 4629 M
+24 -3 V
+24 -2 V
+24 -3 V
+24 -3 V
+24 -3 V
+24 -3 V
+24 -4 V
+24 -3 V
+24 -3 V
+24 -4 V
+24 -3 V
+24 -4 V
+24 -4 V
+25 -4 V
+24 -4 V
+24 -4 V
+24 -5 V
+24 -4 V
+24 -5 V
+24 -5 V
+24 -5 V
+24 -5 V
+24 -5 V
+24 -6 V
+24 -5 V
+24 -6 V
+24 -6 V
+24 -6 V
+24 -6 V
+24 -7 V
+24 -6 V
+24 -7 V
+24 -7 V
+24 -8 V
+24 -7 V
+24 -8 V
+24 -8 V
+24 -8 V
+24 -9 V
+24 -9 V
+24 -9 V
+25 -9 V
+24 -10 V
+24 -9 V
+24 -11 V
+24 -10 V
+24 -11 V
+24 -11 V
+24 -12 V
+24 -11 V
+24 -13 V
+24 -12 V
+24 -13 V
+24 -13 V
+24 -14 V
+24 -14 V
+24 -14 V
+24 -15 V
+24 -16 V
+24 -16 V
+24 -16 V
+24 -17 V
+24 -17 V
+24 -17 V
+24 -19 V
+24 -18 V
+24 -20 V
+24 -20 V
+24 -20 V
+25 -21 V
+24 -22 V
+24 -22 V
+24 -23 V
+24 -23 V
+24 -24 V
+24 -25 V
+24 -26 V
+24 -26 V
+24 -27 V
+24 -28 V
+24 -28 V
+24 -29 V
+24 -30 V
+24 -31 V
+24 -32 V
+24 -32 V
+24 -34 V
+24 -34 V
+24 -35 V
+24 -37 V
+24 -37 V
+24 -38 V
+24 -39 V
+24 -40 V
+24 -42 V
+24 -42 V
+24 -43 V
+25 -45 V
+24 -46 V
+24 -46 V
+24 -49 V
+24 -49 V
+stroke 3390 2910 M
+24 -50 V
+24 -52 V
+24 -53 V
+24 -55 V
+24 -56 V
+24 -57 V
+24 -59 V
+24 -60 V
+24 -61 V
+24 -63 V
+24 -65 V
+24 -66 V
+24 -68 V
+24 -70 V
+24 -71 V
+24 -73 V
+24 -75 V
+24 -76 V
+24 -78 V
+24 -81 V
+24 -82 V
+24 -84 V
+25 -86 V
+24 -88 V
+24 -90 V
+24 -93 V
+24 -94 V
+24 -97 V
+24 -99 V
+24 -101 V
+24 -104 V
+24 -106 V
+11 -49 V
+% End plot #1
+stroke
+1.000 UL
+LTb
+938 4871 N
+938 448 L
+6009 0 V
+0 4423 V
+-6009 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Times-BoldItalic
diff -Naur ns-3.19/src/lr-wpan/doc/802-15-4-per-sens.eps ns-3.20/src/lr-wpan/doc/802-15-4-per-sens.eps
--- ns-3.19/src/lr-wpan/doc/802-15-4-per-sens.eps	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/802-15-4-per-sens.eps	2014-06-17 10:33:13.893995962 -0700
@@ -0,0 +1,3773 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 802.15.4-per-sens.eps
+%%Creator: gnuplot 4.6 patchlevel 4 (Gentoo revision r2)
+%%CreationDate: Wed Apr 23 12:42:53 2014
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 410 302
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color true def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/SuppressPDFMark false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+/BackgroundColor {-1.000 -1.000 -1.000} def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+	dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc
+	2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 450 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+	2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 360 arc closepath fill
+	vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+	neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+	exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+	Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+	Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%	x,y = lower left corner of box to be filled
+%	w,h = width and height of box
+%	  a = angle in degrees between lines and x-axis
+%	 XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+	0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+	{/InterpretLevel1 true def}
+	{/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+	bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+	0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+	8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+	0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+	0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+	0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+	0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+	12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+	-4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+Level1 SuppressPDFMark or 
+{} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (802.15.4-per-sens.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.6 patchlevel 4 (Gentoo revision r2))
+  /Author (jopen)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Wed Apr 23 12:42:53 2014)
+  /DOCINFO pdfmark
+end
+} ifelse
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Times-BoldItalic) findfont 140 scalefont setfont
+BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 0 0 7200.00 5040.00 BoxColFill} if
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+938 448 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 448 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 448 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-12)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 764 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 1080 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 1080 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 1080 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-10)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 1396 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 1712 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 1712 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 1712 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-08)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 2028 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 2344 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 2344 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 2344 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-06)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 2660 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 2975 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 2975 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 2975 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.0001)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 3291 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 3607 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 3607 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 3607 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.01)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 3923 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 4239 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 4239 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 4239 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+938 4555 M
+31 0 V
+5978 0 R
+-31 0 V
+stroke
+LTa
+LCa setrgbcolor
+938 4871 M
+6009 0 V
+stroke
+LTb
+LCb setrgbcolor
+938 4871 M
+63 0 V
+5946 0 R
+-63 0 V
+stroke
+854 4871 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 100)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+938 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+938 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+938 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-130)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+1940 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+1940 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+1940 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-125)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+2941 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+2941 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+2941 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-120)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+3943 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+3943 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+3943 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-115)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+4944 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+4944 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+4944 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-110)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+5946 448 M
+0 4220 V
+0 140 R
+0 63 V
+stroke
+LTb
+LCb setrgbcolor
+5946 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+5946 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-105)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTa
+LCa setrgbcolor
+6947 448 M
+0 4423 V
+stroke
+LTb
+LCb setrgbcolor
+6947 448 M
+0 63 V
+0 4360 R
+0 -63 V
+stroke
+6947 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-100)]
+] -46.7 MCshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1.000 UL
+LTb
+LCb setrgbcolor
+938 4871 N
+938 448 L
+6009 0 V
+0 4423 V
+-6009 0 V
+Z stroke
+LCb setrgbcolor
+112 2659 M
+currentpoint gsave translate -270 rotate 0 0 moveto
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet Error Rate \(PER\))]
+] -46.7 MCshow
+grestore
+LTb
+LCb setrgbcolor
+3942 98 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (RxPower \(dBm\))]
+] -46.7 MCshow
+LTb
+1.000 UP
+1.000 UL
+LTb
+LCb setrgbcolor
+% Begin plot #1
+5.000 UL
+LT0
+LC0 setrgbcolor
+LCb setrgbcolor
+6296 4738 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (802.15.4)]
+] -46.7 MRshow
+LT0
+6380 4738 M
+399 0 V
+938 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 1142 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 1351 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 1559 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 1767 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 1976 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 2184 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 2392 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 2600 4871 M
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 2809 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 3017 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 3225 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 3434 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 3642 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 3850 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 4059 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 4267 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 4475 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+3 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 4684 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 4892 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+stroke 5100 4871 M
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 0 V
+2 -1 V
+2 -1 V
+2 0 V
+3 -1 V
+2 0 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 0 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 0 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 0 V
+stroke 5309 4841 M
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -1 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -1 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -2 V
+stroke 5517 4654 M
+2 -3 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -2 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+stroke 5725 4319 M
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -3 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -5 V
+stroke 5933 3870 M
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+3 -5 V
+2 -4 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -5 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -6 V
+2 -6 V
+stroke 6142 3294 M
+2 -7 V
+2 -6 V
+2 -6 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -6 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -7 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+stroke 6350 2559 M
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -8 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -9 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -9 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+stroke 6558 1626 M
+2 -11 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -11 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -10 V
+2 -11 V
+2 -10 V
+2 -11 V
+2 -10 V
+2 -10 V
+2 -11 V
+2 -11 V
+2 -10 V
+2 -11 V
+2 -10 V
+2 -11 V
+2 -10 V
+2 -11 V
+2 -11 V
+2 -11 V
+2 -10 V
+2 -11 V
+3 -11 V
+2 -10 V
+2 -11 V
+2 -12 V
+2 -10 V
+2 -10 V
+2 -12 V
+2 -12 V
+2 -9 V
+2 -9 V
+2 -16 V
+2 -11 V
+2 -6 V
+2 -14 V
+2 -14 V
+2 -8 V
+2 -8 V
+2 -18 V
+2 -11 V
+2 -11 V
+2 -12 V
+2 -13 V
+2 0 V
+2 -14 V
+2 -16 V
+2 -19 V
+2 0 V
+2 -21 V
+2 0 V
+2 -25 V
+2 0 V
+2 0 V
+2 -30 V
+2 0 V
+2 0 V
+2 -40 V
+2 0 V
+2 0 V
+2 -55 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 -96 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+2 0 V
+0 -332 V
+% End plot #1
+stroke
+1.000 UL
+LTb
+LCb setrgbcolor
+938 4871 N
+938 448 L
+6009 0 V
+0 4423 V
+-6009 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+LCb setrgbcolor
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Times-BoldItalic
diff -Naur ns-3.19/src/lr-wpan/doc/802-15-4-psr-distance.eps ns-3.20/src/lr-wpan/doc/802-15-4-psr-distance.eps
--- ns-3.19/src/lr-wpan/doc/802-15-4-psr-distance.eps	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/802-15-4-psr-distance.eps	2014-06-17 10:33:13.893995962 -0700
@@ -0,0 +1,908 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 802.15.4-psr-distance.eps
+%%Creator: gnuplot 4.4 patchlevel 2
+%%CreationDate: Tue Oct  4 13:04:05 2011
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 410 302
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color true def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+Level1 {} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (802.15.4-psr-distance.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.4 patchlevel 2)
+  /Author (tomh)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue Oct  4 13:04:05 2011)
+  /DOCINFO pdfmark
+end
+} ifelse
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+	dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc
+	2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 450 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+	2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 360 arc closepath fill
+	vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+	neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+	exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+	Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+	Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%	x,y = lower left corner of box to be filled
+%	w,h = width and height of box
+%	  a = angle in degrees between lines and x-axis
+%	 XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+	0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+	{/InterpretLevel1 true def}
+	{/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+	bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+	0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+	8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+	0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+	0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+	0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+	0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+	12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+	-4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+end
+%%EndProlog
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Times-BoldItalic) findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 448 M
+6261 0 V
+stroke
+LTb
+686 448 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 448 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 1282 M
+6261 0 V
+stroke
+LTb
+686 1282 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 1282 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.2)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 2116 M
+6261 0 V
+stroke
+LTb
+686 2116 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 2116 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.4)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 2951 M
+6261 0 V
+stroke
+LTb
+686 2951 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 2951 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.6)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 3785 M
+6261 0 V
+stroke
+LTb
+686 3785 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 3785 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.8)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 4619 M
+6261 0 V
+stroke
+LTb
+686 4619 M
+63 0 V
+6198 0 R
+-63 0 V
+stroke
+602 4619 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+686 448 M
+0 4171 V
+stroke
+LTb
+686 448 M
+0 63 V
+0 4108 R
+0 -63 V
+stroke
+686 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+2251 448 M
+0 4171 V
+stroke
+LTb
+2251 448 M
+0 63 V
+0 4108 R
+0 -63 V
+stroke
+2251 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 50)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+3816 448 M
+0 4171 V
+stroke
+LTb
+3816 448 M
+0 63 V
+0 4108 R
+0 -63 V
+stroke
+3816 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 100)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+5382 448 M
+0 3968 V
+0 140 R
+0 63 V
+stroke
+LTb
+5382 448 M
+0 63 V
+0 4108 R
+0 -63 V
+stroke
+5382 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 150)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTa
+6947 448 M
+0 4171 V
+stroke
+LTb
+6947 448 M
+0 63 V
+0 4108 R
+0 -63 V
+stroke
+6947 308 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 200)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+686 4619 N
+686 448 L
+6261 0 V
+0 4171 V
+-6261 0 V
+Z stroke
+LCb setrgbcolor
+112 2533 M
+currentpoint gsave translate -270 rotate 0 0 moveto
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet Success Rate \(PSR\))]
+] -46.7 MCshow
+grestore
+LTb
+LCb setrgbcolor
+3816 98 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (distance \(m\))]
+] -46.7 MCshow
+LTb
+3816 4829 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet \(MSDU\) size = 20 bytes; tx power = 0 dBm; channel = 11)]
+] -46.7 MCshow
+1.000 UP
+1.000 UL
+LTb
+% Begin plot #1
+5.000 UL
+LT0
+LCb setrgbcolor
+6296 4486 M
+[ [(Times-BoldItalic) 140.0 0.0 true true 0 (802.15.4-psr-vs-distance)]
+] -46.7 MRshow
+LT0
+6380 4486 M
+399 0 V
+717 4619 M
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 -4 V
+31 -4 V
+31 8 V
+31 0 V
+32 -13 V
+31 -4 V
+31 -16 V
+32 -30 V
+31 -41 V
+31 4 V
+32 -88 V
+31 -62 V
+31 -100 V
+32 -113 V
+31 -83 V
+31 -176 V
+31 -141 V
+32 -263 V
+31 -367 V
+31 -175 V
+32 -284 V
+31 -359 V
+31 -308 V
+32 -217 V
+31 -234 V
+31 -296 V
+31 -192 V
+32 -96 V
+31 -162 V
+31 -163 V
+stroke 3910 640 M
+32 -34 V
+31 -41 V
+31 -42 V
+32 -46 V
+31 -12 V
+31 -13 V
+32 17 V
+31 -13 V
+31 -8 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+31 0 V
+32 0 V
+31 0 V
+31 0 V
+32 0 V
+% End plot #1
+stroke
+1.000 UL
+LTb
+686 4619 N
+686 448 L
+6261 0 V
+0 4171 V
+-6261 0 V
+Z stroke
+1.000 UP
+1.000 UL
+LTb
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Times-BoldItalic
diff -Naur ns-3.19/src/lr-wpan/doc/lr-wpan-arch.dia ns-3.20/src/lr-wpan/doc/lr-wpan-arch.dia
--- ns-3.19/src/lr-wpan/doc/lr-wpan-arch.dia	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/lr-wpan-arch.dia	2014-06-17 10:33:13.894995954 -0700
@@ -0,0 +1,6 @@
+     ]Ms۶Wh ڝ4mg^9]t$ZfK.o HYDI({c	^ǟ-m490(ٻgQgb?o<_prrwwU
+Oqp;y`+<&7y8HEx:ӿYz̆E4lpħW5<)9牾<daw}Xj2v],U˽&5ڔVQ2?{/|cWՁւ G>|J|%d=&M.;.\\YQ9I85n8ik{ZU3ī@v;Ϣ7V^Y~}p;6ZE8:(;we[ZC[0CçM4WϘvf'ύnLdm!>LӃ3ytјi^/<'6d8f=7ݓ&Z#<{Q0y>`1.F^cEg|MfqY=/bIjыXa4R[`6S`܉aD 3lsöDŸU/؇Aӻ
+D9xV}͢0{$Y9]fmUgL0!SZ1*T͐[+촩 WjV8Ou&yyp,^O{5*?{߆y4_Ï`*svsQP1	VdV_=F^R>8Z^^Y􏶦 ~Xv|a"1du31V8lLPśYẐlWCBZ*ڡ*!(c(n$%xr+ Y$ooaRb]pғma)Fzz~Z6H4+^~%GBr:t8G<=_(88珵[JnŖV[D;>>?Ǻ*SyR:")ᒔx[R&!?(K.BDռеIr&3{*`h>]DU/2Ȳ(me&6VOPMA;6j>n ]Yf72ּdKniw:FG1;d5QzGydY!${֤͒$J[.IѤRڠ2 % ZCR!)ɶ.KWqxȨ EM\D\xEdGrǑd=#UXҫ4>`hjϩ6'q&4"L/bcZ#	z-ׂz-(3#z`l:Vm_8K1H(xqh%[U`i_e+Z[o`0=S}ZJ0rG'균~X'j"blNjlR @,O:XM] I>}ZO'pH<ݸSV`?C`IWW`=+CTE[/z\%&}p>ecD_tpʄt[0,F+Y!kϱ2oT k<#uǪO9^cQDRHdIF5X>%ܭ,edDz܄+RT @0k5;*}'*Red!kYCFs kﬡj5
+Df-
+6:H3d~O`XY
+;XwצSJ򕢾!Jg>#ʴLǧNuNd!0+D%@NPbďTHO?cO'?I[/`4J<N[fɈ􊼀eIV7>0HPe+e+3ΌY	yY$VX46@Pf=||=`IJ"Y􊠔"}pI3C97Z/Q]KŸч UPYȃ8:сl:.vlqRU[^y&(q>S4	MJ> Pcγ=*A6y-Tj]:!q\O96DыO_.>\|Uq+ֺ".Fa{#jq	G{*>>iʅ{G^j}d75O^җ_@GUY"Riu8F&rŲA0;qŠ h@+zaTP4:+#(AM?`|[ nƃ- jL$ڋ$Yl$Y"ɳ3hi*cf#3yh$n%U;%aeR TgGߕ>y,h c*  
\ No newline at end of file
diff -Naur ns-3.19/src/lr-wpan/doc/lr-wpan-data-example.dia ns-3.20/src/lr-wpan/doc/lr-wpan-data-example.dia
--- ns-3.19/src/lr-wpan/doc/lr-wpan-data-example.dia	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/lr-wpan-data-example.dia	2014-06-17 10:33:13.894995954 -0700
@@ -0,0 +1,34 @@
+     YoH)
+jtGsWE/`c^Γ@UQRmaQvkO,"ueg+[%TrV!ApTǋt~2?.|6br^7o~U^/*TNЪxyYoAoF'u~4jzvUy>+/|rj/E5o8_oӼsν/>5_reQ?lXM!r됎?7iZك~x\m)Rb:ֱϦ"M)Cm⊬+WWگtu\TuOmɳŢ,yPbw8/=t[=|Z׋G</WO㛷oE5<9,_H+:ٿLWӳhÜopaQWIzq7==D_UsG/!(/OdqŸnns'y5VQn8!ݧu,rqcSa*A
+8;PٛeqG#DF"IRMn{c};s'>7kbU~::;ܢFWijGlZ^ۋѪvdO)/E=f+,pQ45'.Rwq?!\gEﳘ_͚gDV4=/s{)! 0 jwf̢#GT"#"RkC	|TPK,%%Kc3K:a,- X_,Y[@ƄZlR
+h4j7@`Q,g%$N5Y	m]!5jRWj3>P}!$-JA<z!P?}hdqT-}!W
+8b11dUhPF]7+1Mze1;/vϐ4v"Pl|"=10X9"`B$# sUm[D7z#q>-'HMq{r%$g?+?u
+o)&<GvO&w-c`	uP)	&D"%݈sy'dy9]^.?9e$x8[|X^ yuRÝ5Ļ[#[72Ҿ"Pa;⿽7j>%jZҲz#߶HmN64j
+d65iG=Mn D6lf`kDmB	7K
+& C#|Qp*`\k&3cԫBy1jrX:[*'!-m dt[
+~񚂽+	GJ"QW%)f F\~wSvOt-Dq;xyRZ<kZk>9ͫj۾)yӲ_<<źٸ䣓gUȽ]gXx	3+5HH1a  0 qi&~MDqA k>uM
+D\as:#!XJ{ێbzL	uc֏5PF|ndʬac&	DH
+Aͧϯ??!>n0ʧ8һ".8Q;9fY#G! [p(E$5 J3Ca
+"p)E.NƈYZDDSHb-‡6؞6_7EmB3*N9=S6{:H)m$SP>wpɃ@H": oI"7FA|6ШG)63A-442Eڭ8"'V~Hqu5NFCZRQb"Q[42ԷءIE谳޽x1?VO:V@SyRd iDj5%)h0,DfF$JD;tk	Q2P/j1@`Q,yKPQ5-;pBH{geVS íCđ>"7ܞ;A5[1R*I)v ;'ߋbX(LcԂGutpsKo-L
+ }5z?.|RT#+U>-ꀽUqUv,,%+||ɭVQc]XzJŖ'2f9Ec텸P.H΄[uf~Gobn{\fGd̥lc@#)2_FYOFأ~I¨cKo
+qϽ~`
+Xn@I
+cn2D.GPDPeVY*Hd%QНNXr&\dT#}r" VaVaYiaZF8_&zq2R}D#J:5U2OҺ2~*bY>C۫`rȱj!vLq!صGwⷖq
+3^TW8HEw[ " >̙Bͤkpc
+lu (E.Ysځk쓧	sdD|[:烓rV&ZEZMx xRfLEUHa8LH`_mjXܒ2q3+l9#]qG2QQƪΫ:VW)mp:Jnu(ZtFP	|`7MuIv,cQ$$|$Z'IF SV
+JY97uyK38ZM"zWrP{i4KCeHf@I$FR<n[D#np2@}.~__+o1V WRC,v{&j`B|$
+:mx"z'.3߱gQP!B#(C"	7Js&nD6X!2Fi𵈛_S .%";k:3YrX,z E)QȞ/0D8t85ч6V WN!$Da#(RH* u (/hGdK#4NS1<rW-J0NHب>Dy~^>@_.g;,nR
+m/]}YvBɖ[lyY(
+llϞuɣ7"~°&2@ptStt{E  b6^a9ȬW#έ<xwc롔.L]]p؞2)ެ#I۳QT*	*IL~JElϸ6[cI̙	qD^v'ѿJ;^RKmWկyP}-oV[oFP֋[:@ v]w.&a>qF$4($P/pe;l9H":K4v,$`mEr֊E	3`l#=(tu
+Ho}OG]6<JGC	2_9K0T{l'5(Ez+tHF2h$:"zg
+q$ΆvTJ@NC*}Taw+cȗU6gVqkvzVc,Le1;/yQE}p^瑅Z[,'fk+ Ұp{Wdg/XsUmD7#q>-'H/_Oj>/sXE>BuuUxV~ZGh||2;o/
+&cèbʀN
+SH{*ldny9]^.?Al9Վp2CqMduu/wf@`v׷-IdLN1 `!L&AƁ$S[ﲭ]>#-~]KqvހKP]2ջfq$dvo:X9b?hO>H L;]}DQ.I)C1gVar2rM[mIE)C^vEN###G?Sn:FH/QO)¨DNktu#Bn=[C~fD!Z,ĶJ\)镨Q)h&7~(	=x~iP0@"ct TL{(
+Q\9@\mCN9qzXYNǰ1־vp eZp"[AQR$Q5ZQD"ԍZPA Eq*3@'u1U`B+;1tgNoj8cSU/Fj8<o
+psw
+N=D,u@8v,ne#,
+;L K=8 ը*f/h.|RT#U>-
+x|61	,?p]^wFь3E`ߧrsnW{tRW?uvbFW@jWWy@ӑ/C5B̗X?L;=Tbq^k
+*^x%fXZF
+2XٸebIgRk?-~n'EnyBDH,lx" ͫHF6
+"U$̜@2"F)Ҩwkj+b	ۘѳ, 蛒(|.zw>.|_@ 
\ No newline at end of file
diff -Naur ns-3.19/src/lr-wpan/doc/lr-wpan-primitives.dia ns-3.20/src/lr-wpan/doc/lr-wpan-primitives.dia
--- ns-3.19/src/lr-wpan/doc/lr-wpan-primitives.dia	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/lr-wpan-primitives.dia	2014-06-17 10:33:13.894995954 -0700
@@ -0,0 +1,5 @@
+     ]o6+f\"&6`؀b:-*KD;~HIib[JbJN!$u#P~v{kQ@,d~kΏ8{FgjO$;;Yonn@ɕI3G+*3{ TFkUeLMWF{ZsfYJBfifZǕG|/\O3>7K],<&f3i~?rk/^U٬⽿6
+Qe'.F;8@q9\nre/+43̾4McRd+}N>SǺ~>+@yK,
+O-/7Qh/o;#(k}ߜ)~Pzk|DB3DWQ'lۦue6~jw;0奝v!*??WD뻳cN3SuQI{}Է0(<ۣ?͂po闘 }4	L3cv'#%'}Ǧ`ng:gs0x$	&N]"7Y*}/7-vY~WfaPނkͯkpOI>h;|f#GfywS'E5Tai.M!Od[y<Byd @)
+	889Ml1{F@`NiTI@&>  Ftf_?$R#$k4䀦EEkJ'%aO3Kv_P[S9Q I\,)dP0PP%!&S́R=kK)]҆BM1(EaTe EBo]1:J݆K +<Ҫڅ)$IXH9nϖu8TY4-]_:w%VxIiR$h"06	 @4r4ruZIHiR}##9&}beH Hv#d1v=B(v&{=5*524 [a87T]h21)IQ2r~pl>;XkJ+>F%v96.*Ad	FE/KB4vp畹}|)`S#F[.!( h	%jL\|zz§Bh PLr䞊Ϋ(R$:/5eiȇ"w[@{n 륇]ZX¥Ty/FKáMt mfN5 F>0aeyWfpBnIt'H(jE_Ey-_
+B,NG  
\ No newline at end of file
diff -Naur ns-3.19/src/lr-wpan/doc/lr-wpan.rst ns-3.20/src/lr-wpan/doc/lr-wpan.rst
--- ns-3.19/src/lr-wpan/doc/lr-wpan.rst	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/doc/lr-wpan.rst	2014-06-17 10:33:13.895995946 -0700
@@ -0,0 +1,258 @@
+PageBreak
+
+Low-Rate Wireless Personal Area Network (LR-WPAN)
+-------------------------------------------------
+
+This chapter describes the implementation of ns-3 models for the
+low-rate, wireless personal area network (LR-WPAN) as specified by
+IEEE standard 802.15.4 (2006).
+
+Model Description
+*****************
+
+The source code for the lr-wpan module lives in the directory ``src/lr-wpan``.
+
+Design
+======
+
+The model design closely follows the standard from an architectural standpoint.
+
+.. _fig-lr-wpan-arch:
+
+.. figure:: figures/lr-wpan-arch.*
+
+    Architecture and scope of lr-wpan models
+
+The grey areas in the figure (adapted from Fig 3. of IEEE Std. 802.15.4-2006)
+show the scope of the model.
+
+The Spectrum NetDevice from Nicola Baldo is the basis for the implementation.
+
+The implementation also plans to borrow from the ns-2 models developed by 
+Zheng and Lee in the future.
+
+APIs
+####
+
+The APIs closely follow the standard, adapted for ns-3 naming conventions
+and idioms.  The APIs are organized around the concept of service primitives
+as shown in the following figure adapted from Figure 14 of 
+IEEE Std. 802.15.4-2006.
+
+.. _fig-lr-wpan-primitives:
+
+.. figure:: figures/lr-wpan-primitives.*
+
+    Service primitives
+
+The APIs are organized around four conceptual services and service access
+points (SAP):
+
+* MAC data service (MCPS)
+* MAC management service  (MLME)
+* PHY data service (PD)
+* PHY management service (PLME)
+
+In general, primitives are standardized as follows (e.g. Sec 7.1.1.1.1
+of IEEE 802.15.4-2006):::
+
+  MCPS-DATA.request      (
+                          SrcAddrMode,
+                          DstAddrMode,
+                          DstPANId,
+                          DstAddr,
+                          msduLength,
+                          msdu,
+                          msduHandle,
+                          TxOptions,
+                          SecurityLevel,
+                          KeyIdMode,
+                          KeySource,
+                          KeyIndex
+                          )
+
+This maps to ns-3 classes and methods such as:::
+
+  struct McpsDataRequestParameters
+  {
+    uint8_t m_srcAddrMode;
+    uint8_t m_dstAddrMode;
+    ...
+  };
+
+  void
+  LrWpanMac::McpsDataRequest (McpsDataRequestParameters params)
+  {
+  ...
+  }
+
+MAC
+###
+
+The MAC at present implements the unslotted CSMA/CA variant, without beaconing.
+Currently there is no support for coordinators and the relavant APIs.
+
+The implemented MAC is similar to Contiki's NullMAC, i.e., a MAC without sleep
+features. The radio is assumed to be always active (receiving or transmitting),
+of completely shut down. Frame reception is not disabled while performing the
+CCA.
+
+The main API supported is the data transfer API
+(McpsDataRequest/Indication/Confirm).  CSMA/CA according to Stc 802.15.4-2006,
+section 7.5.1.4 is supported. Frame reception and rejection according to
+Std 802.15.4-2006, section 7.5.6.2 is supported, including acknowledgements.
+Only short addressing completely implemented. Various trace sources are
+supported, and trace sources can be hooked to sinks.
+
+PHY
+###
+
+The physical layer components consist of a Phy model, an error rate model, 
+and a loss model.  The error rate model presently models the error rate 
+for IEEE 802.15.4 2.4 GHz AWGN channel for OQPSK; the model description can 
+be found in IEEE Std 802.15.4-2006, section E.4.1.7.   The Phy model is 
+based on SpectrumPhy and it follows specification described in section 6 
+of IEEE Std 802.15.4-2006. It models PHY service specifications, PPDU 
+formats, PHY constants and PIB attributes. It currently only supports 
+the transmit power spectral density mask specified in 2.4 GHz per section 
+6.5.3.1. The noise power density assumes uniformly distributed thermal 
+noise across the frequency bands. The loss model can fully utilize all 
+existing simple (non-spectrum phy) loss models. The Phy model uses 
+the existing single spectrum channel model.
+The physical layer is modeled on packet level, that is, no preamble/SFD
+detection is done. Packet reception will be started with the first bit of the
+preamble (which is not modeled), if the SNR is more than -5 dB, see IEEE
+Std 802.15.4-2006, appendix E, Figure E.2. Reception of the packet will finish
+after the packet was completely transmitted. Other packets arriving during
+reception will add up to the interference/noise.
+
+Currently the receiver sensitivity is set to a fixed value of -106.58 dBm. This
+corresponds to a packet error rate of 1% for 20 byte reference packets for this
+signal power, according to IEEE Std 802.15.4-2006, section 6.1.7. In the future
+we will provide support for changing the sensitivity to different values. 
+
+.. _fig-802-15-4-per-sens:
+
+.. figure:: figures/802-15-4-per-sens.*
+
+    Packet error rate vs. signal power
+
+
+NetDevice
+#########
+
+Although it is expected that other technology profiles (such as 
+6LoWPAN and ZigBee) will write their own NetDevice classes, a basic
+LrWpanNetDevice is provided, which encapsulates the common operations
+of creating a generic LrWpan device and hooking things together.
+
+Scope and Limitations
+=====================
+
+Future versions of this document will contain a PICS proforma similar to
+Appendix D of IEEE 802.15.4-2006.  The current emphasis is on the 
+unslotted mode of 802.15.4 operation for use in Zigbee, and the scope
+is limited to enabling a single mode (CSMA/CA) with basic data transfer
+capabilities. Association with PAN coordinators is not yet supported, nor the
+use of extended addressing. Interference is modeled as AWGN but this is
+currently not thoroughly tested.
+
+The NetDevice Tx queue is not limited, i.e., packets are never dropped
+due to queue becoming full. They may be dropped due to excessive transmission 
+retries or channel access failure.
+
+References
+==========
+
+* Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (WPANs), IEEE Computer Society, IEEE Std 802.15.4-2006, 8 September 2006.
+* J. Zheng and Myung J. Lee, "A comprehensive performance study of IEEE 802.15.4," Sensor Network Operations, IEEE Press, Wiley Interscience, Chapter 4, pp. 218-237, 2006.
+
+Usage
+*****
+
+Enabling lr-wpan
+================
+
+Add ``lr-wpan`` to the list of modules built with ns-3.
+
+Helper
+======
+
+The helper is patterned after other device helpers.  In particular,
+tracing (ascii and pcap) is enabled similarly, and enabling of all
+lr-wpan log components is performed similarly.  Use of the helper
+is exemplified in ``examples/lr-wpan-data.cc``.  For ascii tracing,
+the transmit and receive traces are hooked at the Mac layer.
+
+The default propagation loss model added to the channel, when this helper
+is used, is the LogDistancePropagationLossModel with default parameters.
+
+Examples
+========
+
+The following examples have been written, which can be found in ``src/lr-wpan/examples/``:
+
+* ``lr-wpan-data.cc``:  A simple example showing end-to-end data transfer.
+* ``lr-wpan-error-distance-plot.cc``:  An example to plot variations of the packet success ratio as a function of distance.
+* ``lr-wpan-error-model-plot.cc``:  An example to test the phy.
+* ``lr-wpan-packet-print.cc``:  An example to print out the MAC header fields.
+* ``lr-wpan-phy-test.cc``:  An example to test the phy.
+
+In particular, the module enables a very simplified end-to-end data
+transfer scenario, implemented in ``lr-wpan-data.cc``.  The figure
+shows a sequence of events that are triggered when the MAC receives
+a DataRequest from the higher layer.  It invokes a Clear Channel
+Assessment (CCA) from the PHY, and if successful, sends the frame
+down to the PHY where it is transmitted over the channel and results
+in a DataIndication on the peer node.
+  
+.. _fig-lr-wpan-data:
+
+.. figure:: figures/lr-wpan-data-example.*
+
+    Data example for simple LR-WPAN data transfer end-to-end
+
+The example ``lr-wpan-error-distance-plot.cc`` plots the packet success
+ratio (PSR) as a function of distance, using the default LogDistance
+propagation loss model and the 802.15.4 error model.  The channel (default 11),
+packet size (default 20 bytes) and transmit power (default 0 dBm) can be
+varied by command line arguments.  The program outputs a file named
+``802.15.4-psr-distance.plt``.  Loading this file into gnuplot yields
+a file ``802.15.4-psr-distance.eps``, which can be converted to pdf or
+other formats.  The default output is shown below. 
+
+.. _fig-802-15-4-psr-distance:
+
+.. figure:: figures/802-15-4-psr-distance.*
+
+    Default output of the program ``lr-wpan-error-distance-plot.cc``
+
+Tests
+=====
+
+The following tests have been written, which can be found in ``src/lr-wpan/tests/``:
+
+* ``lr-wpan-ack-test.cc``:  Check that acknowledgments are being used and issued in the correct order.
+* ``lr-wpan-collision-test.cc``:  Test correct reception of packets with interference and collisions.
+* ``lr-wpan-error-model-test.cc``:  Check that the error model gives predictable values.
+* ``lr-wpan-packet-test.cc``:  Test the 802.15.4 MAC header/trailer classes
+* ``lr-wpan-pd-plme-sap-test.cc``:  Test the PLME and PD SAP per IEEE 802.15.4
+* ``lr-wpan-spectrum-value-helper-test.cc``:  Test that the conversion between power (expressed as a scalar quantity) and spectral power, and back again, falls within a 25% tolerance across the range of possible channels and input powers.
+
+Validation
+**********
+
+The model has not been validated against real hardware.  The error model
+has been validated against the data in IEEE Std 802.15.4-2006, 
+section E.4.1.7 (Figure E.2). The MAC behavior (CSMA backoff) has been 
+validated by hand against expected behavior.  The below plot is an example 
+of the error model validation and can be reproduced by running
+``lr-wpan-error-model-plot.cc``:
+
+.. _fig-802-15-4-ber:
+
+.. figure:: figures/802-15-4-ber.*
+
+    Default output of the program ``lr-wpan-error-model-plot.cc`` 
+
+
diff -Naur ns-3.19/src/lr-wpan/examples/lr-wpan-data.cc ns-3.20/src/lr-wpan/examples/lr-wpan-data.cc
--- ns-3.19/src/lr-wpan/examples/lr-wpan-data.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/lr-wpan-data.cc	2014-06-17 10:33:13.895995946 -0700
@@ -0,0 +1,163 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+
+/*
+ * Try to send data end-to-end through a LrWpanMac <-> LrWpanPhy <->
+ * SpectrumChannel <-> LrWpanPhy <-> LrWpanMac chain
+ *
+ * Trace Phy state changes, and Mac DataIndication and DataConfirm events
+ * to stdout
+ */
+#include <ns3/log.h>
+#include <ns3/core-module.h>
+#include <ns3/lr-wpan-module.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/propagation-delay-model.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/packet.h>
+
+#include <iostream>
+
+using namespace ns3;
+
+static void DataIndication (McpsDataIndicationParams params, Ptr<Packet> p)
+{
+  NS_LOG_UNCOND ("Received packet of size " << p->GetSize ());
+}
+
+static void DataConfirm (McpsDataConfirmParams params)
+{
+  NS_LOG_UNCOND ("LrWpanMcpsDataConfirmStatus = " << params.m_status);
+}
+
+static void StateChangeNotification (std::string context, Time now, LrWpanPhyEnumeration oldState, LrWpanPhyEnumeration newState)
+{
+  NS_LOG_UNCOND (context << " state change at " << now.GetSeconds ()
+                         << " from " << LrWpanHelper::LrWpanPhyEnumerationPrinter (oldState)
+                         << " to " << LrWpanHelper::LrWpanPhyEnumerationPrinter (newState));
+}
+
+int main (int argc, char *argv[])
+{
+  bool verbose = false;
+
+  CommandLine cmd;
+
+  cmd.AddValue ("verbose", "turn on all log components", verbose);
+
+  cmd.Parse (argc, argv);
+
+  LrWpanHelper lrWpanHelper;
+  if (verbose)
+    {
+      lrWpanHelper.EnableLogComponents ();
+    }
+
+  // Enable calculation of FCS in the trailers. Only necessary when interacting with real devices or wireshark.
+  // GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+
+  // Create 2 nodes, and a NetDevice for each one
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+
+  // Each device must be attached to the same channel
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> propModel = CreateObject<LogDistancePropagationLossModel> ();
+  Ptr<ConstantSpeedPropagationDelayModel> delayModel = CreateObject<ConstantSpeedPropagationDelayModel> ();
+  channel->AddPropagationLossModel (propModel);
+  channel->SetPropagationDelayModel (delayModel);
+
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+
+  // To complete configuration, a LrWpanNetDevice must be added to a node
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+
+  // Trace state changes in the phy
+  dev0->GetPhy ()->TraceConnect ("TrxState", std::string ("phy0"), MakeCallback (&StateChangeNotification));
+  dev1->GetPhy ()->TraceConnect ("TrxState", std::string ("phy1"), MakeCallback (&StateChangeNotification));
+
+  Ptr<ConstantPositionMobilityModel> sender0Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender0Mobility->SetPosition (Vector (0,0,0));
+  dev0->GetPhy ()->SetMobility (sender0Mobility);
+  Ptr<ConstantPositionMobilityModel> sender1Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  // Configure position 10 m distance
+  sender1Mobility->SetPosition (Vector (0,10,0));
+  dev1->GetPhy ()->SetMobility (sender1Mobility);
+
+  McpsDataConfirmCallback cb0;
+  cb0 = MakeCallback (&DataConfirm);
+  dev0->GetMac ()->SetMcpsDataConfirmCallback (cb0);
+
+  McpsDataIndicationCallback cb1;
+  cb1 = MakeCallback (&DataIndication);
+  dev0->GetMac ()->SetMcpsDataIndicationCallback (cb1);
+
+  McpsDataConfirmCallback cb2;
+  cb2 = MakeCallback (&DataConfirm);
+  dev1->GetMac ()->SetMcpsDataConfirmCallback (cb2);
+
+  McpsDataIndicationCallback cb3;
+  cb3 = MakeCallback (&DataIndication);
+  dev1->GetMac ()->SetMcpsDataIndicationCallback (cb3);
+
+  // Tracing
+  lrWpanHelper.EnablePcapAll (std::string ("lr-wpan-data"), true);
+  AsciiTraceHelper ascii;
+  Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream ("lr-wpan-data.tr");
+  lrWpanHelper.EnableAsciiAll (stream);
+
+  // The below should trigger two callbacks when end-to-end data is working
+  // 1) DataConfirm callback is called
+  // 2) DataIndication callback is called with value of 50
+  Ptr<Packet> p0 = Create<Packet> (50);  // 50 bytes of dummy data
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_ACK;
+//  dev0->GetMac ()->McpsDataRequest (params, p0);
+  Simulator::ScheduleWithContext (1, Seconds (0.0),
+                                  &LrWpanMac::McpsDataRequest,
+                                  dev0->GetMac (), params, p0);
+
+  // Send a packet back at time 2 seconds
+  Ptr<Packet> p2 = Create<Packet> (60);  // 60 bytes of dummy data
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::ScheduleWithContext (2, Seconds (2.0),
+                                  &LrWpanMac::McpsDataRequest,
+                                  dev1->GetMac (), params, p2);
+
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.19/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc ns-3.20/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc
--- ns-3.19/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc	2014-06-17 10:33:13.895995946 -0700
@@ -0,0 +1,162 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+
+// This program produces a gnuplot file that plots the packet success rate
+// as a function of distance for the 802.15.4 models, assuming a default
+// LogDistance propagation loss model, the 2.4 GHz OQPSK error model, a
+// default transmit power of 0 dBm, and a default packet size of 20 bytes of
+// 802.15.4 payload.
+#include <ns3/test.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/packet.h>
+#include <ns3/simulator.h>
+#include <ns3/lr-wpan-error-model.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/lr-wpan-net-device.h>
+#include <ns3/spectrum-value.h>
+#include <ns3/lr-wpan-spectrum-value-helper.h>
+#include <ns3/lr-wpan-mac.h>
+#include <ns3/node.h>
+#include <ns3/net-device.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/mac16-address.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/uinteger.h>
+#include <ns3/nstime.h>
+#include <ns3/abort.h>
+#include <ns3/command-line.h>
+#include <ns3/gnuplot.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <vector>
+
+using namespace ns3;
+using namespace std;
+
+static uint32_t g_received = 0;
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanErrorDistancePlot");
+
+static void
+LrWpanErrorDistanceCallback (McpsDataIndicationParams params, Ptr<Packet> p)
+{
+  g_received++;
+}
+
+int main (int argc, char *argv[])
+{
+  std::ostringstream os;
+  std::ofstream berfile ("802.15.4-psr-distance.plt");
+
+  int minDistance = 1;
+  int maxDistance = 200;  // meters
+  int increment = 1;
+  int maxPackets = 1000;
+  int packetSize = 20;
+  double txPower = 0;
+  uint32_t channelNumber = 11;
+
+  CommandLine cmd;
+
+  cmd.AddValue ("txPower", "transmit power (dBm)", txPower);
+  cmd.AddValue ("packetSize", "packet (MSDU) size (bytes)", packetSize);
+  cmd.AddValue ("channelNumber", "channel number", channelNumber);
+
+  cmd.Parse (argc, argv);
+
+  os << "Packet (MSDU) size = " << packetSize << " bytes; tx power = " << txPower << " dBm; channel = " << channelNumber;
+
+  Gnuplot psrplot = Gnuplot ("802.15.4-psr-distance.eps");
+  Gnuplot2dDataset psrdataset ("802.15.4-psr-vs-distance");
+
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> model = CreateObject<LogDistancePropagationLossModel> ();
+  channel->AddPropagationLossModel (model);
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+  Ptr<ConstantPositionMobilityModel> mob0 = CreateObject<ConstantPositionMobilityModel> ();
+  dev0->GetPhy ()->SetMobility (mob0);
+  Ptr<ConstantPositionMobilityModel> mob1 = CreateObject<ConstantPositionMobilityModel> ();
+  dev1->GetPhy ()->SetMobility (mob1);
+
+  LrWpanSpectrumValueHelper svh;
+  Ptr<SpectrumValue> psd = svh.CreateTxPowerSpectralDensity (txPower, channelNumber);
+  dev0->GetPhy ()->SetTxPowerSpectralDensity (psd);
+
+  McpsDataIndicationCallback cb0;
+  cb0 = MakeCallback (&LrWpanErrorDistanceCallback);
+  dev1->GetMac ()->SetMcpsDataIndicationCallback (cb0);
+
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = 0;
+
+  Ptr<Packet> p;
+  mob0->SetPosition (Vector (0,0,0));
+  mob1->SetPosition (Vector (minDistance,0,0));
+  for (int j = minDistance; j < maxDistance;  )
+    {
+      for (int i = 0; i < maxPackets; i++)
+        {
+          p = Create<Packet> (packetSize);
+          Simulator::Schedule (Seconds (i),
+                               &LrWpanMac::McpsDataRequest,
+                               dev0->GetMac (), params, p);
+        }
+      Simulator::Run ();
+      NS_LOG_DEBUG ("Received " << g_received << " packets for distance " << j);
+      psrdataset.Add (j, g_received / 1000.0);
+      g_received = 0;
+      j += increment;
+      mob1->SetPosition (Vector (j,0,0));
+    }
+
+  psrplot.AddDataset (psrdataset);
+
+  psrplot.SetTitle (os.str ());
+  psrplot.SetTerminal ("postscript eps color enh \"Times-BoldItalic\"");
+  psrplot.SetLegend ("distance (m)", "Packet Success Rate (PSR)");
+  psrplot.SetExtra  ("set xrange [0:200]\n\
+set yrange [0:1]\n\
+set grid\n\
+set style line 1 linewidth 5\n\
+set style increment user");
+  psrplot.GenerateOutput (berfile);
+  berfile.close ();
+
+  Simulator::Destroy ();
+  return 0;
+}
+
diff -Naur ns-3.19/src/lr-wpan/examples/lr-wpan-error-model-plot.cc ns-3.20/src/lr-wpan/examples/lr-wpan-error-model-plot.cc
--- ns-3.19/src/lr-wpan/examples/lr-wpan-error-model-plot.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/lr-wpan-error-model-plot.cc	2014-06-17 10:33:13.896995938 -0700
@@ -0,0 +1,84 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include <ns3/packet.h>
+#include <ns3/uinteger.h>
+#include <ns3/simulator.h>
+#include <ns3/nstime.h>
+#include <ns3/log.h>
+#include <ns3/abort.h>
+#include <ns3/command-line.h>
+#include <ns3/gnuplot.h>
+#include <ns3/lr-wpan-error-model.h>
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <vector>
+
+using namespace ns3;
+using namespace std;
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanErrorModelPlot");
+
+//
+// Plot 802.15.4 BER curve (compare against Figure E.2 of IEEE-802.15.4-2006)
+//
+int main (int argc, char *argv[])
+{
+  std::ofstream berfile ("802.15.4-ber.plt");
+  Ptr<LrWpanErrorModel>  lrWpanError = CreateObject<LrWpanErrorModel> ();
+
+  double increment = 0.1;
+  double minSnr = -10;  //dB
+  double maxSnr = 5;
+
+  Gnuplot berplot = Gnuplot ("802.15.4-ber.eps");
+  Gnuplot2dDataset berdataset ("802.15.4");
+
+  for (double snr = minSnr; snr <= maxSnr; snr += increment)
+    {
+      double ber = 1.0 - lrWpanError->GetChunkSuccessRate (pow (10.0,snr / 10.0), 1);
+      NS_LOG_DEBUG (snr << "(dB) " << ber << " (BER)");
+      berdataset.Add (snr, ber);
+    }
+
+  berplot.AddDataset (berdataset);
+
+  berplot.SetTerminal ("postscript eps color enh \"Times-BoldItalic\"");
+  berplot.SetLegend ("SNR (dB)", "Bit Error Rate (BER)");
+  berplot.SetExtra  ("set xrange [-10:15]\n\
+set yrange [1e-9:1]\n\
+set log y\n\
+set grid\n\
+set style line 1 linewidth 5\n\
+set style line 2 linewidth 5\n\
+set style line 3 linewidth 5\n\
+set style line 4 linewidth 5\n\
+set style line 5 linewidth 5\n\
+set style line 6 linewidth 5\n\
+set style line 7 linewidth 5\n\
+set style line 8 linewidth 5\n\
+set style increment user");
+  berplot.GenerateOutput (berfile);
+  berfile.close ();
+
+  return 0;
+}
+
diff -Naur ns-3.19/src/lr-wpan/examples/lr-wpan-packet-print.cc ns-3.20/src/lr-wpan/examples/lr-wpan-packet-print.cc
--- ns-3.19/src/lr-wpan/examples/lr-wpan-packet-print.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/lr-wpan-packet-print.cc	2014-06-17 10:33:13.896995938 -0700
@@ -0,0 +1,52 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#include <ns3/core-module.h>
+#include <ns3/lr-wpan-module.h>
+
+#include <iostream>
+
+using namespace ns3;
+
+int main (int argc, char *argv[])
+{
+  Packet::EnablePrinting ();
+  Packet::EnableChecking ();
+  LrWpanMacHeader macHdr (LrWpanMacHeader::LRWPAN_MAC_BEACON, 0);        //sequence number set to 0
+  macHdr.SetSrcAddrMode (2);                                             // short addr
+  macHdr.SetDstAddrMode (0);                                             // no addr
+  // ... other setters
+
+  uint16_t srcPanId = 100;
+  Mac16Address srcWpanAddr ("00:11");
+
+  macHdr.SetSrcAddrFields (srcPanId,srcWpanAddr );
+
+  LrWpanMacTrailer macTrailer;
+
+  Ptr<Packet> p = Create<Packet> (20);  // 20 bytes of dummy data
+
+  p->AddHeader (macHdr);
+  p->AddTrailer (macTrailer);
+
+  p->Print (std::cout);
+  std::cout << std::endl;
+  return 0;
+
+}
diff -Naur ns-3.19/src/lr-wpan/examples/lr-wpan-phy-test.cc ns-3.20/src/lr-wpan/examples/lr-wpan-phy-test.cc
--- ns-3.19/src/lr-wpan/examples/lr-wpan-phy-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/lr-wpan-phy-test.cc	2014-06-17 10:33:13.896995938 -0700
@@ -0,0 +1,94 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/packet.h>
+#include <ns3/lr-wpan-phy.h>
+#include <ns3/lr-wpan-mac.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/constant-position-mobility-model.h>
+
+using namespace ns3;
+
+void GetSetTRXStateConfirm (LrWpanPhyEnumeration status)
+{
+  NS_LOG_UNCOND ("At: " << Simulator::Now ()
+                        << " Received Set TRX Confirm: " << status);
+}
+
+void
+ReceivePdDataIndication (uint32_t psduLength,
+                         Ptr<Packet> p,
+                         uint8_t lqi)
+{
+  NS_LOG_UNCOND ("At: " << Simulator::Now ()
+                        << " Received frame size: " << psduLength << " LQI: " <<
+                 lqi);
+}
+
+void SendOnePacket (Ptr<LrWpanPhy> sender, Ptr<LrWpanPhy> receiver)
+{
+  uint32_t n = 10;
+  Ptr<Packet> p = Create<Packet> (n);
+  sender->PdDataRequest (p->GetSize (), p);
+}
+
+
+int main (int argc, char *argv[])
+{
+  LogComponentEnableAll (LOG_PREFIX_FUNC);
+  LogComponentEnable ("LrWpanPhy", LOG_LEVEL_ALL);
+  LogComponentEnable ("SingleModelSpectrumChannel", LOG_LEVEL_ALL);
+
+  Ptr<LrWpanPhy> sender = CreateObject<LrWpanPhy> ();
+  Ptr<LrWpanPhy> receiver = CreateObject<LrWpanPhy> ();
+
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  sender->SetChannel (channel);
+  receiver->SetChannel (channel);
+  channel->AddRx (sender);
+  channel->AddRx (receiver);
+
+  // CONFIGURE MOBILITY
+  Ptr<ConstantPositionMobilityModel> senderMobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender->SetMobility (senderMobility);
+  Ptr<ConstantPositionMobilityModel> receiverMobility = CreateObject<ConstantPositionMobilityModel> ();
+  receiver->SetMobility (senderMobility);
+
+
+  sender->SetPlmeSetTRXStateConfirmCallback (MakeCallback (&GetSetTRXStateConfirm));
+  receiver->SetPlmeSetTRXStateConfirmCallback (MakeCallback (&GetSetTRXStateConfirm));
+
+  sender->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TX_ON);
+  receiver->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+
+  receiver->SetPdDataIndicationCallback (MakeCallback (&ReceivePdDataIndication));
+
+  Simulator::Schedule (Seconds (1.0), &SendOnePacket, sender, receiver);
+
+  Simulator::Stop (Seconds (10.0));
+
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+
+  return 0;
+}
diff -Naur ns-3.19/src/lr-wpan/examples/wscript ns-3.20/src/lr-wpan/examples/wscript
--- ns-3.19/src/lr-wpan/examples/wscript	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/examples/wscript	2014-06-17 10:33:13.897995931 -0700
@@ -0,0 +1,17 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_program('lr-wpan-packet-print', ['lr-wpan'])
+    obj.source = 'lr-wpan-packet-print.cc'
+
+    obj = bld.create_ns3_program('lr-wpan-phy-test', ['lr-wpan'])
+    obj.source = 'lr-wpan-phy-test.cc'
+
+    obj = bld.create_ns3_program('lr-wpan-data', ['lr-wpan'])
+    obj.source = 'lr-wpan-data.cc'
+
+    obj = bld.create_ns3_program('lr-wpan-error-model-plot', ['lr-wpan', 'stats'])
+    obj.source = 'lr-wpan-error-model-plot.cc'
+
+    obj = bld.create_ns3_program('lr-wpan-error-distance-plot', ['lr-wpan', 'stats'])
+    obj.source = 'lr-wpan-error-distance-plot.cc'
diff -Naur ns-3.19/src/lr-wpan/helper/lr-wpan-helper.cc ns-3.20/src/lr-wpan/helper/lr-wpan-helper.cc
--- ns-3.19/src/lr-wpan/helper/lr-wpan-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/helper/lr-wpan-helper.cc	2014-06-17 10:33:13.897995931 -0700
@@ -0,0 +1,357 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#include "lr-wpan-helper.h"
+#include <ns3/lr-wpan-csmaca.h>
+#include <ns3/lr-wpan-error-model.h>
+#include <ns3/lr-wpan-net-device.h>
+#include <ns3/mobility-model.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanHelper");
+
+namespace ns3 {
+
+static void
+AsciiLrWpanMacTransmitSinkWithContext (
+  Ptr<OutputStreamWrapper> stream,
+  std::string context,
+  Ptr<const Packet> p)
+{
+  *stream->GetStream () << "t " << Simulator::Now ().GetSeconds () << " " << context << " " << *p << std::endl;
+}
+
+static void
+AsciiLrWpanMacTransmitSinkWithoutContext (
+  Ptr<OutputStreamWrapper> stream,
+  Ptr<const Packet> p)
+{
+  *stream->GetStream () << "t " << Simulator::Now ().GetSeconds () << " " << *p << std::endl;
+}
+
+LrWpanHelper::LrWpanHelper (void)
+{
+  m_channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> model = CreateObject<LogDistancePropagationLossModel> ();
+  m_channel->AddPropagationLossModel (model);
+}
+
+LrWpanHelper::~LrWpanHelper (void)
+{
+  m_channel->Dispose ();
+  m_channel = 0;
+}
+
+void
+LrWpanHelper::EnableLogComponents (void)
+{
+  LogComponentEnableAll (LOG_PREFIX_TIME);
+  LogComponentEnableAll (LOG_PREFIX_FUNC);
+  LogComponentEnable ("LrWpanCsmaCa", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanErrorModel", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanInterferenceHelper", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanMac", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanNetDevice", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanPhy", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanSpectrumSignalParameters", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanSpectrumValueHelper", LOG_LEVEL_ALL);
+}
+
+std::string
+LrWpanHelper::LrWpanPhyEnumerationPrinter (LrWpanPhyEnumeration e)
+{
+  switch (e)
+    {
+    case IEEE_802_15_4_PHY_BUSY:
+      return std::string ("BUSY");
+    case IEEE_802_15_4_PHY_BUSY_RX:
+      return std::string ("BUSY_RX");
+    case IEEE_802_15_4_PHY_BUSY_TX:
+      return std::string ("BUSY_TX");
+    case IEEE_802_15_4_PHY_FORCE_TRX_OFF:
+      return std::string ("FORCE_TRX_OFF");
+    case IEEE_802_15_4_PHY_IDLE:
+      return std::string ("IDLE");
+    case IEEE_802_15_4_PHY_INVALID_PARAMETER:
+      return std::string ("INVALID_PARAMETER");
+    case IEEE_802_15_4_PHY_RX_ON:
+      return std::string ("RX_ON");
+    case IEEE_802_15_4_PHY_SUCCESS:
+      return std::string ("SUCCESS");
+    case IEEE_802_15_4_PHY_TRX_OFF:
+      return std::string ("TRX_OFF");
+    case IEEE_802_15_4_PHY_TX_ON:
+      return std::string ("TX_ON");
+    case IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE:
+      return std::string ("UNSUPPORTED_ATTRIBUTE");
+    case IEEE_802_15_4_PHY_READ_ONLY:
+      return std::string ("READ_ONLY");
+    case IEEE_802_15_4_PHY_UNSPECIFIED:
+      return std::string ("UNSPECIFIED");
+    default:
+      return std::string ("INVALID");
+    }
+}
+
+std::string
+LrWpanHelper::LrWpanMacStatePrinter (LrWpanMacState e)
+{
+  switch (e)
+    {
+    case MAC_IDLE:
+      return std::string ("MAC_IDLE");
+    case CHANNEL_ACCESS_FAILURE:
+      return std::string ("CHANNEL_ACCESS_FAILURE");
+    case CHANNEL_IDLE:
+      return std::string ("CHANNEL_IDLE");
+    case SET_PHY_TX_ON:
+      return std::string ("SET_PHY_TX_ON");
+    default:
+      return std::string ("INVALID");
+    }
+}
+
+void
+LrWpanHelper::AddMobility (Ptr<LrWpanPhy> phy, Ptr<MobilityModel> m)
+{
+  phy->SetMobility (m);
+}
+
+NetDeviceContainer
+LrWpanHelper::Install (NodeContainer c)
+{
+  NetDeviceContainer devices;
+  for (NodeContainer::Iterator i = c.Begin (); i != c.End (); i++)
+    {
+      Ptr<Node> node = *i;
+
+      Ptr<LrWpanNetDevice> netDevice = CreateObject<LrWpanNetDevice> ();
+      netDevice->SetChannel (m_channel);
+      node->AddDevice (netDevice);
+      netDevice->SetNode (node);
+      // \todo add the capability to change short address, extended
+      // address and panId. Right now they are hardcoded in LrWpanMac::LrWpanMac ()
+      devices.Add (netDevice);
+    }
+  return devices;
+}
+
+int64_t
+LrWpanHelper::AssignStreams (NetDeviceContainer c, int64_t stream)
+{
+  int64_t currentStream = stream;
+  Ptr<NetDevice> netDevice;
+  for (NetDeviceContainer::Iterator i = c.Begin (); i != c.End (); ++i)
+    {
+      netDevice = (*i);
+      Ptr<LrWpanNetDevice> lrwpan = DynamicCast<LrWpanNetDevice> (netDevice);
+      if (lrwpan)
+        {
+          currentStream += lrwpan->AssignStreams (currentStream);
+        }
+    }
+  return (currentStream - stream);
+}
+
+void
+LrWpanHelper::AssociateToPan (NetDeviceContainer c, uint16_t panId)
+{
+  NetDeviceContainer devices;
+  uint16_t id = 1;
+  uint8_t idBuf[2];
+
+  for (NetDeviceContainer::Iterator i = c.Begin (); i != c.End (); i++)
+    {
+      Ptr<LrWpanNetDevice> device = DynamicCast<LrWpanNetDevice> (*i);
+      if (device)
+        {
+          idBuf[0] = (id >> 8) & 0xff;
+          idBuf[1] = (id >> 0) & 0xff;
+          Mac16Address address;
+          address.CopyFrom (idBuf);
+
+          device->GetMac ()->SetPanId (panId);
+          device->GetMac ()->SetShortAddress (address);
+          id++;
+        }
+    }
+  return;
+}
+
+static void
+PcapSniffLrWpan (Ptr<PcapFileWrapper> file, Ptr<const Packet> packet)
+{
+  file->Write (Simulator::Now (), packet);
+}
+
+void
+LrWpanHelper::EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous, bool explicitFilename)
+{
+  NS_LOG_FUNCTION (this << prefix << nd << promiscuous << explicitFilename);
+  //
+  // All of the Pcap enable functions vector through here including the ones
+  // that are wandering through all of devices on perhaps all of the nodes in
+  // the system.
+  //
+
+  // In the future, if we create different NetDevice types, we will
+  // have to switch on each type below and insert into the right
+  // NetDevice type
+  //
+  Ptr<LrWpanNetDevice> device = nd->GetObject<LrWpanNetDevice> ();
+  if (device == 0)
+    {
+      NS_LOG_INFO ("LrWpanHelper::EnablePcapInternal(): Device " << device << " not of type ns3::LrWpanNetDevice");
+      return;
+    }
+
+  PcapHelper pcapHelper;
+
+  std::string filename;
+  if (explicitFilename)
+    {
+      filename = prefix;
+    }
+  else
+    {
+      filename = pcapHelper.GetFilenameFromDevice (prefix, device);
+    }
+
+  Ptr<PcapFileWrapper> file = pcapHelper.CreateFile (filename, std::ios::out,
+                                                     PcapHelper::DLT_IEEE802_15_4);
+
+  if (promiscuous == true)
+    {
+      device->GetMac ()->TraceConnectWithoutContext ("PromiscSniffer", MakeBoundCallback (&PcapSniffLrWpan, file));
+
+    }
+  else
+    {
+      device->GetMac ()->TraceConnectWithoutContext ("Sniffer", MakeBoundCallback (&PcapSniffLrWpan, file));
+    }
+}
+
+void
+LrWpanHelper::EnableAsciiInternal (
+  Ptr<OutputStreamWrapper> stream,
+  std::string prefix,
+  Ptr<NetDevice> nd,
+  bool explicitFilename)
+{
+  uint32_t nodeid = nd->GetNode ()->GetId ();
+  uint32_t deviceid = nd->GetIfIndex ();
+  std::ostringstream oss;
+
+  Ptr<LrWpanNetDevice> device = nd->GetObject<LrWpanNetDevice> ();
+  if (device == 0)
+    {
+      NS_LOG_INFO ("LrWpanHelper::EnableAsciiInternal(): Device " << device << " not of type ns3::LrWpanNetDevice");
+      return;
+    }
+
+  //
+  // Our default trace sinks are going to use packet printing, so we have to
+  // make sure that is turned on.
+  //
+  Packet::EnablePrinting ();
+
+  //
+  // If we are not provided an OutputStreamWrapper, we are expected to create
+  // one using the usual trace filename conventions and do a Hook*WithoutContext
+  // since there will be one file per context and therefore the context would
+  // be redundant.
+  //
+  if (stream == 0)
+    {
+      //
+      // Set up an output stream object to deal with private ofstream copy
+      // constructor and lifetime issues.  Let the helper decide the actual
+      // name of the file given the prefix.
+      //
+      AsciiTraceHelper asciiTraceHelper;
+
+      std::string filename;
+      if (explicitFilename)
+        {
+          filename = prefix;
+        }
+      else
+        {
+          filename = asciiTraceHelper.GetFilenameFromDevice (prefix, device);
+        }
+
+      Ptr<OutputStreamWrapper> theStream = asciiTraceHelper.CreateFileStream (filename);
+
+      // Ascii traces typically have "+", '-", "d", "r", and sometimes "t"
+      // The Mac and Phy objects have the trace sources for these
+      //
+
+      asciiTraceHelper.HookDefaultReceiveSinkWithoutContext<LrWpanNetDevice> (device, "MacRx", theStream);
+
+      device->GetMac ()->TraceConnectWithoutContext ("MacTx", MakeBoundCallback (&AsciiLrWpanMacTransmitSinkWithoutContext, theStream));
+
+      asciiTraceHelper.HookDefaultEnqueueSinkWithoutContext<LrWpanNetDevice> (device, "MacTxEnqueue", theStream);
+      asciiTraceHelper.HookDefaultDequeueSinkWithoutContext<LrWpanNetDevice> (device, "MacTxDequeue", theStream);
+      asciiTraceHelper.HookDefaultDropSinkWithoutContext<LrWpanNetDevice> (device, "MacTxDrop", theStream);
+
+      return;
+    }
+
+  //
+  // If we are provided an OutputStreamWrapper, we are expected to use it, and
+  // to provide a context.  We are free to come up with our own context if we
+  // want, and use the AsciiTraceHelper Hook*WithContext functions, but for
+  // compatibility and simplicity, we just use Config::Connect and let it deal
+  // with the context.
+  //
+  // Note that we are going to use the default trace sinks provided by the
+  // ascii trace helper.  There is actually no AsciiTraceHelper in sight here,
+  // but the default trace sinks are actually publicly available static
+  // functions that are always there waiting for just such a case.
+  //
+
+
+  oss.str ("");
+  oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::LrWpanNetDevice/Mac/MacRx";
+  device->GetMac ()->TraceConnect ("MacRx", oss.str (), MakeBoundCallback (&AsciiTraceHelper::DefaultReceiveSinkWithContext, stream));
+
+  oss.str ("");
+  oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::LrWpanNetDevice/Mac/MacTx";
+  device->GetMac ()->TraceConnect ("MacTx", oss.str (), MakeBoundCallback (&AsciiLrWpanMacTransmitSinkWithContext, stream));
+
+  oss.str ("");
+  oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::LrWpanNetDevice/Mac/MacTxEnqueue";
+  device->GetMac ()->TraceConnect ("MacTxEnqueue", oss.str (), MakeBoundCallback (&AsciiTraceHelper::DefaultEnqueueSinkWithContext, stream));
+
+  oss.str ("");
+  oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::LrWpanNetDevice/Mac/MacTxDequeue";
+  device->GetMac ()->TraceConnect ("MacTxDequeue", oss.str (), MakeBoundCallback (&AsciiTraceHelper::DefaultDequeueSinkWithContext, stream));
+
+  oss.str ("");
+  oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::LrWpanNetDevice/Mac/MacTxDrop";
+  device->GetMac ()->TraceConnect ("MacTxDrop", oss.str (), MakeBoundCallback (&AsciiTraceHelper::DefaultDropSinkWithContext, stream));
+
+}
+
+} // namespace ns3
+
diff -Naur ns-3.19/src/lr-wpan/helper/lr-wpan-helper.h ns-3.20/src/lr-wpan/helper/lr-wpan-helper.h
--- ns-3.19/src/lr-wpan/helper/lr-wpan-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/helper/lr-wpan-helper.h	2014-06-17 10:33:13.898995923 -0700
@@ -0,0 +1,139 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#ifndef LR_WPAN_HELPER_H
+#define LR_WPAN_HELPER_H
+
+#include <ns3/node-container.h>
+#include <ns3/lr-wpan-phy.h>
+#include <ns3/lr-wpan-mac.h>
+#include <ns3/trace-helper.h>
+
+namespace ns3 {
+
+class SingleModelSpectrumChannel;
+class MobilityModel;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * \brief helps to manage and create IEEE 802.15.4 NetDevice objects
+ *
+ * This class can help to create IEEE 802.15.4 NetDevice objects
+ * and to configure their attributes during creation.  It also contains
+ * additional helper functions used by client code.
+ */
+
+class LrWpanHelper : public PcapHelperForDevice,
+                     public AsciiTraceHelperForDevice
+{
+public:
+  /**
+   * \brief Create a LrWpan helper in an empty state.
+   */
+  LrWpanHelper (void);
+  virtual ~LrWpanHelper (void);
+
+  /**
+  * \brief Add mobility model to a physical device
+  * \param phy the physical device
+  * \param m the mobility model
+  */
+  void AddMobility (Ptr<LrWpanPhy> phy, Ptr<MobilityModel> m);
+
+  /**
+   * \param c a set of nodes
+   */
+  NetDeviceContainer Install (NodeContainer c);
+
+  /**
+   * \brief Associate the nodes to the same PAN
+   *
+   * \param c a set of nodes
+   * \param panId the PAN Id
+   */
+  void AssociateToPan (NetDeviceContainer c, uint16_t panId);
+
+  /**
+   * Helper to enable all LrWpan log components with one statement
+   */
+  void EnableLogComponents (void);
+
+  static std::string LrWpanPhyEnumerationPrinter (LrWpanPhyEnumeration);
+  static std::string LrWpanMacStatePrinter (LrWpanMacState e);
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model. Return the number of streams that have been
+   * assigned. The Install() method should have previously been
+   * called by the user.
+   *
+   * \param c NetDeviceContainer of the set of net devices for which the
+   *          CsmaNetDevice should be modified to use a fixed stream
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this helper
+   */
+  int64_t AssignStreams (NetDeviceContainer c, int64_t stream);
+
+private:
+  // Disable implicit constructors
+  LrWpanHelper (LrWpanHelper const &);
+  LrWpanHelper& operator= (LrWpanHelper const &);
+  /**
+   * \internal
+   *
+   * \brief Enable pcap output on the indicated net device.
+   * \internal
+   *
+   * NetDevice-specific implementation mechanism for hooking the trace and
+   * writing to the trace file.
+   *
+   * \param prefix Filename prefix to use for pcap files.
+   * \param nd Net device for which you want to enable tracing.
+   * \param promiscuous If true capture all possible packets available at the device.
+   * \param explicitFilename Treat the prefix as an explicit filename if true
+   */
+  virtual void EnablePcapInternal (std::string prefix, Ptr<NetDevice> nd, bool promiscuous, bool explicitFilename);
+
+  /**
+   * \brief Enable ascii trace output on the indicated net device.
+   * \internal
+   *
+   * NetDevice-specific implementation mechanism for hooking the trace and
+   * writing to the trace file.
+   *
+   * \param stream The output stream object to use when logging ascii traces.
+   * \param prefix Filename prefix to use for ascii trace files.
+   * \param nd Net device for which you want to enable tracing.
+   */
+  virtual void EnableAsciiInternal (Ptr<OutputStreamWrapper> stream,
+                                    std::string prefix,
+                                    Ptr<NetDevice> nd,
+                                    bool explicitFilename);
+
+private:
+  Ptr<SingleModelSpectrumChannel> m_channel;
+
+};
+
+}
+
+#endif /* LR_WPAN_HELPER_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-csmaca.cc ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-csmaca.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.cc	2014-06-17 10:33:13.898995923 -0700
@@ -0,0 +1,387 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+
+#include "lr-wpan-csmaca.h"
+#include <ns3/random-variable-stream.h>
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <algorithm>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanCsmaCa");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanCsmaCa);
+
+TypeId
+LrWpanCsmaCa::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanCsmaCa")
+    .SetParent<Object> ()
+    .AddConstructor<LrWpanCsmaCa> ()
+  ;
+  return tid;
+}
+
+LrWpanCsmaCa::LrWpanCsmaCa ()
+{
+  // TODO-- make these into ns-3 attributes
+
+  m_isSlotted = false;
+  m_NB = 0;
+  m_CW = 2;
+  m_BLE = false;
+  m_macMinBE = 3;
+  m_macMaxBE = 5;
+  m_macMaxCSMABackoffs = 4;
+  m_aUnitBackoffPeriod = 20; //20 symbols
+  m_random = CreateObject<UniformRandomVariable> ();
+  m_BE = m_macMinBE;
+  m_ccaRequestRunning = false;
+}
+
+LrWpanCsmaCa::~LrWpanCsmaCa ()
+{
+  m_mac = 0;
+}
+
+void
+LrWpanCsmaCa::DoDispose ()
+{
+  m_lrWpanMacStateCallback = MakeNullCallback< void, LrWpanMacState> ();
+  Cancel ();
+  m_mac = 0;
+}
+
+void
+LrWpanCsmaCa::SetMac (Ptr<LrWpanMac> mac)
+{
+  m_mac = mac;
+}
+
+Ptr<LrWpanMac>
+LrWpanCsmaCa::GetMac (void) const
+{
+  return m_mac;
+}
+
+void
+LrWpanCsmaCa::SetSlottedCsmaCa (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_isSlotted = true;
+}
+
+void
+LrWpanCsmaCa::SetUnSlottedCsmaCa (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_isSlotted = false;
+}
+
+bool
+LrWpanCsmaCa::IsSlottedCsmaCa (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return (m_isSlotted);
+}
+
+bool
+LrWpanCsmaCa::IsUnSlottedCsmaCa (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return (!m_isSlotted);
+}
+
+void
+LrWpanCsmaCa::SetMacMinBE (uint8_t macMinBE)
+{
+  NS_LOG_FUNCTION (this << macMinBE);
+  m_macMinBE = macMinBE;
+}
+
+uint8_t
+LrWpanCsmaCa::GetMacMinBE (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_macMinBE;
+}
+
+void
+LrWpanCsmaCa::SetMacMaxBE (uint8_t macMaxBE)
+{
+  NS_LOG_FUNCTION (this << macMaxBE);
+  m_macMinBE = macMaxBE;
+}
+
+uint8_t
+LrWpanCsmaCa::GetMacMaxBE (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_macMaxBE;
+}
+
+void
+LrWpanCsmaCa::SetMacMaxCSMABackoffs (uint8_t macMaxCSMABackoffs)
+{
+  NS_LOG_FUNCTION (this << macMaxCSMABackoffs);
+  m_macMaxCSMABackoffs = macMaxCSMABackoffs;
+}
+
+uint8_t
+LrWpanCsmaCa::GetMacMaxCSMABackoffs (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_macMaxCSMABackoffs;
+}
+
+void
+LrWpanCsmaCa::SetUnitBackoffPeriod (uint64_t unitBackoffPeriod)
+{
+  NS_LOG_FUNCTION (this << unitBackoffPeriod);
+  m_aUnitBackoffPeriod = unitBackoffPeriod;
+}
+
+uint64_t
+LrWpanCsmaCa::GetUnitBackoffPeriod (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_aUnitBackoffPeriod;
+}
+
+Time
+LrWpanCsmaCa::GetTimeToNextSlot (void) const
+{
+  NS_LOG_FUNCTION (this);
+
+  // TODO: Calculate the offset to the next slot.
+
+  return Seconds (0);
+
+}
+void
+LrWpanCsmaCa::Start ()
+
+{
+  NS_LOG_FUNCTION (this);
+  m_NB = 0;
+  if (IsSlottedCsmaCa ())
+    {
+      m_CW = 2;
+      if (m_BLE)
+        {
+          m_BE = std::min (static_cast<uint8_t> (2), m_macMinBE);
+        }
+      else
+        {
+          m_BE = m_macMinBE;
+        }
+      //TODO: for slotted, locate backoff period boundary. i.e. delay to the next slot boundary
+      Time backoffBoundary = GetTimeToNextSlot ();
+      m_randomBackoffEvent = Simulator::Schedule (backoffBoundary, &LrWpanCsmaCa::RandomBackoffDelay, this);
+    }
+  else
+    {
+      m_BE = m_macMinBE;
+      m_randomBackoffEvent = Simulator::ScheduleNow (&LrWpanCsmaCa::RandomBackoffDelay, this);
+    }
+  /*
+  *  TODO: If using Backoff.cc (will need to modify Backoff::GetBackoffTime)
+  *        Backoff.m_minSlots = 0;
+  *        Backoff.m_ceiling = m_BE;
+  *        Backoff.ResetBackoffTime(); //m_NB is same as m_numBackoffRetries in Backoff.h
+  *        Backoff.m_maxRetries = macMaxCSMABackoffs;
+  *        Backoff.m_slotTime = m_backoffPeriod;
+  */
+}
+
+void
+LrWpanCsmaCa::Cancel ()
+{
+  m_randomBackoffEvent.Cancel ();
+  m_requestCcaEvent.Cancel ();
+  m_canProceedEvent.Cancel ();
+}
+
+/*
+ * Delay for backoff period in the range 0 to 2^BE -1 units
+ * TODO: If using Backoff.cc (Backoff::GetBackoffTime) will need to be slightly modified
+ */
+void
+LrWpanCsmaCa::RandomBackoffDelay ()
+{
+  NS_LOG_FUNCTION (this);
+
+  uint64_t upperBound = (uint64_t) pow (2, m_BE) - 1;
+  uint64_t backoffPeriod;
+  Time randomBackoff;
+  uint64_t symbolRate;
+  bool isData = false;
+
+
+  symbolRate = (uint64_t) m_mac->GetPhy ()->GetDataOrSymbolRate (isData); //symbols per second
+  backoffPeriod = (uint64_t)m_random->GetValue (0, upperBound); //num backoff periods
+  randomBackoff = MicroSeconds (backoffPeriod * GetUnitBackoffPeriod () * 1000 * 1000 / symbolRate);
+
+  if (IsUnSlottedCsmaCa ())
+    {
+      NS_LOG_LOGIC ("Unslotted:  requesting CCA after backoff of " << randomBackoff.GetMicroSeconds () << " us");
+      m_requestCcaEvent = Simulator::Schedule (randomBackoff, &LrWpanCsmaCa::RequestCCA, this);
+    }
+  else
+    {
+      NS_LOG_LOGIC ("Slotted:  proceeding after backoff of " << randomBackoff.GetMicroSeconds () << " us");
+      m_canProceedEvent = Simulator::Schedule (randomBackoff, &LrWpanCsmaCa::CanProceed, this);
+    }
+}
+
+// TODO : Determine if transmission can be completed before end of CAP for the slotted csmaca
+//        If not delay to the next CAP
+void
+LrWpanCsmaCa::CanProceed ()
+{
+  NS_LOG_FUNCTION (this);
+
+  bool canProceed = true;
+
+  if (m_BLE)
+    {
+    }
+  else
+    {
+    }
+
+  if (canProceed)
+    {
+      // TODO: For slotted, Perform CCA on backoff period boundary i.e. delay to next slot boundary
+      Time backoffBoundary = GetTimeToNextSlot ();
+      m_requestCcaEvent = Simulator::Schedule (backoffBoundary, &LrWpanCsmaCa::RequestCCA, this);
+    }
+  else
+    {
+      Time nextCap = Seconds (0);
+      m_randomBackoffEvent = Simulator::Schedule (nextCap, &LrWpanCsmaCa::RandomBackoffDelay, this);
+    }
+}
+
+void
+LrWpanCsmaCa::RequestCCA ()
+{
+  NS_LOG_FUNCTION (this);
+  m_ccaRequestRunning = true;
+  m_mac->GetPhy ()->PlmeCcaRequest ();
+}
+
+/*
+ * This function is called when the phy calls back after completing a PlmeCcaRequest
+ */
+void
+LrWpanCsmaCa::PlmeCcaConfirm (LrWpanPhyEnumeration status)
+{
+  NS_LOG_FUNCTION (this << status);
+
+  // Only react on this event, if we are actually waiting for a CCA.
+  // If the CSMA algorithm was canceled, we could still receive this event from
+  // the PHY. In this case we ignore the event.
+  if (m_ccaRequestRunning)
+    {
+      m_ccaRequestRunning = false;
+      if (status == IEEE_802_15_4_PHY_IDLE)
+        {
+          if (IsSlottedCsmaCa ())
+            {
+              m_CW--;
+              if (m_CW == 0)
+                {
+                  // inform MAC channel is idle
+                  if (!m_lrWpanMacStateCallback.IsNull ())
+                    {
+                      NS_LOG_LOGIC ("Notifying MAC of idle channel");
+                      m_lrWpanMacStateCallback (CHANNEL_IDLE);
+                    }
+                }
+              else
+                {
+                  NS_LOG_LOGIC ("Perform CCA again, m_CW = " << m_CW);
+                  m_requestCcaEvent = Simulator::ScheduleNow (&LrWpanCsmaCa::RequestCCA, this); // Perform CCA again
+                }
+            }
+          else
+            {
+              // inform MAC, channel is idle
+              if (!m_lrWpanMacStateCallback.IsNull ())
+                {
+                  NS_LOG_LOGIC ("Notifying MAC of idle channel");
+                  m_lrWpanMacStateCallback (CHANNEL_IDLE);
+                }
+            }
+        }
+      else
+        {
+          if (IsSlottedCsmaCa ())
+            {
+              m_CW = 2;
+            }
+          m_BE = std::min (static_cast<uint16_t> (m_BE + 1), static_cast<uint16_t> (m_macMaxBE));
+          m_NB++;
+          if (m_NB > m_macMaxCSMABackoffs)
+            {
+              // no channel found so cannot send pkt
+              NS_LOG_DEBUG ("Channel access failure");
+              if (!m_lrWpanMacStateCallback.IsNull ())
+                {
+                  NS_LOG_LOGIC ("Notifying MAC of Channel access failure");
+                  m_lrWpanMacStateCallback (CHANNEL_ACCESS_FAILURE);
+                }
+              return;
+            }
+          else
+            {
+              NS_LOG_DEBUG ("Perform another backoff; m_NB = " << static_cast<uint16_t> (m_NB));
+              m_randomBackoffEvent = Simulator::ScheduleNow (&LrWpanCsmaCa::RandomBackoffDelay, this); //Perform another backoff (step 2)
+            }
+        }
+    }
+}
+
+void
+LrWpanCsmaCa::SetLrWpanMacStateCallback (LrWpanMacStateCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_lrWpanMacStateCallback = c;
+}
+
+int64_t
+LrWpanCsmaCa::AssignStreams (int64_t stream)
+{
+  NS_LOG_FUNCTION (this);
+  m_random->SetStream (stream);
+  return 1;
+}
+
+uint8_t
+LrWpanCsmaCa::GetNB (void)
+{
+  return m_NB;
+}
+
+} //namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-csmaca.h ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-csmaca.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.h	2014-06-17 10:33:13.899995915 -0700
@@ -0,0 +1,335 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+
+#ifndef LR_WPAN_CSMACA_H
+#define LR_WPAN_CSMACA_H
+
+#include <ns3/object.h>
+#include <ns3/event-id.h>
+#include <ns3/lr-wpan-mac.h>
+
+namespace ns3 {
+
+class UniformRandomVariable;
+
+/**
+ * This method informs the MAC  whether the channel is idle or busy.
+ */
+typedef Callback<void, LrWpanMacState> LrWpanMacStateCallback;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * This class is a helper for the LrWpanMac to manage the Csma/CA
+ * state machine according to IEEE 802.15.4-2006, section 7.5.1.4.
+ */
+class LrWpanCsmaCa : public Object
+{
+
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * Default constructor.
+   */
+  LrWpanCsmaCa (void);
+  virtual ~LrWpanCsmaCa (void);
+
+  /**
+   * Set the MAC to which this CSMA/CA implementation is attached to.
+   *
+   * \param mac the used MAC
+   */
+  void SetMac (Ptr<LrWpanMac> mac);
+
+  /**
+   * Get the MAC to which this CSMA/CA implementation is attached to.
+   *
+   * \return the used MAC
+   */
+  Ptr<LrWpanMac> GetMac (void) const;
+
+  /**
+   * Configure for the use of the slotted CSMA/CA version.
+   */
+  void SetSlottedCsmaCa (void);
+
+  /**
+   * Configure for the use of the unslotted CSMA/CA version.
+   */
+  void SetUnSlottedCsmaCa (void);
+
+  /**
+   * Check if the slotted CSMA/CA version is being used.
+   *
+   * \return true, if slotted CSMA/CA is used, false otherwise.
+   */
+  bool IsSlottedCsmaCa (void) const;
+
+  /**
+   * Check if the unslotted CSMA/CA version is being used.
+   *
+   * \return true, if unslotted CSMA/CA is used, false otherwise.
+   */
+  bool IsUnSlottedCsmaCa (void) const;
+
+  /**
+   * Set the minimum backoff exponent value.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \param macMinBE the minimum backoff exponent value
+   */
+  void SetMacMinBE (uint8_t macMinBE);
+
+  /**
+   * Get the minimum backoff exponent value.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \return the minimum backoff exponent value
+   */
+  uint8_t GetMacMinBE (void) const;
+
+  /**
+   * Set the maximum backoff exponent value.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \param macMaxBE the maximum backoff exponent value
+   */
+  void SetMacMaxBE (uint8_t macMaxBE);
+
+  /**
+   * Get the maximum backoff exponent value.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \return the maximum backoff exponent value
+   */
+  uint8_t GetMacMaxBE (void) const;
+
+  /**
+   * Set the maximum number of backoffs.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \param macMaxCSMABackoffs the maximum number of backoffs
+   */
+  void SetMacMaxCSMABackoffs (uint8_t macMaxCSMABackoffs);
+
+  /**
+   * Get the maximum number of backoffs.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   *
+   * \return the maximum number of backoffs
+   */
+  uint8_t GetMacMaxCSMABackoffs (void) const;
+
+  /**
+   * Set the number of symbols forming the basic time period used by the
+   * CSMA-CA algorithm.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85.
+   *
+   * \param unitBackoffPeriod the period length in symbols
+   */
+  void SetUnitBackoffPeriod (uint64_t unitBackoffPeriod);
+
+  /**
+   * Get the number of symbols forming the basic time period used by the
+   * CSMA-CA algorithm.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85.
+   *
+   * \return the period length in symbols
+   */
+  uint64_t GetUnitBackoffPeriod (void) const;
+
+  /**
+   * Get the amount of time from now to the beginning of the next slot.
+   *
+   * \return time offset to the next slot
+   */
+  Time GetTimeToNextSlot (void) const;
+
+  /**
+   * Start CSMA-CA algorithm (step 1), initialize NB, BE for both slotted and unslotted
+   * CSMA-CA. For the slotted intialize CW plus also start on the backoff boundary
+   */
+  void Start (void);
+
+  /**
+   * Cancel CSMA-CA algorithm.
+   */
+  void Cancel (void);
+
+  /**
+   * In step 2 of the CSMA-CA, perform a random backoff in the range of 0 to 2^BE -1
+   */
+  void RandomBackoffDelay (void);
+
+  /**
+   * In the slotted CSMA-CA, after random backoff, determine if the remaining
+   * CSMA-CA operation can proceed, i.e. can the entire transactions can be
+   * transmitted before the end of the CAP. This step is performed between step
+   * 2 and 3. This step is NOT performed for the unslotted CSMA-CA. If it can
+   * proceed function RequestCCA() is called.
+   */
+  void CanProceed (void);
+
+  /**
+   * Request the Phy to perform CCA (Step 3)
+   */
+  void RequestCCA (void);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.2
+   *  PLME-CCA.confirm status
+   *  @param status TRX_OFF, BUSY or IDLE
+   *
+   * When Phy has completed CCA, it calls back here which in turn execute the final steps
+   * of the CSMA-CA algorithm.
+   * It checks to see if the Channel is idle, if so check the Contention window  before
+   * permitting transmission (step 5). If channel is busy, either backoff and perform CCA again or
+   * treat as channel access failure (step 4).
+   */
+  void PlmeCcaConfirm (LrWpanPhyEnumeration status);
+
+  /**
+   * Set the callback function to the MAC. Used at the end of a Channel Assessment, as part of the
+   * interconnections between the CSMA-CA and the MAC. The callback
+   * lets MAC know a channel is either idle or busy.
+   *
+   * \param macState the mac state callback
+   */
+  void SetLrWpanMacStateCallback (LrWpanMacStateCallback macState);
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model.  Return the number of streams that have been assigned.
+   *
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this model
+   */
+  int64_t AssignStreams (int64_t stream);
+
+  /**
+   * Get the number of CSMA retries
+   *
+   * \returns the number of CSMA retries
+   */
+  uint8_t GetNB (void);
+
+private:
+  // Disable implicit copy constructors
+  LrWpanCsmaCa (LrWpanCsmaCa const &);
+  LrWpanCsmaCa& operator= (LrWpanCsmaCa const &);
+ 
+  virtual void DoDispose (void);
+
+  /**
+   * The callback to inform the configured MAC of the CSMA/CA result.
+   */
+  LrWpanMacStateCallback m_lrWpanMacStateCallback;
+
+  /**
+   * Beacon-enabled slotted or nonbeacon-enabled unslotted CSMA-CA.
+   */
+  bool m_isSlotted;
+
+  /**
+   * The MAC instance for which this CSMAÄ/CA implemenation is configured.
+   */
+  Ptr<LrWpanMac> m_mac;
+
+  /**
+   * Number of backoffs for the current transmission.
+   */
+  uint8_t m_NB;
+
+  /**
+   * Contention window length (used in slotted ver only).
+   */
+  uint8_t m_CW;
+
+  /**
+   * Backoff exponent.
+   */
+  uint8_t m_BE;
+
+  /**
+   * Battery Life Extension.
+   */
+  bool m_BLE;
+
+  /**
+   * Minimum backoff exponent. 0 - macMaxBE, default 3
+   */
+  uint8_t m_macMinBE;                   //
+
+  /**
+   * Maximum backoff exponent. 3 - 8, default 5
+   */
+  uint8_t m_macMaxBE;
+
+  /**
+   * Maximum number of backoffs. 0 - 5, default 4
+   */
+  uint8_t m_macMaxCSMABackoffs;
+
+  /**
+   * Number of symbols per CSMA/CA time unit, default 20 symbols.
+   */
+  uint64_t m_aUnitBackoffPeriod;
+
+  /**
+   * Uniform random variable stream.
+   */
+  Ptr<UniformRandomVariable> m_random;
+
+  /**
+   * Scheduler event for the start of the next random backoff/slot.
+   */
+  EventId m_randomBackoffEvent;
+
+  /**
+   * Scheduler event when to start the CCA after a random backoff.
+   */
+  EventId m_requestCcaEvent;
+
+  /**
+   * Scheduler event for checking if we can complete the transmission before the
+   * end of the CAP.
+   */
+  EventId m_canProceedEvent;
+
+  /**
+   * Flag indicating that the PHY is currently running a CCA. Used to prevent
+   * reporting the channel status to the MAC while canceling the CSMA algorithm.
+   */
+  bool m_ccaRequestRunning;
+};
+
+}
+
+// namespace ns-3
+
+#endif /* LR_WPAN_CSMACA_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-error-model.cc ns-3.20/src/lr-wpan/model/lr-wpan-error-model.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-error-model.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-error-model.cc	2014-06-17 10:33:13.899995915 -0700
@@ -0,0 +1,79 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include "lr-wpan-error-model.h"
+#include <ns3/log.h>
+
+#include <cmath>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanErrorModel");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanErrorModel);
+
+TypeId
+LrWpanErrorModel::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanErrorModel")
+    .SetParent<Object> ()
+    .AddConstructor<LrWpanErrorModel> ()
+  ;
+  return tid;
+}
+
+LrWpanErrorModel::LrWpanErrorModel (void)
+{
+  m_binomialCoefficients[0]  = 1;
+  m_binomialCoefficients[1]  = -16;
+  m_binomialCoefficients[2]  = 120;
+  m_binomialCoefficients[3]  = -560;
+  m_binomialCoefficients[4]  = 1820;
+  m_binomialCoefficients[5]  = -4368;
+  m_binomialCoefficients[6]  = 8008;
+  m_binomialCoefficients[7]  = -11440;
+  m_binomialCoefficients[8]  = 12870;
+  m_binomialCoefficients[9]  = -11440;
+  m_binomialCoefficients[10] = 8008;
+  m_binomialCoefficients[11] = -4368;
+  m_binomialCoefficients[12] = 1820;
+  m_binomialCoefficients[13] = -560;
+  m_binomialCoefficients[14] = 120;
+  m_binomialCoefficients[15] = -16;
+  m_binomialCoefficients[16] = 1;
+}
+
+double
+LrWpanErrorModel::GetChunkSuccessRate (double snr, uint32_t nbits) const
+{
+  double ber = 0.0;
+
+  for (uint32_t k = 2; k <= 16; k++)
+    {
+      ber += m_binomialCoefficients[k] * exp (20.0 * snr * (1.0 / k - 1.0));
+    }
+
+  ber = ber * 8.0 / 15.0 / 16.0;
+
+  ber = std::min (ber, 1.0);
+  double retval = pow (1.0 - ber, nbits);
+  return retval;
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-error-model.h ns-3.20/src/lr-wpan/model/lr-wpan-error-model.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-error-model.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-error-model.h	2014-06-17 10:33:13.899995915 -0700
@@ -0,0 +1,66 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#ifndef LR_WPAN_ERROR_MODEL_H
+#define LR_WPAN_ERROR_MODEL_H
+
+#include <ns3/object.h>
+
+namespace ns3 {
+
+/**
+ * \ingroup lr-wpan
+ *
+ * Model the error rate for IEEE 802.15.4 2.4 GHz AWGN channel for OQPSK
+ * the model description can be found in IEEE Std 802.15.4-2006, section
+ * E.4.1.7
+ */
+class LrWpanErrorModel : public Object
+{
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  LrWpanErrorModel (void);
+
+  /**
+   * Return chunk success rate for given SNR.
+   *
+   * \return success rate (i.e. 1 - chunk error rate)
+   * \param snr SNR expressed as a power ratio (i.e. not in dB)
+   * \param nbits number of bits in the chunk
+   */
+  double GetChunkSuccessRate (double snr, uint32_t nbits) const;
+
+private:
+  /**
+   * Array of precalculated binomial coefficients.
+   */
+  double m_binomialCoefficients[17];
+
+};
+
+
+} // namespace ns3
+
+#endif /* LR_WPAN_ERROR_MODEL_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-interference-helper.cc ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-interference-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.cc	2014-06-17 10:33:13.900995908 -0700
@@ -0,0 +1,109 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#include "lr-wpan-interference-helper.h"
+#include <ns3/spectrum-value.h>
+#include <ns3/spectrum-model.h>
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanInterferenceHelper");
+
+namespace ns3 {
+
+LrWpanInterferenceHelper::LrWpanInterferenceHelper (Ptr<const SpectrumModel> spectrumModel)
+  : m_spectrumModel (spectrumModel),
+    m_dirty (false)
+{
+  m_signal = Create<SpectrumValue> (m_spectrumModel);
+}
+
+LrWpanInterferenceHelper::~LrWpanInterferenceHelper (void)
+{
+  m_spectrumModel = 0;
+  m_signal = 0;
+  m_signals.clear ();
+}
+
+bool
+LrWpanInterferenceHelper::AddSignal (Ptr<const SpectrumValue> signal)
+{
+  NS_LOG_FUNCTION (this << signal);
+
+  bool result = false;
+
+  if (signal->GetSpectrumModel () == m_spectrumModel)
+    {
+      result = m_signals.insert (signal).second;
+      if (result && !m_dirty)
+        {
+          *m_signal += *signal;
+        }
+    }
+  return result;
+}
+
+bool
+LrWpanInterferenceHelper::RemoveSignal (Ptr<const SpectrumValue> signal)
+{
+  NS_LOG_FUNCTION (this << signal);
+
+  bool result = false;
+
+  if (signal->GetSpectrumModel () == m_spectrumModel)
+    {
+      result = (m_signals.erase (signal) == 1);
+      if (result)
+        {
+          m_dirty = true;
+        }
+    }
+  return result;
+}
+
+void
+LrWpanInterferenceHelper::ClearSignals (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_signals.clear ();
+  m_dirty = true;
+}
+
+Ptr<SpectrumValue>
+LrWpanInterferenceHelper::GetSignalPsd (void) const
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_dirty)
+    {
+      // Sum up the current interference PSD.
+      std::set<Ptr<const SpectrumValue> >::const_iterator it;
+      m_signal = Create<SpectrumValue> (m_spectrumModel);
+      for (it = m_signals.begin (); it != m_signals.end (); ++it)
+        {
+          *m_signal += *(*it);
+        }
+      m_dirty = false;
+    }
+
+  return m_signal->Copy ();
+}
+
+}
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-interference-helper.h ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-interference-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.h	2014-06-17 10:33:13.900995908 -0700
@@ -0,0 +1,116 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#ifndef LR_WPAN_INTERFERENCE_HELPER_H
+#define LR_WPAN_INTERFERENCE_HELPER_H
+
+#include <ns3/simple-ref-count.h>
+#include <ns3/ptr.h>
+#include <set>
+
+namespace ns3 {
+
+class SpectrumValue;
+class SpectrumModel;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * \brief This class provides helper functions for LrWpan interference handling.
+ */
+class LrWpanInterferenceHelper : public SimpleRefCount<LrWpanInterferenceHelper>
+{
+public:
+  /**
+   * Create a new interference helper for the given SpectrumModel.
+   *
+   * \param spectrumModel the SpectrumModel to be used
+   */
+  LrWpanInterferenceHelper (Ptr<const SpectrumModel> spectrumModel);
+
+  ~LrWpanInterferenceHelper (void);
+
+  /**
+   * Add the given signal to the set of accumulated signals. Never add the same
+   * signal more than once. The SpectrumModels of the signal and the one used
+   * for instantiation of the helper have to be the same.
+   *
+   * \param signal the signal to be added
+   * \return false, if the signal was not added because the SpectrumModel of the
+   * signal does not match the one of the helper, true otherwise.
+   */
+  bool AddSignal (Ptr<const SpectrumValue> signal);
+
+  /**
+   * Remove the given signal to the set of accumulated signals.
+   *
+   * \param signal the signal to be removed
+   * \return false, if the signal was not removed (because it was not added
+   * before), true otherwise.
+   */
+  bool RemoveSignal (Ptr<const SpectrumValue> signal);
+
+  /**
+   * Remove all currently accumulated signals.
+   */
+  void ClearSignals (void);
+
+  /**
+   * Get the sum of all accumulated signals.
+   *
+   * \return the sum of the signals
+   */
+  Ptr<SpectrumValue> GetSignalPsd (void) const;
+
+  /**
+   * Get the SpectrumModel used by the helper.
+   *
+   * \return the helpers SpectrumModel
+   */
+  Ptr<const SpectrumModel> GetSpectrumModel (void) const;
+private:
+  // Disable implicit copy constructors
+  LrWpanInterferenceHelper (LrWpanInterferenceHelper const &);
+  LrWpanInterferenceHelper& operator= (LrWpanInterferenceHelper const &);
+  /**
+   * The helpers SpectrumModel.
+   */
+  Ptr<const SpectrumModel> m_spectrumModel;
+
+  /**
+   * The set of accumulated signals.
+   */
+  std::set<Ptr<const SpectrumValue> > m_signals;
+
+  /**
+   * The precomputed sum of all accumulated signals.
+   */
+  mutable Ptr<SpectrumValue> m_signal;
+
+  /**
+   * Mark m_signal as dirty, whenever a signal is added or removed. m_signal has
+   * to be recomputed before next use.
+   */
+  mutable bool m_dirty;
+};
+
+}
+
+#endif /* LR_WPAN_INTERFERENCE_HELPER_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-lqi-tag.cc ns-3.20/src/lr-wpan/model/lr-wpan-lqi-tag.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-lqi-tag.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-lqi-tag.cc	2014-06-17 10:33:13.900995908 -0700
@@ -0,0 +1,94 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#include "lr-wpan-lqi-tag.h"
+#include <ns3/integer.h>
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanLqiTag);
+
+TypeId
+LrWpanLqiTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanLqiTag")
+    .SetParent<Tag> ()
+    .AddConstructor<LrWpanLqiTag> ()
+    .AddAttribute ("Lqi", "The lqi of the last packet received",
+                   IntegerValue (0),
+                   MakeIntegerAccessor (&LrWpanLqiTag::Get),
+                   MakeIntegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+TypeId
+LrWpanLqiTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+LrWpanLqiTag::LrWpanLqiTag (void)
+  : m_lqi (0)
+{
+}
+
+LrWpanLqiTag::LrWpanLqiTag (uint8_t lqi)
+  : m_lqi (lqi)
+{
+}
+
+uint32_t
+LrWpanLqiTag::GetSerializedSize (void) const
+{
+  return sizeof (uint8_t);
+}
+
+void
+LrWpanLqiTag::Serialize (TagBuffer i) const
+{
+  i.WriteU8 (m_lqi);
+}
+
+void
+LrWpanLqiTag::Deserialize (TagBuffer i)
+{
+  m_lqi = i.ReadU8 ();
+}
+
+void
+LrWpanLqiTag::Print (std::ostream &os) const
+{
+  os << "Lqi = " << m_lqi;
+}
+
+void
+LrWpanLqiTag::Set (uint8_t lqi)
+{
+  m_lqi = lqi;
+}
+
+uint8_t
+LrWpanLqiTag::Get (void) const
+{
+  return m_lqi;
+}
+
+}
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-lqi-tag.h ns-3.20/src/lr-wpan/model/lr-wpan-lqi-tag.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-lqi-tag.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-lqi-tag.h	2014-06-17 10:33:13.901995900 -0700
@@ -0,0 +1,77 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#ifndef LR_WPAN_LQI_TAG_H
+#define LR_WPAN_LQI_TAG_H
+
+#include <ns3/tag.h>
+
+namespace ns3 {
+
+class LrWpanLqiTag : public Tag
+{
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  /**
+   * Create a LrWpanLqiTag with the default LQI 0.
+   */
+  LrWpanLqiTag (void);
+
+  /**
+   * Create a LrWpanLqiTag with the given LQI value.
+   */
+  LrWpanLqiTag (uint8_t lqi);
+
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer i) const;
+  virtual void Deserialize (TagBuffer i);
+  virtual void Print (std::ostream &os) const;
+
+  /**
+   * Set the LQI to the given value.
+   *
+   * \param lqi the value of the LQI to set
+   */
+  void Set (uint8_t lqi);
+
+  /**
+   * Get the LQI value.
+   *
+   * \return the LQI value
+   */
+  uint8_t Get (void) const;
+private:
+  /**
+   * The current LQI value of the tag.
+   */
+  uint8_t m_lqi;
+};
+
+
+}
+#endif /* LR_WPAN_LQI_TAG_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac.cc ns-3.20/src/lr-wpan/model/lr-wpan-mac.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac.cc	2014-06-17 10:33:13.903995884 -0700
@@ -0,0 +1,1015 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ *  Erwan Livolant <erwan.livolant@inria.fr>
+ */
+#include "lr-wpan-mac.h"
+#include "lr-wpan-csmaca.h"
+#include "lr-wpan-mac-header.h"
+#include "lr-wpan-mac-trailer.h"
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <ns3/uinteger.h>
+#include <ns3/node.h>
+#include <ns3/packet.h>
+#include <ns3/random-variable-stream.h>
+#include <ns3/double.h>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanMac");
+
+#undef NS_LOG_APPEND_CONTEXT
+#define NS_LOG_APPEND_CONTEXT                                   \
+  std::clog << "[address " << m_shortAddress << "] ";
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanMac);
+
+const uint32_t LrWpanMac::aMinMPDUOverhead = 9; // Table 85
+
+TypeId
+LrWpanMac::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanMac")
+    .SetParent<Object> ()
+    .AddConstructor<LrWpanMac> ()
+    .AddAttribute ("PanId", "16-bit identifier of the associated PAN",
+                   UintegerValue (),
+                   MakeUintegerAccessor (&LrWpanMac::m_macPanId),
+                   MakeUintegerChecker<uint16_t> ())
+    .AddTraceSource ("MacTxEnqueue",
+                     "Trace source indicating a packet has was enqueued in the transaction queue",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macTxEnqueueTrace))
+    .AddTraceSource ("MacTxDequeue",
+                     "Trace source indicating a packet has was dequeued from the transaction queue",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macTxDequeueTrace))
+    .AddTraceSource ("MacTx",
+                     "Trace source indicating a packet has arrived for transmission by this device",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macTxTrace))
+    .AddTraceSource ("MacTxOk",
+                     "Trace source indicating a packet has been successfully sent",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macTxOkTrace))
+    .AddTraceSource ("MacTxDrop",
+                     "Trace source indicating a packet has been dropped during transmission",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macTxDropTrace))
+    .AddTraceSource ("MacPromiscRx",
+                     "A packet has been received by this device, has been passed up from the physical layer "
+                     "and is being forwarded up the local protocol stack.  This is a promiscuous trace,",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macPromiscRxTrace))
+    .AddTraceSource ("MacRx",
+                     "A packet has been received by this device, has been passed up from the physical layer "
+                     "and is being forwarded up the local protocol stack.  This is a non-promiscuous trace,",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macRxTrace))
+    .AddTraceSource ("MacRxDrop",
+                     "Trace source indicating a packet was received, but dropped before being forwarded up the stack",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macRxDropTrace))
+    .AddTraceSource ("Sniffer",
+                     "Trace source simulating a non-promiscuous packet sniffer attached to the device",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_snifferTrace))
+    .AddTraceSource ("PromiscSniffer",
+                     "Trace source simulating a promiscuous packet sniffer attached to the device",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_promiscSnifferTrace))
+    .AddTraceSource ("MacState",
+                     "The state of LrWpan Mac",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_macStateLogger))
+    .AddTraceSource ("MacSentPkt",
+                     "Trace source reporting some information about the sent packet",
+                     MakeTraceSourceAccessor (&LrWpanMac::m_sentPktTrace))
+  ;
+  return tid;
+}
+
+LrWpanMac::LrWpanMac ()
+{
+
+  // First set the state to a known value, call ChangeMacState to fire trace source.
+  m_lrWpanMacState = MAC_IDLE;
+  ChangeMacState (MAC_IDLE);
+
+  m_macRxOnWhenIdle = true;
+  m_macPanId = 0;
+  m_associationStatus = ASSOCIATED;
+  m_selfExt = Mac64Address::Allocate ();
+  m_macPromiscuousMode = false;
+  m_macMaxFrameRetries = 3;
+  m_retransmission = 0;
+  m_numCsmacaRetry = 0;
+  m_txPkt = 0;
+
+  Ptr<UniformRandomVariable> uniformVar = CreateObject<UniformRandomVariable> ();
+  uniformVar->SetAttribute ("Min", DoubleValue (0.0));
+  uniformVar->SetAttribute ("Max", DoubleValue (255.0));
+  m_macDsn = SequenceNumber8 (uniformVar->GetValue ());
+  m_shortAddress = Mac16Address ("00:00");
+}
+
+LrWpanMac::~LrWpanMac ()
+{
+}
+
+void
+LrWpanMac::DoInitialize ()
+{
+  if (m_macRxOnWhenIdle)
+    {
+      m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+    }
+  else
+    {
+      m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TRX_OFF);
+    }
+
+  Object::DoInitialize ();
+}
+
+void
+LrWpanMac::DoDispose ()
+{
+  if (m_csmaCa != 0)
+    {
+      m_csmaCa->Dispose ();
+      m_csmaCa = 0;
+    }
+  m_txPkt = 0;
+  for (uint32_t i = 0; i < m_txQueue.size (); i++)
+    {
+      m_txQueue[i]->txQPkt = 0;
+      delete m_txQueue[i];
+    }
+  m_txQueue.clear ();
+  m_phy = 0;
+  m_mcpsDataIndicationCallback = MakeNullCallback< void, McpsDataIndicationParams, Ptr<Packet> > ();
+  m_mcpsDataConfirmCallback = MakeNullCallback< void, McpsDataConfirmParams > ();
+
+  Object::DoDispose ();
+}
+
+bool
+LrWpanMac::GetRxOnWhenIdle ()
+{
+  return m_macRxOnWhenIdle;
+}
+
+void
+LrWpanMac::SetRxOnWhenIdle (bool rxOnWhenIdle)
+{
+  NS_LOG_FUNCTION (this << rxOnWhenIdle);
+  m_macRxOnWhenIdle = rxOnWhenIdle;
+
+  if (m_lrWpanMacState == MAC_IDLE)
+    {
+      if (m_macRxOnWhenIdle)
+        {
+          m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+        }
+      else
+        {
+          m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TRX_OFF);
+        }
+    }
+}
+
+void
+LrWpanMac::SetShortAddress (Mac16Address address)
+{
+  //NS_LOG_FUNCTION (this << address);
+  m_shortAddress = address;
+}
+
+void
+LrWpanMac::SetExtendedAddress (Mac64Address address)
+{
+  //NS_LOG_FUNCTION (this << address);
+  m_selfExt = address;
+}
+
+
+Mac16Address
+LrWpanMac::GetShortAddress () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_shortAddress;
+}
+
+Mac64Address
+LrWpanMac::GetExtendedAddress () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_selfExt;
+}
+void
+LrWpanMac::McpsDataRequest (McpsDataRequestParams params, Ptr<Packet> p)
+{
+  NS_LOG_FUNCTION (this << p);
+
+  McpsDataConfirmParams confirmParams;
+  confirmParams.m_msduHandle = params.m_msduHandle;
+
+  // TODO: We need a drop trace for the case that the packet is too large or the request parameters are maleformed.
+  //       The current tx drop trace is not suitable, because packets dropped using this trace carry the mac header
+  //       and footer, while packets being dropped here do not have them.
+
+  LrWpanMacHeader macHdr (LrWpanMacHeader::LRWPAN_MAC_DATA, m_macDsn.GetValue ());
+  m_macDsn++;
+
+  if (p->GetSize () > LrWpanPhy::aMaxPhyPacketSize - aMinMPDUOverhead)
+    {
+      // Note, this is just testing maximum theoretical frame size per the spec
+      // The frame could still be too large once headers are put on
+      // in which case the phy will reject it instead
+      NS_LOG_ERROR (this << " packet too big: " << p->GetSize ());
+      confirmParams.m_status = IEEE_802_15_4_FRAME_TOO_LONG;
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      return;
+    }
+
+  if ((params.m_srcAddrMode == NO_PANID_ADDR)
+      && (params.m_dstAddrMode == NO_PANID_ADDR))
+    {
+      NS_LOG_ERROR (this << " Can not send packet with no Address field" );
+      confirmParams.m_status = IEEE_802_15_4_INVALID_ADDRESS;
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      return;
+    }
+  switch (params.m_srcAddrMode)
+    {
+    case NO_PANID_ADDR:
+      macHdr.SetSrcAddrMode (params.m_srcAddrMode);
+      macHdr.SetNoPanIdComp ();
+      break;
+    case ADDR_MODE_RESERVED:
+      macHdr.SetSrcAddrMode (params.m_srcAddrMode);
+      break;
+    case SHORT_ADDR:
+      macHdr.SetSrcAddrMode (params.m_srcAddrMode);
+      macHdr.SetSrcAddrFields (GetPanId (), GetShortAddress ());
+      break;
+    case EXT_ADDR:
+      macHdr.SetSrcAddrMode (params.m_srcAddrMode);
+      macHdr.SetSrcAddrFields (GetPanId (), GetExtendedAddress ());
+      break;
+    default:
+      NS_LOG_ERROR (this << " Can not send packet with incorrect Source Address mode = " << params.m_srcAddrMode);
+      confirmParams.m_status = IEEE_802_15_4_INVALID_ADDRESS;
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      return;
+    }
+
+  macHdr.SetDstAddrMode (params.m_dstAddrMode);
+  // TODO: Add field for EXT_ADDR destination address (and use it here).
+  macHdr.SetDstAddrFields (params.m_dstPanId, params.m_dstAddr);
+  macHdr.SetSecDisable ();
+  //extract the last 3 bits in TxOptions and map to macHdr
+  int b0 = params.m_txOptions & TX_OPTION_ACK;
+  int b1 = params.m_txOptions & TX_OPTION_GTS;
+  int b2 = params.m_txOptions & TX_OPTION_INDIRECT;
+  if (b0 == TX_OPTION_ACK)
+    {
+      // Set AckReq bit only if the destination is not the broadcast address.
+      if (!(macHdr.GetDstAddrMode () == SHORT_ADDR && macHdr.GetShortDstAddr () == "ff:ff"))
+        {
+          macHdr.SetAckReq ();
+        }
+    }
+  else if (b0 == 0)
+    {
+      macHdr.SetNoAckReq ();
+    }
+  else
+    {
+      confirmParams.m_status = IEEE_802_15_4_INVALID_PARAMETER;
+      NS_LOG_ERROR (this << "Incorrect TxOptions bit 0 not 0/1");
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      return;
+    }
+
+  //if is Slotted CSMA means its beacon enabled
+  if (m_csmaCa->IsSlottedCsmaCa ())
+    {
+      if (b1 == TX_OPTION_GTS)
+        {
+          //TODO:GTS Transmission
+        }
+      else if (b1 == 0)
+        {
+          //TODO:CAP Transmission
+        }
+      else
+        {
+          NS_LOG_ERROR (this << "Incorrect TxOptions bit 1 not 0/1");
+          confirmParams.m_status = IEEE_802_15_4_INVALID_PARAMETER;
+          if (!m_mcpsDataConfirmCallback.IsNull ())
+            {
+              m_mcpsDataConfirmCallback (confirmParams);
+            }
+          return;
+        }
+    }
+  else
+    {
+      if (b1 != 0)
+        {
+          NS_LOG_ERROR (this << "for non-beacon-enables PAN, bit 1 should always be set to 0");
+          confirmParams.m_status = IEEE_802_15_4_INVALID_PARAMETER;
+          if (!m_mcpsDataConfirmCallback.IsNull ())
+            {
+              m_mcpsDataConfirmCallback (confirmParams);
+            }
+          return;
+        }
+    }
+
+  if (b2 == TX_OPTION_INDIRECT)
+    {
+      //TODO :indirect tx
+    }
+  else if (b2 == 0)
+    {
+      //TODO :direct tx
+    }
+  else
+    {
+      NS_LOG_ERROR (this << "Incorrect TxOptions bit 2 not 0/1");
+      confirmParams.m_status = IEEE_802_15_4_INVALID_PARAMETER;
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      return;
+    }
+
+  p->AddHeader (macHdr);
+
+  LrWpanMacTrailer macTrailer;
+  // Calculate FCS if the global attribute ChecksumEnable is set.
+  if (Node::ChecksumEnabled ())
+    {
+      macTrailer.EnableFcs (true);
+      macTrailer.SetFcs (p);
+    }
+  p->AddTrailer (macTrailer);
+
+  m_macTxEnqueueTrace (p);
+
+  TxQueueElement *txQElement = new TxQueueElement;
+  txQElement->txQMsduHandle = params.m_msduHandle;
+  txQElement->txQPkt = p;
+  m_txQueue.push_back (txQElement);
+
+  CheckQueue ();
+}
+
+void
+LrWpanMac::CheckQueue ()
+{
+  NS_LOG_FUNCTION (this);
+
+  // Pull a packet from the queue and start sending, if we are not already sending.
+  if (m_lrWpanMacState == MAC_IDLE && !m_txQueue.empty () && m_txPkt == 0 && !m_setMacState.IsRunning ())
+    {
+      TxQueueElement *txQElement = m_txQueue.front ();
+      m_txPkt = txQElement->txQPkt;
+      m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_CSMA);
+    }
+}
+
+void
+LrWpanMac::SetCsmaCa (Ptr<LrWpanCsmaCa> csmaCa)
+{
+  m_csmaCa = csmaCa;
+}
+
+void
+LrWpanMac::SetPhy (Ptr<LrWpanPhy> phy)
+{
+  m_phy = phy;
+}
+
+Ptr<LrWpanPhy>
+LrWpanMac::GetPhy (void)
+{
+  return m_phy;
+}
+
+void
+LrWpanMac::SetMcpsDataIndicationCallback (McpsDataIndicationCallback c)
+{
+  m_mcpsDataIndicationCallback = c;
+}
+
+void
+LrWpanMac::SetMcpsDataConfirmCallback (McpsDataConfirmCallback c)
+{
+  m_mcpsDataConfirmCallback = c;
+}
+
+void
+LrWpanMac::PdDataIndication (uint32_t psduLength, Ptr<Packet> p, uint8_t lqi)
+{
+  NS_ASSERT (m_lrWpanMacState == MAC_IDLE || m_lrWpanMacState == MAC_ACK_PENDING || m_lrWpanMacState == MAC_CSMA);
+
+  NS_LOG_FUNCTION (this << psduLength << p << lqi);
+
+  bool acceptFrame;
+
+  // from sec 7.5.6.2 Reception and rejection, Std802.15.4-2006
+  // level 1 filtering, test FCS field and reject if frame fails
+  // level 2 filtering if promiscuous mode pass frame to higher layer otherwise perform level 3 filtering
+  // level 3 filtering accept frame
+  // if Frame type and version is not reserved, and
+  // if there is a dstPanId then dstPanId=m_macPanId or broadcastPanI, and
+  // if there is a shortDstAddr then shortDstAddr =shortMacAddr or broadcastAddr, and
+  // if beacon frame then srcPanId = m_macPanId
+  // if only srcAddr field in Data or Command frame,accept frame if srcPanId=m_macPanId
+
+  Ptr<Packet> originalPkt = p->Copy (); // because we will strip headers
+
+  m_promiscSnifferTrace (originalPkt);
+
+  m_macPromiscRxTrace (originalPkt);
+  // XXX no rejection tracing (to macRxDropTrace) being performed below
+
+  LrWpanMacTrailer receivedMacTrailer;
+  p->RemoveTrailer (receivedMacTrailer);
+  if (Node::ChecksumEnabled ())
+    {
+      receivedMacTrailer.EnableFcs (true);
+    }
+
+  // level 1 filtering
+  if (!receivedMacTrailer.CheckFcs (p))
+    {
+      m_macRxDropTrace (originalPkt);
+    }
+  else
+    {
+      LrWpanMacHeader receivedMacHdr;
+      p->RemoveHeader (receivedMacHdr);
+
+      McpsDataIndicationParams params;
+      params.m_dsn = receivedMacHdr.GetSeqNum ();
+      params.m_mpduLinkQuality = lqi;
+      params.m_srcPanId = receivedMacHdr.GetSrcPanId ();
+      params.m_srcAddrMode = receivedMacHdr.GetSrcAddrMode ();
+      // TODO: Add field for EXT_ADDR source address.
+      if (params.m_srcAddrMode == SHORT_ADDR)
+        {
+          params.m_srcAddr = receivedMacHdr.GetShortSrcAddr ();
+        }
+      params.m_dstPanId = receivedMacHdr.GetDstPanId ();
+      params.m_dstAddrMode = receivedMacHdr.GetDstAddrMode ();
+      // TODO: Add field for EXT_ADDR destination address.
+      if (params.m_dstAddrMode == SHORT_ADDR)
+        {
+          params.m_dstAddr = receivedMacHdr.GetShortDstAddr ();
+        }
+
+      NS_LOG_DEBUG ("Packet from " << params.m_srcAddr << " to " << params.m_dstAddr);
+
+      if (m_macPromiscuousMode)
+        {
+          //level 2 filtering
+          if (!m_mcpsDataIndicationCallback.IsNull ())
+            {
+              NS_LOG_DEBUG ("promiscuous mode, forwarding up");
+              m_mcpsDataIndicationCallback (params, p);
+            }
+          else
+            {
+              NS_LOG_ERROR (this << " Data Indication Callback not initialised");
+            }
+        }
+      else
+        {
+          //level 3 frame filtering
+          acceptFrame = (receivedMacHdr.GetType () != LrWpanMacHeader::LRWPAN_MAC_RESERVED);
+
+          if (acceptFrame)
+            {
+              acceptFrame = (receivedMacHdr.GetFrameVer () <= 1);
+            }
+
+          if (acceptFrame
+              && (receivedMacHdr.GetDstAddrMode () > 1))
+            {
+              acceptFrame = receivedMacHdr.GetDstPanId () == m_macPanId
+                || receivedMacHdr.GetDstPanId () == 0xffff;
+            }
+
+          if (acceptFrame
+              && (receivedMacHdr.GetDstAddrMode () == 2))
+            {
+              acceptFrame = receivedMacHdr.GetShortDstAddr () == m_shortAddress
+                || receivedMacHdr.GetShortDstAddr () == Mac16Address ("ff:ff");        // check for broadcast addrs
+            }
+
+          if (acceptFrame
+              && (receivedMacHdr.GetDstAddrMode () == 3))
+            {
+              acceptFrame = (receivedMacHdr.GetExtDstAddr () == m_selfExt);
+            }
+
+          if (acceptFrame
+              && (receivedMacHdr.GetType () == LrWpanMacHeader::LRWPAN_MAC_BEACON))
+            {
+              if (m_macPanId == 0xffff)
+                {
+                  // TODO: Accept only if the frame version field is valid
+                  acceptFrame = true;
+                }
+              else
+                {
+                  acceptFrame = receivedMacHdr.GetSrcPanId () == m_macPanId;
+                }
+            }
+
+          if (acceptFrame
+              && ((receivedMacHdr.GetType () == LrWpanMacHeader::LRWPAN_MAC_DATA)
+                  || (receivedMacHdr.GetType () == LrWpanMacHeader::LRWPAN_MAC_COMMAND))
+              && (receivedMacHdr.GetSrcAddrMode () > 1))
+            {
+              acceptFrame = receivedMacHdr.GetSrcPanId () == m_macPanId; // \todo need to check if PAN coord
+            }
+
+          if (acceptFrame)
+            {
+              m_macRxTrace (originalPkt);
+              // \todo: What should we do if we receive a frame while waiting for an ACK?
+              //        Especially if this frame has the ACK request bit set, should we reply with an ACK, possibly missing the pending ACK?
+
+              // If the received frame is a frame with the ACK request bit set, we immediately send back an ACK.
+              // If we are currently waiting for a pending ACK, we assume the ACK was lost and trigger a retransmission after sending the ACK.
+              if ((receivedMacHdr.IsData () || receivedMacHdr.IsCommand ()) && receivedMacHdr.IsAckReq ()
+                  && !(receivedMacHdr.GetDstAddrMode () == SHORT_ADDR && receivedMacHdr.GetShortDstAddr () == "ff:ff"))
+                {
+                  // If this is a data or mac command frame, which is not a broadcast,
+                  // with ack req set, generate and send an ack frame.
+                  // If there is a CSMA medium access in progress we cancel the medium access
+                  // for sending the ACK frame. A new transmission attempt will be started
+                  // after the ACK was send.
+                  if (m_lrWpanMacState == MAC_ACK_PENDING)
+                    {
+                      m_ackWaitTimeout.Cancel ();
+                      PrepareRetransmission ();
+                    }
+                  else if (m_lrWpanMacState == MAC_CSMA)
+                    {
+                      // \todo: If we receive a packet while doing CSMA/CA, should  we drop the packet because of channel busy,
+                      //        or should we restart CSMA/CA for the packet after sending the ACK?
+                      // Currently we simply restart CSMA/CA after sending the ACK.
+                      m_csmaCa->Cancel ();
+                    }
+                  // Cancel any pending MAC state change, ACKs have higher priority.
+                  m_setMacState.Cancel ();
+                  ChangeMacState (MAC_IDLE);
+                  m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SendAck, this, receivedMacHdr.GetSeqNum ());
+                }
+
+              if (receivedMacHdr.IsData () && !m_mcpsDataIndicationCallback.IsNull ())
+                {
+                  // If it is a data frame, push it up the stack.
+                  NS_LOG_DEBUG ("PdDataIndication():  Packet is for me; forwarding up");
+                  m_mcpsDataIndicationCallback (params, p);
+                }
+              else if (receivedMacHdr.IsAcknowledgment () && m_txPkt && m_lrWpanMacState == MAC_ACK_PENDING)
+                {
+                  LrWpanMacHeader macHdr;
+                  m_txPkt->PeekHeader (macHdr);
+                  if (receivedMacHdr.GetSeqNum () == macHdr.GetSeqNum ())
+                    {
+                      m_macTxOkTrace (m_txPkt);
+                      // If it is an ACK with the expected sequence number, finish the transmission
+                      // and notify the upper layer.
+                      m_ackWaitTimeout.Cancel ();
+                      if (!m_mcpsDataConfirmCallback.IsNull ())
+                        {
+                          TxQueueElement *txQElement = m_txQueue.front ();
+                          McpsDataConfirmParams confirmParams;
+                          confirmParams.m_msduHandle = txQElement->txQMsduHandle;
+                          confirmParams.m_status = IEEE_802_15_4_SUCCESS;
+                          m_mcpsDataConfirmCallback (confirmParams);
+                        }
+                      RemoveFirstTxQElement ();
+                      m_setMacState.Cancel ();
+                      m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_IDLE);
+                    }
+                  else
+                    {
+                      // If it is an ACK with an unexpected sequence number, mark the current transmission as failed and start a retransmit. (cf 7.5.6.4.3)
+                      m_ackWaitTimeout.Cancel ();
+                      if (!PrepareRetransmission ())
+                        {
+                          m_setMacState.Cancel ();
+                          m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_IDLE);
+                        }
+                      else
+                        {
+                          m_setMacState.Cancel ();
+                          m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_CSMA);
+                        }
+                    }
+                }
+            }
+          else
+            {
+              m_macRxDropTrace (originalPkt);
+            }
+        }
+    }
+}
+
+void
+LrWpanMac::SendAck (uint8_t seqno)
+{
+  NS_LOG_FUNCTION (this << static_cast<uint32_t> (seqno));
+
+  NS_ASSERT (m_lrWpanMacState == MAC_IDLE);
+
+  // Generate a corresponding ACK Frame.
+  LrWpanMacHeader macHdr (LrWpanMacHeader::LRWPAN_MAC_ACKNOWLEDGMENT, seqno);
+  LrWpanMacTrailer macTrailer;
+  Ptr<Packet> ackPacket = Create<Packet> (0);
+  ackPacket->AddHeader (macHdr);
+  // Calculate FCS if the global attribute ChecksumEnable is set.
+  if (Node::ChecksumEnabled ())
+    {
+      macTrailer.EnableFcs (true);
+      macTrailer.SetFcs (ackPacket);
+    }
+  ackPacket->AddTrailer (macTrailer);
+
+  // Enqueue the ACK packet for further processing
+  // when the transmitter is activated.
+  m_txPkt = ackPacket;
+
+  // Switch transceiver to TX mode. Proceed sending the Ack on confirm.
+  ChangeMacState (MAC_SENDING);
+  m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TX_ON);
+}
+
+void
+LrWpanMac::RemoveFirstTxQElement ()
+{
+  TxQueueElement *txQElement = m_txQueue.front ();
+  Ptr<const Packet> p = txQElement->txQPkt;
+  m_numCsmacaRetry += m_csmaCa->GetNB () + 1;
+
+  Ptr<Packet> pkt = p->Copy ();
+  LrWpanMacHeader hdr;
+  pkt->RemoveHeader (hdr);
+  if (hdr.GetShortDstAddr () != Mac16Address ("ff:ff"))
+    {
+      m_sentPktTrace (p, m_retransmission + 1, m_numCsmacaRetry);
+    }
+
+  txQElement->txQPkt = 0;
+  delete txQElement;
+  m_txQueue.pop_front ();
+  m_txPkt = 0;
+  m_retransmission = 0;
+  m_numCsmacaRetry = 0;
+  m_macTxDequeueTrace (p);
+}
+
+void
+LrWpanMac::AckWaitTimeout (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  // TODO: If we are a PAN coordinator and this was an indirect transmission,
+  //       we will not initiate a retransmission. Instead we wait for the data
+  //       being extracted after a new data request command.
+  if (!PrepareRetransmission ())
+    {
+      SetLrWpanMacState (MAC_IDLE);
+    }
+  else
+    {
+      SetLrWpanMacState (MAC_CSMA);
+    }
+}
+
+bool
+LrWpanMac::PrepareRetransmission (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_retransmission >= m_macMaxFrameRetries)
+    {
+      // Maximum number of retransmissions has been reached.
+      // remove the copy of the packet that was just sent
+      TxQueueElement *txQElement = m_txQueue.front ();
+      m_macTxDropTrace (txQElement->txQPkt);
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          McpsDataConfirmParams confirmParams;
+          confirmParams.m_msduHandle = txQElement->txQMsduHandle;
+          confirmParams.m_status = IEEE_802_15_4_NO_ACK;
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      RemoveFirstTxQElement ();
+      return false;
+    }
+  else
+    {
+      m_retransmission++;
+      m_numCsmacaRetry += m_csmaCa->GetNB () + 1;
+      // Start next CCA process for this packet.
+      return true;
+    }
+}
+
+void
+LrWpanMac::PdDataConfirm (LrWpanPhyEnumeration status)
+{
+  NS_ASSERT (m_lrWpanMacState == MAC_SENDING);
+
+  NS_LOG_FUNCTION (this << status << m_txQueue.size ());
+
+  LrWpanMacHeader macHdr;
+  m_txPkt->PeekHeader (macHdr);
+  if (status == IEEE_802_15_4_PHY_SUCCESS)
+    {
+      if (!macHdr.IsAcknowledgment ())
+        {
+          // We have just send a regular data packet, check if we have to wait
+          // for an ACK.
+          if (macHdr.IsAckReq ())
+            {
+              // wait for the ack or the next retransmission timeout
+              // start retransmission timer
+              Time waitTime = MicroSeconds (GetMacAckWaitDuration () * 1000 * 1000 / m_phy->GetDataOrSymbolRate (false));
+              NS_ASSERT (m_ackWaitTimeout.IsExpired ());
+              m_ackWaitTimeout = Simulator::Schedule (waitTime, &LrWpanMac::AckWaitTimeout, this);
+              m_setMacState.Cancel ();
+              m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_ACK_PENDING);
+              return;
+            }
+          else
+            {
+              m_macTxOkTrace (m_txPkt);
+              // remove the copy of the packet that was just sent
+              if (!m_mcpsDataConfirmCallback.IsNull ())
+                {
+                  McpsDataConfirmParams confirmParams;
+                  NS_ASSERT_MSG (m_txQueue.size () > 0, "TxQsize = 0");
+                  TxQueueElement *txQElement = m_txQueue.front ();
+                  confirmParams.m_msduHandle = txQElement->txQMsduHandle;
+                  confirmParams.m_status = IEEE_802_15_4_SUCCESS;
+                  m_mcpsDataConfirmCallback (confirmParams);
+                }
+              RemoveFirstTxQElement ();
+            }
+        }
+      else
+        {
+          // We have send an ACK. Clear the packet buffer.
+          m_txPkt = 0;
+        }
+    }
+  else if (status == IEEE_802_15_4_PHY_UNSPECIFIED)
+    {
+
+      if (!macHdr.IsAcknowledgment ())
+        {
+          NS_ASSERT_MSG (m_txQueue.size () > 0, "TxQsize = 0");
+          TxQueueElement *txQElement = m_txQueue.front ();
+          m_macTxDropTrace (txQElement->txQPkt);
+          if (!m_mcpsDataConfirmCallback.IsNull ())
+            {
+              McpsDataConfirmParams confirmParams;
+              confirmParams.m_msduHandle = txQElement->txQMsduHandle;
+              confirmParams.m_status = IEEE_802_15_4_FRAME_TOO_LONG;
+              m_mcpsDataConfirmCallback (confirmParams);
+            }
+          RemoveFirstTxQElement ();
+        }
+      else
+        {
+          NS_LOG_ERROR ("Unable to send ACK");
+        }
+    }
+  else
+    {
+      // Something went really wrong. The PHY is not in the correct state for
+      // data transmission.
+      NS_FATAL_ERROR ("Transmission attempt failed with PHY status " << status);
+    }
+
+  m_setMacState.Cancel ();
+  m_setMacState = Simulator::ScheduleNow (&LrWpanMac::SetLrWpanMacState, this, MAC_IDLE);
+}
+
+void
+LrWpanMac::PlmeCcaConfirm (LrWpanPhyEnumeration status)
+{
+  NS_LOG_FUNCTION (this << status);
+  // Direct this call through the csmaCa object
+  m_csmaCa->PlmeCcaConfirm (status);
+}
+
+void
+LrWpanMac::PlmeEdConfirm (LrWpanPhyEnumeration status, uint8_t energyLevel)
+{
+  NS_LOG_FUNCTION (this << status << energyLevel);
+
+}
+
+void
+LrWpanMac::PlmeGetAttributeConfirm (LrWpanPhyEnumeration status,
+                                    LrWpanPibAttributeIdentifier id,
+                                    LrWpanPhyPibAttributes* attribute)
+{
+  NS_LOG_FUNCTION (this << status << id << attribute);
+}
+
+void
+LrWpanMac::PlmeSetTRXStateConfirm (LrWpanPhyEnumeration status)
+{
+  NS_LOG_FUNCTION (this << status);
+
+  if (m_lrWpanMacState == MAC_SENDING && (status == IEEE_802_15_4_PHY_TX_ON || status == IEEE_802_15_4_PHY_SUCCESS))
+    {
+      NS_ASSERT (m_txPkt);
+
+      // Start sending if we are in state SENDING and the PHY transmitter was enabled.
+      m_promiscSnifferTrace (m_txPkt);
+      m_snifferTrace (m_txPkt);
+      m_macTxTrace (m_txPkt);
+      m_phy->PdDataRequest (m_txPkt->GetSize (), m_txPkt);
+    }
+  else if (m_lrWpanMacState == MAC_CSMA && (status == IEEE_802_15_4_PHY_RX_ON || status == IEEE_802_15_4_PHY_SUCCESS))
+    {
+      // Start the CSMA algorithm as soon as the receiver is enabled.
+      m_csmaCa->Start ();
+    }
+  else if (m_lrWpanMacState == MAC_IDLE)
+    {
+      NS_ASSERT (status == IEEE_802_15_4_PHY_RX_ON || status == IEEE_802_15_4_PHY_SUCCESS || status == IEEE_802_15_4_PHY_TRX_OFF);
+      // Do nothing special when going idle.
+    }
+  else if (m_lrWpanMacState == MAC_ACK_PENDING)
+    {
+      NS_ASSERT (status == IEEE_802_15_4_PHY_RX_ON || status == IEEE_802_15_4_PHY_SUCCESS);
+    }
+  else
+    {
+      // TODO: What to do when we receive an error?
+      // If we want to transmit a packet, but switching the transceiver on results
+      // in an error, we have to recover somehow (and start sending again).
+      NS_FATAL_ERROR ("Error changing transceiver state");
+    }
+}
+
+void
+LrWpanMac::PlmeSetAttributeConfirm (LrWpanPhyEnumeration status,
+                                    LrWpanPibAttributeIdentifier id)
+{
+  NS_LOG_FUNCTION (this << status << id);
+}
+
+void
+LrWpanMac::SetLrWpanMacState (LrWpanMacState macState)
+{
+  NS_LOG_FUNCTION (this << "mac state = " << macState);
+
+  McpsDataConfirmParams confirmParams;
+
+  if (macState == MAC_IDLE)
+    {
+      ChangeMacState (MAC_IDLE);
+
+      if (m_macRxOnWhenIdle)
+        {
+          m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+        }
+      else
+        {
+          m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TRX_OFF);
+        }
+
+      CheckQueue ();
+    }
+  else if (macState == MAC_ACK_PENDING)
+    {
+      ChangeMacState (MAC_ACK_PENDING);
+      m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+    }
+  else if (macState == MAC_CSMA)
+    {
+      NS_ASSERT (m_lrWpanMacState == MAC_IDLE || m_lrWpanMacState == MAC_ACK_PENDING);
+
+      ChangeMacState (MAC_CSMA);
+      m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_RX_ON);
+    }
+  else if (m_lrWpanMacState == MAC_CSMA && macState == CHANNEL_IDLE)
+    {
+      // Channel is idle, set transmitter to TX_ON
+      ChangeMacState (MAC_SENDING);
+      m_phy->PlmeSetTRXStateRequest (IEEE_802_15_4_PHY_TX_ON);
+    }
+  else if (m_lrWpanMacState == MAC_CSMA && macState == CHANNEL_ACCESS_FAILURE)
+    {
+      NS_ASSERT (m_txPkt);
+
+      // cannot find a clear channel, drop the current packet.
+      NS_LOG_DEBUG ( this << " cannot find clear channel");
+      confirmParams.m_msduHandle = m_txQueue.front ()->txQMsduHandle;
+      confirmParams.m_status = IEEE_802_15_4_CHANNEL_ACCESS_FAILURE;
+      m_macTxDropTrace (m_txPkt);
+      if (!m_mcpsDataConfirmCallback.IsNull ())
+        {
+          m_mcpsDataConfirmCallback (confirmParams);
+        }
+      // remove the copy of the packet that was just sent
+      RemoveFirstTxQElement ();
+
+      ChangeMacState (MAC_IDLE);
+    }
+}
+
+LrWpanAssociationStatus
+LrWpanMac::GetAssociationStatus (void) const
+{
+  return m_associationStatus;
+}
+
+void
+LrWpanMac::SetAssociationStatus (LrWpanAssociationStatus status)
+{
+  m_associationStatus = status;
+}
+
+uint16_t
+LrWpanMac::GetPanId (void) const
+{
+  return m_macPanId;
+}
+
+void
+LrWpanMac::SetPanId (uint16_t panId)
+{
+  m_macPanId = panId;
+}
+
+void
+LrWpanMac::ChangeMacState (LrWpanMacState newState)
+{
+  NS_LOG_LOGIC (this << " change lrwpan mac state from "
+                     << m_lrWpanMacState << " to "
+                     << newState);
+  m_macStateLogger (m_lrWpanMacState, newState);
+  m_lrWpanMacState = newState;
+}
+
+uint64_t
+LrWpanMac::GetMacAckWaitDuration (void) const
+{
+  return m_csmaCa->GetUnitBackoffPeriod () + m_phy->aTurnaroundTime + m_phy->GetPhySHRDuration ()
+         + ceil (6 * m_phy->GetPhySymbolsPerOctet ());
+}
+
+uint8_t
+LrWpanMac::GetMacMaxFrameRetries (void) const
+{
+  return m_macMaxFrameRetries;
+}
+
+void
+LrWpanMac::SetMacMaxFrameRetries (uint8_t retries)
+{
+  m_macMaxFrameRetries = retries;
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac.h ns-3.20/src/lr-wpan/model/lr-wpan-mac.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac.h	2014-06-17 10:33:13.904995877 -0700
@@ -0,0 +1,743 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#ifndef LR_WPAN_MAC_H
+#define LR_WPAN_MAC_H
+
+#include <ns3/object.h>
+#include <ns3/traced-callback.h>
+#include <ns3/mac16-address.h>
+#include <ns3/mac64-address.h>
+#include <ns3/sequence-number.h>
+#include <ns3/lr-wpan-phy.h>
+#include <ns3/event-id.h>
+#include <deque>
+
+
+namespace ns3 {
+
+class Packet;
+class LrWpanCsmaCa;
+
+/**
+ * \defgroup lr-wpan LR-WPAN models
+ *
+ * This section documents the API of the IEEE 802.15.4-related models.  For a generic functional description, please refer to the ns-3 manual.
+ */
+typedef enum
+{
+  TX_OPTION_NONE = 0,
+  TX_OPTION_ACK = 1,
+  TX_OPTION_GTS = 2,
+  TX_OPTION_INDIRECT = 4
+} LrWpanTxOption;
+
+typedef enum
+{
+  MAC_IDLE,
+  MAC_CSMA,
+  MAC_SENDING,
+  MAC_ACK_PENDING,
+  CHANNEL_ACCESS_FAILURE,
+  CHANNEL_IDLE,
+  SET_PHY_TX_ON
+} LrWpanMacState;
+
+/**
+ * table 80 of 802.15.4
+ */
+typedef enum
+{
+  NO_PANID_ADDR = 0,
+  ADDR_MODE_RESERVED = 1,
+  SHORT_ADDR = 2,
+  EXT_ADDR = 3
+} LrWpanAddressMode;
+
+/**
+ * table 83 of 802.15.4
+ */
+typedef enum
+{
+  ASSOCIATED = 0,
+  PAN_AT_CAPACITY = 1,
+  PAN_ACCESS_DENIED = 2,
+  ASSOCIATED_WITHOUT_ADDRESS = 0xfe,
+  DISASSOCIATED = 0xff
+} LrWpanAssociationStatus;
+
+/*
+ * Table 42 of 802.15.4-2006
+ */
+typedef enum
+{
+  IEEE_802_15_4_SUCCESS                = 0,
+  IEEE_802_15_4_TRANSACTION_OVERFLOW   = 1,
+  IEEE_802_15_4_TRANSACTION_EXPIRED    = 2,
+  IEEE_802_15_4_CHANNEL_ACCESS_FAILURE = 3,
+  IEEE_802_15_4_INVALID_ADDRESS        = 4,
+  IEEE_802_15_4_INVALID_GTS            = 5,
+  IEEE_802_15_4_NO_ACK                 = 6,
+  IEEE_802_15_4_COUNTER_ERROR          = 7,
+  IEEE_802_15_4_FRAME_TOO_LONG         = 8,
+  IEEE_802_15_4_UNAVAILABLE_KEY        = 9,
+  IEEE_802_15_4_UNSUPPORTED_SECURITY   = 10,
+  IEEE_802_15_4_INVALID_PARAMETER      = 11
+} LrWpanMcpsDataConfirmStatus;
+
+struct McpsDataRequestParams
+{
+  McpsDataRequestParams ()
+    : m_srcAddrMode (SHORT_ADDR),
+      m_dstAddrMode (SHORT_ADDR),
+      m_dstPanId (0),
+      m_dstAddr (),
+      m_msduHandle (0),
+      m_txOptions (0)
+  {
+  }
+  LrWpanAddressMode m_srcAddrMode;
+  LrWpanAddressMode m_dstAddrMode;
+  uint16_t m_dstPanId;
+  Mac16Address m_dstAddr;
+  uint8_t m_msduHandle;
+  uint8_t m_txOptions;  // bitmap
+};
+
+struct McpsDataConfirmParams
+{
+  uint8_t m_msduHandle;
+  LrWpanMcpsDataConfirmStatus m_status;
+};
+
+struct McpsDataIndicationParams
+{
+  uint8_t m_srcAddrMode;
+  uint16_t m_srcPanId;
+  Mac16Address m_srcAddr;
+  uint8_t m_dstAddrMode;
+  uint16_t m_dstPanId;
+  Mac16Address m_dstAddr;
+  uint8_t m_mpduLinkQuality;
+  uint8_t m_dsn;
+};
+
+// This callback is called after a McpsDataRequest has been called from
+// the higher layer.  It returns a status of the outcome of the
+// transmission request
+typedef Callback<void, McpsDataConfirmParams> McpsDataConfirmCallback;
+
+// This callback is called after a Mcps has successfully received a
+// frame and wants to deliver it to the higher layer.
+//
+// XXX for now, we do not deliver all of the parameters in section
+// 7.1.1.3.1 but just send up the packet.
+typedef Callback<void, McpsDataIndicationParams, Ptr<Packet> > McpsDataIndicationCallback;
+
+
+/**
+ * \ingroup lr-wpan
+ *
+ * Class that implements the LR-WPAN Mac state machine
+ */
+class LrWpanMac : public Object
+{
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * The minimum number of octets added by the MAC sublayer to the PSDU.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85
+   */
+  static const uint32_t aMinMPDUOverhead;
+
+  /**
+   * Default constructor.
+   */
+  LrWpanMac (void);
+  virtual ~LrWpanMac (void);
+
+  /**
+   * Check if the receiver will be enabled when the MAC is idle.
+   *
+   * \return true, if the receiver is enabled during idle periods, false otherwise
+   */
+  bool GetRxOnWhenIdle (void);
+
+  /**
+   * Set if the receiver should be enabled when the MAC is idle.
+   *
+   * \param rxOnWhenIdle set to true to enable the receiver during idle periods
+   */
+  void SetRxOnWhenIdle (bool rxOnWhenIdle);
+
+  // XXX these setters will become obsolete if we use the attribute system
+  /**
+   * Set the short address of this MAC.
+   *
+   * \param address the new address
+   */
+  void SetShortAddress (Mac16Address address);
+
+  /**
+   * Get the short address of this MAC.
+   *
+   * \return the short address
+   */
+  Mac16Address GetShortAddress (void) const;
+
+  /**
+   * Set the extended address of this MAC.
+   *
+   * \param address the new address
+   */
+  void SetExtendedAddress (Mac64Address address);
+
+  /**
+   * Get the extended address of this MAC.
+   *
+   * \return the extended address
+   */
+  Mac64Address GetExtendedAddress (void) const;
+
+  /**
+   * Set the PAN id used by this MAC.
+   *
+   * \param panId the new PAN id.
+   */
+  void SetPanId (uint16_t panId);
+
+  /**
+   * Get the PAN id used by this MAC.
+   *
+   * \return the PAN id.
+   */
+  uint16_t GetPanId (void) const;
+
+  /**
+   *  IEEE 802.15.4-2006, section 7.1.1.1
+   *  MCPS-DATA.request
+   *  Request to transfer a MSDU.
+   *
+   *  \param params the request parameters
+   *  \param p the packet to be transmitted
+   */
+  void McpsDataRequest (McpsDataRequestParams params, Ptr<Packet> p);
+
+  /**
+   * Set the CSMA/CA implementation to be used by the MAC.
+   *
+   * \param csmaCa the CSMA/CA implementation
+   */
+  void SetCsmaCa (Ptr<LrWpanCsmaCa> csmaCa);
+
+  /**
+   * Set the underlying PHY for the MAC.
+   *
+   * \param phy the PHY
+   */
+  void SetPhy (Ptr<LrWpanPhy> phy);
+
+  /**
+   * Get the underlying PHY of the MAC.
+   *
+   * \return the PHY
+   */
+  Ptr<LrWpanPhy> GetPhy (void);
+
+  /**
+   * Set the callback for the indication of an incoming data packet.
+   * The callback implements MCPS-DATA.indication SAP of IEEE 802.15.4-2006,
+   * section 7.1.1.3.
+   *
+   * \param c the callback
+   */
+  void SetMcpsDataIndicationCallback (McpsDataIndicationCallback c);
+
+  /**
+   * Set the callback for the confirmation of a data transmission request.
+   * The callback implements MCPS-DATA.confirm SAP of IEEE 802.15.4-2006,
+   * section 7.1.1.2.
+   *
+   * \param c the callback
+   */
+  void SetMcpsDataConfirmCallback (McpsDataConfirmCallback c);
+
+  // interfaces between MAC and PHY
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.1.3
+   *  PD-DATA.indication
+   *  Indicates the transfer of an MPDU from PHY to MAC (receiving)
+   *  @param psduLength number of bytes in the PSDU
+   *  @param p the packet to be transmitted
+   *  @param lqi Link quality (LQI) value measured during reception of the PPDU
+   */
+  void PdDataIndication (uint32_t psduLength, Ptr<Packet> p, uint8_t lqi);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.1.2
+   *  Confirm the end of transmission of an MPDU to MAC
+   *  @param status to report to MAC
+   *  PHY PD-DATA.confirm status
+   */
+  void PdDataConfirm (LrWpanPhyEnumeration status);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.2
+   *  PLME-CCA.confirm status
+   *  @param status TRX_OFF, BUSY or IDLE
+   */
+  void PlmeCcaConfirm (LrWpanPhyEnumeration status);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.4
+   *  PLME-ED.confirm status and energy level
+   *  @param status SUCCESS, TRX_OFF or TX_ON
+   *  @param energyLevel 0x00-0xff ED level for the channel
+   */
+  void PlmeEdConfirm (LrWpanPhyEnumeration status, uint8_t energyLevel);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.6
+   *  PLME-GET.confirm
+   *  Get attributes per definition from Table 23 in section 6.4.2
+   *  @param status SUCCESS or UNSUPPORTED_ATTRIBUTE
+   *  @param id the attributed identifier
+   *  @param attribute the attribute value
+   */
+  void PlmeGetAttributeConfirm (LrWpanPhyEnumeration status,
+                                LrWpanPibAttributeIdentifier id,
+                                LrWpanPhyPibAttributes* attribute);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.8
+   *  PLME-SET-TRX-STATE.confirm
+   *  Set PHY state
+   *  @param status in RX_ON,TRX_OFF,FORCE_TRX_OFF,TX_ON
+   */
+  void PlmeSetTRXStateConfirm (LrWpanPhyEnumeration status);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.10
+   *  PLME-SET.confirm
+   *  Set attributes per definition from Table 23 in section 6.4.2
+   *  @param status SUCCESS, UNSUPPORTED_ATTRIBUTE, INVALID_PARAMETER, or READ_ONLY
+   *  @param id the attributed identifier
+   */
+  void PlmeSetAttributeConfirm (LrWpanPhyEnumeration status,
+                                LrWpanPibAttributeIdentifier id);
+
+  /**
+   * CSMA-CA algorithm calls back the MAC after executing channel assessment.
+   *
+   * \param macState indicate BUSY oder IDLE channel condition
+   */
+  void SetLrWpanMacState (LrWpanMacState macState);
+
+  /**
+   * Get the current association status.
+   *
+   * \return current association status
+   */
+  LrWpanAssociationStatus GetAssociationStatus (void) const;
+
+  /**
+   * Set the current association status.
+   *
+   * \param status new association status
+   */
+  void SetAssociationStatus (LrWpanAssociationStatus status);
+
+  //MAC sublayer constants
+  /**
+   * Length of a superframe slot in symbols. Defaults to 60 symbols in each
+   * superframe slot.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85.
+   */
+  uint64_t m_aBaseSlotDuration;
+
+  /**
+   * Number of a superframe slots per superframe. Defaults to 16.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85.
+   */
+  uint64_t m_aNumSuperframeSlots;
+
+  /**
+   * Length of a superframe in symbols. Defaults to
+   * aBaseSlotDuration * aNumSuperframeSlots in symbols.
+   * See IEEE 802.15.4-2006, section 7.4.1, Table 85.
+   */
+  uint64_t m_aBaseSuperframeDuration;
+
+  //MAC PIB attributes
+  /**
+   * The time that the device transmitted its last beacon frame, in symbol
+   * periods. Only 24 bits used.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint64_t m_macBeaconTxTime;
+
+  /**
+   * Symbol boundary is same as m_macBeaconTxTime.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint64_t m_macSyncSymbolOffset;
+
+  /**
+   * Specification of how often the coordinator transmits its beacon.
+   * 0 - 15 with 15 means no beacons are being sent.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint64_t m_macBeaconOrder;
+
+  /**
+   * The length of the active portion of the outgoing superframe, including the
+   * beacon frame.
+   * 0 - 15 with 15 means the superframe will not be active after the beacon.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint64_t m_macSuperframeOrder;
+
+  /**
+   * Indicates if MAC sublayer is in receive all mode. True mean accept all
+   * frames from PHY.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  bool m_macPromiscuousMode;
+
+  /**
+   * 16 bits id of PAN on which this device is operating. 0xffff means not
+   * asscoiated.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint16_t m_macPanId;
+
+  /**
+   * Sequence number added to transmitted data or MAC command frame, 00-ff.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  SequenceNumber8 m_macDsn;
+
+  /**
+   * The maximum number of retries allowed after a transmission failure.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  uint8_t m_macMaxFrameRetries;
+
+  /**
+   * Indication of whether the MAC sublayer is to enable its receiver during
+   * idle periods.
+   * See IEEE 802.15.4-2006, section 7.4.2, Table 86.
+   */
+  bool m_macRxOnWhenIdle;
+
+  /**
+   * Get the macAckWaitDuration attribute value.
+   *
+   * \return the maximum number symbols to wait for an acknowledgment frame
+   */
+  uint64_t GetMacAckWaitDuration (void) const;
+
+  /**
+   * Get the macMaxFrameRetries attribute value.
+   *
+   * \return the maximum number of retries
+   */
+  uint8_t GetMacMaxFrameRetries (void) const;
+
+  /**
+   * Set the macMaxFrameRetries attribute value.
+   *
+   * \param retries the maximum number of retries
+   */
+  void SetMacMaxFrameRetries (uint8_t retries);
+
+protected:
+  // Inherited from Object.
+  virtual void DoInitialize (void);
+  virtual void DoDispose (void);
+
+private:
+  /**
+   * Helper structure for managing transmission queue elements.
+   */
+  struct TxQueueElement
+  {
+    uint8_t txQMsduHandle;
+    Ptr<Packet> txQPkt;
+  };
+
+  /**
+   * Send an acknowledgment packet for the given sequence number.
+   *
+   * \param seqno the sequence number for the ACK
+   */
+  void SendAck (uint8_t seqno);
+
+  /**
+   * Remove the tip of the transmission queue, including clean up related to the
+   * last packet transmission.
+   */
+  void RemoveFirstTxQElement ();
+
+  /**
+   * Change the current MAC state to the given new state.
+   *
+   * \param newState the new state
+   */
+  void ChangeMacState (LrWpanMacState newState);
+
+  /**
+   * Handle an ACK timeout with a packet retransmission, if there are
+   * retransmission left, or a packet drop.
+   */
+  void AckWaitTimeout (void);
+
+  /**
+   * Check for remaining retransmissions for the packet currently being sent.
+   * Drop the packet, if there are no retransmissions left.
+   *
+   * \return true, if the packet should be retransmitted, false otherwise.
+   */
+  bool PrepareRetransmission (void);
+
+  /**
+   * Check the transmission queue. If there are packets in the transmission
+   * queue and the MAC is idle, pick the first one and initiate a packet
+   * transmission.
+   */
+  void CheckQueue (void);
+
+  /**
+   * The trace source fired when packets are considered as successfully sent
+   * or the transmission has been given up.
+   * Only non-broadcast packets are traced.
+   *
+   * The data should represent:
+   * packet, number of retries, total number of csma backoffs
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet>, uint8_t, uint8_t > m_sentPktTrace;
+
+  /**
+   * The trace source fired when packets come into the "top" of the device
+   * at the L3/L2 transition, when being queued for transmission.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macTxEnqueueTrace;
+
+  /**
+   * The trace source fired when packets are dequeued from the
+   * L3/l2 transmission queue.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macTxDequeueTrace;
+
+  /**
+   * The trace source fired when packets are being sent down to L1.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macTxTrace;
+
+  /**
+   * The trace source fired when packets where successfully transmitted, that is
+   * an acknowledgment was received, if requested, or the packet was
+   * successfully sent by L1, if no ACK was requested.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macTxOkTrace;
+
+  /**
+   * The trace source fired when packets are dropped due to missing ACKs or
+   * because of transmission failures in L1.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macTxDropTrace;
+
+  /**
+   * The trace source fired for packets successfully received by the device
+   * immediately before being forwarded up to higher layers (at the L2/L3
+   * transition).  This is a promiscuous trace.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macPromiscRxTrace;
+
+  /**
+   * The trace source fired for packets successfully received by the device
+   * immediately before being forwarded up to higher layers (at the L2/L3
+   * transition).  This is a non-promiscuous trace.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macRxTrace;
+
+  /**
+   * The trace source fired for packets successfully received by the device
+   * but dropped before being forwarded up to higher layers (at the L2/L3
+   * transition).
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_macRxDropTrace;
+
+  /**
+   * A trace source that emulates a non-promiscuous protocol sniffer connected
+   * to the device.  Unlike your average everyday sniffer, this trace source
+   * will not fire on PACKET_OTHERHOST events.
+   *
+   * On the transmit size, this trace hook will fire after a packet is dequeued
+   * from the device queue for transmission.  In Linux, for example, this would
+   * correspond to the point just before a device hard_start_xmit where
+   * dev_queue_xmit_nit is called to dispatch the packet to the PF_PACKET
+   * ETH_P_ALL handlers.
+   *
+   * On the receive side, this trace hook will fire when a packet is received,
+   * just before the receive callback is executed.  In Linux, for example,
+   * this would correspond to the point at which the packet is dispatched to
+   * packet sniffers in netif_receive_skb.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_snifferTrace;
+
+  /**
+   * A trace source that emulates a promiscuous mode protocol sniffer connected
+   * to the device.  This trace source fire on packets destined for any host
+   * just like your average everyday packet sniffer.
+   *
+   * On the transmit size, this trace hook will fire after a packet is dequeued
+   * from the device queue for transmission.  In Linux, for example, this would
+   * correspond to the point just before a device hard_start_xmit where
+   * dev_queue_xmit_nit is called to dispatch the packet to the PF_PACKET
+   * ETH_P_ALL handlers.
+   *
+   * On the receive side, this trace hook will fire when a packet is received,
+   * just before the receive callback is executed.  In Linux, for example,
+   * this would correspond to the point at which the packet is dispatched to
+   * packet sniffers in netif_receive_skb.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_promiscSnifferTrace;
+
+  /*
+   * A trace source that fires when the LrWpanMac changes states.
+   * Parameters are the old mac state and the new mac state.
+   */
+  TracedCallback<LrWpanMacState, LrWpanMacState> m_macStateLogger;
+
+  /**
+   * The PHY associated with this MAC.
+   */
+  Ptr<LrWpanPhy> m_phy;
+
+  /**
+   * The CSMA/CA implementation used by this MAC.
+   */
+  Ptr<LrWpanCsmaCa> m_csmaCa;
+
+  /**
+   * This callback is used to notify incoming packets to the upper layers.
+   * See IEEE 802.15.4-2006, section 7.1.1.3.
+   */
+  McpsDataIndicationCallback m_mcpsDataIndicationCallback;
+
+  /**
+   * This callback is used to report data transmission request status to the
+   * upper layers.
+   * See IEEE 802.15.4-2006, section 7.1.1.2.
+   */
+  McpsDataConfirmCallback m_mcpsDataConfirmCallback;
+
+  /**
+   * The current state of the MAC layer.
+   */
+  LrWpanMacState m_lrWpanMacState;
+
+  /**
+   * The current association status of the MAC layer.
+   */
+  LrWpanAssociationStatus m_associationStatus;
+
+  /**
+   * The packet which is currently being sent by the MAC layer.
+   */
+  Ptr<Packet> m_txPkt;  // XXX need packet buffer instead of single packet
+
+  /**
+   * The short address used by this MAC. Currently we do not have complete
+   * extended address support in the MAC, nor do we have the association
+   * primitives, so this address has to be configured manually.
+   */
+  Mac16Address m_shortAddress;
+
+  /**
+   * The extended address used by this MAC. Extended addresses are currently not
+   * really supported.
+   */
+  Mac64Address m_selfExt;
+
+  /**
+   * The transmit queue used by the MAC.
+   */
+  std::deque<TxQueueElement*> m_txQueue;
+
+  /**
+   * The number of already used retransmission for the currently transmitted
+   * packet.
+   */
+  uint8_t m_retransmission;
+
+  /**
+   * The number of CSMA/CA retries used for sending the current packet.
+   */
+  uint8_t m_numCsmacaRetry;
+
+  /**
+   * Scheduler event for the ACK timeout of the currently transmitted data
+   * packet.
+   */
+  EventId m_ackWaitTimeout;
+
+  /**
+   * Scheduler event for a deferred MAC state change.
+   */
+  EventId m_setMacState;
+};
+
+
+} // namespace ns3
+
+#endif /* LR_WPAN_MAC_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac-header.cc ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac-header.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.cc	2014-06-17 10:33:13.901995900 -0700
@@ -0,0 +1,831 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: kwong yin <kwong-sang.yin@boeing.com>
+ */
+#include "lr-wpan-mac-header.h"
+#include <ns3/address-utils.h>
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanMacHeader);
+
+// TODO: Test Compressed PAN Id, Security Enabled, different size Key
+
+LrWpanMacHeader::LrWpanMacHeader ()
+{
+  SetType (LRWPAN_MAC_DATA);     // Assume Data frame
+  SetSecDisable ();              // Assume there is No Aux Sec but
+  SetNoFrmPend ();               // No Frame Pending
+  SetNoAckReq ();                // No Ack Frame will be expected from recepient
+  SetNoPanIdComp ();             // No PAN Id Compression since no addresses
+  SetFrmCtrlRes (0);             // Initialize the 3 reserved bits to 0
+  SetDstAddrMode (NOADDR);       // Assume there will be no src and dst address
+  SetSrcAddrMode (NOADDR);
+  SetFrameVer (1);               //Indicates an IEEE 802.15.4 frame
+}
+
+
+LrWpanMacHeader::LrWpanMacHeader (enum LrWpanMacType wpanMacType,
+                                  uint8_t seqNum)
+{
+  SetType (wpanMacType);
+  SetSeqNum (seqNum);
+  SetSecDisable ();              // Assume there is No Aux Sec but
+  SetNoFrmPend ();               // No Frame Pending
+  SetNoAckReq ();                // No Ack Frame will be expected from recepient
+  SetNoPanIdComp ();             // No PAN Id Compression since no addresses
+  SetFrmCtrlRes (0);             // Initialize the 3 reserved bits to 0
+  SetDstAddrMode (NOADDR);       // Assume there will be no src and dst address
+  SetSrcAddrMode (NOADDR);
+  SetFrameVer (1);               //Indicates an IEEE 802.15.4 frame
+}
+
+
+LrWpanMacHeader::~LrWpanMacHeader ()
+{
+}
+
+
+enum LrWpanMacHeader::LrWpanMacType
+LrWpanMacHeader::GetType (void) const
+{
+  switch (m_fctrlFrmType)
+    {
+    case 0:
+      return LRWPAN_MAC_BEACON;
+      break;
+    case 1:
+      return LRWPAN_MAC_DATA;
+      break;
+    case 2:
+      return LRWPAN_MAC_ACKNOWLEDGMENT;
+      break;
+    case 3:
+      return LRWPAN_MAC_COMMAND;
+      break;
+    default:
+      return LRWPAN_MAC_RESERVED;
+    }
+}
+
+
+
+uint16_t
+LrWpanMacHeader::GetFrameControl (void) const
+{
+  uint16_t val = 0;
+
+  val = m_fctrlFrmType & (0x07);                 // Bit 0-2
+  val |= (m_fctrlSecU << 3) & (0x01 << 3);         // Bit 3
+  val |= (m_fctrlFrmPending << 4) & (0x01 << 4);   // Bit 4
+  val |= (m_fctrlAckReq << 5) & (0x01 << 5);        // Bit 5
+  val |= (m_fctrlPanIdComp << 6) & (0x01 << 6);    // Bit 6
+  val |= (m_fctrlReserved << 7) & (0x07 << 7);     // Bit 7-9
+  val |= (m_fctrlDstAddrMode << 10) & (0x03 << 10); // Bit 10-11
+  val |= (m_fctrlFrmVer << 12) & (0x03 << 12);     // Bit 12-13
+  val |= (m_fctrlSrcAddrMode << 14) & (0x03 << 14); // Bit 14-15
+  return val;
+
+}
+
+bool
+LrWpanMacHeader::IsSecEnable (void) const
+{
+  return (m_fctrlSecU == 1);
+}
+
+bool
+LrWpanMacHeader::IsSecDisable (void) const
+{
+  return (m_fctrlSecU == 0);
+}
+
+bool
+LrWpanMacHeader::IsFrmPend (void) const
+{
+  return (m_fctrlFrmPending == 1);
+}
+
+bool
+LrWpanMacHeader::IsNoFrmPend (void) const
+{
+  return (m_fctrlFrmPending == 0);
+}
+
+bool
+LrWpanMacHeader::IsAckReq (void) const
+{
+  return (m_fctrlAckReq == 1);
+}
+
+bool
+LrWpanMacHeader::IsNoAckReq (void) const
+{
+  return (m_fctrlAckReq == 0);
+}
+
+bool
+LrWpanMacHeader::IsPanIdComp (void) const
+{
+  return (m_fctrlPanIdComp == 1);
+}
+
+bool
+LrWpanMacHeader::IsNoPanIdComp (void) const
+{
+  return (m_fctrlPanIdComp == 0);
+}
+
+uint8_t
+LrWpanMacHeader::GetFrmCtrlRes (void) const
+{
+  return (m_fctrlReserved);
+}
+
+uint8_t
+LrWpanMacHeader::GetDstAddrMode (void) const
+{
+  return m_fctrlDstAddrMode;
+}
+
+uint8_t
+LrWpanMacHeader::GetFrameVer (void) const
+{
+  return m_fctrlFrmVer;
+}
+
+uint8_t
+LrWpanMacHeader::GetSrcAddrMode (void) const
+{
+  return m_fctrlSrcAddrMode;
+}
+
+
+uint8_t
+LrWpanMacHeader::GetSeqNum (void) const
+{
+  return(m_SeqNum);
+}
+
+
+uint16_t
+LrWpanMacHeader::GetDstPanId (void) const
+{
+  return(m_addrDstPanId);
+}
+
+
+Mac16Address
+LrWpanMacHeader::GetShortDstAddr (void) const
+{
+  return(m_addrShortDstAddr);
+}
+Mac64Address
+LrWpanMacHeader::GetExtDstAddr (void) const
+{
+  return(m_addrExtDstAddr);
+}
+
+uint16_t
+LrWpanMacHeader::GetSrcPanId (void) const
+{
+  return(m_addrSrcPanId);
+}
+
+
+
+Mac16Address
+LrWpanMacHeader::GetShortSrcAddr (void) const
+{
+  return(m_addrShortSrcAddr);
+}
+Mac64Address
+LrWpanMacHeader::GetExtSrcAddr (void) const
+{
+  return(m_addrExtSrcAddr);
+}
+
+
+uint8_t
+LrWpanMacHeader::GetSecControl (void) const
+{
+  uint8_t val = 0;
+
+  val = m_secctrlSecLevel & (0x7);              // Bit 0-2
+  val |= (m_secctrlKeyIdMode << 3) & (0x3 << 3);  // Bit 3-4
+  val |= (m_secctrlReserved << 5) & (0x7 << 5);   // Bit 5-7
+
+  return(val);
+}
+
+uint32_t
+LrWpanMacHeader::GetFrmCounter (void) const
+{
+  return(m_auxFrmCntr);
+}
+
+uint8_t
+LrWpanMacHeader::GetSecLevel (void) const
+{
+  return (m_secctrlSecLevel);
+}
+
+uint8_t
+LrWpanMacHeader::GetKeyIdMode (void) const
+{
+  return(m_secctrlKeyIdMode);
+}
+
+uint8_t
+LrWpanMacHeader::GetsecctrlReserved (void) const
+{
+  return (m_secctrlReserved);
+}
+
+uint32_t
+LrWpanMacHeader::GetKeyIdSrc32 (void) const
+{
+  return(m_auxKeyIdKeySrc32);
+}
+
+uint64_t
+LrWpanMacHeader::GetKeyIdSrc64 (void) const
+{
+
+  return(m_auxKeyIdKeySrc64);
+}
+
+uint8_t
+LrWpanMacHeader::GetKeyIdIndex (void) const
+{
+  return(m_auxKeyIdKeyIndex);
+}
+
+
+bool
+LrWpanMacHeader::IsBeacon (void) const
+{
+  return(m_fctrlFrmType == LRWPAN_MAC_BEACON);
+}
+
+
+
+bool
+LrWpanMacHeader::IsData (void) const
+{
+  return(m_fctrlFrmType == LRWPAN_MAC_DATA);
+}
+
+
+
+bool
+LrWpanMacHeader::IsAcknowledgment (void) const
+{
+  return(m_fctrlFrmType == LRWPAN_MAC_ACKNOWLEDGMENT);
+}
+
+
+
+bool
+LrWpanMacHeader::IsCommand (void) const
+{
+  return(m_fctrlFrmType == LRWPAN_MAC_COMMAND);
+}
+
+
+
+void
+LrWpanMacHeader::SetType (enum LrWpanMacType wpanMacType)
+{
+  m_fctrlFrmType = wpanMacType;
+}
+
+
+void
+LrWpanMacHeader::SetFrameControl (uint16_t frameControl)
+{
+  m_fctrlFrmType = (frameControl) & (0x07);             // Bit 0-2
+  m_fctrlSecU = (frameControl >> 3) & (0x01);           // Bit 3
+  m_fctrlFrmPending = (frameControl >> 4) & (0x01);     // Bit 4
+  m_fctrlAckReq = (frameControl >> 5) & (0x01);         // Bit 5
+  m_fctrlPanIdComp = (frameControl >> 6) & (0x01);      // Bit 6
+  m_fctrlReserved = (frameControl >> 7) & (0x07);       // Bit 7-9
+  m_fctrlDstAddrMode = (frameControl >> 10) & (0x03);   // Bit 10-11
+  m_fctrlFrmVer = (frameControl >> 12) & (0x03);        // Bit 12-13
+  m_fctrlSrcAddrMode = (frameControl >> 14) & (0x03);   // Bit 14-15
+}
+
+
+void
+LrWpanMacHeader::SetSecEnable (void)
+{
+  m_fctrlSecU = 1;
+}
+
+
+void
+LrWpanMacHeader::SetSecDisable (void)
+{
+  m_fctrlSecU = 0;
+}
+
+
+void
+LrWpanMacHeader::SetFrmPend (void)
+{
+  m_fctrlFrmPending = 1;
+}
+
+
+void
+LrWpanMacHeader::SetNoFrmPend (void)
+{
+  m_fctrlFrmPending = 0;
+}
+
+
+void
+LrWpanMacHeader::SetAckReq (void)
+{
+  m_fctrlAckReq = 1;
+}
+
+
+void
+LrWpanMacHeader::SetNoAckReq (void)
+{
+  m_fctrlAckReq = 0;
+}
+
+
+void
+LrWpanMacHeader::SetPanIdComp (void)
+{
+  m_fctrlPanIdComp = 1;
+}
+
+
+void LrWpanMacHeader::SetNoPanIdComp (void)
+{
+  m_fctrlPanIdComp = 0;
+}
+
+void
+LrWpanMacHeader::SetFrmCtrlRes (uint8_t res)
+{
+  m_fctrlReserved = res;
+}
+
+void
+LrWpanMacHeader::SetDstAddrMode (uint8_t addrMode)
+{
+  m_fctrlDstAddrMode = addrMode;
+}
+
+
+void
+LrWpanMacHeader::SetFrameVer (uint8_t ver)
+{
+  m_fctrlFrmVer = ver;
+}
+
+
+void
+LrWpanMacHeader::SetSrcAddrMode (uint8_t addrMode)
+{
+  m_fctrlSrcAddrMode = addrMode;
+}
+
+
+void
+LrWpanMacHeader::SetSeqNum (uint8_t seqNum)
+{
+  m_SeqNum = seqNum;
+}
+
+void
+LrWpanMacHeader::SetSrcAddrFields (uint16_t panId,
+                                   Mac16Address addr)
+{
+  m_addrSrcPanId = panId;
+  m_addrShortSrcAddr = addr;
+}
+
+void
+LrWpanMacHeader::SetSrcAddrFields (uint16_t panId,
+                                   Mac64Address addr)
+{
+  m_addrSrcPanId = panId;
+  m_addrExtSrcAddr = addr;
+}
+
+void
+LrWpanMacHeader::SetDstAddrFields (uint16_t panId,
+                                   Mac16Address addr)
+{
+  m_addrDstPanId = panId;
+  m_addrShortDstAddr = addr;
+}
+void
+LrWpanMacHeader::SetDstAddrFields (uint16_t panId,
+                                   Mac64Address addr)
+{
+  m_addrDstPanId = panId;
+  m_addrExtDstAddr = addr;
+}
+void
+LrWpanMacHeader::SetSecControl (uint8_t secControl)
+{
+  m_secctrlSecLevel = (secControl) & (0x07);            // Bit 0-2
+  m_secctrlKeyIdMode = (secControl >> 3) & (0x03);      // Bit 3-4
+  m_secctrlReserved = (secControl >> 5) & (0x07);       // Bit 5-7
+}
+
+void
+LrWpanMacHeader::SetFrmCounter (uint32_t frmCntr)
+{
+  m_auxFrmCntr = frmCntr;
+}
+
+void
+LrWpanMacHeader::SetSecLevel (uint8_t secLevel)
+{
+  m_secctrlSecLevel = secLevel;
+}
+
+void
+LrWpanMacHeader::SetKeyIdMode (uint8_t keyIdMode)
+{
+  m_secctrlKeyIdMode = keyIdMode;
+}
+
+void
+LrWpanMacHeader::SetsecctrlReserved (uint8_t res)
+{
+  m_secctrlReserved = res;
+}
+
+void
+LrWpanMacHeader::SetKeyId (uint8_t keyIndex)
+{
+  m_auxKeyIdKeyIndex = keyIndex;
+}
+
+
+void
+LrWpanMacHeader::SetKeyId (uint32_t keySrc,
+                           uint8_t keyIndex)
+{
+  m_auxKeyIdKeyIndex = keyIndex;
+  m_auxKeyIdKeySrc32 = keySrc;
+}
+
+
+void
+LrWpanMacHeader::SetKeyId (uint64_t keySrc,
+                           uint8_t keyIndex)
+{
+  m_auxKeyIdKeyIndex = keyIndex;
+  m_auxKeyIdKeySrc64 = keySrc;
+}
+
+
+std::string
+LrWpanMacHeader::GetName (void) const
+{
+  return "LrWpan MAC Header";
+}
+
+TypeId
+LrWpanMacHeader::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanMacHeader")
+    .SetParent<Header> ()
+    .AddConstructor<LrWpanMacHeader> ();
+  return tid;
+}
+
+
+TypeId
+LrWpanMacHeader::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+LrWpanMacHeader::PrintFrameControl (std::ostream &os) const
+{
+  os << "  Frame Type = " << (uint32_t) m_fctrlFrmType << ", Sec Enable = " << (uint32_t) m_fctrlSecU
+     << ", Frame Pending = " << (uint32_t) m_fctrlFrmPending << ", Ack Request = " << (uint32_t) m_fctrlAckReq
+     << ", PAN ID Compress = " << (uint32_t) m_fctrlPanIdComp << ", Frame Vers = " << (uint32_t) m_fctrlFrmVer
+     << ", Dst Addrs Mode = " << (uint32_t) m_fctrlDstAddrMode << ", Src Addr Mode = " << (uint32_t) m_fctrlSrcAddrMode;
+}
+
+void
+LrWpanMacHeader::Print (std::ostream &os) const
+{
+  PrintFrameControl (os);
+  os << ", Sequence Num = " << static_cast<uint16_t> (m_SeqNum);
+
+  switch (m_fctrlDstAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      os << ", Dst Addr Pan ID = " << static_cast<uint16_t> (m_addrDstPanId)
+         << ", m_addrShortDstAddr = " << m_addrShortDstAddr;
+      break;
+    case EXTADDR:
+      os << ", Dst Addr Pan ID = " << static_cast<uint16_t> (m_addrDstPanId)
+         << ", m_addrExtDstAddr = " << m_addrExtDstAddr;
+      break;
+    }
+
+  switch (m_fctrlSrcAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      os << ", Src Addr Pan ID = " << static_cast<uint16_t> (m_addrSrcPanId)
+         << ", m_addrShortSrcAddr = " << m_addrShortSrcAddr;
+      break;
+    case EXTADDR:
+      os << ", Src Addr Pan ID = " << static_cast<uint32_t> (m_addrSrcPanId)
+         << ", m_addrExtSrcAddr = " << m_addrExtDstAddr;
+      break;
+    }
+
+  if (IsSecEnable ())
+    {
+      os << "  Security Level = " << static_cast<uint32_t> (m_secctrlSecLevel)
+         << ", Key Id Mode = " << static_cast<uint32_t> (m_secctrlKeyIdMode)
+         << ", Frame Counter = " << static_cast<uint32_t> (m_auxFrmCntr);
+
+      switch (m_secctrlKeyIdMode)
+        {
+        case IMPLICIT:
+          break;
+        case NOKEYSOURCE:
+          os << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
+          break;
+        case SHORTKEYSOURCE:
+          os << ", Key Id - Key Source 32 =" << static_cast<uint32_t> (m_auxKeyIdKeySrc32)
+             << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
+          break;
+        case LONGKEYSOURCE:
+          os << ", Key Id - Key Source 64 =" << static_cast<uint64_t> (m_auxKeyIdKeySrc64)
+             << ", Key Id - Key Index = " << static_cast<uint32_t> (m_auxKeyIdKeyIndex);
+          break;
+        }
+    }
+}
+
+uint32_t
+LrWpanMacHeader::GetSerializedSize (void) const
+{
+  /*
+   * Each mac header will have
+   * Frame Control      : 2 octet
+   * Sequence Number    : 1 Octet
+   * Dst PAN Id         : 0/2 Octet
+   * Dst Address        : 0/2/8 octet
+   * Src PAN Id         : 0/2 octet
+   * Src Address        : 0/2/8 octet
+   * Aux Sec Header     : 0/5/6/10/14 octet
+   */
+
+  uint32_t size = 3;
+
+  switch (m_fctrlDstAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      size += 4;
+      break;
+    case EXTADDR:
+      size += 10;
+      break;
+    }
+
+  switch (m_fctrlSrcAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      // check if PAN Id compression is enabled
+      if (IsNoPanIdComp ())
+        {
+          size += 4;
+        }
+      else
+        {
+          size += 2;
+        }
+      break;
+    case EXTADDR:
+      // check if PAN Id compression is enabled
+      if (IsNoPanIdComp ())
+        {
+          size += 10;
+        }
+      else
+        {
+          size += 8;
+        }
+      break;
+    }
+
+
+  // check if security is enabled
+  if (IsSecEnable ())
+    {
+      size += 5;
+      switch (m_secctrlKeyIdMode)
+        {
+        case IMPLICIT:
+          break;
+        case NOKEYSOURCE:
+          size += 1;
+          break;
+        case SHORTKEYSOURCE:
+          size += 5;
+          break;
+        case LONGKEYSOURCE:
+          size += 9;
+          break;
+        }
+    }
+  return (size);
+}
+
+
+void
+LrWpanMacHeader::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  uint16_t frameControl = GetFrameControl ();
+
+  i.WriteHtolsbU16 (frameControl);
+  i.WriteU8 (GetSeqNum ());
+
+  switch (m_fctrlDstAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      i.WriteHtolsbU16 (GetDstPanId ());
+      WriteTo (i, m_addrShortDstAddr);
+      break;
+    case EXTADDR:
+      i.WriteHtolsbU16 (GetDstPanId ());
+      WriteTo (i, m_addrExtDstAddr);
+      break;
+    }
+
+  switch (m_fctrlSrcAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      if (IsNoPanIdComp ())
+        {
+          i.WriteHtolsbU16 (GetSrcPanId ());
+        }
+      WriteTo (i, m_addrShortSrcAddr);
+      break;
+    case EXTADDR:
+      if (IsNoPanIdComp ())
+        {
+          i.WriteHtolsbU16 (GetSrcPanId ());
+        }
+      WriteTo (i, m_addrExtSrcAddr);
+      break;
+    }
+
+  if (IsSecEnable ())
+    {
+      i.WriteU8 (GetSecControl ());
+      i.WriteHtolsbU32 (GetFrmCounter ());
+
+      switch (m_secctrlKeyIdMode)
+        {
+        case IMPLICIT:
+          break;
+        case NOKEYSOURCE:
+          i.WriteU8 (GetKeyIdIndex ());
+          break;
+        case SHORTKEYSOURCE:
+          i.WriteHtolsbU32 (GetKeyIdSrc32 ());
+          i.WriteU8 (GetKeyIdIndex ());
+          break;
+        case LONGKEYSOURCE:
+          i.WriteHtolsbU64 (GetKeyIdSrc64 ());
+          i.WriteU8 (GetKeyIdIndex ());
+          break;
+        }
+    }
+}
+
+
+uint32_t
+LrWpanMacHeader::Deserialize (Buffer::Iterator start)
+{
+
+  Buffer::Iterator i = start;
+  uint16_t frameControl = i.ReadLsbtohU16 ();
+  SetFrameControl (frameControl);
+
+  SetSeqNum (i.ReadU8 ());
+  switch (m_fctrlDstAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      m_addrDstPanId = i.ReadLsbtohU16 ();
+      ReadFrom (i, m_addrShortDstAddr);
+      break;
+    case EXTADDR:
+      m_addrDstPanId = i.ReadLsbtohU16 ();
+      ReadFrom (i, m_addrExtDstAddr);
+      break;
+    }
+
+  switch (m_fctrlSrcAddrMode)
+    {
+    case NOADDR:
+      break;
+    case SHORTADDR:
+      if (IsNoPanIdComp ())
+        {
+          m_addrSrcPanId = i.ReadLsbtohU16 ();
+        }
+      else
+        {
+          if (m_fctrlDstAddrMode > 0)
+            {
+              m_addrSrcPanId = m_addrDstPanId;
+            }
+        }
+      ReadFrom (i, m_addrShortSrcAddr);
+      break;
+    case EXTADDR:
+      if (IsNoPanIdComp ())
+        {
+          m_addrSrcPanId = i.ReadLsbtohU16 ();
+        }
+      else
+        {
+          if (m_fctrlDstAddrMode > 0)
+            {
+              m_addrSrcPanId = m_addrDstPanId;
+            }
+        }
+      ReadFrom (i, m_addrExtSrcAddr);
+      break;
+    }
+
+  if (IsSecEnable ())
+    {
+      SetSecControl (i.ReadU8 ());
+      SetFrmCounter (i.ReadLsbtohU32 ());
+
+      switch (m_secctrlKeyIdMode)
+        {
+        case IMPLICIT:
+          break;
+        case NOKEYSOURCE:
+          SetKeyId (i.ReadU8 ());
+          break;
+        case SHORTKEYSOURCE:
+          SetKeyId (i.ReadLsbtohU32 (),i.ReadU8 ());
+          break;
+        case LONGKEYSOURCE:
+          SetKeyId (i.ReadLsbtohU64 (),i.ReadU8 ());
+          break;
+        }
+    }
+  return i.GetDistanceFrom (start);
+}
+
+// ----------------------------------------------------------------------------------------------------------
+
+
+} //namespace ns3
+
+
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac-header.h ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac-header.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.h	2014-06-17 10:33:13.901995900 -0700
@@ -0,0 +1,238 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ *  Author: kwong yin <kwong-sang.yin@boeing.com>
+ */
+
+/**
+ * the following classes implements the 802.15.4 Mac Header
+ * There are 4 types of 802.15.4 Mac Headers Frames, and they have these fields
+ *
+ *    Headers Frames  : Fields
+ *    -------------------------------------------------------------------------------------------
+ *    Beacon          : Frame Control, Sequence Number, Address Fields+, Auxiliary Security Header++.
+ *    Data            : Frame Control, Sequence Number, Address Fields++, Auxiliary Security Header++.
+ *    Acknowledgment  : Frame Control, Sequence Number.
+ *    Command         : Frame Control, Sequence Number, Address Fields++, Auxiliary Security Header++.
+ *
+ *    + - The Address fields in Beacon frame is made up of the Source PAN Id and address only and size
+ *        is  4 or 8 octets whereas the other frames may contain the Destination PAN Id and address as
+ *        well. (see specs).
+ *    ++ - These fields are optional and of variable size
+ */
+
+#ifndef LR_WPAN_MAC_HEADER_H
+#define LR_WPAN_MAC_HEADER_H
+
+#include <ns3/header.h>
+#include <ns3/mac16-address.h>
+#include <ns3/mac64-address.h>
+
+
+namespace ns3 {
+
+
+/*
+ * \ingroup lr-wpan
+ * Represent the Mac Header with the Frame Control and Sequence Number fields
+ */
+class LrWpanMacHeader : public Header
+{
+
+public:
+  enum LrWpanMacType
+  {
+    LRWPAN_MAC_BEACON = 0,
+    LRWPAN_MAC_DATA = 1,
+    LRWPAN_MAC_ACKNOWLEDGMENT = 2,
+    LRWPAN_MAC_COMMAND = 3,
+    LRWPAN_MAC_RESERVED
+  };
+
+  enum AddrModeType
+  {
+    NOADDR = 0,
+    RESADDR = 1,
+    SHORTADDR = 2,
+    EXTADDR = 3
+  };
+
+  enum KeyIdModeType
+  {
+    IMPLICIT = 0,
+    NOKEYSOURCE = 1,
+    SHORTKEYSOURCE = 2,
+    LONGKEYSOURCE = 3
+  };
+
+  LrWpanMacHeader (void);
+
+  LrWpanMacHeader (enum LrWpanMacType wpanMacType,      // Data, ACK, Control MAC Header must have
+                   uint8_t seqNum);                     // frame control and sequence number.
+                                                        // Beacon MAC Header must have frame control,
+                                                        // sequence number, source PAN Id, source address.
+
+  ~LrWpanMacHeader (void);
+
+
+  enum LrWpanMacType GetType (void) const;
+  uint16_t GetFrameControl (void) const;
+  bool IsSecEnable (void) const;
+  bool IsSecDisable (void) const;
+  bool IsFrmPend (void) const;
+  bool IsNoFrmPend (void) const;
+  bool IsAckReq (void) const;
+  bool IsNoAckReq (void) const;
+  bool IsPanIdComp (void) const;
+  bool IsNoPanIdComp (void) const;
+  uint8_t GetFrmCtrlRes (void) const;
+  uint8_t GetDstAddrMode (void) const;
+  uint8_t GetFrameVer (void) const;
+  uint8_t GetSrcAddrMode (void) const;
+
+  uint8_t GetSeqNum (void) const;
+
+  uint16_t GetDstPanId (void) const;
+  Mac16Address GetShortDstAddr (void) const;
+  Mac64Address GetExtDstAddr (void) const;
+  uint16_t GetSrcPanId (void) const;
+  Mac16Address GetShortSrcAddr (void) const;
+  Mac64Address GetExtSrcAddr (void) const;
+
+  uint8_t GetSecControl (void) const;
+  uint32_t GetFrmCounter (void) const;
+
+  uint8_t GetSecLevel (void) const;
+  uint8_t GetKeyIdMode (void) const;
+  uint8_t GetsecctrlReserved (void) const;
+
+  uint32_t GetKeyIdSrc32 (void) const;
+  uint64_t GetKeyIdSrc64 (void) const;
+  uint8_t GetKeyIdIndex (void) const;
+
+
+  bool IsBeacon (void) const;
+  bool IsData (void) const;
+  bool IsAcknowledgment (void) const;
+  bool IsCommand (void) const;
+
+
+  void SetType (enum LrWpanMacType wpanMacType);
+  void SetFrameControl (uint16_t frameControl);
+  void SetSecEnable (void);
+  void SetSecDisable (void);
+  void SetFrmPend (void);
+  void SetNoFrmPend (void);
+  void SetAckReq (void);
+  void SetNoAckReq (void);
+  void SetPanIdComp (void);
+  void SetNoPanIdComp (void);
+  void SetFrmCtrlRes (uint8_t res);
+  void SetDstAddrMode (uint8_t addrMode);
+  void SetFrameVer (uint8_t ver);
+  void SetSrcAddrMode (uint8_t addrMode);
+
+  void SetSeqNum (uint8_t seqNum);
+
+  /* The Source/Destination Addressing fields are only set if SrcAddrMode/DstAddrMode are set */
+  void SetSrcAddrFields (uint16_t panId,
+                         Mac16Address addr);
+  void SetSrcAddrFields (uint16_t panId,
+                         Mac64Address addr);
+  void SetDstAddrFields (uint16_t panId,
+                         Mac16Address addr);
+  void SetDstAddrFields (uint16_t panId,
+                         Mac64Address addr);
+
+  /* Auxiliary Security Header is only set if Sec Enable (SecU) field is set to 1 */
+  void SetSecControl (uint8_t secLevel);
+  void SetFrmCounter (uint32_t frmCntr);
+
+  void SetSecLevel (uint8_t secLevel);
+  void SetKeyIdMode (uint8_t keyIdMode);
+  void SetsecctrlReserved (uint8_t res);
+
+  /* Variable length will be dependent on Key Id Mode*/
+  void SetKeyId (uint8_t keyIndex);
+  void SetKeyId (uint32_t keySrc,
+                 uint8_t keyIndex);
+  void SetKeyId (uint64_t keySrc,
+                 uint8_t keyIndex);
+
+
+  std::string GetName (void) const;
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+  void PrintFrameControl (std::ostream &os) const;
+  void Print (std::ostream &os) const;
+  uint32_t GetSerializedSize (void) const;
+  void Serialize (Buffer::Iterator start) const;
+  uint32_t Deserialize (Buffer::Iterator start);
+
+
+private:
+  /* Frame Control 2 Octets */
+  /* Frame Control fields */
+  uint8_t m_fctrlFrmType;               // Bit 0-2    = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command
+  uint8_t m_fctrlSecU;                  // Bit 3      = 0 - no AuxSecHdr ,  1 - security enabled AuxSecHdr present
+  uint8_t m_fctrlFrmPending;            // Bit 4
+  uint8_t m_fctrlAckReq;                // Bit 5
+  uint8_t m_fctrlPanIdComp;             // Bit 6      = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId
+  uint8_t m_fctrlReserved;              // Bit 7-9
+  uint8_t m_fctrlDstAddrMode;           // Bit 10-11  = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr
+  uint8_t m_fctrlFrmVer;                // Bit 12-13
+  uint8_t m_fctrlSrcAddrMode;           // Bit 14-15  = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr
+
+  /* Sequence Number */
+  uint8_t m_SeqNum;                     // 1 Octet
+
+  /* Addressing fields */
+  uint16_t m_addrDstPanId;              // 0 or 2 Octet
+  Mac16Address m_addrShortDstAddr;      // 0 or 8 Octet
+  Mac64Address m_addrExtDstAddr;        // 0 or 8 Octet
+  uint16_t m_addrSrcPanId;              // 0 or 2 Octet
+  Mac16Address m_addrShortSrcAddr;      // 0 or 8 Octet
+  Mac64Address m_addrExtSrcAddr;        // 0 or 8 Octet
+
+  /* Auxiliary Security Header          // 0, 5, 6, 10 or 14 Octets */
+  // uint8_t m_auxSecCtrl;                 // 1 Octet see below
+  uint32_t m_auxFrmCntr;                // 4 Octet
+
+  /* Security Control fields */
+  uint8_t m_secctrlSecLevel;            // Bit 0-2
+  uint8_t m_secctrlKeyIdMode;           // Bit 3-4 will indicate size of Key Id
+                                        // = 0 - Key is determined implicitly
+                                        //       from originator and receipient
+                                        // = 1 - 1 Octet Key Index
+                                        // = 2 - 1 octet Key Index and 4 oct Key src
+                                        // = 3 - 1 octet Key Index and 8 oct Key src
+
+  uint8_t m_secctrlReserved;            // Bit 5-7
+
+  union
+  {
+    uint32_t m_auxKeyIdKeySrc32;        // 4 octets
+    uint64_t m_auxKeyIdKeySrc64;        // 8 octets
+  };
+
+  uint8_t m_auxKeyIdKeyIndex;           // 1 octet
+
+}; //LrWpanMacHeader
+
+}; // namespace ns-3
+
+#endif /* LR_WPAN_MAC_HEADER_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac-trailer.cc ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac-trailer.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.cc	2014-06-17 10:33:13.902995892 -0700
@@ -0,0 +1,160 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ *  Erwan Livolant <erwan.livolant@inria.fr>
+ */
+#include "lr-wpan-mac-trailer.h"
+#include <ns3/packet.h>
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanMacTrailer);
+
+const uint16_t LrWpanMacTrailer::LR_WPAN_MAC_FCS_LENGTH = 2;
+
+LrWpanMacTrailer::LrWpanMacTrailer (void)
+  : m_fcs (0),
+    m_calcFcs (false)
+{
+}
+
+TypeId
+LrWpanMacTrailer::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanMacTrailer")
+    .SetParent<Trailer> ()
+    .AddConstructor<LrWpanMacTrailer> ()
+  ;
+  return tid;
+}
+
+TypeId
+LrWpanMacTrailer::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+LrWpanMacTrailer::Print (std::ostream &os) const
+{
+  os << " FCS = " << m_fcs;
+}
+
+uint32_t
+LrWpanMacTrailer::GetSerializedSize (void) const
+{
+  return LR_WPAN_MAC_FCS_LENGTH;
+}
+
+void
+LrWpanMacTrailer::Serialize (Buffer::Iterator start) const
+{
+  start.Prev (LR_WPAN_MAC_FCS_LENGTH);
+  start.WriteU16 (m_fcs);
+}
+
+uint32_t
+LrWpanMacTrailer::Deserialize (Buffer::Iterator start)
+{
+  start.Prev (LR_WPAN_MAC_FCS_LENGTH);
+  m_fcs = start.ReadU16 ();
+
+  return LR_WPAN_MAC_FCS_LENGTH;
+}
+
+uint16_t
+LrWpanMacTrailer::GetFcs (void) const
+{
+  return m_fcs;
+}
+
+void
+LrWpanMacTrailer::SetFcs (Ptr<const Packet> p)
+{
+  if (m_calcFcs)
+    {
+      uint16_t size = p->GetSize ();
+      uint8_t *serial_packet = new uint8_t[size];
+
+      p->CopyData (serial_packet, size);
+
+      m_fcs = GenerateCrc16 (serial_packet, size);
+      delete[] serial_packet;
+    }
+}
+
+/* Be sure to have removed the trailer and only the trailer
+ * from the packet before to use CheckFcs */
+bool
+LrWpanMacTrailer::CheckFcs (Ptr<const Packet> p)
+{
+  if (!m_calcFcs)
+    {
+      return true;
+    }
+  else
+    {
+      uint16_t checkFcs;
+      uint16_t size = p->GetSize ();
+      uint8_t *serial_packet = new uint8_t[size];
+
+      p->CopyData (serial_packet, size);
+
+      checkFcs = GenerateCrc16 (serial_packet, size);
+      delete[] serial_packet;
+      return (checkFcs == GetFcs ());
+    }
+}
+
+void
+LrWpanMacTrailer::EnableFcs (bool enable)
+{
+  m_calcFcs = enable;
+  if (!enable)
+    {
+      m_fcs = 0;
+    }
+}
+
+bool
+LrWpanMacTrailer::IsFcsEnabled (void)
+{
+  return m_calcFcs;
+}
+
+uint16_t
+LrWpanMacTrailer::GenerateCrc16 (uint8_t *data, int length)
+{
+  int i;
+  uint16_t accumulator = 0;
+
+  for (i = 0; i < length; ++i)
+    {
+      accumulator ^= *data;
+      accumulator  = (accumulator >> 8) | (accumulator << 8);
+      accumulator ^= (accumulator & 0xff00) << 4;
+      accumulator ^= (accumulator >> 8) >> 4;
+      accumulator ^= (accumulator & 0xff00) >> 5;
+      ++data;
+    }
+  return accumulator;
+}
+
+} //namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-mac-trailer.h ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-mac-trailer.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.h	2014-06-17 10:33:13.902995892 -0700
@@ -0,0 +1,131 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  kwong yin <kwong-sang.yin@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ *  Erwan Livolant <erwan.livolant@inria.fr>
+ */
+
+#ifndef LR_WPAN_MAC_TRAILER_H
+#define LR_WPAN_MAC_TRAILER_H
+
+#include <ns3/trailer.h>
+
+namespace ns3 {
+
+class Packet;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * Represent the Mac Trailer with the Frame Check Sequence field.
+ */
+class LrWpanMacTrailer : public Trailer
+{
+public:
+  /**
+   * The length in octets of the IEEE 802.15.4 MAC FCS field
+   */
+  static const uint16_t LR_WPAN_MAC_FCS_LENGTH;
+
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * Default constructor for a MAC trailer with disabled FCS calculation.
+   */
+  LrWpanMacTrailer (void);
+
+  // Inherited from the Trailer class.
+  virtual TypeId GetInstanceTypeId (void) const;
+  virtual void Print (std::ostream &os) const;
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  /**
+   * Get this trailers FCS value. If FCS calculation is disabled for this
+   * trailer, the returned value is always 0.
+   *
+   * \return the FCS value.
+   */
+  uint16_t GetFcs (void) const;
+
+  /**
+   * Calculate and set the FCS value based on the given packet.
+   *
+   * \param p the packet for which the FCS should be calculated
+   */
+  void SetFcs (Ptr<const Packet> p);
+
+  /**
+   * Check the FCS of a given packet against the FCS value stored in the
+   * trailer. The packet itself should contain no trailer. If FCS calculation is
+   * disabled for this trailer, CheckFcs() will always return true.
+   *
+   * \param the packet to be checked
+   * \return false, if the FCS values do not match, true otherwise
+   */
+  bool CheckFcs (Ptr<const Packet> p);
+
+  /**
+   * Enable or disable FCS calculation for this trailer.
+   *
+   * \param enable flag, indicating if FCS calculation should be enabled or not
+   */
+  void EnableFcs (bool enable);
+
+  /**
+   * Query if FCS calculation is enabled for this trailer.
+   *
+   * \return true, if FCS calculation is enabled, false otherwise.
+   */
+  bool IsFcsEnabled (void);
+
+private:
+  /**
+   * Calculate the 16-bit FCS value.
+   * CRC16-CCITT with a generator polynomial = ^16 + ^12 + ^5 + 1, LSB first and
+   * initial value = 0x0000.
+   *
+   * \param data the checksum will be calculated over this data
+   * \param length the length of the data
+   * \return the checksum
+   */
+  uint16_t GenerateCrc16 (uint8_t *data, int length);
+
+  /**
+   * The FCS value stored in this trailer.
+   */
+  uint16_t m_fcs;
+
+  /**
+   * Only if m_calcFcs is true, FCS values will be calculated and used in the
+   * trailer
+   */
+  bool m_calcFcs;
+
+};
+
+} // namespace ns3
+
+#endif /* LR_WPAN_MAC_TRAILER_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-net-device.cc ns-3.20/src/lr-wpan/model/lr-wpan-net-device.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-net-device.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-net-device.cc	2014-06-17 10:33:13.904995877 -0700
@@ -0,0 +1,471 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ *  Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ *  Margherita Filippetti <morag87@gmail.com>
+ */
+#include "lr-wpan-net-device.h"
+#include "lr-wpan-phy.h"
+#include "lr-wpan-csmaca.h"
+#include "lr-wpan-error-model.h"
+#include <ns3/abort.h>
+#include <ns3/node.h>
+#include <ns3/log.h>
+#include <ns3/spectrum-channel.h>
+#include <ns3/pointer.h>
+#include <ns3/boolean.h>
+#include <ns3/mobility-model.h>
+#include <ns3/packet.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanNetDevice");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanNetDevice);
+
+TypeId
+LrWpanNetDevice::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanNetDevice")
+    .SetParent<NetDevice> ()
+    .AddConstructor<LrWpanNetDevice> ()
+    .AddAttribute ("Channel", "The channel attached to this device",
+                   PointerValue (),
+                   MakePointerAccessor (&LrWpanNetDevice::DoGetChannel),
+                   MakePointerChecker<SpectrumChannel> ())
+    .AddAttribute ("Phy", "The PHY layer attached to this device.",
+                   PointerValue (),
+                   MakePointerAccessor (&LrWpanNetDevice::GetPhy,
+                                        &LrWpanNetDevice::SetPhy),
+                   MakePointerChecker<LrWpanPhy> ())
+    .AddAttribute ("Mac", "The MAC layer attached to this device.",
+                   PointerValue (),
+                   MakePointerAccessor (&LrWpanNetDevice::GetMac,
+                                        &LrWpanNetDevice::SetMac),
+                   MakePointerChecker<LrWpanMac> ())
+    .AddAttribute ("UseAcks", "Request acknowledgments for data frames.",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LrWpanNetDevice::m_useAcks),
+                   MakeBooleanChecker ())
+  ;
+  return tid;
+}
+
+LrWpanNetDevice::LrWpanNetDevice ()
+  : m_configComplete (false)
+{
+  NS_LOG_FUNCTION (this);
+  m_mac = CreateObject<LrWpanMac> ();
+  m_phy = CreateObject<LrWpanPhy> ();
+  m_csmaca = CreateObject<LrWpanCsmaCa> ();
+  CompleteConfig ();
+}
+
+LrWpanNetDevice::~LrWpanNetDevice ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LrWpanNetDevice::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_mac->Dispose ();
+  m_phy->Dispose ();
+  m_csmaca->Dispose ();
+  m_phy = 0;
+  m_mac = 0;
+  m_csmaca = 0;
+  m_node = 0;
+  // chain up.
+  NetDevice::DoDispose ();
+
+}
+
+void
+LrWpanNetDevice::DoInitialize (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_phy->Initialize ();
+  m_mac->Initialize ();
+  NetDevice::DoInitialize ();
+}
+
+
+void
+LrWpanNetDevice::CompleteConfig (void)
+{
+  NS_LOG_FUNCTION (this);
+  if (m_mac == 0
+      || m_phy == 0
+      || m_csmaca == 0
+      || m_node == 0
+      || m_configComplete)
+    {
+      return;
+    }
+  m_mac->SetPhy (m_phy);
+  m_mac->SetCsmaCa (m_csmaca);
+  m_mac->SetMcpsDataIndicationCallback (MakeCallback (&LrWpanNetDevice::McpsDataIndication, this));
+  m_csmaca->SetMac (m_mac);
+
+  m_phy->SetMobility (m_node->GetObject<MobilityModel> ());
+  Ptr<LrWpanErrorModel> model = CreateObject<LrWpanErrorModel> ();
+  m_phy->SetErrorModel (model);
+  m_phy->SetDevice (this);
+
+  m_phy->SetPdDataIndicationCallback (MakeCallback (&LrWpanMac::PdDataIndication, m_mac));
+  m_phy->SetPdDataConfirmCallback (MakeCallback (&LrWpanMac::PdDataConfirm, m_mac));
+  m_phy->SetPlmeEdConfirmCallback (MakeCallback (&LrWpanMac::PlmeEdConfirm, m_mac));
+  m_phy->SetPlmeGetAttributeConfirmCallback (MakeCallback (&LrWpanMac::PlmeGetAttributeConfirm, m_mac));
+  m_phy->SetPlmeSetTRXStateConfirmCallback (MakeCallback (&LrWpanMac::PlmeSetTRXStateConfirm, m_mac));
+  m_phy->SetPlmeSetAttributeConfirmCallback (MakeCallback (&LrWpanMac::PlmeSetAttributeConfirm, m_mac));
+
+  m_csmaca->SetLrWpanMacStateCallback (MakeCallback (&LrWpanMac::SetLrWpanMacState, m_mac));
+  m_phy->SetPlmeCcaConfirmCallback (MakeCallback (&LrWpanCsmaCa::PlmeCcaConfirm, m_csmaca));
+  m_configComplete = true;
+}
+
+void
+LrWpanNetDevice::SetMac (Ptr<LrWpanMac> mac)
+{
+  NS_LOG_FUNCTION (this);
+  m_mac = mac;
+  CompleteConfig ();
+}
+
+void
+LrWpanNetDevice::SetPhy (Ptr<LrWpanPhy> phy)
+{
+  NS_LOG_FUNCTION (this);
+  m_phy = phy;
+  CompleteConfig ();
+}
+
+void
+LrWpanNetDevice::SetCsmaCa (Ptr<LrWpanCsmaCa> csmaca)
+{
+  NS_LOG_FUNCTION (this);
+  m_csmaca = csmaca;
+  CompleteConfig ();
+}
+
+void
+LrWpanNetDevice::SetChannel (Ptr<SpectrumChannel> channel)
+{
+  NS_LOG_FUNCTION (this << channel);
+  m_phy->SetChannel (channel);
+  channel->AddRx (m_phy);
+  CompleteConfig ();
+}
+
+Ptr<LrWpanMac>
+LrWpanNetDevice::GetMac (void) const
+{
+  // NS_LOG_FUNCTION (this);
+  return m_mac;
+}
+
+Ptr<LrWpanPhy>
+LrWpanNetDevice::GetPhy (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_phy;
+}
+
+Ptr<LrWpanCsmaCa>
+LrWpanNetDevice::GetCsmaCa (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_csmaca;
+}
+void
+LrWpanNetDevice::SetIfIndex (const uint32_t index)
+{
+  NS_LOG_FUNCTION (this << index);
+  m_ifIndex = index;
+}
+
+uint32_t
+LrWpanNetDevice::GetIfIndex (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_ifIndex;
+}
+
+Ptr<Channel>
+LrWpanNetDevice::GetChannel (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_phy->GetChannel ();
+}
+
+void
+LrWpanNetDevice::LinkUp (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_linkUp = true;
+  m_linkChanges ();
+}
+
+void
+LrWpanNetDevice::LinkDown (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_linkUp = false;
+  m_linkChanges ();
+}
+
+Ptr<SpectrumChannel>
+LrWpanNetDevice::DoGetChannel (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_phy->GetChannel ();
+}
+
+void
+LrWpanNetDevice::SetAddress (Address address)
+{
+  NS_LOG_FUNCTION (this);
+  m_mac->SetShortAddress (Mac16Address::ConvertFrom (address));
+}
+
+Address
+LrWpanNetDevice::GetAddress (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_mac->GetShortAddress ();
+}
+
+bool
+LrWpanNetDevice::SetMtu (const uint16_t mtu)
+{
+  NS_ABORT_MSG ("Unsupported");
+  return false;
+}
+
+uint16_t
+LrWpanNetDevice::GetMtu (void) const
+{
+  NS_LOG_FUNCTION (this);
+  // Maximum payload size is: max psdu - frame control - seqno - addressing - security - fcs
+  //                        = 127      - 2             - 1     - (2+2+2+2)  - 0        - 2
+  //                        = 114
+  // assuming no security and addressing with only 16 bit addresses without pan id compression.
+  return 114;
+}
+
+bool
+LrWpanNetDevice::IsLinkUp (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_phy != 0 && m_linkUp;
+}
+
+void
+LrWpanNetDevice::AddLinkChangeCallback (Callback<void> callback)
+{
+  NS_LOG_FUNCTION (this);
+  m_linkChanges.ConnectWithoutContext (callback);
+}
+
+bool
+LrWpanNetDevice::IsBroadcast (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+Address
+LrWpanNetDevice::GetBroadcast (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return Mac16Address ("ff:ff");
+}
+
+bool
+LrWpanNetDevice::IsMulticast (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+Address
+LrWpanNetDevice::GetMulticast (Ipv4Address multicastGroup) const
+{
+  NS_ABORT_MSG ("Unsupported");
+  return Address ();
+}
+
+Address
+LrWpanNetDevice::GetMulticast (Ipv6Address addr) const
+{
+  NS_LOG_FUNCTION (this);
+  /* Implementation based on RFC 4944 Section 9.
+   * An IPv6 packet with a multicast destination address (DST),
+   * consisting of the sixteen octets DST[1] through DST[16], is
+   * transmitted to the following 802.15.4 16-bit multicast address:
+   *           0                   1
+   *           0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+   *          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   *          |1 0 0|DST[15]* |   DST[16]     |
+   *          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   * Here, DST[15]* refers to the last 5 bits in octet DST[15], that is,
+   * bits 3-7 within DST[15].  The initial 3-bit pattern of "100" follows
+   * the 16-bit address format for multicast addresses (Section 12). */
+
+  // \todo re-add this once Lr-Wpan will be able to accept these multicast addresses
+  //  uint8_t buf[16];
+  //  uint8_t buf2[2];
+  //
+  //  addr.GetBytes(buf);
+  //
+  //  buf2[0] = 0x80 | (buf[14] & 0x1F);
+  //  buf2[1] = buf[15];
+  //
+  //  Mac16Address newaddr = Mac16Address();
+  //  newaddr.CopyFrom(buf2);
+  //  return newaddr;
+
+  return Mac16Address ("ff:ff");
+}
+
+bool
+LrWpanNetDevice::IsBridge (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return false;
+}
+
+bool
+LrWpanNetDevice::IsPointToPoint (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return false;
+}
+
+bool
+LrWpanNetDevice::Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber)
+{
+  // This method basically assumes an 802.3-compliant device, but a raw
+  // 802.15.4 device does not have an ethertype, and requires specific
+  // McpsDataRequest parameters.
+  // For further study:  how to support these methods somehow, such as
+  // inventing a fake ethertype and packet tag for McpsDataRequest
+  NS_LOG_FUNCTION (this << packet << dest << protocolNumber);
+
+  if (packet->GetSize () > GetMtu ())
+    {
+      NS_LOG_ERROR ("Fragmentation is needed for this packet, drop the packet ");
+      return false;
+    }
+
+  McpsDataRequestParams m_mcpsDataRequestParams;
+  m_mcpsDataRequestParams.m_dstAddr = Mac16Address::ConvertFrom (dest);
+  m_mcpsDataRequestParams.m_dstAddrMode = SHORT_ADDR;
+  m_mcpsDataRequestParams.m_dstPanId = m_mac->GetPanId ();
+  m_mcpsDataRequestParams.m_srcAddrMode = SHORT_ADDR;
+  // Using ACK requests for broadcast destinations is ok here. They are disabled
+  // by the MAC.
+  if (m_useAcks)
+    {
+      m_mcpsDataRequestParams.m_txOptions = TX_OPTION_ACK;
+    }
+  m_mcpsDataRequestParams.m_msduHandle = 0;
+  m_mac->McpsDataRequest (m_mcpsDataRequestParams, packet);
+  return true;
+}
+
+bool
+LrWpanNetDevice::SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
+{
+  NS_ABORT_MSG ("Unsupported");
+  // TODO: To support SendFrom, the MACs McpsDataRequest has to use the provided source address, instead of to local one.
+  return false;
+}
+
+Ptr<Node>
+LrWpanNetDevice::GetNode (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_node;
+}
+
+void
+LrWpanNetDevice::SetNode (Ptr<Node> node)
+{
+  NS_LOG_FUNCTION (this);
+  m_node = node;
+  CompleteConfig ();
+}
+
+bool
+LrWpanNetDevice::NeedsArp (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+void
+LrWpanNetDevice::SetReceiveCallback (ReceiveCallback cb)
+{
+  NS_LOG_FUNCTION (this);
+  m_receiveCallback = cb;
+}
+
+void
+LrWpanNetDevice::SetPromiscReceiveCallback (PromiscReceiveCallback cb)
+{
+  // This method basically assumes an 802.3-compliant device, but a raw
+  // 802.15.4 device does not have an ethertype, and requires specific
+  // McpsDataIndication parameters.
+  // For further study:  how to support these methods somehow, such as
+  // inventing a fake ethertype and packet tag for McpsDataRequest
+  NS_LOG_WARN ("Unsupported; use LrWpan MAC APIs instead");
+}
+
+void
+LrWpanNetDevice::McpsDataIndication (McpsDataIndicationParams params, Ptr<Packet> pkt)
+{
+  NS_LOG_FUNCTION (this);
+  // TODO: Use the PromiscReceiveCallback if the MAC is in promiscuous mode.
+  m_receiveCallback (this, pkt, 0, params.m_srcAddr);
+}
+
+bool
+LrWpanNetDevice::SupportsSendFrom (void) const
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  return false;
+}
+
+int64_t
+LrWpanNetDevice::AssignStreams (int64_t stream)
+{
+  NS_LOG_FUNCTION (stream);
+  int64_t streamIndex = stream;
+  streamIndex += m_csmaca->AssignStreams (stream);
+  streamIndex += m_phy->AssignStreams (stream);
+  NS_LOG_DEBUG ("Number of assigned RV streams:  " << (streamIndex - stream));
+  return (streamIndex - stream);
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-net-device.h ns-3.20/src/lr-wpan/model/lr-wpan-net-device.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-net-device.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-net-device.h	2014-06-17 10:33:13.905995869 -0700
@@ -0,0 +1,246 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Tom Henderson <thomas.r.henderson@boeing.com>
+ *  Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ *  Margherita Filippetti <morag87@gmail.com>
+ */
+#ifndef LR_WPAN_NET_DEVICE_H
+#define LR_WPAN_NET_DEVICE_H
+
+#include <ns3/net-device.h>
+#include <ns3/traced-callback.h>
+#include <ns3/lr-wpan-mac.h>
+
+namespace ns3 {
+
+class LrWpanPhy;
+class LrWpanCsmaCa;
+class SpectrumChannel;
+class Node;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * \brief Network layer to device interface.
+ *
+ * The ns3::NetDevice includes IP-specific API such as GetMulticast(), Send()
+ * and SendTo() methods, which do not map well the the 802.15.4 MAC MCPS
+ * DataRequest primitive.  So, the basic design is to provide, as
+ * much as makes sense, the class ns3::NetDevice API, but rely on the user
+ * accessing the LrWpanMac pointer to make 802.15.4-specific API calls.
+ * As such, this is really just an encapsulating class.
+ */
+class LrWpanNetDevice : public NetDevice
+{
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  LrWpanNetDevice (void);
+  virtual ~LrWpanNetDevice (void);
+
+  /**
+   * Set the MAC to be used by this NetDevice.
+   *
+   * \param mac the MAC to be used
+   */
+  void SetMac (Ptr<LrWpanMac> mac);
+
+  /**
+   * Set the PHY to be used by the MAC and this NetDevice.
+   *
+   * \param phy the PHY to be used
+   */
+  void SetPhy (Ptr<LrWpanPhy> phy);
+
+  /**
+   * Set the CSMA/CA implementation to be used by the MAC and this NetDevice.
+   *
+   * \param csmaca the CSMA/CA implementation to be used
+   */
+  void SetCsmaCa (Ptr<LrWpanCsmaCa> csmaca);
+
+  /**
+   * Set the channel to which the NetDevice, and therefore the PHY, should be
+   * attached to.
+   *
+   * \param channel the channel to be used
+   */
+  void SetChannel (Ptr<SpectrumChannel> channel);
+
+  /**
+   * Get the MAC used by this NetDevice.
+   *
+   * \return the MAC object
+   */
+  Ptr<LrWpanMac> GetMac (void) const;
+
+  /**
+   * Get the PHY used by this NetDevice.
+   *
+   * \return the PHY object
+   */
+  Ptr<LrWpanPhy> GetPhy (void) const;
+
+  /**
+   * Get the CSMA/CA implementation used by this NetDevice.
+   *
+   * \return the CSMA/CA implementation object
+   */
+  Ptr<LrWpanCsmaCa> GetCsmaCa (void) const;
+
+  // From class NetDevice
+  virtual void SetIfIndex (const uint32_t index);
+  virtual uint32_t GetIfIndex (void) const;
+  virtual Ptr<Channel> GetChannel (void) const;
+  /**
+   * This method indirects to LrWpanMac::SetShortAddress ()
+   */
+  virtual void SetAddress (Address address);
+  /**
+   * This method indirects to LrWpanMac::SetShortAddress ()
+   */
+  virtual Address GetAddress (void) const;
+  virtual bool SetMtu (const uint16_t mtu);
+  virtual uint16_t GetMtu (void) const;
+  virtual bool IsLinkUp (void) const;
+  virtual void AddLinkChangeCallback (Callback<void> callback);
+  virtual bool IsBroadcast (void) const;
+  virtual Address GetBroadcast (void) const;
+  virtual bool IsMulticast (void) const;
+  virtual Address GetMulticast (Ipv4Address multicastGroup) const;
+  virtual Address GetMulticast (Ipv6Address addr) const;
+  virtual bool IsBridge (void) const;
+  virtual bool IsPointToPoint (void) const;
+  virtual bool Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber);
+  virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
+  virtual Ptr<Node> GetNode (void) const;
+  virtual void SetNode (Ptr<Node> node);
+  virtual bool NeedsArp (void) const;
+
+  virtual void SetReceiveCallback (ReceiveCallback cb);
+  virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+  virtual bool SupportsSendFrom (void) const;
+
+  /**
+   * The callback used by the MAC to hand over incoming packets to the
+   * NetDevice. This callback will in turn use the ReceiveCallback set by
+   * SetReceiveCallback() to notify upper layers.
+   *
+   * \param params 802.15.4 specific parameters, including source and destination addresses
+   * \param pkt the packet do be delivered
+   */
+  void McpsDataIndication (McpsDataIndicationParams params, Ptr<Packet> pkt);
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model.  Return the number of streams that have been assigned.
+   *
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this model
+   */
+  int64_t AssignStreams (int64_t stream);
+
+private:
+  // Inherited from NetDevice/Object
+  virtual void DoDispose (void);
+  virtual void DoInitialize (void);
+
+  /**
+   * Mark NetDevice link as up.
+   */
+  void LinkUp (void);
+
+  /**
+   * Mark NetDevice link as down.
+   */
+  void LinkDown (void);
+
+  /**
+   * Attribute accessor method for the "Channel" attribute.
+   *
+   * \return the channel to which this NetDevice is attached
+   */
+  Ptr<SpectrumChannel> DoGetChannel (void) const;
+
+  /**
+   * Configure PHY, MAC and CSMA/CA.
+   */
+  void CompleteConfig (void);
+
+  /**
+   * The MAC for this NetDevice.
+   */
+  Ptr<LrWpanMac> m_mac;
+
+  /**
+   * The PHY for this NetDevice.
+   */
+  Ptr<LrWpanPhy> m_phy;
+
+  /**
+   * The CSMA/CA implementation for this NetDevice.
+   */
+  Ptr<LrWpanCsmaCa> m_csmaca;
+
+  /**
+   * The node associated with this NetDevice.
+   */
+  Ptr<Node> m_node;
+
+  /**
+   * True if MAC, PHY and CSMA/CA where successfully configured and the
+   * NetDevice is ready for being used.
+   */
+  bool m_configComplete;
+
+  /**
+   * Configure the NetDevice to request MAC layer acknowledgements when sending
+   * packets using the Send() API.
+   */
+  bool m_useAcks;
+
+  /**
+   * Is the link/device currently up and running?
+   */
+  bool m_linkUp;
+
+  /**
+   * The interface index of this NetDevice.
+   */
+  uint32_t m_ifIndex;
+
+  /**
+   * Trace source for link up/down changes.
+   */
+  TracedCallback<> m_linkChanges;
+
+  /**
+   * Upper layer callback used for notification of new data packet arrivals.
+   */
+  ReceiveCallback m_receiveCallback;
+};
+
+} // namespace ns3
+
+#endif /* LR_WPAN_NET_DEVICE_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-phy.cc ns-3.20/src/lr-wpan/model/lr-wpan-phy.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-phy.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-phy.cc	2014-06-17 10:33:13.906995861 -0700
@@ -0,0 +1,1376 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#include "lr-wpan-phy.h"
+#include "lr-wpan-lqi-tag.h"
+#include "lr-wpan-spectrum-signal-parameters.h"
+#include "lr-wpan-spectrum-value-helper.h"
+#include "lr-wpan-error-model.h"
+#include "lr-wpan-net-device.h"
+#include <ns3/log.h>
+#include <ns3/abort.h>
+#include <ns3/simulator.h>
+#include <ns3/spectrum-value.h>
+#include <ns3/antenna-model.h>
+#include <ns3/mobility-model.h>
+#include <ns3/spectrum-channel.h>
+#include <ns3/packet.h>
+#include <ns3/packet-burst.h>
+#include <ns3/net-device.h>
+#include <ns3/random-variable-stream.h>
+#include <ns3/double.h>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanPhy");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LrWpanPhy);
+
+// Table 22 in section 6.4.1 of ieee802.15.4
+const uint32_t LrWpanPhy::aMaxPhyPacketSize = 127; // max PSDU in octets
+const uint32_t LrWpanPhy::aTurnaroundTime = 12;  // RX-to-TX or TX-to-RX in symbol periods
+
+// IEEE802.15.4-2006 Table 2 in section 6.1.2 (kb/s and ksymbol/s)
+// The index follows LrWpanPhyOption
+const LrWpanPhyDataAndSymbolRates
+LrWpanPhy::dataSymbolRates[7] = { { 20.0, 20.0},
+                                  { 40.0, 40.0},
+                                  { 250.0, 12.5},
+                                  { 250.0, 50.0},
+                                  { 100.0, 25.0},
+                                  { 250.0, 62.5},
+                                  { 250.0, 62.5}};
+// IEEE802.15.4-2006 Table 19 and Table 20 in section 6.3.
+// The PHR is 1 octet and it follows phySymbolsPerOctet in Table 23
+// The index follows LrWpanPhyOption
+const LrWpanPhyPpduHeaderSymbolNumber
+LrWpanPhy::ppduHeaderSymbolNumbers[7] = { { 32.0, 8.0, 8.0},
+                                          { 32.0, 8.0, 8.0},
+                                          { 2.0, 1.0, 0.4},
+                                          { 6.0, 1.0, 1.6},
+                                          { 8.0, 2.0, 2.0},
+                                          { 8.0, 2.0, 2.0},
+                                          { 8.0, 2.0, 2.0}};
+
+TypeId
+LrWpanPhy::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LrWpanPhy")
+    .SetParent<Object> ()
+    .AddConstructor<LrWpanPhy> ()
+    .AddTraceSource ("TrxState",
+                     "The state of the transceiver",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_trxStateLogger))
+    .AddTraceSource ("PhyTxBegin",
+                     "Trace source indicating a packet has begun transmitting over the channel medium",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyTxBeginTrace))
+    .AddTraceSource ("PhyTxEnd",
+                     "Trace source indicating a packet has been completely transmitted over the channel.",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyTxEndTrace))
+    .AddTraceSource ("PhyTxDrop",
+                     "Trace source indicating a packet has been dropped by the device during transmission",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyTxDropTrace))
+    .AddTraceSource ("PhyRxBegin",
+                     "Trace source indicating a packet has begun being received from the channel medium by the device",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyRxBeginTrace))
+    .AddTraceSource ("PhyRxEnd",
+                     "Trace source indicating a packet has been completely received from the channel medium by the device",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyRxEndTrace))
+    .AddTraceSource ("PhyRxDrop",
+                     "Trace source indicating a packet has been dropped by the device during reception",
+                     MakeTraceSourceAccessor (&LrWpanPhy::m_phyRxDropTrace))
+  ;
+  return tid;
+}
+
+LrWpanPhy::LrWpanPhy (void)
+  : m_edRequest (),
+    m_setTRXState ()
+{
+  m_trxState = IEEE_802_15_4_PHY_TRX_OFF;
+  m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+
+  // default PHY PIB attributes
+  m_phyPIBAttributes.phyCurrentChannel = 11;
+  m_phyPIBAttributes.phyTransmitPower = 0;
+  m_phyPIBAttributes.phyCurrentPage = 0;
+  for (uint32_t i = 0; i < 32; i++)
+    {
+      m_phyPIBAttributes.phyChannelsSupported[i] = 0x07ffffff;
+    }
+  m_phyPIBAttributes.phyCCAMode = 1;
+
+  SetMyPhyOption ();
+
+  m_edPower.averagePower = 0.0;
+  m_edPower.lastUpdate = Seconds (0.0);
+  m_edPower.measurementLength = Seconds (0.0);
+
+  // default -110 dBm in W for 2.4 GHz
+  m_rxSensitivity = pow (10.0, -106.58 / 10.0) / 1000.0;
+  LrWpanSpectrumValueHelper psdHelper;
+  m_txPsd = psdHelper.CreateTxPowerSpectralDensity (m_phyPIBAttributes.phyTransmitPower,
+                                                    m_phyPIBAttributes.phyCurrentChannel);
+  m_noise = psdHelper.CreateNoisePowerSpectralDensity (m_phyPIBAttributes.phyCurrentChannel);
+  m_signal = Create<LrWpanInterferenceHelper> (m_noise->GetSpectrumModel ());
+  m_rxLastUpdate = Seconds (0);
+  Ptr<Packet> none_packet = 0;
+  Ptr<LrWpanSpectrumSignalParameters> none_params = 0;
+  m_currentRxPacket = std::make_pair (none_params, true);
+  m_currentTxPacket = std::make_pair (none_packet, true);
+  m_errorModel = 0;
+
+  m_random = CreateObject<UniformRandomVariable> ();
+  m_random->SetAttribute ("Min", DoubleValue (0.0));
+  m_random->SetAttribute ("Max", DoubleValue (1.0));
+
+
+  ChangeTrxState (IEEE_802_15_4_PHY_TRX_OFF);
+}
+
+LrWpanPhy::~LrWpanPhy (void)
+{
+}
+
+void
+LrWpanPhy::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  // Cancel pending transceiver state change, if one is in progress.
+  m_setTRXState.Cancel ();
+  m_trxState = IEEE_802_15_4_PHY_TRX_OFF;
+  m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+
+  m_mobility = 0;
+  m_device = 0;
+  m_channel = 0;
+  m_txPsd = 0;
+  m_noise = 0;
+  m_signal = 0;
+  m_errorModel = 0;
+  m_pdDataIndicationCallback = MakeNullCallback< void, uint32_t, Ptr<Packet>, uint8_t > ();
+  m_pdDataConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration > ();
+  m_plmeCcaConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration > ();
+  m_plmeEdConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration,uint8_t > ();
+  m_plmeGetAttributeConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration, LrWpanPibAttributeIdentifier, LrWpanPhyPibAttributes* > ();
+  m_plmeSetTRXStateConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration > ();
+  m_plmeSetAttributeConfirmCallback = MakeNullCallback< void, LrWpanPhyEnumeration, LrWpanPibAttributeIdentifier > ();
+
+  SpectrumPhy::DoDispose ();
+}
+
+Ptr<NetDevice>
+LrWpanPhy::GetDevice (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_device;
+}
+
+
+Ptr<MobilityModel>
+LrWpanPhy::GetMobility (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_mobility;
+}
+
+
+void
+LrWpanPhy::SetDevice (Ptr<NetDevice> d)
+{
+  NS_LOG_FUNCTION (this << d);
+  m_device = d;
+}
+
+
+void
+LrWpanPhy::SetMobility (Ptr<MobilityModel> m)
+{
+  NS_LOG_FUNCTION (this << m);
+  m_mobility = m;
+}
+
+
+void
+LrWpanPhy::SetChannel (Ptr<SpectrumChannel> c)
+{
+  NS_LOG_FUNCTION (this << c);
+  m_channel = c;
+}
+
+
+Ptr<SpectrumChannel>
+LrWpanPhy::GetChannel (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_channel;
+}
+
+
+Ptr<const SpectrumModel>
+LrWpanPhy::GetRxSpectrumModel (void) const
+{
+  NS_LOG_FUNCTION (this);
+  if (m_txPsd)
+    {
+      return m_txPsd->GetSpectrumModel ();
+    }
+  else
+    {
+      return 0;
+    }
+}
+
+Ptr<AntennaModel>
+LrWpanPhy::GetRxAntenna (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_antenna;
+}
+
+void
+LrWpanPhy::SetAntenna (Ptr<AntennaModel> a)
+{
+  NS_LOG_FUNCTION (this << a);
+  m_antenna = a;
+}
+
+void
+LrWpanPhy::StartRx (Ptr<SpectrumSignalParameters> spectrumRxParams)
+{
+  NS_LOG_FUNCTION (this << spectrumRxParams);
+  LrWpanSpectrumValueHelper psdHelper;
+
+
+  Ptr<LrWpanSpectrumSignalParameters> lrWpanRxParams = DynamicCast<LrWpanSpectrumSignalParameters> (spectrumRxParams);
+  NS_ASSERT (lrWpanRxParams != 0);
+  Ptr<Packet> p = (lrWpanRxParams->packetBurst->GetPackets ()).front ();
+  NS_ASSERT (p != 0);
+
+  if (!m_edRequest.IsExpired ())
+    {
+      // Update the average receive power during ED.
+      Time now = Simulator::Now ();
+      m_edPower.averagePower += LrWpanSpectrumValueHelper::TotalAvgPower (m_signal->GetSignalPsd ()) * (now - m_edPower.lastUpdate).GetTimeStep () / m_edPower.measurementLength.GetTimeStep ();
+      m_edPower.lastUpdate = now;
+    }
+
+  // Prevent PHY from receiving another packet while switching the transceiver state.
+  if (m_trxState == IEEE_802_15_4_PHY_RX_ON && !m_setTRXState.IsRunning ())
+    {
+      // The specification doesn't seem to refer to BUSY_RX, but vendor
+      // data sheets suggest that this is a substate of the RX_ON state
+      // that is entered after preamble detection when the digital receiver
+      // is enabled.  Here, for now, we use BUSY_RX to mark the period between
+      // StartRx() and EndRx() states.
+
+      // We are going to BUSY_RX state when receiving the first bit of an SHR,
+      // as opposed to real receivers, which should go to this state only after
+      // successfully receiving the SHR.
+
+      // If synchronizing to the packet is possible, change to BUSY_RX state,
+      // otherwise drop the packet and stay in RX state. The actual synchronization
+      // is not modeled.
+
+      // Add any incoming packet to the current interference before checking the
+      // SINR.
+      NS_LOG_DEBUG (this << " receiving packet with power: " << 10 * log10(LrWpanSpectrumValueHelper::TotalAvgPower (lrWpanRxParams->psd)) + 30 << "dBm");
+      m_signal->AddSignal (lrWpanRxParams->psd);
+      Ptr<SpectrumValue> interferenceAndNoise = m_signal->GetSignalPsd ();
+      *interferenceAndNoise -= *lrWpanRxParams->psd;
+      *interferenceAndNoise += *m_noise;
+      double sinr = LrWpanSpectrumValueHelper::TotalAvgPower (lrWpanRxParams->psd) / LrWpanSpectrumValueHelper::TotalAvgPower (interferenceAndNoise);
+
+      // Std. 802.15.4-2006, appendix E, Figure E.2
+      // At SNR < -5 the BER is less than 10e-1.
+      // It's useless to even *try* to decode the packet.
+      if (10 * log10 (sinr) > -5)
+        {
+          ChangeTrxState (IEEE_802_15_4_PHY_BUSY_RX);
+          m_currentRxPacket = std::make_pair (lrWpanRxParams, false);
+          m_phyRxBeginTrace (p);
+
+          m_rxLastUpdate = Simulator::Now ();
+        }
+      else
+        {
+          m_phyRxDropTrace (p);
+        }
+    }
+  else if (m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+    {
+      // Drop the new packet.
+      NS_LOG_DEBUG (this << " packet collision");
+      m_phyRxDropTrace (p);
+
+      // Check if we correctly received the old packet up to now.
+      CheckInterference ();
+
+      // Add the incoming packet to the current interference after we have
+      // checked for successfull reception of the current packet for the time
+      // before the additional interference.
+      m_signal->AddSignal (lrWpanRxParams->psd);
+    }
+  else
+    {
+      // Simply drop the packet.
+      NS_LOG_DEBUG (this << " transceiver not in RX state");
+      m_phyRxDropTrace (p);
+
+      // Add the signal power to the interference, anyway.
+      m_signal->AddSignal (lrWpanRxParams->psd);
+    }
+
+  // Update peak power if CCA is in progress.
+  if (!m_ccaRequest.IsExpired ())
+    {
+      double power = LrWpanSpectrumValueHelper::TotalAvgPower (m_signal->GetSignalPsd ());
+      if (m_ccaPeakPower < power)
+        {
+          m_ccaPeakPower = power;
+        }
+    }
+
+  // Always call EndRx to update the interference.
+  // \todo: Do we need to keep track of these events to unschedule them when disposing off the PHY?
+  Simulator::Schedule (lrWpanRxParams->duration, &LrWpanPhy::EndRx, this, lrWpanRxParams);
+}
+
+void
+LrWpanPhy::CheckInterference (void)
+{
+  // Calculate whether packet was lost.
+  LrWpanSpectrumValueHelper psdHelper;
+  Ptr<LrWpanSpectrumSignalParameters> currentRxParams = m_currentRxPacket.first;
+
+  // We are currently receiving a packet.
+  if (m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+    {
+      // NS_ASSERT (currentRxParams && !m_currentRxPacket.second);
+
+      Ptr<Packet> currentPacket = currentRxParams->packetBurst->GetPackets ().front ();
+      if (m_errorModel != 0)
+        {
+          // How many bits did we receive since the last calculation?
+          double t = (Simulator::Now () - m_rxLastUpdate).ToDouble (Time::MS);
+          uint32_t chunkSize = ceil (t * (GetDataOrSymbolRate (true) / 1000));
+          Ptr<SpectrumValue> interferenceAndNoise = m_signal->GetSignalPsd ();
+          *interferenceAndNoise -= *currentRxParams->psd;
+          *interferenceAndNoise += *m_noise;
+          double sinr = LrWpanSpectrumValueHelper::TotalAvgPower (currentRxParams->psd) / LrWpanSpectrumValueHelper::TotalAvgPower (interferenceAndNoise);
+          double per = 1.0 - m_errorModel->GetChunkSuccessRate (sinr, chunkSize);
+
+          // The LQI is the total packet success rate scaled to 0-255.
+          // If not already set, initialize to 255.
+          LrWpanLqiTag tag (std::numeric_limits<uint8_t>::max ());
+          currentPacket->PeekPacketTag (tag);
+          uint8_t lqi = tag.Get ();
+          tag.Set (lqi - (per * lqi));
+          currentPacket->ReplacePacketTag (tag);
+
+          if (m_random->GetValue () < per)
+            {
+              // The packet was destroyed, drop the packet after reception.
+              m_currentRxPacket.second = true;
+            }
+        }
+      else
+        {
+          NS_LOG_WARN ("Missing ErrorModel");
+        }
+    }
+  m_rxLastUpdate = Simulator::Now ();
+}
+
+void
+LrWpanPhy::EndRx (Ptr<LrWpanSpectrumSignalParameters> params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (params != 0);
+
+  if (!m_edRequest.IsExpired ())
+    {
+      // Update the average receive power during ED.
+      Time now = Simulator::Now ();
+      m_edPower.averagePower += LrWpanSpectrumValueHelper::TotalAvgPower (m_signal->GetSignalPsd ()) * (now - m_edPower.lastUpdate).GetTimeStep () / m_edPower.measurementLength.GetTimeStep ();
+      m_edPower.lastUpdate = now;
+    }
+
+  CheckInterference ();
+
+  // Update the interference.
+  m_signal->RemoveSignal (params->psd);
+
+  // If this is the end of the currently received packet, check if reception was successfull.
+  Ptr<LrWpanSpectrumSignalParameters> currentRxParams = m_currentRxPacket.first;
+  if (currentRxParams == params)
+    {
+      Ptr<Packet> currentPacket = currentRxParams->packetBurst->GetPackets ().front ();
+      NS_ASSERT (currentPacket != 0);
+
+      // If there is no error model attached to the PHY, we always report the maximum LQI value.
+      LrWpanLqiTag tag (std::numeric_limits<uint8_t>::max ());
+      currentPacket->PeekPacketTag (tag);
+      m_phyRxEndTrace (currentPacket, tag.Get ());
+
+      if (!m_currentRxPacket.second)
+        {
+          // The packet was successfully received, push it up the stack.
+          if (!m_pdDataIndicationCallback.IsNull ())
+            {
+              m_pdDataIndicationCallback (currentPacket->GetSize (), currentPacket, tag.Get ());
+            }
+        }
+      else
+        {
+          // The packet was destroyed, drop it.
+          m_phyRxDropTrace (currentPacket);
+        }
+      Ptr<LrWpanSpectrumSignalParameters> none = 0;
+      m_currentRxPacket = std::make_pair (none, true);
+
+      // We may be waiting to apply a pending state change.
+      if (m_trxStatePending != IEEE_802_15_4_PHY_IDLE)
+        {
+          // Only change the state immediately, if the transceiver is not already
+          // switching the state.
+          if (!m_setTRXState.IsRunning ())
+            {
+              NS_LOG_LOGIC ("Apply pending state change to " << m_trxStatePending);
+              ChangeTrxState (m_trxStatePending);
+              m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+              if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+                {
+                  m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_SUCCESS);
+                }
+            }
+        }
+      else
+        {
+          ChangeTrxState (IEEE_802_15_4_PHY_RX_ON);
+        }
+    }
+}
+
+void
+LrWpanPhy::PdDataRequest (const uint32_t psduLength, Ptr<Packet> p)
+{
+  NS_LOG_FUNCTION (this << psduLength << p);
+
+  if (psduLength > aMaxPhyPacketSize)
+    {
+      if (!m_pdDataConfirmCallback.IsNull ())
+        {
+          m_pdDataConfirmCallback (IEEE_802_15_4_PHY_UNSPECIFIED);
+        }
+      NS_LOG_DEBUG ("Drop packet because psduLength too long: " << psduLength);
+      return;
+    }
+
+  // Prevent PHY from sending a packet while switching the transceiver state.
+  if (!m_setTRXState.IsRunning ())
+    {
+      if (m_trxState == IEEE_802_15_4_PHY_TX_ON)
+        {
+          //send down
+          NS_ASSERT (m_channel);
+
+          // Remove a possible LQI tag from a previous transmission of the packet.
+          LrWpanLqiTag lqiTag;
+          p->RemovePacketTag (lqiTag);
+
+          Ptr<LrWpanSpectrumSignalParameters> txParams = Create<LrWpanSpectrumSignalParameters> ();
+          txParams->duration = CalculateTxTime (p);
+          txParams->txPhy = GetObject<SpectrumPhy> ();
+          txParams->psd = m_txPsd;
+          txParams->txAntenna = m_antenna;
+          Ptr<PacketBurst> pb = CreateObject<PacketBurst> ();
+          pb->AddPacket (p);
+          txParams->packetBurst = pb;
+          m_channel->StartTx (txParams);
+          m_pdDataRequest = Simulator::Schedule (txParams->duration, &LrWpanPhy::EndTx, this);
+          ChangeTrxState (IEEE_802_15_4_PHY_BUSY_TX);
+          m_phyTxBeginTrace (p);
+          m_currentTxPacket.first = p;
+          m_currentTxPacket.second = false;
+          return;
+        }
+      else if ((m_trxState == IEEE_802_15_4_PHY_RX_ON)
+               || (m_trxState == IEEE_802_15_4_PHY_TRX_OFF)
+               || (m_trxState == IEEE_802_15_4_PHY_BUSY_TX) )
+        {
+          if (!m_pdDataConfirmCallback.IsNull ())
+            {
+              m_pdDataConfirmCallback (m_trxState);
+            }
+          // Drop packet, hit PhyTxDrop trace
+          m_phyTxDropTrace (p);
+          return;
+        }
+      else
+        {
+          NS_FATAL_ERROR ("This should be unreachable, or else state " << m_trxState << " should be added as a case");
+        }
+    }
+  else
+    {
+      // TODO: This error code is not covered by the standard.
+      // What is the correct behavior in this case?
+      if (!m_pdDataConfirmCallback.IsNull ())
+        {
+          m_pdDataConfirmCallback (IEEE_802_15_4_PHY_UNSPECIFIED);
+        }
+      // Drop packet, hit PhyTxDrop trace
+      m_phyTxDropTrace (p);
+      return;
+    }
+}
+
+void
+LrWpanPhy::PlmeCcaRequest (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_trxState == IEEE_802_15_4_PHY_RX_ON || m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+    {
+      m_ccaPeakPower = 0.0;
+      Time ccaTime = Seconds (8.0 / GetDataOrSymbolRate (false));
+      m_ccaRequest = Simulator::Schedule (ccaTime, &LrWpanPhy::EndCca, this);
+    }
+  else
+    {
+      if (!m_plmeCcaConfirmCallback.IsNull ())
+        {
+          if (m_trxState == IEEE_802_15_4_PHY_TRX_OFF)
+            {
+              m_plmeCcaConfirmCallback (IEEE_802_15_4_PHY_TRX_OFF);
+            }
+          else
+            {
+              m_plmeCcaConfirmCallback (IEEE_802_15_4_PHY_BUSY);
+            }
+        }
+    }
+}
+
+void
+LrWpanPhy::PlmeEdRequest (void)
+{
+  NS_LOG_FUNCTION (this);
+  if (m_trxState == IEEE_802_15_4_PHY_RX_ON || m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+    {
+      // Average over the powers of all signals received until EndEd()
+      m_edPower.averagePower = 0;
+      m_edPower.lastUpdate = Simulator::Now ();
+      m_edPower.measurementLength = Seconds (8.0 / GetDataOrSymbolRate (false));
+      m_edRequest = Simulator::Schedule (m_edPower.measurementLength, &LrWpanPhy::EndEd, this);
+    }
+  else
+    {
+      LrWpanPhyEnumeration result = m_trxState;
+      if (m_trxState == IEEE_802_15_4_PHY_BUSY_TX)
+        {
+          result = IEEE_802_15_4_PHY_TX_ON;
+        }
+
+      if (!m_plmeEdConfirmCallback.IsNull ())
+        {
+          m_plmeEdConfirmCallback (result, 0);
+        }
+    }
+}
+
+void
+LrWpanPhy::PlmeGetAttributeRequest (LrWpanPibAttributeIdentifier id)
+{
+  NS_LOG_FUNCTION (this << id);
+  LrWpanPhyEnumeration status;
+
+  switch (id)
+    {
+    case phyCurrentChannel:
+    case phyChannelsSupported:
+    case phyTransmitPower:
+    case phyCCAMode:
+    case phyCurrentPage:
+    case phyMaxFrameDuration:
+    case phySHRDuration:
+    case phySymbolsPerOctet:
+      {
+        status = IEEE_802_15_4_PHY_SUCCESS;
+        break;
+      }
+    default:
+      {
+        status = IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE;
+        break;
+      }
+    }
+  if (!m_plmeGetAttributeConfirmCallback.IsNull ())
+    {
+      LrWpanPhyPibAttributes retValue;
+      memcpy (&retValue, &m_phyPIBAttributes, sizeof(LrWpanPhyPibAttributes));
+      m_plmeGetAttributeConfirmCallback (status,id,&retValue);
+    }
+}
+
+// Section 6.2.2.7.3
+void
+LrWpanPhy::PlmeSetTRXStateRequest (LrWpanPhyEnumeration state)
+{
+  NS_LOG_FUNCTION (this << state);
+
+  // Check valid states (Table 14)
+  NS_ABORT_IF ( (state != IEEE_802_15_4_PHY_RX_ON)
+                && (state != IEEE_802_15_4_PHY_TRX_OFF)
+                && (state != IEEE_802_15_4_PHY_FORCE_TRX_OFF)
+                && (state != IEEE_802_15_4_PHY_TX_ON) );
+
+  NS_LOG_LOGIC ("Trying to set m_trxState from " << m_trxState << " to " << state);
+  // this method always overrides previous state setting attempts
+  if (!m_setTRXState.IsExpired ())
+    {
+      if (m_trxStatePending == state)
+        {
+          // Simply wait for the ongoing state switch.
+          return;
+        }
+      else
+        {
+          NS_LOG_DEBUG ("Cancel m_setTRXState");
+          // Keep the transceiver state as the old state before the switching attempt.
+          m_setTRXState.Cancel ();
+        }
+    }
+  if (m_trxStatePending != IEEE_802_15_4_PHY_IDLE)
+    {
+      m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+    }
+
+  if (state == m_trxState)
+    {
+      if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+        {
+          m_plmeSetTRXStateConfirmCallback (state);
+        }
+      return;
+    }
+
+  if ( ((state == IEEE_802_15_4_PHY_RX_ON)
+        || (state == IEEE_802_15_4_PHY_TRX_OFF))
+       && (m_trxState == IEEE_802_15_4_PHY_BUSY_TX) )
+    {
+      NS_LOG_DEBUG ("Phy is busy; setting state pending to " << state);
+      m_trxStatePending = state;
+      return;  // Send PlmeSetTRXStateConfirm later
+    }
+
+  // specification talks about being in RX_ON and having received
+  // a valid SFD.  Here, we are not modelling at that level of
+  // granularity, so we just test for BUSY_RX state (any part of
+  // a packet being actively received)
+  if (state == IEEE_802_15_4_PHY_TRX_OFF)
+    {
+      CancelEd (state);
+
+      if ((m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+          && (m_currentRxPacket.first) && (!m_currentRxPacket.second))
+        {
+          NS_LOG_DEBUG ("Receiver has valid SFD; defer state change");
+          m_trxStatePending = state;
+          return;  // Send PlmeSetTRXStateConfirm later
+        }
+      else if (m_trxState == IEEE_802_15_4_PHY_RX_ON || m_trxState == IEEE_802_15_4_PHY_TX_ON)
+        {
+          ChangeTrxState (IEEE_802_15_4_PHY_TRX_OFF);
+          if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+            {
+              m_plmeSetTRXStateConfirmCallback (state);
+            }
+          return;
+        }
+    }
+
+  if (state == IEEE_802_15_4_PHY_TX_ON)
+    {
+      CancelEd (state);
+
+      NS_LOG_DEBUG ("turn on PHY_TX_ON");
+      if ((m_trxState == IEEE_802_15_4_PHY_BUSY_RX) || (m_trxState == IEEE_802_15_4_PHY_RX_ON))
+        {
+          if (m_currentRxPacket.first)
+            {
+              //terminate reception if needed
+              //incomplete reception -- force packet discard
+              NS_LOG_DEBUG ("force TX_ON, terminate reception");
+              m_currentRxPacket.second = true;
+            }
+
+          // If CCA is in progress, cancel CCA and return BUSY.
+          if (!m_ccaRequest.IsExpired ())
+            {
+              m_ccaRequest.Cancel ();
+              if (!m_plmeCcaConfirmCallback.IsNull ())
+                {
+                  m_plmeCcaConfirmCallback (IEEE_802_15_4_PHY_BUSY);
+                }
+            }
+
+          m_trxStatePending = IEEE_802_15_4_PHY_TX_ON;
+
+          // Delay for turnaround time
+          // TODO: Does it also take aTurnaroundTime to switch the transceiver state,
+          //       even when the receiver is not busy? (6.9.2)
+          Time setTime = Seconds ( (double) aTurnaroundTime / GetDataOrSymbolRate (false));
+          m_setTRXState = Simulator::Schedule (setTime, &LrWpanPhy::EndSetTRXState, this);
+          return;
+        }
+      else if (m_trxState == IEEE_802_15_4_PHY_BUSY_TX || m_trxState == IEEE_802_15_4_PHY_TX_ON)
+        {
+          // We do NOT change the transceiver state here. We only report that
+          // the transceiver is already in TX_ON state.
+          if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+            {
+              m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_TX_ON);
+            }
+          return;
+        }
+      else if (m_trxState == IEEE_802_15_4_PHY_TRX_OFF)
+        {
+          ChangeTrxState (IEEE_802_15_4_PHY_TX_ON);
+          if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+            {
+              m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_TX_ON);
+            }
+          return;
+        }
+    }
+
+  if (state == IEEE_802_15_4_PHY_FORCE_TRX_OFF)
+    {
+      if (m_trxState == IEEE_802_15_4_PHY_TRX_OFF)
+        {
+          NS_LOG_DEBUG ("force TRX_OFF, was already off");
+        }
+      else
+        {
+          NS_LOG_DEBUG ("force TRX_OFF, SUCCESS");
+          if (m_currentRxPacket.first)
+            {   //terminate reception if needed
+                //incomplete reception -- force packet discard
+              NS_LOG_DEBUG ("force TRX_OFF, terminate reception");
+              m_currentRxPacket.second = true;
+            }
+          if (m_trxState == IEEE_802_15_4_PHY_BUSY_TX)
+            {
+              NS_LOG_DEBUG ("force TRX_OFF, terminate transmission");
+              m_currentTxPacket.second = true;
+            }
+          ChangeTrxState (IEEE_802_15_4_PHY_TRX_OFF);
+          // Clear any other state
+          m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+        }
+      if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+        {
+          m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_SUCCESS);
+        }
+      return;
+    }
+
+  if (state == IEEE_802_15_4_PHY_RX_ON)
+    {
+      if (m_trxState == IEEE_802_15_4_PHY_TX_ON || m_trxState == IEEE_802_15_4_PHY_TRX_OFF)
+        {
+          // Turnaround delay
+          // TODO: Does it really take aTurnaroundTime to switch the transceiver state,
+          //       even when the transmitter is not busy? (6.9.1)
+          m_trxStatePending = IEEE_802_15_4_PHY_RX_ON;
+
+          Time setTime = Seconds ( (double) aTurnaroundTime / GetDataOrSymbolRate (false));
+          m_setTRXState = Simulator::Schedule (setTime, &LrWpanPhy::EndSetTRXState, this);
+          return;
+        }
+      else if (m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+        {
+          if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+            {
+              m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_RX_ON);
+            }
+          return;
+        }
+    }
+
+  NS_FATAL_ERROR ("Unexpected transition from state " << m_trxState << " to state " << state);
+}
+
+bool
+LrWpanPhy::ChannelSupported (uint8_t channel)
+{
+  NS_LOG_FUNCTION (this << channel);
+  bool retValue = false;
+
+  for (uint32_t i = 0; i < 32; i++)
+    {
+      if ((m_phyPIBAttributes.phyChannelsSupported[i] & (1 << channel)) != 0)
+        {
+          retValue = true;
+          break;
+        }
+    }
+
+  return retValue;
+}
+
+void
+LrWpanPhy::PlmeSetAttributeRequest (LrWpanPibAttributeIdentifier id,
+                                    LrWpanPhyPibAttributes* attribute)
+{
+  NS_LOG_FUNCTION (this << id << attribute);
+  NS_ASSERT (attribute);
+  LrWpanPhyEnumeration status = IEEE_802_15_4_PHY_SUCCESS;
+
+  switch (id)
+    {
+    case phyCurrentChannel:
+      {
+        if (!ChannelSupported (attribute->phyCurrentChannel))
+          {
+            status = IEEE_802_15_4_PHY_INVALID_PARAMETER;
+          }
+        if (m_phyPIBAttributes.phyCurrentChannel != attribute->phyCurrentChannel)
+          {
+            // Cancel a pending tranceiver state change.
+            // Switch off the transceiver.
+            // TODO: Is switching off the transceiver the right choice?
+            m_trxState = IEEE_802_15_4_PHY_TRX_OFF;
+            if (m_trxStatePending != IEEE_802_15_4_PHY_IDLE)
+              {
+                m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+                m_setTRXState.Cancel ();
+                if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+                  {
+                    m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_TRX_OFF);
+                  }
+              }
+
+            // Any packet in transmission or reception will be corrupted.
+            if (m_currentRxPacket.first)
+              {
+                m_currentRxPacket.second = true;
+              }
+            if (PhyIsBusy ())
+              {
+                m_currentTxPacket.second = true;
+                m_pdDataRequest.Cancel ();
+                m_currentTxPacket.first = 0;
+                if (!m_pdDataConfirmCallback.IsNull ())
+                  {
+                    m_pdDataConfirmCallback (IEEE_802_15_4_PHY_TRX_OFF);
+                  }
+              }
+            m_phyPIBAttributes.phyCurrentChannel = attribute->phyCurrentChannel;
+          }
+        break;
+      }
+    case phyChannelsSupported:
+      {   // only the first element is considered in the array
+        if ((attribute->phyChannelsSupported[0] & 0xf8000000) != 0)
+          {    //5 MSBs reserved
+            status = IEEE_802_15_4_PHY_INVALID_PARAMETER;
+          }
+        else
+          {
+            m_phyPIBAttributes.phyChannelsSupported[0] = attribute->phyChannelsSupported[0];
+          }
+        break;
+      }
+    case phyTransmitPower:
+      {
+        if (attribute->phyTransmitPower > 0xbf)
+          {
+            status = IEEE_802_15_4_PHY_INVALID_PARAMETER;
+          }
+        else
+          {
+            m_phyPIBAttributes.phyTransmitPower = attribute->phyTransmitPower;
+            LrWpanSpectrumValueHelper psdHelper;
+            m_txPsd = psdHelper.CreateTxPowerSpectralDensity (m_phyPIBAttributes.phyTransmitPower, m_phyPIBAttributes.phyCurrentChannel);
+          }
+        break;
+      }
+    case phyCCAMode:
+      {
+        if ((attribute->phyCCAMode < 1) || (attribute->phyCCAMode > 3))
+          {
+            status = IEEE_802_15_4_PHY_INVALID_PARAMETER;
+          }
+        else
+          {
+            m_phyPIBAttributes.phyCCAMode = attribute->phyCCAMode;
+          }
+        break;
+      }
+    default:
+      {
+        status = IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE;
+        break;
+      }
+    }
+
+  if (!m_plmeSetAttributeConfirmCallback.IsNull ())
+    {
+      m_plmeSetAttributeConfirmCallback (status, id);
+    }
+}
+
+void
+LrWpanPhy::SetPdDataIndicationCallback (PdDataIndicationCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_pdDataIndicationCallback = c;
+}
+
+void
+LrWpanPhy::SetPdDataConfirmCallback (PdDataConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_pdDataConfirmCallback = c;
+}
+
+void
+LrWpanPhy::SetPlmeCcaConfirmCallback (PlmeCcaConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_plmeCcaConfirmCallback = c;
+}
+
+void
+LrWpanPhy::SetPlmeEdConfirmCallback (PlmeEdConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_plmeEdConfirmCallback = c;
+}
+
+void
+LrWpanPhy::SetPlmeGetAttributeConfirmCallback (PlmeGetAttributeConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_plmeGetAttributeConfirmCallback = c;
+}
+
+void
+LrWpanPhy::SetPlmeSetTRXStateConfirmCallback (PlmeSetTRXStateConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_plmeSetTRXStateConfirmCallback = c;
+}
+
+void
+LrWpanPhy::SetPlmeSetAttributeConfirmCallback (PlmeSetAttributeConfirmCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_plmeSetAttributeConfirmCallback = c;
+}
+
+void
+LrWpanPhy::ChangeTrxState (LrWpanPhyEnumeration newState)
+{
+  NS_LOG_LOGIC (this << " state: " << m_trxState << " -> " << newState);
+  m_trxStateLogger (Simulator::Now (), m_trxState, newState);
+  m_trxState = newState;
+}
+
+bool
+LrWpanPhy::PhyIsBusy (void) const
+{
+  NS_LOG_FUNCTION (this << m_trxState);
+  return ((m_trxState == IEEE_802_15_4_PHY_BUSY_TX)
+          || (m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+          || (m_trxState == IEEE_802_15_4_PHY_BUSY));
+}
+
+void
+LrWpanPhy::CancelEd (LrWpanPhyEnumeration state)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (state == IEEE_802_15_4_PHY_TRX_OFF || state == IEEE_802_15_4_PHY_TX_ON);
+
+  if (!m_edRequest.IsExpired ())
+    {
+      m_edRequest.Cancel ();
+      if (!m_plmeEdConfirmCallback.IsNull ())
+        {
+          m_plmeEdConfirmCallback (state, 0);
+        }
+    }
+}
+
+void
+LrWpanPhy::EndEd (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_edPower.averagePower += LrWpanSpectrumValueHelper::TotalAvgPower (m_signal->GetSignalPsd ()) * (Simulator::Now () - m_edPower.lastUpdate).GetTimeStep () / m_edPower.measurementLength.GetTimeStep ();
+
+  uint8_t energyLevel;
+
+  // Per IEEE802.15.4-2006 sec 6.9.7
+  double ratio = m_edPower.averagePower / m_rxSensitivity;
+  ratio = 10.0 * log10 (ratio);
+  if (ratio <= 10.0)
+    {  // less than 10 dB
+      energyLevel = 0;
+    }
+  else if (ratio >= 40.0)
+    { // less than 40 dB
+      energyLevel = 255;
+    }
+  else
+    {
+      // in-between with linear increase per sec 6.9.7
+      energyLevel = static_cast<uint8_t> (((ratio - 10.0) / 30.0) * 255.0);
+    }
+
+  if (!m_plmeEdConfirmCallback.IsNull ())
+    {
+      m_plmeEdConfirmCallback (IEEE_802_15_4_PHY_SUCCESS, energyLevel);
+    }
+}
+
+void
+LrWpanPhy::EndCca (void)
+{
+  NS_LOG_FUNCTION (this);
+  LrWpanPhyEnumeration sensedChannelState = IEEE_802_15_4_PHY_UNSPECIFIED;
+
+  // Update peak power.
+  double power = LrWpanSpectrumValueHelper::TotalAvgPower (m_signal->GetSignalPsd ());
+  if (m_ccaPeakPower < power)
+    {
+      m_ccaPeakPower = power;
+    }
+
+  if (PhyIsBusy ())
+    {
+      sensedChannelState = IEEE_802_15_4_PHY_BUSY;
+    }
+  else if (m_phyPIBAttributes.phyCCAMode == 1)
+    { //sec 6.9.9 ED detection
+      // -- ED threshold at most 10 dB above receiver sensitivity.
+      if (10 * log10 (m_ccaPeakPower / m_rxSensitivity) >= 10.0)
+        {
+          sensedChannelState = IEEE_802_15_4_PHY_BUSY;
+        }
+      else
+        {
+          sensedChannelState = IEEE_802_15_4_PHY_IDLE;
+        }
+    }
+  else if (m_phyPIBAttributes.phyCCAMode == 2)
+    {
+      //sec 6.9.9 carrier sense only
+      if (m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+        {
+          // We currently do not model PPDU reception in detail. Instead we model
+          // packet reception starting with the first bit of the preamble.
+          // Therefore, this code will never be reached, as PhyIsBusy() would
+          // already lead to a channel busy condition.
+          // TODO: Change this, if we also model preamble and SFD detection.
+          sensedChannelState = IEEE_802_15_4_PHY_BUSY;
+        }
+      else
+        {
+          sensedChannelState = IEEE_802_15_4_PHY_IDLE;
+        }
+    }
+  else if (m_phyPIBAttributes.phyCCAMode == 3)
+    { //sect 6.9.9 both
+      if ((10 * log10 (m_ccaPeakPower / m_rxSensitivity) >= 10.0)
+          && m_trxState == IEEE_802_15_4_PHY_BUSY_RX)
+        {
+          // Again, this code will never be reached, if we are already receiving
+          // a packet, as PhyIsBusy() would already lead to a channel busy condition.
+          // TODO: Change this, if we also model preamble and SFD detection.
+          sensedChannelState = IEEE_802_15_4_PHY_BUSY;
+        }
+      else
+        {
+          sensedChannelState = IEEE_802_15_4_PHY_IDLE;
+        }
+    }
+  else
+    {
+      NS_ASSERT_MSG (false, "Invalid CCA mode");
+    }
+
+  NS_LOG_LOGIC (this << "channel sensed state: " << sensedChannelState);
+
+  if (!m_plmeCcaConfirmCallback.IsNull ())
+    {
+      m_plmeCcaConfirmCallback (sensedChannelState);
+    }
+}
+
+void
+LrWpanPhy::EndSetTRXState (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  NS_ABORT_IF ( (m_trxStatePending != IEEE_802_15_4_PHY_RX_ON) && (m_trxStatePending != IEEE_802_15_4_PHY_TX_ON) );
+  ChangeTrxState (m_trxStatePending);
+  m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+
+  if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+    {
+      m_plmeSetTRXStateConfirmCallback (m_trxState);
+    }
+}
+
+void
+LrWpanPhy::EndTx (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  NS_ABORT_IF ( (m_trxState != IEEE_802_15_4_PHY_BUSY_TX) && (m_trxState != IEEE_802_15_4_PHY_TRX_OFF));
+
+  if (m_currentTxPacket.second == false)
+    {
+      NS_LOG_DEBUG ("Packet successfully transmitted");
+      m_phyTxEndTrace (m_currentTxPacket.first);
+      if (!m_pdDataConfirmCallback.IsNull ())
+        {
+          m_pdDataConfirmCallback (IEEE_802_15_4_PHY_SUCCESS);
+        }
+    }
+  else
+    {
+      NS_LOG_DEBUG ("Packet transmission aborted");
+      m_phyTxDropTrace (m_currentTxPacket.first);
+      if (!m_pdDataConfirmCallback.IsNull ())
+        {
+          // See if this is ever entered in another state
+          NS_ASSERT (m_trxState ==  IEEE_802_15_4_PHY_TRX_OFF);
+          m_pdDataConfirmCallback (m_trxState);
+        }
+    }
+  m_currentTxPacket.first = 0;
+  m_currentTxPacket.second = false;
+
+
+  // We may be waiting to apply a pending state change.
+  if (m_trxStatePending != IEEE_802_15_4_PHY_IDLE)
+    {
+      // Only change the state immediately, if the transceiver is not already
+      // switching the state.
+      if (!m_setTRXState.IsRunning ())
+        {
+          NS_LOG_LOGIC ("Apply pending state change to " << m_trxStatePending);
+          ChangeTrxState (m_trxStatePending);
+          m_trxStatePending = IEEE_802_15_4_PHY_IDLE;
+          if (!m_plmeSetTRXStateConfirmCallback.IsNull ())
+            {
+              m_plmeSetTRXStateConfirmCallback (IEEE_802_15_4_PHY_SUCCESS);
+            }
+        }
+    }
+  else
+    {
+      if (m_trxState != IEEE_802_15_4_PHY_TRX_OFF)
+        {
+          ChangeTrxState (IEEE_802_15_4_PHY_TX_ON);
+        }
+    }
+}
+
+Time
+LrWpanPhy::CalculateTxTime (Ptr<const Packet> packet)
+{
+  NS_LOG_FUNCTION (this << packet);
+
+  bool isData = true;
+  Time txTime = GetPpduHeaderTxTime ();
+
+  txTime += Seconds (packet->GetSize () * 8.0 / GetDataOrSymbolRate (isData));
+
+  return txTime;
+}
+
+double
+LrWpanPhy::GetDataOrSymbolRate (bool isData)
+{
+  NS_LOG_FUNCTION (this << isData);
+
+  double rate = 0.0;
+
+  NS_ASSERT (m_phyOption < IEEE_802_15_4_INVALID_PHY_OPTION);
+
+  if (isData)
+    {
+      rate = dataSymbolRates [m_phyOption].bitRate;
+    }
+  else
+    {
+      rate = dataSymbolRates [m_phyOption].symbolRate;
+    }
+
+  return (rate * 1000.0);
+}
+
+Time
+LrWpanPhy::GetPpduHeaderTxTime (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool isData = false;
+  double totalPpduHdrSymbols;
+
+  NS_ASSERT (m_phyOption < IEEE_802_15_4_INVALID_PHY_OPTION);
+
+  totalPpduHdrSymbols = ppduHeaderSymbolNumbers[m_phyOption].shrPreamble
+    + ppduHeaderSymbolNumbers[m_phyOption].shrSfd
+    + ppduHeaderSymbolNumbers[m_phyOption].phr;
+
+  return Seconds (totalPpduHdrSymbols / GetDataOrSymbolRate (isData));
+}
+
+// IEEE802.15.4-2006 Table 2 in section 6.1.2
+void
+LrWpanPhy::SetMyPhyOption (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_phyOption = IEEE_802_15_4_INVALID_PHY_OPTION;
+
+  if (m_phyPIBAttributes.phyCurrentPage == 0)
+    {
+      if (m_phyPIBAttributes.phyCurrentChannel == 0)
+        {  // 868 MHz BPSK
+          m_phyOption = IEEE_802_15_4_868MHZ_BPSK;
+        }
+      else if (m_phyPIBAttributes.phyCurrentChannel <= 10)
+        {  // 915 MHz BPSK
+          m_phyOption = IEEE_802_15_4_915MHZ_BPSK;
+        }
+      else if (m_phyPIBAttributes.phyCurrentChannel <= 26)
+        {  // 2.4 GHz MHz O-QPSK
+          m_phyOption = IEEE_802_15_4_2_4GHZ_OQPSK;
+        }
+    }
+  else if (m_phyPIBAttributes.phyCurrentPage == 1)
+    {
+      if (m_phyPIBAttributes.phyCurrentChannel == 0)
+        {  // 868 MHz ASK
+          m_phyOption = IEEE_802_15_4_868MHZ_ASK;
+        }
+      else if (m_phyPIBAttributes.phyCurrentChannel <= 10)
+        {  // 915 MHz ASK
+          m_phyOption = IEEE_802_15_4_915MHZ_ASK;
+        }
+    }
+  else if (m_phyPIBAttributes.phyCurrentPage == 2)
+    {
+      if (m_phyPIBAttributes.phyCurrentChannel == 0)
+        {  // 868 MHz O-QPSK
+          m_phyOption = IEEE_802_15_4_868MHZ_OQPSK;
+        }
+      else if (m_phyPIBAttributes.phyCurrentChannel <= 10)
+        {  // 915 MHz O-QPSK
+          m_phyOption = IEEE_802_15_4_915MHZ_OQPSK;
+        }
+    }
+}
+
+LrWpanPhyOption
+LrWpanPhy::GetMyPhyOption (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_phyOption;
+}
+
+void
+LrWpanPhy::SetTxPowerSpectralDensity (Ptr<SpectrumValue> txPsd)
+{
+  NS_LOG_FUNCTION (this << txPsd);
+  NS_ASSERT (txPsd);
+  m_txPsd = txPsd;
+  NS_LOG_INFO ("\t computed tx_psd: " << *txPsd << "\t stored tx_psd: " << *m_txPsd);
+}
+
+void
+LrWpanPhy::SetNoisePowerSpectralDensity (Ptr<const SpectrumValue> noisePsd)
+{
+  NS_LOG_FUNCTION (this << noisePsd);
+  NS_LOG_INFO ("\t computed noise_psd: " << *noisePsd );
+  NS_ASSERT (noisePsd);
+  m_noise = noisePsd;
+}
+
+Ptr<const SpectrumValue>
+LrWpanPhy::GetNoisePowerSpectralDensity (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_noise;
+}
+
+void
+LrWpanPhy::SetErrorModel (Ptr<LrWpanErrorModel> e)
+{
+  NS_LOG_FUNCTION (this << e);
+  NS_ASSERT (e);
+  m_errorModel = e;
+}
+
+Ptr<LrWpanErrorModel>
+LrWpanPhy::GetErrorModel (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_errorModel;
+}
+
+uint64_t
+LrWpanPhy::GetPhySHRDuration (void) const
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (m_phyOption < IEEE_802_15_4_INVALID_PHY_OPTION);
+
+  return ppduHeaderSymbolNumbers[m_phyOption].shrPreamble
+         + ppduHeaderSymbolNumbers[m_phyOption].shrSfd;
+}
+
+double
+LrWpanPhy::GetPhySymbolsPerOctet (void) const
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (m_phyOption < IEEE_802_15_4_INVALID_PHY_OPTION);
+
+  return dataSymbolRates [m_phyOption].symbolRate / (dataSymbolRates [m_phyOption].bitRate / 8);
+}
+
+int64_t
+LrWpanPhy::AssignStreams (int64_t stream)
+{
+  NS_LOG_FUNCTION (this);
+  m_random->SetStream (stream);
+  return 1;
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-phy.h ns-3.20/src/lr-wpan/model/lr-wpan-phy.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-phy.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-phy.h	2014-06-17 10:33:13.907995853 -0700
@@ -0,0 +1,784 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Gary Pei <guangyu.pei@boeing.com>
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+#ifndef LR_WPAN_PHY_H
+#define LR_WPAN_PHY_H
+
+#include "lr-wpan-interference-helper.h"
+
+#include <ns3/spectrum-phy.h>
+#include <ns3/traced-callback.h>
+#include <ns3/event-id.h>
+
+namespace ns3 {
+
+class Packet;
+class SpectrumValue;
+class LrWpanErrorModel;
+struct LrWpanSpectrumSignalParameters;
+class MobilityModel;
+class SpectrumChannel;
+class SpectrumModel;
+class AntennaModel;
+class NetDevice;
+class UniformRandomVariable;
+
+/**
+ * Helper structure to manage the power measurement during ED.
+ */
+typedef struct
+{
+  double averagePower;
+  Time lastUpdate;
+  Time measurementLength;
+} LrWpanEdPower;
+
+/**
+ * IEEE802.15.4-2006 Table 1 and 2 in section 6.1.1 and 6.1.2
+ */
+typedef  struct
+{
+  double bitRate;
+  double symbolRate;
+} LrWpanPhyDataAndSymbolRates;
+
+/**
+ * IEEE802.15.4-2006 Figure 16, Table 19 and 20 in section 6.3
+ * this data structure provides number of symbols for the PPDU headers: SHR and PHR
+ */
+typedef  struct
+{
+  double shrPreamble;
+  double shrSfd;
+  double phr;
+} LrWpanPhyPpduHeaderSymbolNumber;
+
+/**
+ * This Phy option will be used to index various Tables in IEEE802.15.4-2006
+ */
+typedef enum
+{
+  IEEE_802_15_4_868MHZ_BPSK         = 0,
+  IEEE_802_15_4_915MHZ_BPSK         = 1,
+  IEEE_802_15_4_868MHZ_ASK          = 2,
+  IEEE_802_15_4_915MHZ_ASK          = 3,
+  IEEE_802_15_4_868MHZ_OQPSK        = 4,
+  IEEE_802_15_4_915MHZ_OQPSK        = 5,
+  IEEE_802_15_4_2_4GHZ_OQPSK        = 6,
+  IEEE_802_15_4_INVALID_PHY_OPTION  = 7
+} LrWpanPhyOption;
+
+/**
+ * IEEE802.15.4-2006 PHY Emumerations Table 18
+ * in section 6.2.3
+ */
+typedef enum
+{
+  IEEE_802_15_4_PHY_BUSY  = 0x00,
+  IEEE_802_15_4_PHY_BUSY_RX = 0x01,
+  IEEE_802_15_4_PHY_BUSY_TX = 0x02,
+  IEEE_802_15_4_PHY_FORCE_TRX_OFF = 0x03,
+  IEEE_802_15_4_PHY_IDLE = 0x04,
+  IEEE_802_15_4_PHY_INVALID_PARAMETER = 0x05,
+  IEEE_802_15_4_PHY_RX_ON = 0x06,
+  IEEE_802_15_4_PHY_SUCCESS = 0x07,
+  IEEE_802_15_4_PHY_TRX_OFF = 0x08,
+  IEEE_802_15_4_PHY_TX_ON = 0x09,
+  IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE = 0xa,
+  IEEE_802_15_4_PHY_READ_ONLY = 0xb,
+  IEEE_802_15_4_PHY_UNSPECIFIED = 0xc // all cases not covered by ieee802.15.4
+} LrWpanPhyEnumeration;
+
+/**
+ * IEEE802.15.4-2006 PHY PIB Attribute Identifiers Table 23 in section 6.4.2
+ */
+typedef enum
+{
+  phyCurrentChannel = 0x00,
+  phyChannelsSupported = 0x01,
+  phyTransmitPower = 0x02,
+  phyCCAMode = 0x03,
+  phyCurrentPage = 0x04,
+  phyMaxFrameDuration = 0x05,
+  phySHRDuration = 0x06,
+  phySymbolsPerOctet = 0x07
+} LrWpanPibAttributeIdentifier;
+
+/**
+ * IEEE802.15.4-2006 PHY PIB Attributes Table 23 in section 6.4.2
+ */
+typedef struct
+{
+  uint8_t phyCurrentChannel;
+  uint32_t phyChannelsSupported[32];
+  uint8_t phyTransmitPower;
+  uint8_t phyCCAMode;
+  uint32_t phyCurrentPage;
+  uint32_t phyMaxFrameDuration;
+  uint32_t phySHRDuration;
+  double phySymbolsPerOctet;
+} LrWpanPhyPibAttributes;
+
+/**
+ * This method implements the PD SAP: PdDataIndication
+ *
+ *  @param psduLength number of bytes in the PSDU
+ *  @param p the packet to be transmitted
+ *  @param lqi Link quality (LQI) value measured during reception of the PPDU
+ */
+typedef Callback< void, uint32_t, Ptr<Packet>, uint8_t > PdDataIndicationCallback;
+
+/**
+ * This method implements the PD SAP: PdDataConfirm
+ *
+ * @param status the status to be transmitted
+ */
+typedef Callback< void, LrWpanPhyEnumeration > PdDataConfirmCallback;
+
+/**
+ * This method implements the PD SAP: PlmeCcaConfirm
+ *
+ * @param status the status of CCA
+ */
+typedef Callback< void, LrWpanPhyEnumeration > PlmeCcaConfirmCallback;
+
+/**
+ * This method implements the PD SAP: PlmeEdConfirm
+ *
+ * @param status the status of ED
+ * @param energyLevel the energy level of ED
+ */
+typedef Callback< void, LrWpanPhyEnumeration,uint8_t > PlmeEdConfirmCallback;
+
+/**
+ * This method implements the PD SAP: PlmeGetAttributeConfirm
+ *
+ * @param status the status of PlmeGetAttributeRequest
+ * @param id the identifier of attribute
+ * @param attribute the pointer to attribute struct
+ */
+typedef Callback< void, LrWpanPhyEnumeration,
+                  LrWpanPibAttributeIdentifier,
+                  LrWpanPhyPibAttributes* > PlmeGetAttributeConfirmCallback;
+
+/**
+ * This method implements the PD SAP: PlmeSetTRXStateConfirm
+ *
+ * @param status the status of PlmeSetTRXStateRequest
+ */
+typedef Callback< void, LrWpanPhyEnumeration > PlmeSetTRXStateConfirmCallback;
+
+/**
+ * This method implements the PD SAP: PlmeSetAttributeConfirm
+ *
+ * @param status the status of PlmeSetAttributeRequest
+ * @param id the identifier of attribute
+ */
+typedef Callback< void, LrWpanPhyEnumeration,
+                  LrWpanPibAttributeIdentifier > PlmeSetAttributeConfirmCallback;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * Make LrWpanPhy a SpectrumPhy so we can enable the eventual modeling of
+ * device interference
+ */
+class LrWpanPhy : public SpectrumPhy
+{
+
+public:
+  /**
+   * Get the type ID.
+   *
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * The maximum packet size accepted by the PHY.
+   * See Table 22 in section 6.4.1 of IEEE 802.15.4-2006
+   */
+  static const uint32_t aMaxPhyPacketSize;
+
+  /**
+   * The turnaround time for switching the transceiver from RX to TX or vice
+   * versa.
+   * See Table 22 in section 6.4.1 of IEEE 802.15.4-2006
+   */
+  static const uint32_t aTurnaroundTime;
+
+  /**
+   * Default constructor.
+   */
+  LrWpanPhy (void);
+  virtual ~LrWpanPhy (void);
+
+  // inherited from SpectrumPhy
+  void SetMobility (Ptr<MobilityModel> m);
+  Ptr<MobilityModel> GetMobility (void);
+  void SetChannel (Ptr<SpectrumChannel> c);
+
+  /**
+   * Get the currently attached channel.
+   *
+   * \return the channel
+   */
+  Ptr<SpectrumChannel> GetChannel (void);
+  void SetDevice (Ptr<NetDevice> d);
+  Ptr<NetDevice> GetDevice (void);
+
+  /**
+   * Set the attached antenna.
+   *
+   * \param a the antenna
+   */
+  void SetAntenna (Ptr<AntennaModel> a);
+  Ptr<AntennaModel> GetRxAntenna (void);
+  virtual Ptr<const SpectrumModel> GetRxSpectrumModel (void) const;
+
+  /**
+   * Set the Power Spectral Density of outgoing signals in W/Hz.
+   *
+   * @param txPsd the Power Spectral Density value
+   */
+  void SetTxPowerSpectralDensity (Ptr<SpectrumValue> txPsd);
+
+  /**
+   * Set the noise power spectral density.
+   *
+   * @param noisePsd the Noise Power Spectral Density in power units
+   * (Watt, Pascal...) per Hz.
+   */
+  void SetNoisePowerSpectralDensity (Ptr<const SpectrumValue> noisePsd);
+
+  /**
+   * Get the noise power spectral density.
+   *
+   * @return the Noise Power Spectral Density
+   */
+  Ptr<const SpectrumValue> GetNoisePowerSpectralDensity (void);
+
+  /**
+    * Notify the SpectrumPhy instance of an incoming waveform.
+    *
+    * @param params the SpectrumSignalParameters associated with the incoming waveform
+    */
+  virtual void StartRx (Ptr<SpectrumSignalParameters> params);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.1.1
+   *  PD-DATA.request
+   *  Request to transfer MPDU from MAC (transmitting)
+   *  @param psduLength number of bytes in the PSDU
+   *  @param p the packet to be transmitted
+   */
+  void PdDataRequest (const uint32_t psduLength, Ptr<Packet> p);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.1
+   *  PLME-CCA.request
+   *  Perform a CCA per section 6.9.9
+   */
+  void PlmeCcaRequest (void);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.3
+   *  PLME-ED.request
+   *  Perform an ED per section 6.9.7
+   */
+  void PlmeEdRequest (void);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.5
+   *  PLME-GET.request
+   *  Get attributes per definition from Table 23 in section 6.4.2
+   *  @param id the attributed identifier
+   */
+  void PlmeGetAttributeRequest (LrWpanPibAttributeIdentifier id);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.7
+   *  PLME-SET-TRX-STATE.request
+   *  Set PHY state
+   *  @param state in RX_ON,TRX_OFF,FORCE_TRX_OFF,TX_ON
+   */
+  void PlmeSetTRXStateRequest (LrWpanPhyEnumeration state);
+
+  /**
+   *  IEEE 802.15.4-2006 section 6.2.2.9
+   *  PLME-SET.request
+   *  Set attributes per definition from Table 23 in section 6.4.2
+   *  @param id the attributed identifier
+   *  @param attribute the attribute value
+   */
+  void PlmeSetAttributeRequest (LrWpanPibAttributeIdentifier id, LrWpanPhyPibAttributes* attribute);
+
+  /**
+   * set the callback for the end of a RX, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implements PD Indication SAP.
+   * @param c the callback
+   */
+  void SetPdDataIndicationCallback (PdDataIndicationCallback c);
+
+  /**
+   * set the callback for the end of a TX, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implements PD SAP.
+   * @param c the callback
+   */
+  void SetPdDataConfirmCallback (PdDataConfirmCallback c);
+
+  /**
+   * set the callback for the end of a CCA, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implement PLME CCA confirm SAP
+   * @param c the callback
+   */
+  void SetPlmeCcaConfirmCallback (PlmeCcaConfirmCallback c);
+
+  /**
+   * set the callback for the end of an ED, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implement PLME ED confirm SAP
+   * @param c the callback
+   */
+  void SetPlmeEdConfirmCallback (PlmeEdConfirmCallback c);
+
+  /**
+   * set the callback for the end of an GetAttribute, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implement PLME GetAttribute confirm SAP
+   * @param c the callback
+   */
+  void SetPlmeGetAttributeConfirmCallback (PlmeGetAttributeConfirmCallback c);
+
+  /**
+   * set the callback for the end of an SetTRXState, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implement PLME SetTRXState confirm SAP
+   * @param c the callback
+   */
+  void SetPlmeSetTRXStateConfirmCallback (PlmeSetTRXStateConfirmCallback c);
+
+  /**
+   * set the callback for the end of an SetAttribute, as part of the
+   * interconnections betweenthe PHY and the MAC. The callback
+   * implement PLME SetAttribute confirm SAP
+   * @param c the callback
+   */
+  void SetPlmeSetAttributeConfirmCallback (PlmeSetAttributeConfirmCallback c);
+
+  /**
+   * implement PLME SetAttribute confirm SAP
+   * @param isData is true for data rate or false for symbol rate
+   * @return the rate value of this PHY
+   */
+  double GetDataOrSymbolRate (bool isData);
+
+  /**
+   * set the error model to use
+   *
+   * @param e pointer to LrWpanErrorModel to use
+   */
+  void SetErrorModel (Ptr<LrWpanErrorModel> e);
+
+  /**
+   * get the error model in use
+   *
+   * @return pointer to LrWpanErrorModel in use
+   */
+  Ptr<LrWpanErrorModel> GetErrorModel (void) const;
+
+  /**
+   * Get the duration of the SHR (preamble and SFD) in symbols, depending on
+   * the currently selected channel.
+   *
+   * \return the SHR duration in symbols
+   */
+  uint64_t GetPhySHRDuration (void) const;
+
+  /**
+   * Get the number of symbols per octet, depending on the currently selected
+   * channel.
+   *
+   * \return the number of symbols per octet
+   */
+  double GetPhySymbolsPerOctet (void) const;
+
+  /**
+   * Assign a fixed random variable stream number to the random variables
+   * used by this model.  Return the number of streams that have been assigned.
+   *
+   * \param stream first stream index to use
+   * \return the number of stream indices assigned by this model
+   */
+  int64_t AssignStreams (int64_t stream);
+
+protected:
+  /**
+   * The data and symbol rates for the different PHY options.
+   * See Table 2 in section 6.1.2 IEEE 802.15.4-2006
+   */
+  static const LrWpanPhyDataAndSymbolRates dataSymbolRates[7];
+  /**
+   * The preamble, SFD, and PHR lengths in symbols for the different PHY options.
+   * See Table 19 and Table 20 in section 6.3 IEEE 802.15.4-2006
+   */
+  static const LrWpanPhyPpduHeaderSymbolNumber ppduHeaderSymbolNumbers[7];
+
+private:
+  /**
+   * The second is true if the first is flagged as error/invalid.
+   */
+  typedef std::pair<Ptr<Packet>, bool>  PacketAndStatus;
+
+  // Inherited from Object.
+  virtual void DoDispose (void);
+
+  /**
+   * Change the PHY state to the given new state, firing the state change trace.
+   *
+   * \param newState the new state
+   */
+  void ChangeTrxState (LrWpanPhyEnumeration newState);
+
+  /**
+   * Configure the PHY option according to the current channel and channel page.
+   * See IEEE 802.15.4-2006, section 6.1.2, Table 2.
+   */
+  void SetMyPhyOption (void);
+
+  /**
+   * Get the currently configured PHY option.
+   * See IEEE 802.15.4-2006, section 6.1.2, Table 2.
+   *
+   * \return the PHY option
+   */
+  LrWpanPhyOption GetMyPhyOption (void);
+
+  /**
+   * Finish the transmission of a frame. This is called at the end of a frame
+   * transmission, applying possibly pending PHY state changes and fireing the
+   * appropriate trace sources and confirm callbacks to the MAC.
+   */
+  void EndTx (void);
+
+  /**
+   * Check if the interference destroys a frame currently received. Called
+   * whenever a change in interference is detected.
+   */
+  void CheckInterference (void);
+
+  /**
+   * Finish the reception of a frame. This is called at the end of a frame
+   * reception, applying possibly pending PHY state changes and fireing the
+   * appropriate trace sources and indication callbacks to the MAC. A frame
+   * destroyed by noise/interference is dropped here, but not during reception.
+   * This method is also called for every packet which only contributes to
+   * interference.
+   *
+   * \param params signal parameters of the packet
+   */
+  void EndRx (Ptr<LrWpanSpectrumSignalParameters> params);
+
+  /**
+   * Cancel an ongoing ED procedure. This is called when the transceiver is
+   * switched off or set to TX mode. This calls the appropiate confirm callback
+   * of the MAC.
+   *
+   * \param state the new state which is the cause for canceling ED
+   */
+  void CancelEd (LrWpanPhyEnumeration state);
+
+  /**
+   * Called at the end of the ED procedure. The average energy detected is
+   * reported to the MAC.
+   */
+  void EndEd (void);
+
+  /**
+   * Called at the end of the CCA. The channel condition (busy or idle) is
+   * reported to the MAC or CSMA/CA.
+   */
+  void EndCca (void);
+
+  /**
+   * Called after applying a deferred transceiver state switch. The result of
+   * the state switch is reported to the MAC.
+   */
+  void EndSetTRXState (void);
+
+  /**
+   * Calculate the time required for sending the given packet, including
+   * preamble, SFD and PHR.
+   *
+   * \param packet the packet for which the transmission time should be calculated
+   * \return the time required for transmitting the packet
+   */
+  Time CalculateTxTime (Ptr<const Packet> packet);
+
+  /**
+   * Calculate the time required for sending the PPDU header, that is the
+   * preamble, SFD and PHR.
+   */
+  Time GetPpduHeaderTxTime (void);
+
+  /**
+   * Check if the given channel is supported by the PHY.
+   *
+   * \param channel the channel to check
+   * \return true, if the channel is supported, false otherwise
+   */
+  bool ChannelSupported (uint8_t channel);
+
+  /**
+   * Check if the PHY is busy, which is the case if the PHY is currently sending
+   * or receiving a frame.
+   *
+   * \return true, if the PHY is busy, false otherwise
+   */
+  bool PhyIsBusy (void) const;
+
+  // Trace sources
+  /**
+   * The trace source fired when a packet begins the transmission process on
+   * the medium.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_phyTxBeginTrace;
+
+  /**
+   * The trace source fired when a packet ends the transmission process on
+   * the medium.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_phyTxEndTrace;
+
+  /**
+   * The trace source fired when the phy layer drops a packet as it tries
+   * to transmit it.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_phyTxDropTrace;
+
+  /**
+   * The trace source fired when a packet begins the reception process from
+   * the medium.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_phyRxBeginTrace;
+
+  /**
+   * The trace source fired when a packet ends the reception process from
+   * the medium.  Second quantity is received SINR.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet>, double > m_phyRxEndTrace;
+
+  /**
+   * The trace source fired when the phy layer drops a packet it has received.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Ptr<const Packet> > m_phyRxDropTrace;
+
+  /**
+   * The trace source fired when the phy layer changes the transceiver state.
+   *
+   * \see class CallBackTraceSource
+   */
+  TracedCallback<Time, LrWpanPhyEnumeration, LrWpanPhyEnumeration> m_trxStateLogger;
+
+  /**
+   * The mobility model used by the PHY.
+   */
+  Ptr<MobilityModel> m_mobility;
+
+  /**
+   * The configured net device.
+   */
+  Ptr<NetDevice> m_device;
+
+  /**
+   * The channel attached to this transceiver.
+   */
+  Ptr<SpectrumChannel> m_channel;
+
+  /**
+   * The antenna used by the transceiver.
+   */
+  Ptr<AntennaModel> m_antenna;
+
+  /**
+   * The transmit power spectral density.
+   */
+  Ptr<SpectrumValue> m_txPsd;
+
+  /**
+   * The spectral density for for the noise.
+   */
+  Ptr<const SpectrumValue> m_noise;
+
+  /**
+   * The error model describing the bit and packet error rates.
+   */
+  Ptr<LrWpanErrorModel> m_errorModel;
+  LrWpanPhyPibAttributes m_phyPIBAttributes;
+
+  // State variables
+  /**
+   * The current transceiver state.
+   */
+  LrWpanPhyEnumeration m_trxState;
+
+  /**
+   * The next pending state to applied after the current action of the PHY is
+   * completed.
+   */
+  LrWpanPhyEnumeration m_trxStatePending;
+
+  // Callbacks
+  /**
+   * This callback is used to notify incoming packets to the MAC layer.
+   * See IEEE 802.15.4-2006, section 6.2.1.3.
+   */
+  PdDataIndicationCallback m_pdDataIndicationCallback;
+
+  /**
+   * This callback is used to report packet transmission status to the MAC layer.
+   * See IEEE 802.15.4-2006, section 6.2.1.2.
+   */
+  PdDataConfirmCallback m_pdDataConfirmCallback;
+
+  /**
+   * This callback is used to report CCA status to the MAC or CSMA/CA.
+   * See IEEE 802.15.4-2006, section 6.2.2.2.
+   */
+  PlmeCcaConfirmCallback m_plmeCcaConfirmCallback;
+
+  /**
+   * This callback is used to report ED status to the MAC.
+   * See IEEE 802.15.4-2006, section 6.2.2.4.
+   */
+  PlmeEdConfirmCallback m_plmeEdConfirmCallback;
+
+  /**
+   * This callback is used to report requested attribute values back to the MAC.
+   * See IEEE 802.15.4-2006, section 6.2.2.6.
+   */
+  PlmeGetAttributeConfirmCallback m_plmeGetAttributeConfirmCallback;
+
+  /**
+   * This callback is used to report transceiver state change status to the MAC.
+   * See IEEE 802.15.4-2006, section 6.2.2.8.
+   */
+  PlmeSetTRXStateConfirmCallback m_plmeSetTRXStateConfirmCallback;
+
+  /**
+   * This callback is used to report attribute set results back to the MAC.
+   * See IEEE 802.15.4-2006, section 6.2.2.10.
+   */
+  PlmeSetAttributeConfirmCallback m_plmeSetAttributeConfirmCallback;
+
+  /**
+   * The currently configured PHY type.
+   */
+  LrWpanPhyOption m_phyOption;
+
+  /**
+   * Helper value for tracking the average power during ED.
+   */
+  LrWpanEdPower m_edPower;
+
+  /**
+   * Helper value for the peak power value during CCA.
+   */
+  double m_ccaPeakPower;
+
+  /**
+   * The receiver sensitivity.
+   */
+  double m_rxSensitivity;
+
+  /**
+   * The accumulated signals currently received by the transceiver, including
+   * the signal of a possibly received packet, as well as all signals
+   * considered noise.
+   */
+  Ptr<LrWpanInterferenceHelper> m_signal;
+
+  /**
+   * Timestamp of the last calculation of the PER of a packet currently received.
+   */
+  Time m_rxLastUpdate;
+
+  /**
+   * Statusinformation of the currently received packet. The first parameter
+   * contains the frame, as well the signal power of the frame. The second
+   * parameter is set to false, if the frame is either invalid or destroyed
+   * due to interference.
+   */
+  std::pair<Ptr<LrWpanSpectrumSignalParameters>, bool>  m_currentRxPacket;
+
+  /**
+   * Statusinformation of the currently transmitted packet. The first parameter
+   * contains the frame. The second parameter is set to false, if the frame not
+   * completely transmitted, in the event of a force transceiver switch, for
+   * example.
+   */
+  PacketAndStatus m_currentTxPacket;
+
+  /**
+   * Scheduler event of a currently running CCA request.
+   */
+  EventId m_ccaRequest;
+
+  /**
+   * Scheduler event of a currently running ED request.
+   */
+  EventId m_edRequest;
+
+  /**
+   * Scheduler event of a currently running deferred transceiver state switch.
+   */
+  EventId m_setTRXState;
+
+  /**
+   * Scheduler event of a currently running data transmission request.
+   */
+  EventId m_pdDataRequest;
+
+  /**
+   * Uniform random variable stream.
+   */
+  Ptr<UniformRandomVariable> m_random;
+};
+
+
+} // namespace ns3
+
+#endif /* LR_WPAN_PHY_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.cc ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.cc	2014-06-17 10:33:13.907995853 -0700
@@ -0,0 +1,48 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include "lr-wpan-spectrum-signal-parameters.h"
+#include <ns3/log.h>
+#include <ns3/packet-burst.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanSpectrumSignalParameters");
+
+namespace ns3 {
+
+LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters (void)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+LrWpanSpectrumSignalParameters::LrWpanSpectrumSignalParameters (const LrWpanSpectrumSignalParameters& p)
+  : SpectrumSignalParameters (p)
+{
+  NS_LOG_FUNCTION (this << &p);
+  packetBurst = p.packetBurst->Copy ();
+}
+
+Ptr<SpectrumSignalParameters>
+LrWpanSpectrumSignalParameters::Copy (void)
+{
+  NS_LOG_FUNCTION (this);
+  return Create<LrWpanSpectrumSignalParameters> (*this);
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.h ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-signal-parameters.h	2014-06-17 10:33:13.907995853 -0700
@@ -0,0 +1,61 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+
+#ifndef LR_WPAN_SPECTRUM_SIGNAL_PARAMETERS_H
+#define LR_WPAN_SPECTRUM_SIGNAL_PARAMETERS_H
+
+
+#include <ns3/spectrum-signal-parameters.h>
+
+namespace ns3 {
+
+class PacketBurst;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * Signal parameters for LrWpan.
+ */
+struct LrWpanSpectrumSignalParameters : public SpectrumSignalParameters
+{
+
+  // inherited from SpectrumSignalParameters
+  virtual Ptr<SpectrumSignalParameters> Copy (void);
+
+  /**
+   * default constructor
+   */
+  LrWpanSpectrumSignalParameters (void);
+
+  /**
+   * copy constructor
+   */
+  LrWpanSpectrumSignalParameters (const LrWpanSpectrumSignalParameters& p);
+
+  /**
+   * The packet burst being transmitted with this signal
+   */
+  Ptr<PacketBurst> packetBurst;
+};
+
+}  // namespace ns3
+
+
+#endif /* LR_WPAN_SPECTRUM_SIGNAL_PARAMETERS_H */
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc
--- ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc	2014-06-17 10:33:13.907995853 -0700
@@ -0,0 +1,135 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include "lr-wpan-spectrum-value-helper.h"
+#include <ns3/log.h>
+#include <ns3/spectrum-value.h>
+
+#include <cmath>
+
+NS_LOG_COMPONENT_DEFINE ("LrWpanSpectrumValueHelper");
+
+namespace ns3 {
+
+Ptr<SpectrumModel> g_LrWpanSpectrumModel;
+
+class LrWpanSpectrumModelInitializer
+{
+public:
+  LrWpanSpectrumModelInitializer (void)
+  {
+    NS_LOG_FUNCTION (this);
+
+    Bands bands;
+    // 1 MHz resolution, with center frequency of 2400, 2401, ... 2483
+    // overall frequency span of 2399.5 MHz through 2483.5 MHz (83 bands)
+    for (int i = -1; i < 83; i++)
+      {
+        BandInfo bi;
+        bi.fl = 2400.5e6 + i * 1.0e6;
+        bi.fh = 2400.5e6 + (i + 1) * 1.0e6;
+        bi.fc = (bi.fl +  bi.fh) / 2;
+        bands.push_back (bi);
+      }
+    g_LrWpanSpectrumModel = Create<SpectrumModel> (bands);
+  }
+
+} g_LrWpanSpectrumModelInitializerInstance;
+
+LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_noiseFactor = 1.0;
+}
+
+LrWpanSpectrumValueHelper::~LrWpanSpectrumValueHelper (void)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+Ptr<SpectrumValue>
+LrWpanSpectrumValueHelper::CreateTxPowerSpectralDensity (double txPower, uint32_t channel)
+{
+  NS_LOG_FUNCTION (this);
+  Ptr<SpectrumValue> txPsd = Create <SpectrumValue> (g_LrWpanSpectrumModel);
+
+  // txPower is expressed in dBm. We must convert it into natural unit (W).
+  txPower = pow (10., (txPower - 30) / 10);
+
+  // The effective occupied bandwidth of the signal is modelled to be 2 MHz.
+  // 99.5% of power is within +/- 1MHz of center frequency, and 0.5% is outside.
+  // There are 5 bands containing signal power.  The middle (center) band
+  // contains half of the power.  The two inner side bands contain 49.5%.
+  // The two outer side bands contain roughly 0.5%.
+  double txPowerDensity = txPower / 2.0e6;
+
+  NS_ASSERT_MSG ((channel >= 11 && channel <= 26), "Invalid channel numbers");
+
+  // The channel assignment is in section 6.1.2.1
+  // Channel 11 centered at 2.405 GHz, 12 at 2.410 GHz, ... 26 at 2.480 GHz
+  (*txPsd)[2405 + 5 * (channel - 11) - 2400 - 2] = txPowerDensity * 0.005;
+  (*txPsd)[2405 + 5 * (channel - 11) - 2400 - 1] = txPowerDensity * 0.495;
+  (*txPsd)[2405 + 5 * (channel - 11) - 2400] = txPowerDensity; // center
+  (*txPsd)[2405 + 5 * (channel - 11) - 2400 + 1 ] = txPowerDensity * 0.495;
+  (*txPsd)[2405 + 5 * (channel - 11) - 2400 + 2 ] = txPowerDensity * 0.005;
+
+  // If more power is allocated to more subbands in future revisions of
+  // this model, make sure to renormalize so that the integral of the
+  // txPsd still equals txPower
+
+  return txPsd;
+}
+
+Ptr<SpectrumValue>
+LrWpanSpectrumValueHelper::CreateNoisePowerSpectralDensity (uint32_t channel)
+{
+  NS_LOG_FUNCTION (this);
+  Ptr<SpectrumValue> noisePsd = Create <SpectrumValue> (g_LrWpanSpectrumModel);
+
+  static const double BOLTZMANN = 1.3803e-23;
+  // Nt  is the power of thermal noise in W
+  double Nt = BOLTZMANN * 290.0;
+  // noise Floor (W) which accounts for thermal noise and non-idealities of the receiver
+  double noisePowerDensity = m_noiseFactor * Nt;
+
+  NS_ASSERT_MSG ((channel >= 11 && channel <= 26), "Invalid channel numbers");
+
+  (*noisePsd)[2405 + 5 * (channel - 11) - 2400 - 2] = noisePowerDensity;
+  (*noisePsd)[2405 + 5 * (channel - 11) - 2400 - 1] = noisePowerDensity;
+  (*noisePsd)[2405 + 5 * (channel - 11) - 2400] = noisePowerDensity;
+  (*noisePsd)[2405 + 5 * (channel - 11) - 2400 + 1] = noisePowerDensity;
+  (*noisePsd)[2405 + 5 * (channel - 11) - 2400 + 2] = noisePowerDensity;
+
+  return noisePsd;
+}
+
+double
+LrWpanSpectrumValueHelper::TotalAvgPower (Ptr<const SpectrumValue> psd)
+{
+  NS_LOG_FUNCTION (psd);
+  double totalAvgPower = 0.0;
+
+  // numerically integrate to get area under psd using
+  // 1 MHz resolution from 2400 to 2483 MHz (center freq)
+
+  totalAvgPower = Sum (*psd * 1.0e6);
+  return totalAvgPower;
+}
+
+} // namespace ns3
diff -Naur ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h
--- ns-3.19/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h	2014-06-17 10:33:13.908995846 -0700
@@ -0,0 +1,72 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#ifndef LR_WPAN_SPECTRUM_VALUE_HELPER_H
+#define LR_WPAN_SPECTRUM_VALUE_HELPER_H
+
+#include <ns3/ptr.h>
+
+namespace ns3 {
+
+class SpectrumValue;
+
+/**
+ * \ingroup lr-wpan
+ *
+ * \brief This class defines all functions to create spectrum model for LrWpan
+ */
+class LrWpanSpectrumValueHelper
+{
+public:
+  LrWpanSpectrumValueHelper (void);
+  virtual ~LrWpanSpectrumValueHelper (void);
+
+  /**
+   * \brief create spectrum value
+   * \param txPower the power transmission in dBm
+   * \param channel the channel number per IEEE802.15.4
+   * \return a Ptr to a newly created SpectrumValue instance
+   */
+  Ptr<SpectrumValue> CreateTxPowerSpectralDensity (double txPower, uint32_t channel);
+
+  /**
+   * \brief create spectrum value for noise
+   * \param channel the channel number per IEEE802.15.4
+   * \return a Ptr to a newly created SpectrumValue instance
+   */
+  Ptr<SpectrumValue> CreateNoisePowerSpectralDensity (uint32_t channel);
+
+  /**
+   * \brief total average power of the signal is the integral of the PSD
+   * \param psd spectral density
+   * \return total power (using composite trap. rule to numerally integrate
+   */
+  static double TotalAvgPower (Ptr<const SpectrumValue> psd);
+
+private:
+  /**
+   * A scaling factor for the noise power.
+   */
+  double m_noiseFactor;
+
+};
+
+} //namespace ns3
+
+#endif /*  LR_WPAN_SPECTRUM_VALUE_HELPER_H */
diff -Naur ns-3.19/src/lr-wpan/test/examples-to-run.py ns-3.20/src/lr-wpan/test/examples-to-run.py
--- ns-3.19/src/lr-wpan/test/examples-to-run.py	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/examples-to-run.py	2014-06-17 10:33:13.908995846 -0700
@@ -0,0 +1,24 @@
+#! /usr/bin/env python
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+# A list of C++ examples to run in order to ensure that they remain
+# buildable and runnable over time.  Each tuple in the list contains
+#
+#     (example_name, do_run, do_valgrind_run).
+#
+# See test.py for more information.
+cpp_examples = [
+    ("lr-wpan-data", "True", "True"),
+	("lr-wpan-error-distance-plot", "True", "True"),
+    ("lr-wpan-error-model-plot", "True", "True"),
+	("lr-wpan-packet-print", "True", "True"),
+	("lr-wpan-phy-test", "True", "True"),
+]
+
+# A list of Python examples to run in order to ensure that they remain
+# runnable over time.  Each tuple in the list contains
+#
+#     (example_name, do_run).
+#
+# See test.py for more information.
+python_examples = []
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-ack-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-ack-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-ack-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-ack-test.cc	2014-06-17 10:33:13.908995846 -0700
@@ -0,0 +1,207 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+
+#include <ns3/log.h>
+#include <ns3/core-module.h>
+#include <ns3/lr-wpan-module.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/propagation-delay-model.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/packet.h>
+#include "ns3/rng-seed-manager.h"
+
+#include <iostream>
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-ack-test");
+
+using namespace ns3;
+
+class LrWpanAckTestCase : public TestCase
+{
+public:
+  LrWpanAckTestCase ();
+
+  static void DataIndication (LrWpanAckTestCase *testCase, Ptr<LrWpanNetDevice> dev, McpsDataIndicationParams params, Ptr<Packet> p);
+  static void DataConfirm (LrWpanAckTestCase *testCase, Ptr<LrWpanNetDevice> dev, McpsDataConfirmParams params);
+
+private:
+  virtual void DoRun (void);
+
+  Time m_requestTime;
+  Time m_requestAckTime;
+  Time m_replyTime;
+  Time m_replyAckTime;
+  Time m_replyArrivalTime;
+};
+
+LrWpanAckTestCase::LrWpanAckTestCase ()
+  : TestCase ("Test the 802.15.4 ACK handling")
+{
+  m_requestTime = Seconds (0);
+  m_requestAckTime = Seconds (0);
+  m_replyTime = Seconds (0);
+  m_replyAckTime = Seconds (0);
+  m_replyArrivalTime = Seconds (0);
+}
+
+void
+LrWpanAckTestCase::DataIndication (LrWpanAckTestCase *testCase, Ptr<LrWpanNetDevice> dev, McpsDataIndicationParams params, Ptr<Packet> p)
+{
+  if (dev->GetAddress () == Mac16Address ("00:02"))
+    {
+      Ptr<Packet> p = Create<Packet> (10);  // 10 bytes of dummy data
+      McpsDataRequestParams params;
+      params.m_srcAddrMode = SHORT_ADDR;
+      params.m_dstAddrMode = SHORT_ADDR;
+      params.m_dstPanId = 0;
+      params.m_dstAddr = Mac16Address ("00:01");
+      params.m_msduHandle = 0;
+      params.m_txOptions = TX_OPTION_NONE;
+
+      testCase->m_replyTime = Simulator::Now ();
+      dev->GetMac ()->McpsDataRequest (params, p);
+    }
+  else
+    {
+      testCase->m_replyArrivalTime = Simulator::Now ();
+    }
+}
+
+void
+LrWpanAckTestCase::DataConfirm (LrWpanAckTestCase *testCase, Ptr<LrWpanNetDevice> dev, McpsDataConfirmParams params)
+{
+  if (dev->GetAddress () == Mac16Address ("00:01"))
+    {
+      testCase->m_requestAckTime = Simulator::Now ();
+    }
+  else
+    {
+      testCase->m_replyAckTime = Simulator::Now ();
+    }
+}
+
+void
+LrWpanAckTestCase::DoRun (void)
+{
+  // Test setup:
+  // Two nodes well in communication range.
+  // Node 1 sends a request packet to node 2 with ACK request bit set. Node 2
+  // immediately answers with a reply packet on receiption of the request.
+  // We expect the ACK of the request packet to always arrive at node 1 before
+  // the reply packet sent by node 2.
+
+  // Enable calculation of FCS in the trailers. Only necessary when interacting with real devices or wireshark.
+  // GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+
+  // Set the random seed and run number for this test
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (6);
+
+  // Create 2 nodes, and a NetDevice for each one
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+
+  // Make random variable stream assignment deterministic
+  dev0->AssignStreams (0);
+  dev1->AssignStreams (10);
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+
+  // Each device must be attached to the same channel
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> propModel = CreateObject<LogDistancePropagationLossModel> ();
+  Ptr<ConstantSpeedPropagationDelayModel> delayModel = CreateObject<ConstantSpeedPropagationDelayModel> ();
+  channel->AddPropagationLossModel (propModel);
+  channel->SetPropagationDelayModel (delayModel);
+
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+
+  // To complete configuration, a LrWpanNetDevice must be added to a node
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+
+  Ptr<ConstantPositionMobilityModel> sender0Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender0Mobility->SetPosition (Vector (0,0,0));
+  dev0->GetPhy ()->SetMobility (sender0Mobility);
+  Ptr<ConstantPositionMobilityModel> sender1Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  // Configure position 10 m distance
+  sender1Mobility->SetPosition (Vector (0,10,0));
+  dev1->GetPhy ()->SetMobility (sender1Mobility);
+
+  McpsDataConfirmCallback cb0;
+  cb0 = MakeBoundCallback (&LrWpanAckTestCase::DataConfirm, this, dev0);
+  dev0->GetMac ()->SetMcpsDataConfirmCallback (cb0);
+
+  McpsDataIndicationCallback cb1;
+  cb1 = MakeBoundCallback (&LrWpanAckTestCase::DataIndication, this, dev0);
+  dev0->GetMac ()->SetMcpsDataIndicationCallback (cb1);
+
+  McpsDataConfirmCallback cb2;
+  cb2 = MakeBoundCallback (&LrWpanAckTestCase::DataConfirm, this, dev1);
+  dev1->GetMac ()->SetMcpsDataConfirmCallback (cb2);
+
+  McpsDataIndicationCallback cb3;
+  cb3 = MakeBoundCallback (&LrWpanAckTestCase::DataIndication, this, dev1);
+  dev1->GetMac ()->SetMcpsDataIndicationCallback (cb3);
+
+  Ptr<Packet> p0 = Create<Packet> (50);  // 50 bytes of dummy data
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_ACK;
+  m_requestTime = Simulator::Now ();
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p0);
+
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_LT (m_requestTime, m_replyTime, "Sent the request before the reply (as expected)");
+  NS_TEST_EXPECT_MSG_LT (m_requestAckTime, m_replyArrivalTime, "The request was ACKed before the reply arrived (as expected)");
+  NS_TEST_EXPECT_MSG_LT (m_replyAckTime, m_replyArrivalTime, "The reply was ACKed before the reply arrived (as expected)");
+
+  Simulator::Destroy ();
+}
+
+class LrWpanAckTestSuite : public TestSuite
+{
+public:
+  LrWpanAckTestSuite ();
+};
+
+LrWpanAckTestSuite::LrWpanAckTestSuite ()
+  : TestSuite ("lr-wpan-ack", UNIT)
+{
+  AddTestCase (new LrWpanAckTestCase, TestCase::QUICK);
+}
+
+static LrWpanAckTestSuite g_lrWpanAckTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-cca-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-cca-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-cca-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-cca-test.cc	2014-06-17 10:33:13.909995838 -0700
@@ -0,0 +1,265 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+
+#include <ns3/log.h>
+#include <ns3/core-module.h>
+#include <ns3/lr-wpan-module.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/propagation-delay-model.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/packet.h>
+#include "ns3/rng-seed-manager.h"
+
+#include <iostream>
+#include <iomanip>
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-clear-channel-assessment-test");
+
+using namespace ns3;
+
+class LrWpanCcaTestCase : public TestCase
+{
+public:
+  LrWpanCcaTestCase ();
+
+private:
+  static void PlmeCcaConfirm (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, LrWpanPhyEnumeration status);
+  static void PhyTxBegin (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet);
+  static void PhyTxEnd (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet);
+  static void PhyRxBegin (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet);
+  static void PhyRxEnd (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet, double sinr);
+  static void PhyRxDrop (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet);
+
+  virtual void DoRun (void);
+
+  LrWpanPhyEnumeration m_status;
+
+};
+
+LrWpanCcaTestCase::LrWpanCcaTestCase ()
+  : TestCase ("Test the 802.15.4 clear channel assessment")
+{
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+}
+
+void
+LrWpanCcaTestCase::PlmeCcaConfirm (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, LrWpanPhyEnumeration status)
+{
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PlmeCcaConfirm: " << LrWpanHelper::LrWpanPhyEnumerationPrinter (status) << std::endl;
+
+  testcase->m_status = status;
+}
+
+void
+LrWpanCcaTestCase::PhyTxBegin (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet)
+{
+  std::ostringstream os;
+  packet->Print (os);
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PhyTxBegin: " << os.str () << std::endl;
+}
+
+void
+LrWpanCcaTestCase::PhyTxEnd (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet)
+{
+  std::ostringstream os;
+  packet->Print (os);
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PhyTxEnd: " << os.str () << std::endl;
+}
+
+void
+LrWpanCcaTestCase::PhyRxBegin (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet)
+{
+  std::ostringstream os;
+  packet->Print (os);
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PhyRxBegin: " << os.str () << std::endl;
+}
+
+void
+LrWpanCcaTestCase::PhyRxEnd (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet, double sinr)
+{
+  std::ostringstream os;
+  packet->Print (os);
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PhyRxEnd (" << sinr << "): " << os.str () << std::endl;
+
+  // The first packet was received. Now start a CCA, to try to detect the second packet which is still being transmitted.
+  device->GetPhy ()->PlmeCcaRequest ();
+}
+
+void LrWpanCcaTestCase::PhyRxDrop (LrWpanCcaTestCase *testcase, Ptr<LrWpanNetDevice> device, Ptr<const Packet> packet)
+{
+  std::ostringstream os;
+  packet->Print (os);
+  std::cout << std::setiosflags (std::ios::fixed) << std::setprecision (9) << "[" << Simulator::Now ().GetSeconds () << "] " << device->GetMac ()->GetShortAddress () << " PhyRxDrop: " << os.str () << std::endl;
+}
+
+void
+LrWpanCcaTestCase::DoRun (void)
+{
+  // Tx Power: 0 dBm
+  // Receiver Sensitivity: -106.58 dBm
+  // CCA channel busy condition: Rx power > -96.58 dBm
+  // Log distance reference loss at 1 m distance for channel 11 (2405 MHz): 40.0641 dB
+  // Log distance free space path loss exponent: 2
+
+  // Test setup:
+  // Start transmission of a short packet from node 0 to node 1 and at the same
+  // time a transmission of a large packet from node 2 to node 1.
+  // Both transmissions should start without backoff (per configuration) because
+  // the CCA on both nodes should detect a free medium.
+  // The shorter packet will be received first. After reception of the short
+  // packet, which might be destroyed due to interference of the large
+  // packet, node 1 will start a CCA. Depending on the distance between node 1
+  // and node 2, node 1 should detect a busy medium, because the transmission of
+  // the large packet is still in progress. For the above mentioned scenario
+  // parameters, the distance for the CCA detecting a busy medium is about
+  // 669.5685 m.
+
+  // Enable calculation of FCS in the trailers. Only necessary when interacting with real devices or wireshark.
+  // GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+
+  // Set the random seed and run number for this test
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (6);
+
+  // Create 3 nodes, and a NetDevice for each one
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+  Ptr<Node> n2 = CreateObject <Node> ();
+
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev2 = CreateObject<LrWpanNetDevice> ();
+
+  // Make random variable stream assignment deterministic
+  dev0->AssignStreams (0);
+  dev1->AssignStreams (10);
+  dev2->AssignStreams (20);
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+  dev2->SetAddress (Mac16Address ("00:03"));
+
+  // Each device must be attached to the same channel
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> propModel = CreateObject<LogDistancePropagationLossModel> ();
+  propModel->SetReference (1.0, 40.0641); // Reference loss at 1m distance for 2405 MHz (channel 11)
+  propModel->SetPathLossExponent (2); // Free space path loss exponent
+  Ptr<ConstantSpeedPropagationDelayModel> delayModel = CreateObject<ConstantSpeedPropagationDelayModel> ();
+  channel->AddPropagationLossModel (propModel);
+  channel->SetPropagationDelayModel (delayModel);
+
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+  dev2->SetChannel (channel);
+
+  // To complete configuration, a LrWpanNetDevice must be added to a node
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+  n2->AddDevice (dev2);
+
+  Ptr<ConstantPositionMobilityModel> sender0Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender0Mobility->SetPosition (Vector (0, 0, 0));
+  dev0->GetPhy ()->SetMobility (sender0Mobility);
+  Ptr<ConstantPositionMobilityModel> sender1Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender1Mobility->SetPosition (Vector (0, 669, 0));
+  dev1->GetPhy ()->SetMobility (sender1Mobility);
+  Ptr<ConstantPositionMobilityModel> sender2Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender2Mobility->SetPosition (Vector (0, 1338, 0));
+  dev2->GetPhy ()->SetMobility (sender2Mobility);
+
+  // Disable the NetDevices queue management.
+  dev0->GetMac ()->SetMcpsDataConfirmCallback (MakeNullCallback<void, McpsDataConfirmParams> ());
+  dev1->GetMac ()->SetMcpsDataConfirmCallback (MakeNullCallback<void, McpsDataConfirmParams> ());
+  dev2->GetMac ()->SetMcpsDataConfirmCallback (MakeNullCallback<void, McpsDataConfirmParams> ());
+
+  // Set the CCA confirm callback.
+  dev1->GetPhy ()->SetPlmeCcaConfirmCallback (MakeBoundCallback (&LrWpanCcaTestCase::PlmeCcaConfirm, this, dev1));
+
+  // Start sending without backoff, if the channel is free.
+  dev0->GetCsmaCa ()->SetMacMinBE (0);
+  dev2->GetCsmaCa ()->SetMacMinBE (0);
+
+  // Connect trace sources.
+  dev0->GetPhy ()->TraceConnectWithoutContext ("PhyTxBegin", MakeBoundCallback (&LrWpanCcaTestCase::PhyTxBegin, this, dev0));
+  dev0->GetPhy ()->TraceConnectWithoutContext ("PhyTxEnd", MakeBoundCallback (&LrWpanCcaTestCase::PhyTxEnd, this, dev0));
+  dev2->GetPhy ()->TraceConnectWithoutContext ("PhyTxBegin", MakeBoundCallback (&LrWpanCcaTestCase::PhyTxBegin, this, dev2));
+  dev2->GetPhy ()->TraceConnectWithoutContext ("PhyTxEnd", MakeBoundCallback (&LrWpanCcaTestCase::PhyTxEnd, this, dev2));
+  dev1->GetPhy ()->TraceConnectWithoutContext ("PhyRxBegin", MakeBoundCallback (&LrWpanCcaTestCase::PhyRxBegin, this, dev1));
+  dev1->GetPhy ()->TraceConnectWithoutContext ("PhyRxEnd", MakeBoundCallback (&LrWpanCcaTestCase::PhyRxEnd, this, dev1));
+  dev1->GetPhy ()->TraceConnectWithoutContext ("PhyRxDrop", MakeBoundCallback (&LrWpanCcaTestCase::PhyRxDrop, this, dev1));
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+
+  Ptr<Packet> p0 = Create<Packet> (1);  // 1 byte of dummy data
+  McpsDataRequestParams params0;
+  params0.m_srcAddrMode = SHORT_ADDR;
+  params0.m_dstAddrMode = SHORT_ADDR;
+  params0.m_dstPanId = 0;
+  params0.m_dstAddr = Mac16Address ("00:02");
+  params0.m_msduHandle = 0;
+  params0.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params0, p0);
+
+  Ptr<Packet> p1 = Create<Packet> (100);  // 100 bytes of dummy data
+  McpsDataRequestParams params1;
+  params1.m_srcAddrMode = SHORT_ADDR;
+  params1.m_dstAddrMode = SHORT_ADDR;
+  params1.m_dstPanId = 0;
+  params1.m_dstAddr = Mac16Address ("00:02");
+  params1.m_msduHandle = 0;
+  params1.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev2->GetMac (), params1, p1);
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_BUSY, "CCA status BUSY (as expected)");
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+
+  sender2Mobility->SetPosition (Vector (0, 1340, 0));
+
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params0, p0);
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev2->GetMac (), params1, p1);
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_IDLE, "CCA status IDLE (as expected)");
+
+  Simulator::Destroy ();
+}
+
+class LrWpanCcaTestSuite : public TestSuite
+{
+public:
+  LrWpanCcaTestSuite ();
+};
+
+LrWpanCcaTestSuite::LrWpanCcaTestSuite ()
+  : TestSuite ("lr-wpan-clear-channel-assessment", UNIT)
+{
+  AddTestCase (new LrWpanCcaTestCase, TestCase::QUICK);
+}
+
+static LrWpanCcaTestSuite g_lrWpanCcaTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-collision-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-collision-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-collision-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-collision-test.cc	2014-06-17 10:33:13.909995838 -0700
@@ -0,0 +1,230 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include <ns3/test.h>
+#include <ns3/packet.h>
+#include <ns3/lr-wpan-module.h>
+#include <ns3/mobility-module.h>
+#include <ns3/propagation-module.h>
+#include <ns3/spectrum-module.h>
+#include <ns3/mac16-address.h>
+#include <ns3/mac64-address.h>
+#include <ns3/log.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-collision-test");
+
+using namespace ns3;
+
+// This is an example TestCase.
+class LrWpanCollisionTestCase : public TestCase
+{
+public:
+  LrWpanCollisionTestCase ();
+  virtual ~LrWpanCollisionTestCase ();
+
+  void DataIndication (McpsDataIndicationParams params, Ptr<Packet> p);
+private:
+  virtual void DoRun (void);
+
+  uint8_t m_rxPackets;
+};
+
+LrWpanCollisionTestCase::LrWpanCollisionTestCase ()
+  : TestCase ("Test the 802.15.4 collision handling")
+{
+  m_rxPackets = 0;
+}
+
+LrWpanCollisionTestCase::~LrWpanCollisionTestCase ()
+{
+}
+
+void LrWpanCollisionTestCase::DataIndication (McpsDataIndicationParams params, Ptr<Packet> p)
+{
+  m_rxPackets++;
+}
+
+
+void
+LrWpanCollisionTestCase::DoRun (void)
+{
+
+  // Create 3 nodes, and a NetDevice for each one
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+  Ptr<Node> n2 = CreateObject <Node> ();
+
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev2 = CreateObject<LrWpanNetDevice> ();
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+  dev2->SetAddress (Mac16Address ("00:03"));
+
+  // Each device must be attached to the same channel
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> propModel = CreateObject<LogDistancePropagationLossModel> ();
+  Ptr<ConstantSpeedPropagationDelayModel> delayModel = CreateObject<ConstantSpeedPropagationDelayModel> ();
+  channel->AddPropagationLossModel (propModel);
+  channel->SetPropagationDelayModel (delayModel);
+
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+  dev2->SetChannel (channel);
+
+  // To complete configuration, a LrWpanNetDevice must be added to a node
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+  n2->AddDevice (dev2);
+
+  Ptr<ConstantPositionMobilityModel> sender0Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender0Mobility->SetPosition (Vector (0,0,0));
+  dev0->GetPhy ()->SetMobility (sender0Mobility);
+  n0->AggregateObject (sender0Mobility);
+
+  Ptr<ConstantPositionMobilityModel> sender1Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  // Configure position 10 m distance
+  sender1Mobility->SetPosition (Vector (0,1,0));
+  dev1->GetPhy ()->SetMobility (sender1Mobility);
+  n1->AggregateObject (sender1Mobility);
+
+  Ptr<ConstantPositionMobilityModel> sender2Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  // Configure position 10 m distance
+  sender2Mobility->SetPosition (Vector (30,0,0));
+  dev2->GetPhy ()->SetMobility (sender2Mobility);
+  n2->AggregateObject (sender2Mobility);
+
+  dev0->GetMac ()->SetMcpsDataIndicationCallback (MakeCallback (&LrWpanCollisionTestCase::DataIndication, this));
+
+  // Disable first backoff
+  dev0->GetCsmaCa ()->SetMacMinBE (0);
+  dev1->GetCsmaCa ()->SetMacMinBE (0);
+  dev2->GetCsmaCa ()->SetMacMinBE (0);
+
+  Ptr<Packet> p0 = Create<Packet> (20);
+  Ptr<Packet> p1 = Create<Packet> (60);
+  Ptr<Packet> p2 = Create<Packet> (100);
+
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_msduHandle = 0;
+  // params.m_txOptions = TX_OPTION_ACK;
+
+  // First case: concurrent tx and no ACKs
+  std::cout << "*** First test " << std::endl;
+  m_rxPackets = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev0->GetMac (), params, p0);
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev1->GetMac (), params, p1);
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_rxPackets, 0, "Not received a packet (as expected)");
+
+  // Second case: concurrent tx and ACKs
+  std::cout << "*** Second test " << std::endl;
+  m_rxPackets = 0;
+  params.m_txOptions = TX_OPTION_ACK;
+
+  params.m_dstAddr = Mac16Address ("00:02");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev0->GetMac (), params, p0);
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev1->GetMac (), params, p1);
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_rxPackets, 1, "Received a packet (as expected)");
+
+  // Third case: two concurrent tx and no ACKs
+  std::cout << "*** Third test " << std::endl;
+  m_rxPackets = 0;
+  params.m_txOptions = 0;
+
+//  LogComponentEnable("LrWpanMac",LOG_LEVEL_ALL);
+//  LogComponentEnable("LrWpanPhy",LOG_LEVEL_ALL);
+//  LogComponentEnableAll (LOG_PREFIX_TIME);
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.0001),
+                       &LrWpanMac::McpsDataRequest,
+                       dev2->GetMac (), params, p2);
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.0002),
+                       &LrWpanMac::McpsDataRequest,
+                       dev1->GetMac (), params, p0);
+
+  Simulator::Run ();
+
+  std::cout << "m_rxPackets = " << int(m_rxPackets) << std::endl;
+  NS_TEST_EXPECT_MSG_EQ (m_rxPackets, 0, "Received a packet (as expected)");
+
+  // Fourth case: two concurrent tx and ACKs
+  std::cout << "*** Fourth test " << std::endl;
+  m_rxPackets = 0;
+  params.m_txOptions = TX_OPTION_ACK;
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev1->GetMac (), params, p0);
+
+  params.m_dstAddr = Mac16Address ("00:01");
+  Simulator::Schedule (Seconds (0.1),
+                       &LrWpanMac::McpsDataRequest,
+                       dev2->GetMac (), params, p1);
+
+  Simulator::Run ();
+
+  std::cout << "m_rxPackets = " << int(m_rxPackets) << std::endl;
+  NS_TEST_EXPECT_MSG_EQ (m_rxPackets, 2, "Received two packets (as expected)");
+
+  Simulator::Destroy ();
+}
+
+// ==============================================================================
+class LrWpanCollisionTestSuite : public TestSuite
+{
+public:
+  LrWpanCollisionTestSuite ();
+};
+
+LrWpanCollisionTestSuite::LrWpanCollisionTestSuite ()
+  : TestSuite ("lr-wpan-collision", UNIT)
+{
+  AddTestCase (new LrWpanCollisionTestCase, TestCase::QUICK);
+}
+
+static LrWpanCollisionTestSuite g_lrWpanCollisionTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-ed-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-ed-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-ed-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-ed-test.cc	2014-06-17 10:33:13.910995830 -0700
@@ -0,0 +1,258 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Fraunhofer FKIE
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:
+ *  Sascha Alexander Jopen <jopen@cs.uni-bonn.de>
+ */
+
+#include <ns3/log.h>
+#include <ns3/core-module.h>
+#include <ns3/lr-wpan-module.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/propagation-delay-model.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/packet.h>
+#include "ns3/rng-seed-manager.h"
+
+#include <iostream>
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-energy-detection-test");
+
+using namespace ns3;
+
+class LrWpanEdTestCase : public TestCase
+{
+public:
+  LrWpanEdTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  void PlmeEdConfirm (LrWpanPhyEnumeration status, uint8_t level);
+
+  LrWpanPhyEnumeration m_status;
+  uint8_t m_level;
+};
+
+LrWpanEdTestCase::LrWpanEdTestCase ()
+  : TestCase ("Test the 802.15.4 energie detection")
+{
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+}
+
+void
+LrWpanEdTestCase::PlmeEdConfirm (LrWpanPhyEnumeration status, uint8_t level)
+{
+  NS_LOG_UNCOND ("Energy Detection completed with status " << LrWpanHelper::LrWpanPhyEnumerationPrinter (status) << " and energy level " << static_cast<uint32_t> (level));
+  m_status = status;
+  m_level = level;
+}
+
+void
+LrWpanEdTestCase::DoRun (void)
+{
+  // Tx Power: 0 dBm
+  // Receiver Sensitivity: -106.58 dBm
+  // Do energy detection for a single packet, arriving with 5 dB, 10 dB, 25 dB,
+  // 40 dB, relative to RX Power / Sensitivity. This should yield 0, 0, 127,
+  // and 255 as the reported energy levels.
+  // TODO: Maybe there should be a test for several interfering packets.
+  // TODO: There should be tests for signals not originating from 802.15.4
+  //       devices.
+
+  // Test setup:
+  // Two nodes in communication range. The propagation model is adjusted to
+  // give us the above mentioned RX powers.
+  // Node 1 sends a packet to node 2. Node 2 starts energy detection, while the
+  // packet reception is in progress. The detected energy level is compared to
+  // the expected values.
+
+  // Enable calculation of FCS in the trailers. Only necessary when interacting with real devices or wireshark.
+  // GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+
+  // Set the random seed and run number for this test
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (6);
+
+  // Create 2 nodes, and a NetDevice for each one
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+
+  // Make random variable stream assignment deterministic
+  dev0->AssignStreams (0);
+  dev1->AssignStreams (10);
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+
+  // Each device must be attached to the same channel
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<FixedRssLossModel> propModel = CreateObject<FixedRssLossModel> ();
+  Ptr<ConstantSpeedPropagationDelayModel> delayModel = CreateObject<ConstantSpeedPropagationDelayModel> ();
+  channel->AddPropagationLossModel (propModel);
+  channel->SetPropagationDelayModel (delayModel);
+
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+
+  // To complete configuration, a LrWpanNetDevice must be added to a node
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+
+  Ptr<ConstantPositionMobilityModel> sender0Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  sender0Mobility->SetPosition (Vector (0, 0, 0));
+  dev0->GetPhy ()->SetMobility (sender0Mobility);
+  Ptr<ConstantPositionMobilityModel> sender1Mobility = CreateObject<ConstantPositionMobilityModel> ();
+  // Configure position 10 m distance
+  sender1Mobility->SetPosition (Vector (0, 10, 0));
+  dev1->GetPhy ()->SetMobility (sender1Mobility);
+
+  // Set the ED confirm callback.
+  dev0->GetPhy ()->SetPlmeEdConfirmCallback (MakeCallback (&LrWpanEdTestCase::PlmeEdConfirm, this));
+  dev1->GetPhy ()->SetPlmeEdConfirmCallback (MakeCallback (&LrWpanEdTestCase::PlmeEdConfirm, this));
+
+  // Configure the RX Power to be -107.58 dBm, i.e. 1 dB below receiver sensitivity.
+  propModel->SetRss (-107.58);
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+  Ptr<Packet> p0 = Create<Packet> (100);  // 100 bytes of dummy data
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p0);
+
+  Simulator::Schedule (Seconds (0.0025), &LrWpanPhy::PlmeEdRequest, dev1->GetPhy ());
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_SUCCESS, "ED status SUCCESS (as expected)");
+  NS_TEST_EXPECT_MSG_EQ (m_level, 0, "ED reported signal level 0 (as expected)");
+
+
+  // Configure the RX Power to be -106.58 dBm, i.e. exectly to receiver sensitivity.
+  propModel->SetRss (-106.58);
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+  Ptr<Packet> p1 = Create<Packet> (100);  // 100 bytes of dummy data
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p1);
+
+  Simulator::Schedule (Seconds (0.0025), &LrWpanPhy::PlmeEdRequest, dev1->GetPhy ());
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_SUCCESS, "ED status SUCCESS (as expected)");
+  NS_TEST_EXPECT_MSG_EQ (m_level, 0, "ED reported signal level 0 (as expected)");
+
+
+  // Configure the RX Power to be -81.58 dBm, i.e. 25 dB above receiver sensitivity.
+  propModel->SetRss (-81.58);
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+  Ptr<Packet> p2 = Create<Packet> (100);  // 100 bytes of dummy data
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p2);
+
+  Simulator::Schedule (Seconds (0.0025), &LrWpanPhy::PlmeEdRequest, dev1->GetPhy ());
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_SUCCESS, "ED status SUCCESS (as expected)");
+  NS_TEST_EXPECT_MSG_EQ (m_level, 127, "ED reported signal level 127 (as expected)");
+
+
+  // Configure the RX Power to be -66.58 dBm, i.e. 40 dB above receiver sensitivity.
+  propModel->SetRss (-66.58);
+
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+  Ptr<Packet> p3 = Create<Packet> (100);  // 100 bytes of dummy data
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p3);
+
+  Simulator::Schedule (Seconds (0.0025), &LrWpanPhy::PlmeEdRequest, dev1->GetPhy ());
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_SUCCESS, "ED status SUCCESS (as expected)");
+  NS_TEST_EXPECT_MSG_EQ (m_level, 255, "ED reported signal level 255 (as expected)");
+
+  // Test ED at sender.
+  m_status = IEEE_802_15_4_PHY_UNSPECIFIED;
+  m_level = 0;
+  Ptr<Packet> p4 = Create<Packet> (100);  // 100 bytes of dummy data
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = TX_OPTION_NONE;
+  Simulator::ScheduleNow (&LrWpanMac::McpsDataRequest, dev0->GetMac (), params, p4);
+
+  Simulator::Schedule (Seconds (0.0025), &LrWpanPhy::PlmeEdRequest, dev0->GetPhy ());
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_status, IEEE_802_15_4_PHY_TX_ON, "ED status TX_ON (as expected)");
+  NS_TEST_EXPECT_MSG_EQ (m_level, 0, "ED reported signal level 0 (as expected)");
+
+  Simulator::Destroy ();
+}
+
+class LrWpanEdTestSuite : public TestSuite
+{
+public:
+  LrWpanEdTestSuite ();
+};
+
+LrWpanEdTestSuite::LrWpanEdTestSuite ()
+  : TestSuite ("lr-wpan-energy-detection", UNIT)
+{
+  AddTestCase (new LrWpanEdTestCase, TestCase::QUICK);
+}
+
+static LrWpanEdTestSuite g_lrWpanEdTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-error-model-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-error-model-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-error-model-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-error-model-test.cc	2014-06-17 10:33:13.910995830 -0700
@@ -0,0 +1,192 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#include <ns3/test.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/packet.h>
+#include <ns3/simulator.h>
+#include <ns3/lr-wpan-error-model.h>
+#include <ns3/propagation-loss-model.h>
+#include <ns3/lr-wpan-net-device.h>
+#include <ns3/lr-wpan-mac.h>
+#include <ns3/node.h>
+#include <ns3/net-device.h>
+#include <ns3/single-model-spectrum-channel.h>
+#include <ns3/mac16-address.h>
+#include <ns3/constant-position-mobility-model.h>
+#include "ns3/rng-seed-manager.h"
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-error-model-test");
+
+using namespace ns3;
+
+class LrWpanErrorDistanceTestCase : public TestCase
+{
+public:
+  LrWpanErrorDistanceTestCase ();
+  virtual ~LrWpanErrorDistanceTestCase ();
+  uint32_t GetReceived (void) const
+  {
+    return m_received;
+  }
+
+private:
+  virtual void DoRun (void);
+  void Callback (McpsDataIndicationParams params, Ptr<Packet> p);
+  uint32_t m_received;
+};
+
+class LrWpanErrorModelTestCase : public TestCase
+{
+public:
+  LrWpanErrorModelTestCase ();
+  virtual ~LrWpanErrorModelTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+LrWpanErrorDistanceTestCase::LrWpanErrorDistanceTestCase ()
+  : TestCase ("Test the 802.15.4 error model vs distance"),
+    m_received (0)
+{
+}
+
+LrWpanErrorDistanceTestCase::~LrWpanErrorDistanceTestCase ()
+{
+}
+
+void
+LrWpanErrorDistanceTestCase::Callback (McpsDataIndicationParams params, Ptr<Packet> p)
+{
+  m_received++;
+}
+
+void
+LrWpanErrorDistanceTestCase::DoRun (void)
+{
+  // Set the random seed and run number for this test
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (6);
+
+  Ptr<Node> n0 = CreateObject <Node> ();
+  Ptr<Node> n1 = CreateObject <Node> ();
+  Ptr<LrWpanNetDevice> dev0 = CreateObject<LrWpanNetDevice> ();
+  Ptr<LrWpanNetDevice> dev1 = CreateObject<LrWpanNetDevice> ();
+
+  // Make random variable stream assignment deterministic
+  dev0->AssignStreams (0);
+  dev1->AssignStreams (10);
+
+  dev0->SetAddress (Mac16Address ("00:01"));
+  dev1->SetAddress (Mac16Address ("00:02"));
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  Ptr<LogDistancePropagationLossModel> model = CreateObject<LogDistancePropagationLossModel> ();
+  channel->AddPropagationLossModel (model);
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+  n0->AddDevice (dev0);
+  n1->AddDevice (dev1);
+  Ptr<ConstantPositionMobilityModel> mob0 = CreateObject<ConstantPositionMobilityModel> ();
+  dev0->GetPhy ()->SetMobility (mob0);
+  Ptr<ConstantPositionMobilityModel> mob1 = CreateObject<ConstantPositionMobilityModel> ();
+  dev1->GetPhy ()->SetMobility (mob1);
+
+  McpsDataIndicationCallback cb0;
+  cb0 = MakeCallback (&LrWpanErrorDistanceTestCase::Callback, this);
+  dev1->GetMac ()->SetMcpsDataIndicationCallback (cb0);
+
+  McpsDataRequestParams params;
+  params.m_srcAddrMode = SHORT_ADDR;
+  params.m_dstAddrMode = SHORT_ADDR;
+  params.m_dstPanId = 0;
+  params.m_dstAddr = Mac16Address ("00:02");
+  params.m_msduHandle = 0;
+  params.m_txOptions = 0;
+
+  Ptr<Packet> p;
+  mob0->SetPosition (Vector (0,0,0));
+  mob1->SetPosition (Vector (100,0,0));
+  for (int i = 0; i < 1000; i++)
+    {
+      p = Create<Packet> (20);
+      Simulator::Schedule (Seconds (i),
+                           &LrWpanMac::McpsDataRequest,
+                           dev0->GetMac (), params, p);
+    }
+
+  Simulator::Run ();
+
+  // Test that we received 977 packets out of 1000, at distance of 100 m
+  // with default power of 0
+  NS_TEST_ASSERT_MSG_EQ (GetReceived (), 977, "Model fails");
+
+  Simulator::Destroy ();
+}
+
+// ==============================================================================
+LrWpanErrorModelTestCase::LrWpanErrorModelTestCase ()
+  : TestCase ("Test the 802.15.4 error model")
+{
+}
+
+LrWpanErrorModelTestCase::~LrWpanErrorModelTestCase ()
+{
+}
+
+void
+LrWpanErrorModelTestCase::DoRun (void)
+{
+
+  Ptr<LrWpanErrorModel> model = CreateObject<LrWpanErrorModel> ();
+
+  // Test a few values
+  double snr = 5;
+  double ber = 1.0 - model->GetChunkSuccessRate (pow (10.0, snr / 10.0), 1);
+  NS_TEST_ASSERT_MSG_EQ_TOL (ber, 7.38e-14, 0.01e-14, "Model fails for SNR = " << snr);
+  snr = 2;
+  ber = 1.0 - model->GetChunkSuccessRate (pow (10.0, snr / 10.0), 1);
+  NS_TEST_ASSERT_MSG_EQ_TOL (ber, 5.13e-7, 0.01e-7, "Model fails for SNR = " << snr);
+  snr = -1;
+  ber = 1.0 - model->GetChunkSuccessRate (pow (10.0, snr / 10.0), 1);
+  NS_TEST_ASSERT_MSG_EQ_TOL (ber, 0.00114, 0.00001, "Model fails for SNR = " << snr);
+  snr = -4;
+  ber = 1.0 - model->GetChunkSuccessRate (pow (10.0, snr / 10.0), 1);
+  NS_TEST_ASSERT_MSG_EQ_TOL (ber, 0.0391, 0.0001, "Model fails for SNR = " << snr);
+  snr = -7;
+  ber = 1.0 - model->GetChunkSuccessRate (pow (10.0, snr / 10.0), 1);
+  NS_TEST_ASSERT_MSG_EQ_TOL (ber, 0.175, 0.001, "Model fails for SNR = " << snr);
+}
+
+// ==============================================================================
+class LrWpanErrorModelTestSuite : public TestSuite
+{
+public:
+  LrWpanErrorModelTestSuite ();
+};
+
+LrWpanErrorModelTestSuite::LrWpanErrorModelTestSuite ()
+  : TestSuite ("lr-wpan-error-model", UNIT)
+{
+  AddTestCase (new LrWpanErrorModelTestCase, TestCase::QUICK);
+  AddTestCase (new LrWpanErrorDistanceTestCase, TestCase::QUICK);
+}
+
+static LrWpanErrorModelTestSuite lrWpanErrorModelTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-packet-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-packet-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-packet-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-packet-test.cc	2014-06-17 10:33:13.910995830 -0700
@@ -0,0 +1,120 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#include <ns3/test.h>
+#include <ns3/packet.h>
+#include <ns3/lr-wpan-mac-header.h>
+#include <ns3/lr-wpan-mac-trailer.h>
+#include <ns3/mac16-address.h>
+#include <ns3/mac64-address.h>
+#include <ns3/log.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("lr-wpan-packet-test");
+
+using namespace ns3;
+
+// This is an example TestCase.
+class LrWpanPacketTestCase : public TestCase
+{
+public:
+  LrWpanPacketTestCase ();
+  virtual ~LrWpanPacketTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+LrWpanPacketTestCase::LrWpanPacketTestCase ()
+  : TestCase ("Test the 802.15.4 MAC header and trailer classes")
+{
+}
+
+LrWpanPacketTestCase::~LrWpanPacketTestCase ()
+{
+}
+
+void
+LrWpanPacketTestCase::DoRun (void)
+{
+
+  LrWpanMacHeader macHdr (LrWpanMacHeader::LRWPAN_MAC_BEACON, 0);        //sequence number set to 0
+  macHdr.SetSrcAddrMode (LrWpanMacHeader::SHORTADDR);                    // short addr
+  macHdr.SetDstAddrMode (LrWpanMacHeader::NOADDR);
+  macHdr.SetSecDisable ();
+  macHdr.SetNoPanIdComp ();
+  // ... other setters
+
+  uint16_t srcPanId = 100;
+  Mac16Address srcWpanAddr ("00:11");
+  macHdr.SetSrcAddrFields (srcPanId, srcWpanAddr);
+
+  LrWpanMacTrailer macTrailer;
+
+
+  Ptr<Packet> p = Create<Packet> (20);  // 20 bytes of dummy data
+  NS_TEST_ASSERT_MSG_EQ (p->GetSize (), 20, "Packet created with unexpected size");
+  p->AddHeader (macHdr);
+  std::cout << " <--Mac Header added " << std::endl;
+
+  NS_TEST_ASSERT_MSG_EQ (p->GetSize (), 27, "Packet wrong size after macHdr addition");
+  p->AddTrailer (macTrailer);
+  NS_TEST_ASSERT_MSG_EQ (p->GetSize (), 29, "Packet wrong size after macTrailer addition");
+
+  // Test serialization and deserialization
+  uint32_t size = p->GetSerializedSize ();
+  uint8_t buffer[size];
+  p->Serialize (buffer, size);
+  Ptr<Packet> p2 = Create<Packet> (buffer, size, true);
+
+
+  p2->Print (std::cout);
+  std::cout << " <--Packet P2 " << std::endl;
+
+  NS_TEST_ASSERT_MSG_EQ (p2->GetSize (), 29, "Packet wrong size after deserialization");
+
+  LrWpanMacHeader receivedMacHdr;
+  p2->RemoveHeader (receivedMacHdr);
+
+  receivedMacHdr.Print (std::cout);
+  std::cout << " <--P2 Mac Header " << std::endl;
+
+  NS_TEST_ASSERT_MSG_EQ (p2->GetSize (), 22, "Packet wrong size after removing machdr");
+
+  LrWpanMacTrailer receivedMacTrailer;
+  p2->RemoveTrailer (receivedMacTrailer);
+  NS_TEST_ASSERT_MSG_EQ (p2->GetSize (), 20, "Packet wrong size after removing headers and trailers");
+  // Compare macHdr with receivedMacHdr, macTrailer with receivedMacTrailer,...
+
+}
+
+// ==============================================================================
+class LrWpanPacketTestSuite : public TestSuite
+{
+public:
+  LrWpanPacketTestSuite ();
+};
+
+LrWpanPacketTestSuite::LrWpanPacketTestSuite ()
+  : TestSuite ("lr-wpan-packet", UNIT)
+{
+  AddTestCase (new LrWpanPacketTestCase, TestCase::QUICK);
+}
+
+static LrWpanPacketTestSuite lrWpanPacketTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-pd-plme-sap-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-pd-plme-sap-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-pd-plme-sap-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-pd-plme-sap-test.cc	2014-06-17 10:33:13.911995823 -0700
@@ -0,0 +1,99 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gary Pei <guangyu.pei@boeing.com>
+ */
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/packet.h>
+#include <ns3/lr-wpan-phy.h>
+#include <ns3/lr-wpan-mac.h>
+#include <ns3/simulator.h>
+#include <ns3/single-model-spectrum-channel.h>
+
+using namespace ns3;
+
+// This is an example TestCase.
+class LrWpanPlmeAndPdInterfaceTestCase : public TestCase
+{
+public:
+  LrWpanPlmeAndPdInterfaceTestCase ();
+  virtual ~LrWpanPlmeAndPdInterfaceTestCase ();
+
+private:
+  virtual void DoRun (void);
+  void ReceivePdDataInndication (uint32_t psduLength, Ptr<Packet> p, uint8_t lqi);
+};
+
+LrWpanPlmeAndPdInterfaceTestCase::LrWpanPlmeAndPdInterfaceTestCase ()
+  : TestCase ("Test the PLME and PD SAP per IEEE 802.15.4")
+{
+}
+
+LrWpanPlmeAndPdInterfaceTestCase::~LrWpanPlmeAndPdInterfaceTestCase ()
+{
+}
+
+void
+LrWpanPlmeAndPdInterfaceTestCase::ReceivePdDataInndication (uint32_t psduLength,
+                                                            Ptr<Packet> p,
+                                                            uint8_t lqi)
+{
+  NS_LOG_UNCOND ("At: " << Simulator::Now ()
+                        << " Received frame size: " << psduLength << " LQI: " <<
+                 lqi);
+}
+
+void
+LrWpanPlmeAndPdInterfaceTestCase::DoRun (void)
+{
+  LogComponentEnableAll (LOG_PREFIX_FUNC);
+  LogComponentEnable ("LrWpanPhy", LOG_LEVEL_ALL);
+
+  Ptr<LrWpanPhy> sender = CreateObject<LrWpanPhy> ();
+  Ptr<LrWpanPhy> receiver = CreateObject<LrWpanPhy> ();
+
+  Ptr<SingleModelSpectrumChannel> channel = CreateObject<SingleModelSpectrumChannel> ();
+  sender->SetChannel (channel);
+  receiver->SetChannel (channel);
+
+  receiver->SetPdDataIndicationCallback (MakeCallback (
+                                           &LrWpanPlmeAndPdInterfaceTestCase::ReceivePdDataInndication,
+                                           this));
+
+  uint32_t n = 10;
+  Ptr<Packet> p = Create<Packet> (n);
+  sender->PdDataRequest (p->GetSize (), p);
+
+  Simulator::Destroy ();
+}
+
+// ==============================================================================
+class LrWpanPlmeAndPdInterfaceTestSuite : public TestSuite
+{
+public:
+  LrWpanPlmeAndPdInterfaceTestSuite ();
+};
+
+LrWpanPlmeAndPdInterfaceTestSuite::LrWpanPlmeAndPdInterfaceTestSuite ()
+  : TestSuite ("lr-wpan-plme-pd-sap", UNIT)
+{
+  AddTestCase (new LrWpanPlmeAndPdInterfaceTestCase, TestCase::QUICK);
+}
+
+// Do not forget to allocate an instance of this TestSuite
+static LrWpanPlmeAndPdInterfaceTestSuite lrWpanPlmeAndPdInterfaceTestSuite;
diff -Naur ns-3.19/src/lr-wpan/test/lr-wpan-spectrum-value-helper-test.cc ns-3.20/src/lr-wpan/test/lr-wpan-spectrum-value-helper-test.cc
--- ns-3.19/src/lr-wpan/test/lr-wpan-spectrum-value-helper-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/test/lr-wpan-spectrum-value-helper-test.cc	2014-06-17 10:33:13.911995823 -0700
@@ -0,0 +1,80 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 The Boeing Company
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Tom Henderson <thomas.r.henderson@boeing.com>
+ */
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/lr-wpan-spectrum-value-helper.h>
+#include <ns3/spectrum-value.h>
+
+#include <cmath>
+
+using namespace ns3;
+
+class LrWpanSpectrumValueHelperTestCase : public TestCase
+{
+public:
+  LrWpanSpectrumValueHelperTestCase ();
+  virtual ~LrWpanSpectrumValueHelperTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+LrWpanSpectrumValueHelperTestCase::LrWpanSpectrumValueHelperTestCase ()
+  : TestCase ("Test the 802.15.4 SpectrumValue helper class")
+{
+}
+
+LrWpanSpectrumValueHelperTestCase::~LrWpanSpectrumValueHelperTestCase ()
+{
+}
+
+void
+LrWpanSpectrumValueHelperTestCase::DoRun (void)
+{
+  LrWpanSpectrumValueHelper helper;
+  Ptr<SpectrumValue> value;
+  double pwrWatts;
+  for (uint32_t chan = 11; chan <= 26; chan++)
+    {
+      // 50dBm = 100 W, -50dBm = 0.01 mW
+      for (double pwrdBm = -50; pwrdBm < 50; pwrdBm += 10)
+        {
+          value = helper.CreateTxPowerSpectralDensity (pwrdBm, chan);
+          pwrWatts = pow (10.0, pwrdBm / 10.0) / 1000;
+          // Test that average power calculation is within +/- 25% of expected
+          NS_TEST_ASSERT_MSG_EQ_TOL (helper.TotalAvgPower (value), pwrWatts, pwrWatts / 4.0, "Not equal for channel " << chan << " pwrdBm " << pwrdBm);
+        }
+    }
+}
+
+// ==============================================================================
+class LrWpanSpectrumValueHelperTestSuite : public TestSuite
+{
+public:
+  LrWpanSpectrumValueHelperTestSuite ();
+};
+
+LrWpanSpectrumValueHelperTestSuite::LrWpanSpectrumValueHelperTestSuite ()
+  : TestSuite ("lr-wpan-spectrum-value-helper", UNIT)
+{
+  AddTestCase (new LrWpanSpectrumValueHelperTestCase, TestCase::QUICK);
+}
+
+static LrWpanSpectrumValueHelperTestSuite lrWpanSpectrumValueHelperTestSuite;
diff -Naur ns-3.19/src/lr-wpan/wscript ns-3.20/src/lr-wpan/wscript
--- ns-3.19/src/lr-wpan/wscript	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lr-wpan/wscript	2014-06-17 10:33:13.911995823 -0700
@@ -0,0 +1,52 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_module('lr-wpan', ['core', 'network', 'mobility', 'spectrum', 'propagation'])
+    obj.source = [
+        'model/lr-wpan-error-model.cc',
+        'model/lr-wpan-interference-helper.cc',
+        'model/lr-wpan-phy.cc',
+        'model/lr-wpan-mac.cc',
+        'model/lr-wpan-mac-header.cc',
+        'model/lr-wpan-mac-trailer.cc',
+        'model/lr-wpan-csmaca.cc',
+        'model/lr-wpan-net-device.cc',
+        'model/lr-wpan-spectrum-value-helper.cc',
+        'model/lr-wpan-spectrum-signal-parameters.cc',
+        'model/lr-wpan-lqi-tag.cc',
+        'helper/lr-wpan-helper.cc',
+        ]
+
+    module_test = bld.create_ns3_module_test_library('lr-wpan')
+    module_test.source = [
+        'test/lr-wpan-ack-test.cc',
+        'test/lr-wpan-cca-test.cc',
+        'test/lr-wpan-collision-test.cc',
+        'test/lr-wpan-ed-test.cc',
+        'test/lr-wpan-error-model-test.cc',
+        'test/lr-wpan-packet-test.cc',
+        'test/lr-wpan-pd-plme-sap-test.cc',
+        'test/lr-wpan-spectrum-value-helper-test.cc',
+        ]
+     
+    headers = bld(features='ns3header')
+    headers.module = 'lr-wpan'
+    headers.source = [
+        'model/lr-wpan-error-model.h',
+        'model/lr-wpan-interference-helper.h',
+        'model/lr-wpan-phy.h',
+        'model/lr-wpan-mac.h',
+        'model/lr-wpan-mac-header.h',
+        'model/lr-wpan-mac-trailer.h',
+        'model/lr-wpan-csmaca.h',
+        'model/lr-wpan-net-device.h',
+        'model/lr-wpan-spectrum-value-helper.h',
+        'model/lr-wpan-spectrum-signal-parameters.h',
+        'model/lr-wpan-lqi-tag.h',
+        'helper/lr-wpan-helper.h',
+        ]
+
+    if (bld.env['ENABLE_EXAMPLES']):
+        bld.recurse('examples')
+
+    bld.ns3_python_bindings()
diff -Naur ns-3.19/src/lte/bindings/modulegen__gcc_ILP32.py ns-3.20/src/lte/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/lte/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.574635611 -0700
+++ ns-3.20/src/lte/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.926995707 -0700
@@ -70,6 +70,8 @@
     module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
     ## callback.h (module 'core'): ns3::CallbackBase [class]
     module.add_class('CallbackBase', import_from_module='ns.core')
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t [struct]
+    module.add_class('CqasFlowPerf_t')
     ## ff-mac-common.h (module 'lte'): ns3::CqiConfig_s [struct]
     module.add_class('CqiConfig_s')
     ## ff-mac-common.h (module 'lte'): ns3::CqiListElement_s [struct]
@@ -292,34 +294,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -338,12 +312,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## log.h (module 'core'): ns3::LogComponent [class]
@@ -640,6 +608,8 @@
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
     ## ff-mac-common.h (module 'lte'): ns3::PagingInfoListElement_s [struct]
     module.add_class('PagingInfoListElement_s')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger', import_from_module='ns.core')
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s [struct]
     module.add_class('PhichListElement_s')
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s::Phich_e [enumeration]
@@ -684,14 +654,8 @@
     module.add_class('TbId_t')
     ## lte-mi-error-model.h (module 'lte'): ns3::TbStats_t [struct]
     module.add_class('TbStats_t')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## lte-common.h (module 'lte'): ns3::TransmissionModesLayers [class]
     module.add_class('TransmissionModesLayers')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -734,6 +698,8 @@
     module.add_class('fdtbfqsFlowPerf_t')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## pf-ff-mac-scheduler.h (module 'lte'): ns3::pfsFlowPerf_t [struct]
     module.add_class('pfsFlowPerf_t')
     ## pss-ff-mac-scheduler.h (module 'lte'): ns3::pssFlowPerf_t [struct]
@@ -758,10 +724,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider [class]
     module.add_class('LteEnbRrcSapProvider', parent=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters [struct]
@@ -1034,10 +996,6 @@
     module.add_class('GtpuHeader', parent=root_module['ns3::Header'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -1056,8 +1014,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -1262,6 +1218,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## lte-control-messages.h (module 'lte'): ns3::BsrLteControlMessage [class]
     module.add_class('BsrLteControlMessage', parent=root_module['ns3::LteControlMessage'])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler [class]
+    module.add_class('CqaFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## lte-control-messages.h (module 'lte'): ns3::DlCqiLteControlMessage [class]
     module.add_class('DlCqiLteControlMessage', parent=root_module['ns3::LteControlMessage'])
     ## lte-control-messages.h (module 'lte'): ns3::DlDciLteControlMessage [class]
@@ -1318,176 +1276,176 @@
     module.add_class('RrcConnectionSetupHeader', parent=root_module['ns3::RrcDlCcchMessage'])
     ## lte-enb-net-device.h (module 'lte'): ns3::LteEnbNetDevice [class]
     module.add_class('LteEnbNetDevice', parent=root_module['ns3::LteNetDevice'])
-    module.add_container('std::vector< ns3::CeBitmap_e >', 'ns3::CeBitmap_e', container_type='vector')
-    module.add_container('std::vector< std::vector< ns3::RlcPduListElement_s > >', 'std::vector< ns3::RlcPduListElement_s >', container_type='vector')
-    module.add_container('std::vector< unsigned char >', 'unsigned char', container_type='vector')
-    module.add_container('std::vector< unsigned short >', 'short unsigned int', container_type='vector')
-    module.add_container('std::vector< ns3::DlInfoListElement_s::HarqStatus_e >', 'ns3::DlInfoListElement_s::HarqStatus_e', container_type='vector')
-    module.add_container('std::list< ns3::EpcEnbS1SapProvider::BearerToBeSwitched >', 'ns3::EpcEnbS1SapProvider::BearerToBeSwitched', container_type='list')
-    module.add_container('std::list< ns3::EpcS11SapMme::BearerContextCreated >', 'ns3::EpcS11SapMme::BearerContextCreated', container_type='list')
-    module.add_container('std::list< ns3::EpcS11SapSgw::BearerContextToBeCreated >', 'ns3::EpcS11SapSgw::BearerContextToBeCreated', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabToBeSetupItem >', 'ns3::EpcS1apSapEnb::ErabToBeSetupItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem >', 'ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSetupItem >', 'ns3::EpcS1apSapMme::ErabSetupItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem >', 'ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem', container_type='list')
-    module.add_container('std::vector< ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem >', 'ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::UlHighInterferenceInformationItem >', 'ns3::EpcX2Sap::UlHighInterferenceInformationItem', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabToBeSetupItem >', 'ns3::EpcX2Sap::ErabToBeSetupItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabAdmittedItem >', 'ns3::EpcX2Sap::ErabAdmittedItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabNotAdmittedItem >', 'ns3::EpcX2Sap::ErabNotAdmittedItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem >', 'ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::CellInformationItem >', 'ns3::EpcX2Sap::CellInformationItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::CellMeasurementResultItem >', 'ns3::EpcX2Sap::CellMeasurementResultItem', container_type='vector')
-    module.add_container('std::vector< ns3::VendorSpecificListElement_s >', 'ns3::VendorSpecificListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::LogicalChannelConfigListElement_s >', 'ns3::LogicalChannelConfigListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::PagingInfoListElement_s >', 'ns3::PagingInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::DlInfoListElement_s >', 'ns3::DlInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::RachListElement_s >', 'ns3::RachListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::CqiListElement_s >', 'ns3::CqiListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::UlInfoListElement_s >', 'ns3::UlInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::SrListElement_s >', 'ns3::SrListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::MacCeListElement_s >', 'ns3::MacCeListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildDataListElement_s >', 'ns3::BuildDataListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildRarListElement_s >', 'ns3::BuildRarListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type='vector')
-    module.add_container('std::vector< int >', 'int', container_type='vector')
-    module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type='vector')
-    module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::DrbToAddMod >', 'ns3::LteRrcSap::DrbToAddMod', container_type='list')
-    module.add_container('std::list< unsigned char >', 'unsigned char', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::CellsToAddMod >', 'ns3::LteRrcSap::CellsToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::BlackCellsToAddMod >', 'ns3::LteRrcSap::BlackCellsToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasObjectToAddMod >', 'ns3::LteRrcSap::MeasObjectToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::ReportConfigToAddMod >', 'ns3::LteRrcSap::ReportConfigToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type='list')
-    module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type='vector')
-    module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type='vector')
-    module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type='list')
-    module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type='list')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >', 'ns3::Uint64Map')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >*', 'ns3::Uint64Map*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >&', 'ns3::Uint64Map&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', 'ns3::DlHarqRlcPduListBuffer_t')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', 'ns3::DlHarqRlcPduListBuffer_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', 'ns3::DlHarqRlcPduListBuffer_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxPssCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxPssCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxPssCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyTxEndCallback&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxDataEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxDataEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxDataEndOkCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxDataEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxDataEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxDataEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', 'ns3::HarqProcessInfoList_t')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', 'ns3::HarqProcessInfoList_t*')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', 'ns3::HarqProcessInfoList_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxCtrlEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxCtrlEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxCtrlEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >', 'ns3::Values')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >*', 'ns3::Values*')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >&', 'ns3::Values&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::DlHarqProcessesStatus_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::DlHarqProcessesStatus_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::DlHarqProcessesStatus_t&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', 'ns3::Bands')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', 'ns3::Bands*')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', 'ns3::Bands&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyDlHarqFeedbackCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyDlHarqFeedbackCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyDlHarqFeedbackCallback&')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >', 'ns3::expectedTbs_t')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >*', 'ns3::expectedTbs_t*')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >&', 'ns3::expectedTbs_t&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_container('std::vector< ns3::CeBitmap_e >', 'ns3::CeBitmap_e', container_type=u'vector')
+    module.add_container('std::vector< std::vector< ns3::RlcPduListElement_s > >', 'std::vector< ns3::RlcPduListElement_s >', container_type=u'vector')
+    module.add_container('std::vector< unsigned char >', 'unsigned char', container_type=u'vector')
+    module.add_container('std::vector< unsigned short >', 'short unsigned int', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlInfoListElement_s::HarqStatus_e >', 'ns3::DlInfoListElement_s::HarqStatus_e', container_type=u'vector')
+    module.add_container('std::list< ns3::EpcEnbS1SapProvider::BearerToBeSwitched >', 'ns3::EpcEnbS1SapProvider::BearerToBeSwitched', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS11SapMme::BearerContextCreated >', 'ns3::EpcS11SapMme::BearerContextCreated', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS11SapSgw::BearerContextToBeCreated >', 'ns3::EpcS11SapSgw::BearerContextToBeCreated', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabToBeSetupItem >', 'ns3::EpcS1apSapEnb::ErabToBeSetupItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem >', 'ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSetupItem >', 'ns3::EpcS1apSapMme::ErabSetupItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem >', 'ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem', container_type=u'list')
+    module.add_container('std::vector< ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem >', 'ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::UlHighInterferenceInformationItem >', 'ns3::EpcX2Sap::UlHighInterferenceInformationItem', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabToBeSetupItem >', 'ns3::EpcX2Sap::ErabToBeSetupItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabAdmittedItem >', 'ns3::EpcX2Sap::ErabAdmittedItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabNotAdmittedItem >', 'ns3::EpcX2Sap::ErabNotAdmittedItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem >', 'ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::CellInformationItem >', 'ns3::EpcX2Sap::CellInformationItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::CellMeasurementResultItem >', 'ns3::EpcX2Sap::CellMeasurementResultItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::VendorSpecificListElement_s >', 'ns3::VendorSpecificListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::LogicalChannelConfigListElement_s >', 'ns3::LogicalChannelConfigListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::PagingInfoListElement_s >', 'ns3::PagingInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlInfoListElement_s >', 'ns3::DlInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::RachListElement_s >', 'ns3::RachListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::CqiListElement_s >', 'ns3::CqiListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::UlInfoListElement_s >', 'ns3::UlInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::SrListElement_s >', 'ns3::SrListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::MacCeListElement_s >', 'ns3::MacCeListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildDataListElement_s >', 'ns3::BuildDataListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildRarListElement_s >', 'ns3::BuildRarListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type=u'vector')
+    module.add_container('std::vector< int >', 'int', container_type=u'vector')
+    module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type=u'vector')
+    module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::DrbToAddMod >', 'ns3::LteRrcSap::DrbToAddMod', container_type=u'list')
+    module.add_container('std::list< unsigned char >', 'unsigned char', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::CellsToAddMod >', 'ns3::LteRrcSap::CellsToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::BlackCellsToAddMod >', 'ns3::LteRrcSap::BlackCellsToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasObjectToAddMod >', 'ns3::LteRrcSap::MeasObjectToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::ReportConfigToAddMod >', 'ns3::LteRrcSap::ReportConfigToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type=u'list')
+    module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type=u'vector')
+    module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type=u'list')
+    module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type=u'list')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >', u'ns3::Uint64Map')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >*', u'ns3::Uint64Map*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long long > > >&', u'ns3::Uint64Map&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', u'ns3::DlHarqRlcPduListBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', u'ns3::DlHarqRlcPduListBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', u'ns3::DlHarqRlcPduListBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyTxEndCallback&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndOkCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >', u'ns3::Values')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >*', u'ns3::Values*')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >&', u'ns3::Values&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesStatus_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesStatus_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesStatus_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyDlHarqFeedbackCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyDlHarqFeedbackCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyDlHarqFeedbackCallback&')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >', u'ns3::expectedTbs_t')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >*', u'ns3::expectedTbs_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >&', u'ns3::expectedTbs_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >', 'ns3::UlHarqProcessesDciBuffer_t')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >*', 'ns3::UlHarqProcessesDciBuffer_t*')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >&', 'ns3::UlHarqProcessesDciBuffer_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxCtrlEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxCtrlEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxCtrlEndOkCallback&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::SpectrumModelUid_t')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::SpectrumModelUid_t*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::SpectrumModelUid_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >', 'ns3::DoubleMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >*', 'ns3::DoubleMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >&', 'ns3::DoubleMap&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', 'ns3::Uint32Map')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', 'ns3::Uint32Map*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', 'ns3::Uint32Map&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyUlHarqFeedbackCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyUlHarqFeedbackCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyUlHarqFeedbackCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >', 'ns3::RlcPduList_t')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >*', 'ns3::RlcPduList_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >&', 'ns3::RlcPduList_t&')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', 'ns3::DlHarqProcessesDciBuffer_t')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', 'ns3::DlHarqProcessesDciBuffer_t*')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', 'ns3::DlHarqProcessesDciBuffer_t&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >', u'ns3::UlHarqProcessesDciBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >*', u'ns3::UlHarqProcessesDciBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >&', u'ns3::UlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndOkCallback&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >', u'ns3::DoubleMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >*', u'ns3::DoubleMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >&', u'ns3::DoubleMap&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', u'ns3::Uint32Map')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', u'ns3::Uint32Map*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', u'ns3::Uint32Map&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyUlHarqFeedbackCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyUlHarqFeedbackCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyUlHarqFeedbackCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >', u'ns3::RlcPduList_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >*', u'ns3::RlcPduList_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >&', u'ns3::RlcPduList_t&')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', u'ns3::DlHarqProcessesDciBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', u'ns3::DlHarqProcessesDciBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', u'ns3::DlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::DlHarqProcessesTimer_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::DlHarqProcessesTimer_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::DlHarqProcessesTimer_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >', 'ns3::FlowIdMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >*', 'ns3::FlowIdMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >&', 'ns3::FlowIdMap&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', 'ns3::Uint32StatsMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', 'ns3::Uint32StatsMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', 'ns3::Uint32StatsMap&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >', 'ns3::DlHarqProcessesBuffer_t')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >*', 'ns3::DlHarqProcessesBuffer_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >&', 'ns3::DlHarqProcessesBuffer_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >', 'ns3::Uint64StatsMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >*', 'ns3::Uint64StatsMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >&', 'ns3::Uint64StatsMap&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::UlHarqProcessesStatus_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::UlHarqProcessesStatus_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::UlHarqProcessesStatus_t&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesTimer_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesTimer_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesTimer_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >', u'ns3::FlowIdMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >*', u'ns3::FlowIdMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >&', u'ns3::FlowIdMap&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', u'ns3::Uint32StatsMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', u'ns3::Uint32StatsMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', u'ns3::Uint32StatsMap&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >', u'ns3::DlHarqProcessesBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >*', u'ns3::DlHarqProcessesBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >&', u'ns3::DlHarqProcessesBuffer_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >', u'ns3::Uint64StatsMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >*', u'ns3::Uint64StatsMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long long > > > > >&', u'ns3::Uint64StatsMap&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::UlHarqProcessesStatus_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::UlHarqProcessesStatus_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::UlHarqProcessesStatus_t&')
     
     ## Register a nested module for the namespace Config
     
@@ -1518,8 +1476,8 @@
     
     ## config.h (module 'core'): ns3::Config::MatchContainer [class]
     module.add_class('MatchContainer', import_from_module='ns.core')
-    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
 
 def register_types_ns3_FatalImpl(module):
     root_module = module.get_root()
@@ -1530,12 +1488,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -1578,6 +1536,7 @@
     register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
     register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
+    register_Ns3CqasFlowPerf_t_methods(root_module, root_module['ns3::CqasFlowPerf_t'])
     register_Ns3CqiConfig_s_methods(root_module, root_module['ns3::CqiConfig_s'])
     register_Ns3CqiListElement_s_methods(root_module, root_module['ns3::CqiListElement_s'])
     register_Ns3DataOutputCallback_methods(root_module, root_module['ns3::DataOutputCallback'])
@@ -1669,20 +1628,12 @@
     register_Ns3ImsiLcidPair_t_methods(root_module, root_module['ns3::ImsiLcidPair_t'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4InterfaceContainer_methods(root_module, root_module['ns3::Ipv4InterfaceContainer'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3LogComponent_methods(root_module, root_module['ns3::LogComponent'])
     register_Ns3LogicalChannelConfigListElement_s_methods(root_module, root_module['ns3::LogicalChannelConfigListElement_s'])
@@ -1811,6 +1762,7 @@
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3PagingInfoListElement_s_methods(root_module, root_module['ns3::PagingInfoListElement_s'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3PhichListElement_s_methods(root_module, root_module['ns3::PhichListElement_s'])
     register_Ns3PhyReceptionStatParameters_methods(root_module, root_module['ns3::PhyReceptionStatParameters'])
     register_Ns3PhyTransmissionStatParameters_methods(root_module, root_module['ns3::PhyTransmissionStatParameters'])
@@ -1832,8 +1784,7 @@
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TbId_t_methods(root_module, root_module['ns3::TbId_t'])
     register_Ns3TbStats_t_methods(root_module, root_module['ns3::TbStats_t'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TransmissionModesLayers_methods(root_module, root_module['ns3::TransmissionModesLayers'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -1862,7 +1813,6 @@
     register_Ns3EpsBearerTag_methods(root_module, root_module['ns3::EpsBearerTag'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3LteEnbRrcSapProvider_methods(root_module, root_module['ns3::LteEnbRrcSapProvider'])
     register_Ns3LteEnbRrcSapProviderCompleteSetupUeParameters_methods(root_module, root_module['ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters'])
     register_Ns3LteEnbRrcSapUser_methods(root_module, root_module['ns3::LteEnbRrcSapUser'])
@@ -1976,7 +1926,6 @@
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
     register_Ns3GtpuHeader_methods(root_module, root_module['ns3::GtpuHeader'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -1986,7 +1935,6 @@
     register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -2081,6 +2029,7 @@
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
     register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
     register_Ns3BsrLteControlMessage_methods(root_module, root_module['ns3::BsrLteControlMessage'])
+    register_Ns3CqaFfMacScheduler_methods(root_module, root_module['ns3::CqaFfMacScheduler'])
     register_Ns3DlCqiLteControlMessage_methods(root_module, root_module['ns3::DlCqiLteControlMessage'])
     register_Ns3DlDciLteControlMessage_methods(root_module, root_module['ns3::DlDciLteControlMessage'])
     register_Ns3DlHarqFeedbackLteControlMessage_methods(root_module, root_module['ns3::DlHarqFeedbackLteControlMessage'])
@@ -2388,6 +2337,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -2400,6 +2353,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2694,6 +2651,25 @@
                    is_static=True, visibility='protected')
     return
 
+def register_Ns3CqasFlowPerf_t_methods(root_module, cls):
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::CqasFlowPerf_t() [constructor]
+    cls.add_constructor([])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::CqasFlowPerf_t(ns3::CqasFlowPerf_t const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CqasFlowPerf_t const &', 'arg0')])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::flowStart [variable]
+    cls.add_instance_attribute('flowStart', 'ns3::Time', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::lastAveragedThroughput [variable]
+    cls.add_instance_attribute('lastAveragedThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::lastTtiBytesTransmitted [variable]
+    cls.add_instance_attribute('lastTtiBytesTransmitted', 'unsigned int', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::secondLastAveragedThroughput [variable]
+    cls.add_instance_attribute('secondLastAveragedThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::targetThroughput [variable]
+    cls.add_instance_attribute('targetThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::totalBytesTransmitted [variable]
+    cls.add_instance_attribute('totalBytesTransmitted', 'long unsigned int', is_const=False)
+    return
+
 def register_Ns3CqiConfig_s_methods(root_module, cls):
     ## ff-mac-common.h (module 'lte'): ns3::CqiConfig_s::CqiConfig_s() [constructor]
     cls.add_constructor([])
@@ -4539,55 +4515,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -5096,61 +5023,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -5212,29 +5084,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -5246,6 +5114,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3LogicalChannelConfigListElement_s_methods(root_module, cls):
@@ -7664,6 +7536,13 @@
     cls.add_instance_attribute('m_pagingSubframe', 'uint8_t', is_const=False)
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3PhichListElement_s_methods(root_module, cls):
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s::PhichListElement_s() [constructor]
     cls.add_constructor([])
@@ -7845,8 +7724,8 @@
 def register_Ns3SequenceNumber10_methods(root_module, cls):
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -8200,88 +8079,12 @@
     cls.add_instance_attribute('tbler', 'double', is_const=False)
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TransmissionModesLayers_methods(root_module, cls):
@@ -8710,63 +8513,19 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_comparison_operator('<=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -8774,6 +8533,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -8814,6 +8575,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3PfsFlowPerf_t_methods(root_module, cls):
@@ -9213,106 +8976,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3LteEnbRrcSapProvider_methods(root_module, cls):
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider::LteEnbRrcSapProvider() [constructor]
     cls.add_constructor([])
@@ -11239,24 +10902,24 @@
     return
 
 def register_Ns3SpectrumValue_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('*=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('double', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('*=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('double', u'right'))
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::SpectrumValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SpectrumValue const &', 'arg0')])
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::Ptr<ns3::SpectrumModel const> sm) [constructor]
@@ -11309,14 +10972,16 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_comparison_operator('<=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -11342,6 +11007,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -14240,63 +13910,6 @@
                    [param('int64_t const &', 'value')])
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -14692,151 +14305,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -17541,10 +17009,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -19312,6 +18780,47 @@
                    [param('ns3::MacCeListElement_s', 'bsr')])
     return
 
+def register_Ns3CqaFfMacScheduler_methods(root_module, cls):
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler::CqaFfMacScheduler(ns3::CqaFfMacScheduler const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CqaFfMacScheduler const &', 'arg0')])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler::CqaFfMacScheduler() [constructor]
+    cls.add_constructor([])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::FfMacCschedSapProvider * ns3::CqaFfMacScheduler::GetFfMacCschedSapProvider() [member function]
+    cls.add_method('GetFfMacCschedSapProvider', 
+                   'ns3::FfMacCschedSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::FfMacSchedSapProvider * ns3::CqaFfMacScheduler::GetFfMacSchedSapProvider() [member function]
+    cls.add_method('GetFfMacSchedSapProvider', 
+                   'ns3::FfMacSchedSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::CqaFfMacScheduler::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetFfMacCschedSapUser(ns3::FfMacCschedSapUser * s) [member function]
+    cls.add_method('SetFfMacCschedSapUser', 
+                   'void', 
+                   [param('ns3::FfMacCschedSapUser *', 's')], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetFfMacSchedSapUser(ns3::FfMacSchedSapUser * s) [member function]
+    cls.add_method('SetFfMacSchedSapUser', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapUser *', 's')], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
+    cls.add_method('TransmissionModeConfigurationUpdate', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'txMode')])
+    return
+
 def register_Ns3DlCqiLteControlMessage_methods(root_module, cls):
     ## lte-control-messages.h (module 'lte'): ns3::DlCqiLteControlMessage::DlCqiLteControlMessage(ns3::DlCqiLteControlMessage const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::DlCqiLteControlMessage const &', 'arg0')])
diff -Naur ns-3.19/src/lte/bindings/modulegen__gcc_LP64.py ns-3.20/src/lte/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/lte/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/lte/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.940995599 -0700
@@ -70,6 +70,8 @@
     module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
     ## callback.h (module 'core'): ns3::CallbackBase [class]
     module.add_class('CallbackBase', import_from_module='ns.core')
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t [struct]
+    module.add_class('CqasFlowPerf_t')
     ## ff-mac-common.h (module 'lte'): ns3::CqiConfig_s [struct]
     module.add_class('CqiConfig_s')
     ## ff-mac-common.h (module 'lte'): ns3::CqiListElement_s [struct]
@@ -292,34 +294,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -338,12 +312,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## log.h (module 'core'): ns3::LogComponent [class]
@@ -640,6 +608,8 @@
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
     ## ff-mac-common.h (module 'lte'): ns3::PagingInfoListElement_s [struct]
     module.add_class('PagingInfoListElement_s')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger', import_from_module='ns.core')
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s [struct]
     module.add_class('PhichListElement_s')
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s::Phich_e [enumeration]
@@ -684,14 +654,8 @@
     module.add_class('TbId_t')
     ## lte-mi-error-model.h (module 'lte'): ns3::TbStats_t [struct]
     module.add_class('TbStats_t')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## lte-common.h (module 'lte'): ns3::TransmissionModesLayers [class]
     module.add_class('TransmissionModesLayers')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -734,6 +698,8 @@
     module.add_class('fdtbfqsFlowPerf_t')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## pf-ff-mac-scheduler.h (module 'lte'): ns3::pfsFlowPerf_t [struct]
     module.add_class('pfsFlowPerf_t')
     ## pss-ff-mac-scheduler.h (module 'lte'): ns3::pssFlowPerf_t [struct]
@@ -758,10 +724,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider [class]
     module.add_class('LteEnbRrcSapProvider', parent=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters [struct]
@@ -1034,10 +996,6 @@
     module.add_class('GtpuHeader', parent=root_module['ns3::Header'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -1056,8 +1014,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -1262,6 +1218,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## lte-control-messages.h (module 'lte'): ns3::BsrLteControlMessage [class]
     module.add_class('BsrLteControlMessage', parent=root_module['ns3::LteControlMessage'])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler [class]
+    module.add_class('CqaFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## lte-control-messages.h (module 'lte'): ns3::DlCqiLteControlMessage [class]
     module.add_class('DlCqiLteControlMessage', parent=root_module['ns3::LteControlMessage'])
     ## lte-control-messages.h (module 'lte'): ns3::DlDciLteControlMessage [class]
@@ -1318,176 +1276,176 @@
     module.add_class('RrcConnectionSetupHeader', parent=root_module['ns3::RrcDlCcchMessage'])
     ## lte-enb-net-device.h (module 'lte'): ns3::LteEnbNetDevice [class]
     module.add_class('LteEnbNetDevice', parent=root_module['ns3::LteNetDevice'])
-    module.add_container('std::vector< ns3::CeBitmap_e >', 'ns3::CeBitmap_e', container_type='vector')
-    module.add_container('std::vector< std::vector< ns3::RlcPduListElement_s > >', 'std::vector< ns3::RlcPduListElement_s >', container_type='vector')
-    module.add_container('std::vector< unsigned char >', 'unsigned char', container_type='vector')
-    module.add_container('std::vector< unsigned short >', 'short unsigned int', container_type='vector')
-    module.add_container('std::vector< ns3::DlInfoListElement_s::HarqStatus_e >', 'ns3::DlInfoListElement_s::HarqStatus_e', container_type='vector')
-    module.add_container('std::list< ns3::EpcEnbS1SapProvider::BearerToBeSwitched >', 'ns3::EpcEnbS1SapProvider::BearerToBeSwitched', container_type='list')
-    module.add_container('std::list< ns3::EpcS11SapMme::BearerContextCreated >', 'ns3::EpcS11SapMme::BearerContextCreated', container_type='list')
-    module.add_container('std::list< ns3::EpcS11SapSgw::BearerContextToBeCreated >', 'ns3::EpcS11SapSgw::BearerContextToBeCreated', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabToBeSetupItem >', 'ns3::EpcS1apSapEnb::ErabToBeSetupItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem >', 'ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSetupItem >', 'ns3::EpcS1apSapMme::ErabSetupItem', container_type='list')
-    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem >', 'ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem', container_type='list')
-    module.add_container('std::vector< ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem >', 'ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::UlHighInterferenceInformationItem >', 'ns3::EpcX2Sap::UlHighInterferenceInformationItem', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabToBeSetupItem >', 'ns3::EpcX2Sap::ErabToBeSetupItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabAdmittedItem >', 'ns3::EpcX2Sap::ErabAdmittedItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabNotAdmittedItem >', 'ns3::EpcX2Sap::ErabNotAdmittedItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem >', 'ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::CellInformationItem >', 'ns3::EpcX2Sap::CellInformationItem', container_type='vector')
-    module.add_container('std::vector< ns3::EpcX2Sap::CellMeasurementResultItem >', 'ns3::EpcX2Sap::CellMeasurementResultItem', container_type='vector')
-    module.add_container('std::vector< ns3::VendorSpecificListElement_s >', 'ns3::VendorSpecificListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::LogicalChannelConfigListElement_s >', 'ns3::LogicalChannelConfigListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::PagingInfoListElement_s >', 'ns3::PagingInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::DlInfoListElement_s >', 'ns3::DlInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::RachListElement_s >', 'ns3::RachListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::CqiListElement_s >', 'ns3::CqiListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::UlInfoListElement_s >', 'ns3::UlInfoListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::SrListElement_s >', 'ns3::SrListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::MacCeListElement_s >', 'ns3::MacCeListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildDataListElement_s >', 'ns3::BuildDataListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildRarListElement_s >', 'ns3::BuildRarListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type='vector')
-    module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type='vector')
-    module.add_container('std::vector< int >', 'int', container_type='vector')
-    module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type='vector')
-    module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::DrbToAddMod >', 'ns3::LteRrcSap::DrbToAddMod', container_type='list')
-    module.add_container('std::list< unsigned char >', 'unsigned char', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::CellsToAddMod >', 'ns3::LteRrcSap::CellsToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::BlackCellsToAddMod >', 'ns3::LteRrcSap::BlackCellsToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasObjectToAddMod >', 'ns3::LteRrcSap::MeasObjectToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::ReportConfigToAddMod >', 'ns3::LteRrcSap::ReportConfigToAddMod', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type='list')
-    module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type='vector')
-    module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type='vector')
-    module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type='list')
-    module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type='list')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >', 'ns3::Uint64Map')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >*', 'ns3::Uint64Map*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >&', 'ns3::Uint64Map&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', 'ns3::DlHarqRlcPduListBuffer_t')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', 'ns3::DlHarqRlcPduListBuffer_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', 'ns3::DlHarqRlcPduListBuffer_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxPssCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxPssCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxPssCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyTxEndCallback&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxDataEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxDataEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxDataEndOkCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxDataEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxDataEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxDataEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', 'ns3::HarqProcessInfoList_t')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', 'ns3::HarqProcessInfoList_t*')
-    typehandlers.add_type_alias('std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', 'ns3::HarqProcessInfoList_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxCtrlEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxCtrlEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxCtrlEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >', 'ns3::Values')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >*', 'ns3::Values*')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >&', 'ns3::Values&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::DlHarqProcessesStatus_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::DlHarqProcessesStatus_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::DlHarqProcessesStatus_t&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', 'ns3::Bands')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', 'ns3::Bands*')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', 'ns3::Bands&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyDlHarqFeedbackCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyDlHarqFeedbackCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyDlHarqFeedbackCallback&')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >', 'ns3::expectedTbs_t')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >*', 'ns3::expectedTbs_t*')
-    typehandlers.add_type_alias('std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >&', 'ns3::expectedTbs_t&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_container('std::vector< ns3::CeBitmap_e >', 'ns3::CeBitmap_e', container_type=u'vector')
+    module.add_container('std::vector< std::vector< ns3::RlcPduListElement_s > >', 'std::vector< ns3::RlcPduListElement_s >', container_type=u'vector')
+    module.add_container('std::vector< unsigned char >', 'unsigned char', container_type=u'vector')
+    module.add_container('std::vector< unsigned short >', 'short unsigned int', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlInfoListElement_s::HarqStatus_e >', 'ns3::DlInfoListElement_s::HarqStatus_e', container_type=u'vector')
+    module.add_container('std::list< ns3::EpcEnbS1SapProvider::BearerToBeSwitched >', 'ns3::EpcEnbS1SapProvider::BearerToBeSwitched', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS11SapMme::BearerContextCreated >', 'ns3::EpcS11SapMme::BearerContextCreated', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS11SapSgw::BearerContextToBeCreated >', 'ns3::EpcS11SapSgw::BearerContextToBeCreated', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabToBeSetupItem >', 'ns3::EpcS1apSapEnb::ErabToBeSetupItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem >', 'ns3::EpcS1apSapEnb::ErabSwitchedInUplinkItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSetupItem >', 'ns3::EpcS1apSapMme::ErabSetupItem', container_type=u'list')
+    module.add_container('std::list< ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem >', 'ns3::EpcS1apSapMme::ErabSwitchedInDownlinkItem', container_type=u'list')
+    module.add_container('std::vector< ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem >', 'ns3::EpcX2Sap::UlInterferenceOverloadIndicationItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::UlHighInterferenceInformationItem >', 'ns3::EpcX2Sap::UlHighInterferenceInformationItem', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabToBeSetupItem >', 'ns3::EpcX2Sap::ErabToBeSetupItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabAdmittedItem >', 'ns3::EpcX2Sap::ErabAdmittedItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabNotAdmittedItem >', 'ns3::EpcX2Sap::ErabNotAdmittedItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem >', 'ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::CellInformationItem >', 'ns3::EpcX2Sap::CellInformationItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::EpcX2Sap::CellMeasurementResultItem >', 'ns3::EpcX2Sap::CellMeasurementResultItem', container_type=u'vector')
+    module.add_container('std::vector< ns3::VendorSpecificListElement_s >', 'ns3::VendorSpecificListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::LogicalChannelConfigListElement_s >', 'ns3::LogicalChannelConfigListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::PagingInfoListElement_s >', 'ns3::PagingInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlInfoListElement_s >', 'ns3::DlInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::RachListElement_s >', 'ns3::RachListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::CqiListElement_s >', 'ns3::CqiListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::UlInfoListElement_s >', 'ns3::UlInfoListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::SrListElement_s >', 'ns3::SrListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::MacCeListElement_s >', 'ns3::MacCeListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildDataListElement_s >', 'ns3::BuildDataListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildRarListElement_s >', 'ns3::BuildRarListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type=u'vector')
+    module.add_container('std::vector< int >', 'int', container_type=u'vector')
+    module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type=u'vector')
+    module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::DrbToAddMod >', 'ns3::LteRrcSap::DrbToAddMod', container_type=u'list')
+    module.add_container('std::list< unsigned char >', 'unsigned char', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::CellsToAddMod >', 'ns3::LteRrcSap::CellsToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::BlackCellsToAddMod >', 'ns3::LteRrcSap::BlackCellsToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasObjectToAddMod >', 'ns3::LteRrcSap::MeasObjectToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::ReportConfigToAddMod >', 'ns3::LteRrcSap::ReportConfigToAddMod', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type=u'list')
+    module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type=u'vector')
+    module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type=u'vector')
+    module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::list< ns3::Ptr< ns3::LteControlMessage > >', 'ns3::Ptr< ns3::LteControlMessage >', container_type=u'list')
+    module.add_container('std::list< ns3::UlDciLteControlMessage >', 'ns3::UlDciLteControlMessage', container_type=u'list')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >', u'ns3::Uint64Map')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >*', u'ns3::Uint64Map*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned long, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned long > > >&', u'ns3::Uint64Map&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', u'ns3::DlHarqRlcPduListBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', u'ns3::DlHarqRlcPduListBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', u'ns3::DlHarqRlcPduListBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyTxEndCallback&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndOkCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >', u'ns3::Values')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >*', u'ns3::Values*')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >&', u'ns3::Values&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesStatus_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesStatus_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesStatus_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyDlHarqFeedbackCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyDlHarqFeedbackCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::DlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyDlHarqFeedbackCallback&')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >', u'ns3::expectedTbs_t')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >*', u'ns3::expectedTbs_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::TbId_t, ns3::tbInfo_t, std::less< ns3::TbId_t >, std::allocator< std::pair< ns3::TbId_t const, ns3::tbInfo_t > > >&', u'ns3::expectedTbs_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >', 'ns3::UlHarqProcessesDciBuffer_t')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >*', 'ns3::UlHarqProcessesDciBuffer_t*')
-    typehandlers.add_type_alias('std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >&', 'ns3::UlHarqProcessesDciBuffer_t&')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyRxCtrlEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyRxCtrlEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyRxCtrlEndOkCallback&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::SpectrumModelUid_t')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::SpectrumModelUid_t*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::SpectrumModelUid_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >', 'ns3::DoubleMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >*', 'ns3::DoubleMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >&', 'ns3::DoubleMap&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', 'ns3::Uint32Map')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', 'ns3::Uint32Map*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', 'ns3::Uint32Map&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::LtePhyUlHarqFeedbackCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::LtePhyUlHarqFeedbackCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::LtePhyUlHarqFeedbackCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >', 'ns3::RlcPduList_t')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >*', 'ns3::RlcPduList_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >&', 'ns3::RlcPduList_t&')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', 'ns3::DlHarqProcessesDciBuffer_t')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', 'ns3::DlHarqProcessesDciBuffer_t*')
-    typehandlers.add_type_alias('std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', 'ns3::DlHarqProcessesDciBuffer_t&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >', u'ns3::UlHarqProcessesDciBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >*', u'ns3::UlHarqProcessesDciBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::UlDciListElement_s, std::allocator< ns3::UlDciListElement_s > >&', u'ns3::UlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, std::list< ns3::Ptr< ns3::LteControlMessage >, std::allocator< ns3::Ptr< ns3::LteControlMessage > > >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndOkCallback&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >', u'ns3::DoubleMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >*', u'ns3::DoubleMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, double, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, double > > >&', u'ns3::DoubleMap&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >', u'ns3::Uint32Map')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >*', u'ns3::Uint32Map*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, unsigned int, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, unsigned int > > >&', u'ns3::Uint32Map&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyUlHarqFeedbackCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyUlHarqFeedbackCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::UlInfoListElement_s, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyUlHarqFeedbackCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >', u'ns3::RlcPduList_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >*', u'ns3::RlcPduList_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >&', u'ns3::RlcPduList_t&')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', u'ns3::DlHarqProcessesDciBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', u'ns3::DlHarqProcessesDciBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', u'ns3::DlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::DlHarqProcessesTimer_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::DlHarqProcessesTimer_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::DlHarqProcessesTimer_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >', 'ns3::FlowIdMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >*', 'ns3::FlowIdMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >&', 'ns3::FlowIdMap&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', 'ns3::Uint32StatsMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', 'ns3::Uint32StatsMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', 'ns3::Uint32StatsMap&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >', 'ns3::DlHarqProcessesBuffer_t')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >*', 'ns3::DlHarqProcessesBuffer_t*')
-    typehandlers.add_type_alias('std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >&', 'ns3::DlHarqProcessesBuffer_t&')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >', 'ns3::Uint64StatsMap')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >*', 'ns3::Uint64StatsMap*')
-    typehandlers.add_type_alias('std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >&', 'ns3::Uint64StatsMap&')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::UlHarqProcessesStatus_t')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::UlHarqProcessesStatus_t*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::UlHarqProcessesStatus_t&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::DlHarqProcessesTimer_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::DlHarqProcessesTimer_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::DlHarqProcessesTimer_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >', u'ns3::FlowIdMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >*', u'ns3::FlowIdMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::LteFlowId_t, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::LteFlowId_t > > >&', u'ns3::FlowIdMap&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >', u'ns3::Uint32StatsMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >*', u'ns3::Uint32StatsMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned int > > > > >&', u'ns3::Uint32StatsMap&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >', u'ns3::DlHarqProcessesBuffer_t')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >*', u'ns3::DlHarqProcessesBuffer_t*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > >, std::allocator< std::vector< ns3::Ptr< ns3::PacketBurst >, std::allocator< ns3::Ptr< ns3::PacketBurst > > > > >&', u'ns3::DlHarqProcessesBuffer_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >', u'ns3::Uint64StatsMap')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >*', u'ns3::Uint64StatsMap*')
+    typehandlers.add_type_alias(u'std::map< ns3::ImsiLcidPair_t, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > >, std::less< ns3::ImsiLcidPair_t >, std::allocator< std::pair< ns3::ImsiLcidPair_t const, ns3::Ptr< ns3::MinMaxAvgTotalCalculator< unsigned long > > > > >&', u'ns3::Uint64StatsMap&')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::UlHarqProcessesStatus_t')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::UlHarqProcessesStatus_t*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::UlHarqProcessesStatus_t&')
     
     ## Register a nested module for the namespace Config
     
@@ -1518,8 +1476,8 @@
     
     ## config.h (module 'core'): ns3::Config::MatchContainer [class]
     module.add_class('MatchContainer', import_from_module='ns.core')
-    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type='vector')
-    module.add_container('std::vector< std::string >', 'std::string', container_type='vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type=u'vector')
+    module.add_container('std::vector< std::string >', 'std::string', container_type=u'vector')
 
 def register_types_ns3_FatalImpl(module):
     root_module = module.get_root()
@@ -1530,12 +1488,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -1578,6 +1536,7 @@
     register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
     register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
+    register_Ns3CqasFlowPerf_t_methods(root_module, root_module['ns3::CqasFlowPerf_t'])
     register_Ns3CqiConfig_s_methods(root_module, root_module['ns3::CqiConfig_s'])
     register_Ns3CqiListElement_s_methods(root_module, root_module['ns3::CqiListElement_s'])
     register_Ns3DataOutputCallback_methods(root_module, root_module['ns3::DataOutputCallback'])
@@ -1669,20 +1628,12 @@
     register_Ns3ImsiLcidPair_t_methods(root_module, root_module['ns3::ImsiLcidPair_t'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4InterfaceContainer_methods(root_module, root_module['ns3::Ipv4InterfaceContainer'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3LogComponent_methods(root_module, root_module['ns3::LogComponent'])
     register_Ns3LogicalChannelConfigListElement_s_methods(root_module, root_module['ns3::LogicalChannelConfigListElement_s'])
@@ -1811,6 +1762,7 @@
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
     register_Ns3PagingInfoListElement_s_methods(root_module, root_module['ns3::PagingInfoListElement_s'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3PhichListElement_s_methods(root_module, root_module['ns3::PhichListElement_s'])
     register_Ns3PhyReceptionStatParameters_methods(root_module, root_module['ns3::PhyReceptionStatParameters'])
     register_Ns3PhyTransmissionStatParameters_methods(root_module, root_module['ns3::PhyTransmissionStatParameters'])
@@ -1832,8 +1784,7 @@
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TbId_t_methods(root_module, root_module['ns3::TbId_t'])
     register_Ns3TbStats_t_methods(root_module, root_module['ns3::TbStats_t'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TransmissionModesLayers_methods(root_module, root_module['ns3::TransmissionModesLayers'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -1862,7 +1813,6 @@
     register_Ns3EpsBearerTag_methods(root_module, root_module['ns3::EpsBearerTag'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3LteEnbRrcSapProvider_methods(root_module, root_module['ns3::LteEnbRrcSapProvider'])
     register_Ns3LteEnbRrcSapProviderCompleteSetupUeParameters_methods(root_module, root_module['ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters'])
     register_Ns3LteEnbRrcSapUser_methods(root_module, root_module['ns3::LteEnbRrcSapUser'])
@@ -1976,7 +1926,6 @@
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
     register_Ns3GtpuHeader_methods(root_module, root_module['ns3::GtpuHeader'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -1986,7 +1935,6 @@
     register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -2081,6 +2029,7 @@
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
     register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
     register_Ns3BsrLteControlMessage_methods(root_module, root_module['ns3::BsrLteControlMessage'])
+    register_Ns3CqaFfMacScheduler_methods(root_module, root_module['ns3::CqaFfMacScheduler'])
     register_Ns3DlCqiLteControlMessage_methods(root_module, root_module['ns3::DlCqiLteControlMessage'])
     register_Ns3DlDciLteControlMessage_methods(root_module, root_module['ns3::DlDciLteControlMessage'])
     register_Ns3DlHarqFeedbackLteControlMessage_methods(root_module, root_module['ns3::DlHarqFeedbackLteControlMessage'])
@@ -2388,6 +2337,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -2400,6 +2353,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2694,6 +2651,25 @@
                    is_static=True, visibility='protected')
     return
 
+def register_Ns3CqasFlowPerf_t_methods(root_module, cls):
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::CqasFlowPerf_t() [constructor]
+    cls.add_constructor([])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::CqasFlowPerf_t(ns3::CqasFlowPerf_t const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CqasFlowPerf_t const &', 'arg0')])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::flowStart [variable]
+    cls.add_instance_attribute('flowStart', 'ns3::Time', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::lastAveragedThroughput [variable]
+    cls.add_instance_attribute('lastAveragedThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::lastTtiBytesTransmitted [variable]
+    cls.add_instance_attribute('lastTtiBytesTransmitted', 'unsigned int', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::secondLastAveragedThroughput [variable]
+    cls.add_instance_attribute('secondLastAveragedThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::targetThroughput [variable]
+    cls.add_instance_attribute('targetThroughput', 'double', is_const=False)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqasFlowPerf_t::totalBytesTransmitted [variable]
+    cls.add_instance_attribute('totalBytesTransmitted', 'long unsigned int', is_const=False)
+    return
+
 def register_Ns3CqiConfig_s_methods(root_module, cls):
     ## ff-mac-common.h (module 'lte'): ns3::CqiConfig_s::CqiConfig_s() [constructor]
     cls.add_constructor([])
@@ -4539,55 +4515,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -5096,61 +5023,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -5212,29 +5084,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -5246,6 +5114,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3LogicalChannelConfigListElement_s_methods(root_module, cls):
@@ -7664,6 +7536,13 @@
     cls.add_instance_attribute('m_pagingSubframe', 'uint8_t', is_const=False)
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3PhichListElement_s_methods(root_module, cls):
     ## ff-mac-common.h (module 'lte'): ns3::PhichListElement_s::PhichListElement_s() [constructor]
     cls.add_constructor([])
@@ -7845,8 +7724,8 @@
 def register_Ns3SequenceNumber10_methods(root_module, cls):
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber10'], root_module['ns3::SequenceNumber10'], param('uint16_t', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -8200,88 +8079,12 @@
     cls.add_instance_attribute('tbler', 'double', is_const=False)
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TransmissionModesLayers_methods(root_module, cls):
@@ -8710,63 +8513,19 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_comparison_operator('<=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -8774,6 +8533,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -8814,6 +8575,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3PfsFlowPerf_t_methods(root_module, cls):
@@ -9213,106 +8976,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3LteEnbRrcSapProvider_methods(root_module, cls):
     ## lte-rrc-sap.h (module 'lte'): ns3::LteEnbRrcSapProvider::LteEnbRrcSapProvider() [constructor]
     cls.add_constructor([])
@@ -11239,24 +10902,24 @@
     return
 
 def register_Ns3SpectrumValue_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('*=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('double', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('*=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('double', u'right'))
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::SpectrumValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SpectrumValue const &', 'arg0')])
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::Ptr<ns3::SpectrumModel const> sm) [constructor]
@@ -11309,14 +10972,16 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_comparison_operator('<=')
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -11342,6 +11007,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -14240,63 +13910,6 @@
                    [param('int64_t const &', 'value')])
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -14692,151 +14305,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -17541,10 +17009,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -19312,6 +18780,47 @@
                    [param('ns3::MacCeListElement_s', 'bsr')])
     return
 
+def register_Ns3CqaFfMacScheduler_methods(root_module, cls):
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler::CqaFfMacScheduler(ns3::CqaFfMacScheduler const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CqaFfMacScheduler const &', 'arg0')])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::CqaFfMacScheduler::CqaFfMacScheduler() [constructor]
+    cls.add_constructor([])
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::FfMacCschedSapProvider * ns3::CqaFfMacScheduler::GetFfMacCschedSapProvider() [member function]
+    cls.add_method('GetFfMacCschedSapProvider', 
+                   'ns3::FfMacCschedSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::FfMacSchedSapProvider * ns3::CqaFfMacScheduler::GetFfMacSchedSapProvider() [member function]
+    cls.add_method('GetFfMacSchedSapProvider', 
+                   'ns3::FfMacSchedSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::CqaFfMacScheduler::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetFfMacCschedSapUser(ns3::FfMacCschedSapUser * s) [member function]
+    cls.add_method('SetFfMacCschedSapUser', 
+                   'void', 
+                   [param('ns3::FfMacCschedSapUser *', 's')], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetFfMacSchedSapUser(ns3::FfMacSchedSapUser * s) [member function]
+    cls.add_method('SetFfMacSchedSapUser', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapUser *', 's')], 
+                   is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
+    cls.add_method('TransmissionModeConfigurationUpdate', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'txMode')])
+    return
+
 def register_Ns3DlCqiLteControlMessage_methods(root_module, cls):
     ## lte-control-messages.h (module 'lte'): ns3::DlCqiLteControlMessage::DlCqiLteControlMessage(ns3::DlCqiLteControlMessage const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::DlCqiLteControlMessage const &', 'arg0')])
diff -Naur ns-3.19/src/lte/doc/source/lte-design.rst ns-3.20/src/lte/doc/source/lte-design.rst
--- ns-3.19/src/lte/doc/source/lte-design.rst	2014-06-17 10:34:00.692634700 -0700
+++ ns-3.20/src/lte/doc/source/lte-design.rst	2014-06-17 10:33:14.044994796 -0700
@@ -542,7 +542,7 @@
 Let :math:`f_c` denote the  LTE Absolute Radio Frequency Channel Number, which
 identifies the carrier frequency on a 100 kHz raster; furthermore, let :math:`B` be
 the Transmission Bandwidth Configuration in number of Resource Blocks. For every
-pair :math:`(f_c,B)` used in the simulation we define a corresponding spectrum
+pair :math:`(f_c,B)` used in the simulation we define a corresponding SpectrumModel using the functionality provided by the :ref:`sec-spetrum-module` .
 model using the Spectrum framework described
 in [Baldo2009]_.  :math:`f_c` and :math:`B` can be configured for every eNB instantiated
 in the simulation; hence, each eNB can use a different spectrum model. Every UE
@@ -1272,6 +1272,84 @@
   - ``ALL_UL_CQI``: all CQIs are stored in the same internal attibute (i.e., the last CQI received is stored independently from its nature).
 
 
+Channel and QoS Aware Scheduler
+-------------------------------
+
+The Channel and QoS Aware (CQA) Scheduler [Bbojovic2014]_ is an LTE
+MAC downlink scheduling algorithm that considers the head of line
+(HOL) delay, the GBR parameters and channel quality over  
+different subbands. The CQA scheduler is based on joint TD and FD
+scheduling. 
+
+In the TD (at each TTI) the CQA scheduler groups users by
+priority. The purpose of grouping is to enforce the FD scheduling to
+consider first the flows with highest HOL delay. The grouping metric
+:math:`m_{td}` for user :math:`j=1,...,N` is defined in the  
+following way:
+
+.. math::
+
+    m_{td}^{j}(t) = \lceil\frac{d_{hol}^{j}(t)}{g}\rceil \;,
+
+where :math:`d_{hol}^{j}(t)` is the current value of HOL delay of flow
+:math:`j`, and :math:`g` is a grouping parameter that determines
+granularity of the groups, i.e. the number of the flows that will be
+considered in the FD scheduling iteration. 
+
+The groups of flows selected in the TD iteration are forwarded to the FD
+scheduling starting from the flows with the highest value of the
+:math:`m_{td}` metric until all RBGs are assigned in the corresponding
+TTI.  In the FD, for each RBG :math:`k=1,...,K`, the CQA scheduler
+assigns the current RBG to the user :math:`j` that has the maximum value of
+the FD metric which we define in the following way:
+
+.. math::
+
+  m_{fd}^{(k,j)}(t) = d_{HOL}^{j}(t) \cdot m_{GBR}^j(t) \cdot m_{ca}^{k,j}(t) \;,
+
+where :math:`m_{GBR}^j(t)` is calculated as follows:
+
+.. math::
+
+	m_{GBR}^j(t)=\frac{GBR^j}{\overline{R^j}(t)}=\frac{GBR^j}{(1-\alpha)\cdot\overline{R^j}(t-1)+\alpha \cdot r^j(t)} \;,
+	
+where :math:`GBR^j` is the bit rate specified in EPS bearer of the
+flow :math:`j`, :math:`\overline{R^j}(t)` is the past averaged throughput that is calculated with a 
+moving average, :math:`r^{j}(t)` is the throughput achieved at the
+time t, and :math:`\alpha` is a coefficient such that :math:`0 \le \alpha 
+\le1`.
+
+For :math:`m_{ca}^{(k,j)}(t)` we consider two different
+metrics: :math:`m_{pf}^{(k,j)}(t)` and :math:`m_{ff}^{(k,j)}(t)`. 
+:math:`m_{pf}` is the Proportional Fair metric which is defined as follows:
+
+.. math::
+
+   m_{pf}^{(k,j)}(t) = \frac{R_e^{(k,j)}}{\overline{R^j}(t)} \;,
+
+where :math:`R_e^{(k,j)}(t)` is the estimated achievable throughput of user
+:math:`j` over RBG :math:`k` calculated by the Adaptive Modulation and Coding
+(AMC) scheme that maps the channel quality indicator (CQI) value to
+the transport block size in bits. 
+
+The other channel awareness metric that we consider is :math:`m_{ff}` which
+is proposed in [GMonghal2008]_ and it represents the frequency
+selective fading gains over RBG :math:`k` for user :math:`j` and is calculated in
+the following way:
+
+.. math::
+
+  m_{ff}^{(k,j)}(t) = \frac{CQI^{(k,j)}(t)}{\sum_{k=1}^{K}CQI(t)^{(k,j)}} \;,
+
+where :math:`CQI^{(k,j)}(t)` is the last reported CQI value from user
+:math:`j` for the :math:`k`-th RBG.
+
+The user can select whether :math:`m_{pf}` or :math:`m_{ff}` is used
+by setting the attribute ``ns3::CqaFfMacScheduler::CqaMetric``
+respectively to ``"CqaPf"`` or ``"CqaFf"``.
+
+
+
 .. _sec-random-access:
 
 Random Access
diff -Naur ns-3.19/src/lte/doc/source/lte-references.rst ns-3.20/src/lte/doc/source/lte-references.rst
--- ns-3.19/src/lte/doc/source/lte-references.rst	2014-06-17 10:34:00.694634685 -0700
+++ ns-3.20/src/lte/doc/source/lte-references.rst	2014-06-17 10:33:14.046994781 -0700
@@ -143,3 +143,6 @@
 .. [Lee2010] Y.J. Lee, B.J. Shin, J.C. Lim, D.H. Hong,
    "Effects of time-to-trigger parameter on handover performance in SON-based LTE systems",
    Communications (APCC), 2010 16th Asia-Pacific Conference on, pp.492-496, Oct. 31 2010--Nov. 3 2010
+   
+.. [Bbojovic2014] B. Bojovic, N. Baldo, "A new Channel and QoS Aware Scheduler to enhance the capacity of Voice over LTE systems", SDD conference 2014, preprint version is available: <http://www.cttc.es/?post_type=publication&p=5226>
+
diff -Naur ns-3.19/src/lte/doc/source/lte-testing.rst ns-3.20/src/lte/doc/source/lte-testing.rst
--- ns-3.19/src/lte/doc/source/lte-testing.rst	2014-06-17 10:34:00.696634669 -0700
+++ ns-3.20/src/lte/doc/source/lte-testing.rst	2014-06-17 10:33:14.048994765 -0700
@@ -785,6 +785,15 @@
 Here, :math:`T` is the maximum throughput. :math:`R^{fb}_i` be the the full bandwidth achievable rate 
 for user i. :math:`N` is the number of UE.
 
+Channel and QoS aware scheduler performance
+-------------------------------------------
+
+The performance of the Channel and QoS aware scheduler can be tested in the similar way to performance of 
+Priority Set scheduler when GBR flows are not delay sensitive by measuring if the achieved throughput at 
+RLC layer is close to the TBR. Having this in mind, the performance of the CQA scheduler is tested by using 
+the same test cases as the ``lte-pss-ff-mac-scheduler``. Additionally, in [Bbojovic2014]_ can be found performance 
+evaluation of CQA scheduler when the GBR flows are delay sensitive by considering different QoE metrics.
+
 Building Propagation Loss Model
 -------------------------------
 
diff -Naur ns-3.19/src/lte/examples/waf ns-3.20/src/lte/examples/waf
--- ns-3.19/src/lte/examples/waf	2014-06-17 10:34:00.708634577 -0700
+++ ns-3.20/src/lte/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/lte/helper/epc-helper.cc ns-3.20/src/lte/helper/epc-helper.cc
--- ns-3.19/src/lte/helper/epc-helper.cc	2014-06-17 10:34:00.709634569 -0700
+++ ns-3.20/src/lte/helper/epc-helper.cc	2014-06-17 10:33:14.061994665 -0700
@@ -27,11 +27,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("EpcHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcHelper");
 
-NS_OBJECT_ENSURE_REGISTERED (EpcHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcHelper);
 
 
 EpcHelper::EpcHelper () 
diff -Naur ns-3.19/src/lte/helper/lte-global-pathloss-database.cc ns-3.20/src/lte/helper/lte-global-pathloss-database.cc
--- ns-3.19/src/lte/helper/lte-global-pathloss-database.cc	2014-06-17 10:34:00.710634561 -0700
+++ ns-3.20/src/lte/helper/lte-global-pathloss-database.cc	2014-06-17 10:33:14.062994657 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("LteGlobalPathlossDatabase")
-  ;
+NS_LOG_COMPONENT_DEFINE ("LteGlobalPathlossDatabase");
 
 
 LteGlobalPathlossDatabase::~LteGlobalPathlossDatabase (void)
diff -Naur ns-3.19/src/lte/helper/lte-helper.cc ns-3.20/src/lte/helper/lte-helper.cc
--- ns-3.19/src/lte/helper/lte-helper.cc	2014-06-17 10:34:00.713634538 -0700
+++ ns-3.20/src/lte/helper/lte-helper.cc	2014-06-17 10:33:14.065994634 -0700
@@ -65,8 +65,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteHelper);
 
 LteHelper::LteHelper (void)
   : m_fadingStreamsAssigned (false),
diff -Naur ns-3.19/src/lte/helper/lte-hex-grid-enb-topology-helper.cc ns-3.20/src/lte/helper/lte-hex-grid-enb-topology-helper.cc
--- ns-3.19/src/lte/helper/lte-hex-grid-enb-topology-helper.cc	2014-06-17 10:34:00.714634531 -0700
+++ ns-3.20/src/lte/helper/lte-hex-grid-enb-topology-helper.cc	2014-06-17 10:33:14.066994627 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteHexGridEnbTopologyHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteHexGridEnbTopologyHelper);
 
 LteHexGridEnbTopologyHelper::LteHexGridEnbTopologyHelper ()
 {
diff -Naur ns-3.19/src/lte/helper/lte-stats-calculator.cc ns-3.20/src/lte/helper/lte-stats-calculator.cc
--- ns-3.19/src/lte/helper/lte-stats-calculator.cc	2014-06-17 10:34:00.715634523 -0700
+++ ns-3.20/src/lte/helper/lte-stats-calculator.cc	2014-06-17 10:33:14.067994619 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("LteStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("LteStatsCalculator");
 
 LteStatsCalculator::LteStatsCalculator ()
   : m_dlOutputFilename (""),
diff -Naur ns-3.19/src/lte/helper/mac-stats-calculator.cc ns-3.20/src/lte/helper/mac-stats-calculator.cc
--- ns-3.19/src/lte/helper/mac-stats-calculator.cc	2014-06-17 10:34:00.716634515 -0700
+++ ns-3.20/src/lte/helper/mac-stats-calculator.cc	2014-06-17 10:33:14.068994611 -0700
@@ -25,11 +25,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("MacStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("MacStatsCalculator");
 
-NS_OBJECT_ENSURE_REGISTERED (MacStatsCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MacStatsCalculator);
 
 MacStatsCalculator::MacStatsCalculator ()
   : m_dlFirstWrite (true),
diff -Naur ns-3.19/src/lte/helper/phy-rx-stats-calculator.cc ns-3.20/src/lte/helper/phy-rx-stats-calculator.cc
--- ns-3.19/src/lte/helper/phy-rx-stats-calculator.cc	2014-06-17 10:34:00.717634507 -0700
+++ ns-3.20/src/lte/helper/phy-rx-stats-calculator.cc	2014-06-17 10:33:14.069994603 -0700
@@ -27,11 +27,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PhyRxStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PhyRxStatsCalculator");
 
-NS_OBJECT_ENSURE_REGISTERED (PhyRxStatsCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PhyRxStatsCalculator);
 
 PhyRxStatsCalculator::PhyRxStatsCalculator ()
   : m_dlRxFirstWrite (true),
diff -Naur ns-3.19/src/lte/helper/phy-stats-calculator.cc ns-3.20/src/lte/helper/phy-stats-calculator.cc
--- ns-3.19/src/lte/helper/phy-stats-calculator.cc	2014-06-17 10:34:00.717634507 -0700
+++ ns-3.20/src/lte/helper/phy-stats-calculator.cc	2014-06-17 10:33:14.069994603 -0700
@@ -25,11 +25,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PhyStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PhyStatsCalculator");
 
-NS_OBJECT_ENSURE_REGISTERED (PhyStatsCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PhyStatsCalculator);
 
 PhyStatsCalculator::PhyStatsCalculator ()
   :  m_RsrpSinrFirstWrite (true),
diff -Naur ns-3.19/src/lte/helper/phy-tx-stats-calculator.cc ns-3.20/src/lte/helper/phy-tx-stats-calculator.cc
--- ns-3.19/src/lte/helper/phy-tx-stats-calculator.cc	2014-06-17 10:34:00.718634499 -0700
+++ ns-3.20/src/lte/helper/phy-tx-stats-calculator.cc	2014-06-17 10:33:14.070994596 -0700
@@ -27,11 +27,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PhyTxStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PhyTxStatsCalculator");
 
-NS_OBJECT_ENSURE_REGISTERED (PhyTxStatsCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PhyTxStatsCalculator);
 
 PhyTxStatsCalculator::PhyTxStatsCalculator ()
   : m_dlTxFirstWrite (true),
diff -Naur ns-3.19/src/lte/helper/point-to-point-epc-helper.cc ns-3.20/src/lte/helper/point-to-point-epc-helper.cc
--- ns-3.19/src/lte/helper/point-to-point-epc-helper.cc	2014-06-17 10:34:00.719634492 -0700
+++ ns-3.20/src/lte/helper/point-to-point-epc-helper.cc	2014-06-17 10:33:14.071994588 -0700
@@ -42,11 +42,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("PointToPointEpcHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PointToPointEpcHelper");
 
-NS_OBJECT_ENSURE_REGISTERED (PointToPointEpcHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PointToPointEpcHelper);
 
 
 PointToPointEpcHelper::PointToPointEpcHelper () 
diff -Naur ns-3.19/src/lte/helper/radio-bearer-stats-calculator.cc ns-3.20/src/lte/helper/radio-bearer-stats-calculator.cc
--- ns-3.19/src/lte/helper/radio-bearer-stats-calculator.cc	2014-06-17 10:34:00.720634484 -0700
+++ ns-3.20/src/lte/helper/radio-bearer-stats-calculator.cc	2014-06-17 10:33:14.072994580 -0700
@@ -29,11 +29,9 @@
 namespace ns3
 {
 
-NS_LOG_COMPONENT_DEFINE ("RadioBearerStatsCalculator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RadioBearerStatsCalculator");
 
-NS_OBJECT_ENSURE_REGISTERED ( RadioBearerStatsCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED ( RadioBearerStatsCalculator);
 
 RadioBearerStatsCalculator::RadioBearerStatsCalculator ()
   : m_firstWrite (true),
diff -Naur ns-3.19/src/lte/helper/radio-environment-map-helper.cc ns-3.20/src/lte/helper/radio-environment-map-helper.cc
--- ns-3.19/src/lte/helper/radio-environment-map-helper.cc	2014-06-17 10:34:00.721634476 -0700
+++ ns-3.20/src/lte/helper/radio-environment-map-helper.cc	2014-06-17 10:33:14.073994572 -0700
@@ -46,8 +46,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (RadioEnvironmentMapHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RadioEnvironmentMapHelper);
 
 RadioEnvironmentMapHelper::RadioEnvironmentMapHelper ()
 {
@@ -115,7 +114,7 @@
                    MakeBooleanChecker ())
     .AddAttribute ("NoisePower",
                    "the power of the measuring instrument noise, in Watts. Default to a kT of -174 dBm with a noise figure of 9 dB and a bandwidth of 25 LTE Resource Blocks",
-                   DoubleValue (1.4230e-10),
+                   DoubleValue (1.4230e-13),
                    MakeDoubleAccessor (&RadioEnvironmentMapHelper::m_noisePower),
                    MakeDoubleChecker<double> ())
     .AddAttribute ("MaxPointsPerIteration", "Maximum number of REM points to be calculated per iteration. Every point consumes approximately 5KB of memory.",
diff -Naur ns-3.19/src/lte/model/a2-a4-rsrq-handover-algorithm.cc ns-3.20/src/lte/model/a2-a4-rsrq-handover-algorithm.cc
--- ns-3.19/src/lte/model/a2-a4-rsrq-handover-algorithm.cc	2014-06-17 10:34:00.722634469 -0700
+++ ns-3.20/src/lte/model/a2-a4-rsrq-handover-algorithm.cc	2014-06-17 10:33:14.074994565 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (A2A4RsrqHandoverAlgorithm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (A2A4RsrqHandoverAlgorithm);
 
 
 ///////////////////////////////////////////
diff -Naur ns-3.19/src/lte/model/a3-rsrp-handover-algorithm.cc ns-3.20/src/lte/model/a3-rsrp-handover-algorithm.cc
--- ns-3.19/src/lte/model/a3-rsrp-handover-algorithm.cc	2014-06-17 10:34:00.723634461 -0700
+++ ns-3.20/src/lte/model/a3-rsrp-handover-algorithm.cc	2014-06-17 10:33:14.075994557 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (A3RsrpHandoverAlgorithm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (A3RsrpHandoverAlgorithm);
 
 
 A3RsrpHandoverAlgorithm::A3RsrpHandoverAlgorithm ()
diff -Naur ns-3.19/src/lte/model/cqa-ff-mac-scheduler.cc ns-3.20/src/lte/model/cqa-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/cqa-ff-mac-scheduler.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lte/model/cqa-ff-mac-scheduler.cc	2014-06-17 10:33:14.076994549 -0700
@@ -0,0 +1,2523 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors: Biljana Bojovic <bbojovic@cttc.es>, Nicola Baldo<nbaldo@cttc.es>.
+ *
+ * Note:
+ * Implementation is using many common scheduler functionalities in its
+ * original version implemented by Marco Miozzo<mmiozzo@cttc.es> in
+ * Proportional Fair and Round Robin schedulers implementations.
+ */
+
+#include <ns3/log.h>
+#include <ns3/pointer.h>
+#include <ns3/math.h>
+
+#include <ns3/simulator.h>
+#include <ns3/lte-amc.h>
+#include <ns3/cqa-ff-mac-scheduler.h>
+#include <ns3/ff-mac-common.h>
+#include <ns3/lte-vendor-specific-parameters.h>
+#include <ns3/boolean.h>
+#include <cfloat>
+#include <set>
+#include <stdexcept>
+#include <ns3/integer.h>
+#include <ns3/string.h>
+
+NS_LOG_COMPONENT_DEFINE ("CqaFfMacScheduler");
+
+namespace ns3 {
+
+static const int CqaType0AllocationRbg[4] = {
+  10,       // RGB size 1
+  26,       // RGB size 2
+  63,       // RGB size 3
+  110       // RGB size 4
+};  // see table 7.1.6.1-1 of 36.213
+
+
+NS_OBJECT_ENSURE_REGISTERED (CqaFfMacScheduler);
+
+
+struct qos_rb_and_CQI_assigned_to_lc
+{
+  uint16_t resource_block_index;       //Resource block indexHOL_GROUP_index
+  uint8_t  cqi_value_for_lc;       // CQI indicator value
+};
+
+
+bool CQIValueDescComparator (uint8_t key1, uint8_t key2)
+{
+  return key1>key2;
+}
+
+bool CqaGroupDescComparator (int key1, int key2)
+{
+  return key1>key2;
+}
+
+typedef uint8_t CQI_value;
+typedef int RBG_index;
+typedef int HOL_group;
+
+typedef std::map<CQI_value,LteFlowId_t,bool(*)(uint8_t,uint8_t)> t_map_CQIToUE; //sorted
+typedef std::map<RBG_index,t_map_CQIToUE> t_map_RBGToCQIsSorted;
+typedef std::map<HOL_group,t_map_RBGToCQIsSorted> t_map_HOLGroupToRBGs;
+
+typedef std::map<CQI_value,LteFlowId_t,bool(*)(uint8_t,uint8_t)>::iterator t_it_CQIToUE; //sorted
+typedef std::map<RBG_index,t_map_CQIToUE>::iterator t_it_RBGToCQIsSorted;
+typedef std::map<HOL_group,t_map_RBGToCQIsSorted>::iterator t_it_HOLGroupToRBGs;
+
+typedef std::multimap<HOL_group,std::set<LteFlowId_t>,bool(*)(int,int)> t_map_HOLgroupToUEs;
+typedef std::map<HOL_group,std::set<LteFlowId_t> >::iterator t_it_HOLgroupToUEs;
+
+//typedef std::map<RBG_index,CQI_value>  map_RBG_to_CQI;
+//typedef std::map<LteFlowId_t,map_RBG_to_CQI> map_flowId_to_CQI_map;
+
+
+bool CqaKeyDescComparator (uint16_t key1, uint16_t key2)
+{
+  return key1>key2;
+}
+
+
+class CqaSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider
+{
+public:
+  CqaSchedulerMemberCschedSapProvider (CqaFfMacScheduler* scheduler);
+
+  // inherited from FfMacCschedSapProvider
+  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params);
+  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params);
+  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params);
+  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params);
+  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params);
+
+private:
+  CqaSchedulerMemberCschedSapProvider ();
+  CqaFfMacScheduler* m_scheduler;
+};
+
+CqaSchedulerMemberCschedSapProvider::CqaSchedulerMemberCschedSapProvider ()
+{
+}
+
+CqaSchedulerMemberCschedSapProvider::CqaSchedulerMemberCschedSapProvider (CqaFfMacScheduler* scheduler) : m_scheduler (scheduler)
+{
+}
+
+
+void
+CqaSchedulerMemberCschedSapProvider::CschedCellConfigReq (const struct CschedCellConfigReqParameters& params)
+{
+  m_scheduler->DoCschedCellConfigReq (params);
+}
+
+void
+CqaSchedulerMemberCschedSapProvider::CschedUeConfigReq (const struct CschedUeConfigReqParameters& params)
+{
+  m_scheduler->DoCschedUeConfigReq (params);
+}
+
+
+void
+CqaSchedulerMemberCschedSapProvider::CschedLcConfigReq (const struct CschedLcConfigReqParameters& params)
+{
+  m_scheduler->DoCschedLcConfigReq (params);
+}
+
+void
+CqaSchedulerMemberCschedSapProvider::CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params)
+{
+  m_scheduler->DoCschedLcReleaseReq (params);
+}
+
+void
+CqaSchedulerMemberCschedSapProvider::CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params)
+{
+  m_scheduler->DoCschedUeReleaseReq (params);
+}
+
+
+
+class CqaSchedulerMemberSchedSapProvider : public FfMacSchedSapProvider
+{
+public:
+  CqaSchedulerMemberSchedSapProvider (CqaFfMacScheduler* scheduler);
+
+  // inherited from FfMacSchedSapProvider
+  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params);
+  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params);
+  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params);
+  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params);
+  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params);
+  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params);
+  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params);
+  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params);
+  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params);
+  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params);
+  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params);
+
+
+private:
+  CqaSchedulerMemberSchedSapProvider ();
+  CqaFfMacScheduler* m_scheduler;
+};
+
+
+
+CqaSchedulerMemberSchedSapProvider::CqaSchedulerMemberSchedSapProvider ()
+{
+}
+
+
+CqaSchedulerMemberSchedSapProvider::CqaSchedulerMemberSchedSapProvider (CqaFfMacScheduler* scheduler)
+  : m_scheduler (scheduler)
+{
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params)
+{
+  m_scheduler->DoSchedDlRlcBufferReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params)
+{
+  m_scheduler->DoSchedDlPagingBufferReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params)
+{
+  m_scheduler->DoSchedDlMacBufferReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params)
+{
+  m_scheduler->DoSchedDlTriggerReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params)
+{
+  m_scheduler->DoSchedDlRachInfoReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params)
+{
+  m_scheduler->DoSchedDlCqiInfoReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params)
+{
+  m_scheduler->DoSchedUlTriggerReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params)
+{
+  m_scheduler->DoSchedUlNoiseInterferenceReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params)
+{
+  m_scheduler->DoSchedUlSrInfoReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params)
+{
+  m_scheduler->DoSchedUlMacCtrlInfoReq (params);
+}
+
+void
+CqaSchedulerMemberSchedSapProvider::SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params)
+{
+  m_scheduler->DoSchedUlCqiInfoReq (params);
+}
+
+
+
+
+
+CqaFfMacScheduler::CqaFfMacScheduler ()
+  :   m_cschedSapUser (0),
+    m_schedSapUser (0),
+    m_timeWindow (99.0),
+    m_nextRntiUl (0)
+{
+  m_amc = CreateObject <LteAmc> ();
+  m_cschedSapProvider = new CqaSchedulerMemberCschedSapProvider (this);
+  m_schedSapProvider = new CqaSchedulerMemberSchedSapProvider (this);
+}
+
+CqaFfMacScheduler::~CqaFfMacScheduler ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+CqaFfMacScheduler::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  m_dlHarqProcessesDciBuffer.clear ();
+  m_dlHarqProcessesTimer.clear ();
+  m_dlHarqProcessesRlcPduListBuffer.clear ();
+  m_dlInfoListBuffered.clear ();
+  m_ulHarqCurrentProcessId.clear ();
+  m_ulHarqProcessesStatus.clear ();
+  m_ulHarqProcessesDciBuffer.clear ();
+  delete m_cschedSapProvider;
+  delete m_schedSapProvider;
+}
+
+TypeId
+CqaFfMacScheduler::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CqaFfMacScheduler")
+    .SetParent<FfMacScheduler> ()
+    .AddConstructor<CqaFfMacScheduler>()
+    .AddAttribute ("CqiTimerThreshold",
+                   "The number of TTIs a CQI is valid (default 1000 - 1 sec.)",
+                   UintegerValue (1000),
+                   MakeUintegerAccessor (&CqaFfMacScheduler::m_cqiTimersThreshold),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("CqaMetric",
+                   "CqaFfMacScheduler metric type that can be: CqaFf, CqaPf",
+                   StringValue ("CqaFf"),
+                   MakeStringAccessor (&CqaFfMacScheduler::m_CqaMetric),
+                   MakeStringChecker ())
+    .AddAttribute ("HarqEnabled",
+                   "Activate/Deactivate the HARQ [by default is active].",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&CqaFfMacScheduler::m_harqOn),
+                   MakeBooleanChecker ())
+    .AddAttribute ("UlGrantMcs",
+                   "The MCS of the UL grant, must be [0..15] (default 0)",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&CqaFfMacScheduler::m_ulGrantMcs),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+
+void
+CqaFfMacScheduler::SetFfMacCschedSapUser (FfMacCschedSapUser* s)
+{
+  m_cschedSapUser = s;
+}
+
+void
+CqaFfMacScheduler::SetFfMacSchedSapUser (FfMacSchedSapUser* s)
+{
+  m_schedSapUser = s;
+}
+
+FfMacCschedSapProvider*
+CqaFfMacScheduler::GetFfMacCschedSapProvider ()
+{
+  return m_cschedSapProvider;
+}
+
+FfMacSchedSapProvider*
+CqaFfMacScheduler::GetFfMacSchedSapProvider ()
+{
+  return m_schedSapProvider;
+}
+
+void
+CqaFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  // Read the subset of parameters used
+  m_cschedCellConfig = params;
+  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
+  FfMacCschedSapUser::CschedUeConfigCnfParameters cnf;
+  cnf.m_result = SUCCESS;
+  m_cschedSapUser->CschedUeConfigCnf (cnf);
+  return;
+}
+
+void
+CqaFfMacScheduler::DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params)
+{
+  NS_LOG_FUNCTION (this << " RNTI " << params.m_rnti << " txMode " << (uint16_t)params.m_transmissionMode);
+  std::map <uint16_t,uint8_t>::iterator it = m_uesTxMode.find (params.m_rnti);
+  if (it == m_uesTxMode.end ())
+    {
+      m_uesTxMode.insert (std::pair <uint16_t, uint8_t> (params.m_rnti, params.m_transmissionMode));
+      // generate HARQ buffers
+      m_dlHarqCurrentProcessId.insert (std::pair <uint16_t,uint8_t > (params.m_rnti, 0));
+      DlHarqProcessesStatus_t dlHarqPrcStatus;
+      dlHarqPrcStatus.resize (8,0);
+      m_dlHarqProcessesStatus.insert (std::pair <uint16_t, DlHarqProcessesStatus_t> (params.m_rnti, dlHarqPrcStatus));
+      DlHarqProcessesTimer_t dlHarqProcessesTimer;
+      dlHarqProcessesTimer.resize (8,0);
+      m_dlHarqProcessesTimer.insert (std::pair <uint16_t, DlHarqProcessesTimer_t> (params.m_rnti, dlHarqProcessesTimer));
+      DlHarqProcessesDciBuffer_t dlHarqdci;
+      dlHarqdci.resize (8);
+      m_dlHarqProcessesDciBuffer.insert (std::pair <uint16_t, DlHarqProcessesDciBuffer_t> (params.m_rnti, dlHarqdci));
+      DlHarqRlcPduListBuffer_t dlHarqRlcPdu;
+      dlHarqRlcPdu.resize (2);
+      dlHarqRlcPdu.at (0).resize (8);
+      dlHarqRlcPdu.at (1).resize (8);
+      m_dlHarqProcessesRlcPduListBuffer.insert (std::pair <uint16_t, DlHarqRlcPduListBuffer_t> (params.m_rnti, dlHarqRlcPdu));
+      m_ulHarqCurrentProcessId.insert (std::pair <uint16_t,uint8_t > (params.m_rnti, 0));
+      UlHarqProcessesStatus_t ulHarqPrcStatus;
+      ulHarqPrcStatus.resize (8,0);
+      m_ulHarqProcessesStatus.insert (std::pair <uint16_t, UlHarqProcessesStatus_t> (params.m_rnti, ulHarqPrcStatus));
+      UlHarqProcessesDciBuffer_t ulHarqdci;
+      ulHarqdci.resize (8);
+      m_ulHarqProcessesDciBuffer.insert (std::pair <uint16_t, UlHarqProcessesDciBuffer_t> (params.m_rnti, ulHarqdci));
+    }
+  else
+    {
+      (*it).second = params.m_transmissionMode;
+    }
+  return;
+}
+
+void
+CqaFfMacScheduler::DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params)
+{
+  NS_LOG_FUNCTION (this << " New LC, rnti: "  << params.m_rnti);
+
+  NS_LOG_FUNCTION ("LC configuration. Number of LCs:"<<params.m_logicalChannelConfigList.size ());
+
+  // m_reconfigureFlat indicates if this is a reconfiguration or new UE is added, table  4.1.5 in LTE MAC scheduler specification
+  if (params.m_reconfigureFlag)
+    {
+      std::vector <struct LogicalChannelConfigListElement_s>::const_iterator lcit;
+
+      for(lcit = params.m_logicalChannelConfigList.begin (); lcit!= params.m_logicalChannelConfigList.end (); lcit++)
+        {
+          LteFlowId_t flowid = LteFlowId_t (params.m_rnti,lcit->m_logicalChannelIdentity);
+
+          if (m_ueLogicalChannelsConfigList.find (flowid) == m_ueLogicalChannelsConfigList.end ())
+            {
+              NS_LOG_ERROR ("UE logical channels can not be reconfigured because it was not configured before.");
+            }
+          else
+            {
+              m_ueLogicalChannelsConfigList.find (flowid)->second = *lcit;
+            }
+        }
+
+    }    // else new UE is added
+  else
+    {
+      std::vector <struct LogicalChannelConfigListElement_s>::const_iterator lcit;
+
+      for (lcit = params.m_logicalChannelConfigList.begin (); lcit != params.m_logicalChannelConfigList.end (); lcit++)
+        {
+          LteFlowId_t flowId = LteFlowId_t (params.m_rnti,lcit->m_logicalChannelIdentity);
+          m_ueLogicalChannelsConfigList.insert (std::pair<LteFlowId_t, LogicalChannelConfigListElement_s>(flowId,*lcit));
+        }
+    }
+
+
+  std::map <uint16_t, CqasFlowPerf_t>::iterator it;
+
+  for (uint16_t i = 0; i < params.m_logicalChannelConfigList.size (); i++)
+    {
+      it = m_flowStatsDl.find (params.m_rnti);
+
+      if (it == m_flowStatsDl.end ())
+        {
+          double tbrDlInBytes = params.m_logicalChannelConfigList.at (i).m_eRabGuaranteedBitrateDl / 8;   // byte/s
+          double tbrUlInBytes = params.m_logicalChannelConfigList.at (i).m_eRabGuaranteedBitrateUl / 8;   // byte/s
+
+          CqasFlowPerf_t flowStatsDl;
+          flowStatsDl.flowStart = Simulator::Now ();
+          flowStatsDl.totalBytesTransmitted = 0;
+          flowStatsDl.lastTtiBytesTransmitted = 0;
+          flowStatsDl.lastAveragedThroughput = 1;
+          flowStatsDl.secondLastAveragedThroughput = 1;
+          flowStatsDl.targetThroughput = tbrDlInBytes;
+          m_flowStatsDl.insert (std::pair<uint16_t, CqasFlowPerf_t> (params.m_rnti, flowStatsDl));
+          CqasFlowPerf_t flowStatsUl;
+          flowStatsUl.flowStart = Simulator::Now ();
+          flowStatsUl.totalBytesTransmitted = 0;
+          flowStatsUl.lastTtiBytesTransmitted = 0;
+          flowStatsUl.lastAveragedThroughput = 1;
+          flowStatsUl.secondLastAveragedThroughput = 1;
+          flowStatsUl.targetThroughput = tbrUlInBytes;
+          m_flowStatsUl.insert (std::pair<uint16_t, CqasFlowPerf_t> (params.m_rnti, flowStatsUl));
+        }
+      else
+        {
+          // update GBR from UeManager::SetupDataRadioBearer ()
+          double tbrDlInBytes = params.m_logicalChannelConfigList.at (i).m_eRabGuaranteedBitrateDl / 8;   // byte/s
+          double tbrUlInBytes = params.m_logicalChannelConfigList.at (i).m_eRabGuaranteedBitrateUl / 8;   // byte/s
+          m_flowStatsDl[(*it).first].targetThroughput = tbrDlInBytes;
+          m_flowStatsUl[(*it).first].targetThroughput = tbrUlInBytes;
+
+        }
+    }
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  std::vector <uint8_t>::const_iterator it;
+
+  for (it = params.m_logicalChannelIdentity.begin (); it != params.m_logicalChannelIdentity.end (); it++)
+    {
+      LteFlowId_t flowId = LteFlowId_t (params.m_rnti, *it);
+
+      // find the logical channel with the same Logical Channel Identity in the current list, release it
+      if (m_ueLogicalChannelsConfigList.find (flowId)!= m_ueLogicalChannelsConfigList.end ())
+        {
+          m_ueLogicalChannelsConfigList.erase (flowId);
+        }
+      else
+        {
+          NS_FATAL_ERROR ("Logical channels cannot be released because it can not be found in the list of active LCs");
+        }
+    }
+	
+  for (uint16_t i = 0; i < params.m_logicalChannelIdentity.size (); i++)
+    {
+      std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
+      std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
+      while (it!=m_rlcBufferReq.end ())
+        {
+          if (((*it).first.m_rnti == params.m_rnti) && ((*it).first.m_lcId == params.m_logicalChannelIdentity.at (i)))
+            {
+              temp = it;
+              it++;
+              m_rlcBufferReq.erase (temp);
+            }
+          else
+            {
+              it++;
+            }
+        }
+    }
+  return;
+}
+
+void
+CqaFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+
+  for (int i=0; i < MAX_LC_LIST; i++)
+    {
+      LteFlowId_t flowId = LteFlowId_t (params.m_rnti,i);
+      // find the logical channel with the same Logical Channel Identity in the current list, release it
+      if (m_ueLogicalChannelsConfigList.find (flowId)!= m_ueLogicalChannelsConfigList.end ())
+        {
+          m_ueLogicalChannelsConfigList.erase (flowId);
+        }
+    }
+
+  m_uesTxMode.erase (params.m_rnti);
+  m_dlHarqCurrentProcessId.erase (params.m_rnti);
+  m_dlHarqProcessesStatus.erase  (params.m_rnti);
+  m_dlHarqProcessesTimer.erase (params.m_rnti);
+  m_dlHarqProcessesDciBuffer.erase  (params.m_rnti);
+  m_dlHarqProcessesRlcPduListBuffer.erase  (params.m_rnti);
+  m_ulHarqCurrentProcessId.erase  (params.m_rnti);
+  m_ulHarqProcessesStatus.erase  (params.m_rnti);
+  m_ulHarqProcessesDciBuffer.erase  (params.m_rnti);
+  m_flowStatsDl.erase  (params.m_rnti);
+  m_flowStatsUl.erase  (params.m_rnti);
+  m_ceBsrRxed.erase (params.m_rnti);
+  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
+  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
+  while (it!=m_rlcBufferReq.end ())
+    {
+      if ((*it).first.m_rnti == params.m_rnti)
+        {
+          temp = it;
+          it++;
+          m_rlcBufferReq.erase (temp);
+        }
+      else
+        {
+          it++;
+        }
+    }
+  if (m_nextRntiUl == params.m_rnti)
+    {
+      m_nextRntiUl = 0;
+    }
+
+  return;
+}
+
+
+void
+CqaFfMacScheduler::DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params)
+{
+  NS_LOG_FUNCTION (this << params.m_rnti << (uint32_t) params.m_logicalChannelIdentity);
+  // API generated by RLC for updating RLC parameters on a LC (tx and retx queues)
+
+  std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
+
+  LteFlowId_t flow (params.m_rnti, params.m_logicalChannelIdentity);
+
+  it =  m_rlcBufferReq.find (flow);
+
+  if (it == m_rlcBufferReq.end ())
+    {
+      m_rlcBufferReq.insert (std::pair <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> (flow, params));
+    }
+  else
+    {
+      (*it).second = params;
+    }
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_FATAL_ERROR ("method not implemented");
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_FATAL_ERROR ("method not implemented");
+  return;
+}
+
+int
+CqaFfMacScheduler::GetRbgSize (int dlbandwidth)
+{
+  for (int i = 0; i < 4; i++)
+    {
+      if (dlbandwidth < CqaType0AllocationRbg[i])
+        {
+          return (i + 1);
+        }
+    }
+
+  return (-1);
+}
+
+
+int
+CqaFfMacScheduler::LcActivePerFlow (uint16_t rnti)
+{
+  std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
+  int lcActive = 0;
+  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
+    {
+      if (((*it).first.m_rnti == rnti) && (((*it).second.m_rlcTransmissionQueueSize > 0)
+                                           || ((*it).second.m_rlcRetransmissionQueueSize > 0)
+                                           || ((*it).second.m_rlcStatusPduSize > 0) ))
+        {
+          lcActive++;
+        }
+      if ((*it).first.m_rnti > rnti)
+        {
+          break;
+        }
+    }
+  return (lcActive);
+
+}
+
+
+uint8_t
+CqaFfMacScheduler::HarqProcessAvailability (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this << rnti);
+
+  std::map <uint16_t, uint8_t>::iterator it = m_dlHarqCurrentProcessId.find (rnti);
+  if (it == m_dlHarqCurrentProcessId.end ())
+    {
+      NS_FATAL_ERROR ("No Process Id found for this RNTI " << rnti);
+    }
+  std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find (rnti);
+  if (itStat == m_dlHarqProcessesStatus.end ())
+    {
+      NS_FATAL_ERROR ("No Process Id Statusfound for this RNTI " << rnti);
+    }
+  uint8_t i = (*it).second;
+  do
+    {
+      i = (i + 1) % HARQ_PROC_NUM;
+    }
+  while ( ((*itStat).second.at (i) != 0)&&(i != (*it).second));
+  if ((*itStat).second.at (i) == 0)
+    {
+      return (true);
+    }
+  else
+    {
+      return (false); // return a not valid harq proc id
+    }
+}
+
+
+
+uint8_t
+CqaFfMacScheduler::UpdateHarqProcessId (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this << rnti);
+
+  if (m_harqOn == false)
+    {
+      return (0);
+    }
+
+
+  std::map <uint16_t, uint8_t>::iterator it = m_dlHarqCurrentProcessId.find (rnti);
+  if (it == m_dlHarqCurrentProcessId.end ())
+    {
+      NS_FATAL_ERROR ("No Process Id found for this RNTI " << rnti);
+    }
+  std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find (rnti);
+  if (itStat == m_dlHarqProcessesStatus.end ())
+    {
+      NS_FATAL_ERROR ("No Process Id Statusfound for this RNTI " << rnti);
+    }
+  uint8_t i = (*it).second;
+  do
+    {
+      i = (i + 1) % HARQ_PROC_NUM;
+    }
+  while ( ((*itStat).second.at (i) != 0)&&(i != (*it).second));
+  if ((*itStat).second.at (i) == 0)
+    {
+      (*it).second = i;
+      (*itStat).second.at (i) = 1;
+    }
+  else
+    {
+      NS_FATAL_ERROR ("No HARQ process available for RNTI " << rnti << " check before update with HarqProcessAvailability");
+    }
+
+  return ((*it).second);
+}
+
+
+void
+CqaFfMacScheduler::RefreshHarqProcesses ()
+{
+  NS_LOG_FUNCTION (this);
+
+  std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itTimers;
+  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers++)
+    {
+      for (uint16_t i = 0; i < HARQ_PROC_NUM; i++)
+        {
+          if ((*itTimers).second.at (i) == HARQ_DL_TIMEOUT)
+            {
+              // reset HARQ process
+
+              NS_LOG_DEBUG (this << " Reset HARQ proc " << i << " for RNTI " << (*itTimers).first);
+              std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find ((*itTimers).first);
+              if (itStat == m_dlHarqProcessesStatus.end ())
+                {
+                  NS_FATAL_ERROR ("No Process Id Status found for this RNTI " << (*itTimers).first);
+                }
+              (*itStat).second.at (i) = 0;
+              (*itTimers).second.at (i) = 0;
+            }
+          else
+            {
+              (*itTimers).second.at (i)++;
+            }
+        }
+    }
+
+}
+
+
+void
+CqaFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params)
+{
+  NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+  // API generated by RLC for triggering the scheduling of a DL subframe
+  // evaluate the relative channel quality indicator for each UE per each RBG
+  // (since we are using allocation type 0 the small unit of allocation is RBG)
+  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
+
+  RefreshDlCqiMaps ();
+
+  int rbgSize = GetRbgSize (m_cschedCellConfig.m_dlBandwidth);
+  int numberOfRBGs = m_cschedCellConfig.m_dlBandwidth / rbgSize;
+  std::map <uint16_t, std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> > allocationMapPerRntiPerLCId;
+  std::map <uint16_t, std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> >::iterator itMap;
+  allocationMapPerRntiPerLCId.clear ();
+  bool(*key_function_pointer_groups)(int,int) = CqaGroupDescComparator;
+  t_map_HOLgroupToUEs map_GBRHOLgroupToUE (key_function_pointer_groups);
+  t_map_HOLgroupToUEs map_nonGBRHOLgroupToUE (key_function_pointer_groups);
+  int grouping_parameter = 1000;
+  double tolerance = 1.1;
+  std::map<LteFlowId_t,int> UEtoHOL;
+  std::vector <bool> rbgMap;  // global RBGs map
+  uint16_t rbgAllocatedNum = 0;
+  std::set <uint16_t> rntiAllocated;
+  rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+  FfMacSchedSapUser::SchedDlConfigIndParameters ret;
+
+  //   update UL HARQ proc id
+  std::map <uint16_t, uint8_t>::iterator itProcId;
+  for (itProcId = m_ulHarqCurrentProcessId.begin (); itProcId != m_ulHarqCurrentProcessId.end (); itProcId++)
+    {
+      (*itProcId).second = ((*itProcId).second + 1) % HARQ_PROC_NUM;
+    }
+
+
+  // RACH Allocation
+  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
+  uint16_t rbStart = 0;
+  std::vector <struct RachListElement_s>::iterator itRach;
+  for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
+    {
+      NS_ASSERT_MSG (m_amc->GetTbSizeFromMcs (m_ulGrantMcs, m_cschedCellConfig.m_ulBandwidth) > (*itRach).m_estimatedSize, " Default UL Grant MCS does not allow to send RACH messages");
+      BuildRarListElement_s newRar;
+      newRar.m_rnti = (*itRach).m_rnti;
+      // DL-RACH Allocation
+      // Ideal: no needs of configuring m_dci
+      // UL-RACH Allocation
+      newRar.m_grant.m_rnti = newRar.m_rnti;
+      newRar.m_grant.m_mcs = m_ulGrantMcs;
+      uint16_t rbLen = 1;
+      uint16_t tbSizeBits = 0;
+      // find lowest TB size that fits UL grant estimated size
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+        {
+          rbLen++;
+          tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
+        }
+      if (tbSizeBits < (*itRach).m_estimatedSize)
+        {
+          // no more allocation space: finish allocation
+          break;
+        }
+      newRar.m_grant.m_rbStart = rbStart;
+      newRar.m_grant.m_rbLen = rbLen;
+      newRar.m_grant.m_tbSize = tbSizeBits / 8;
+      newRar.m_grant.m_hopping = false;
+      newRar.m_grant.m_tpc = 0;
+      newRar.m_grant.m_cqiRequest = false;
+      newRar.m_grant.m_ulDelay = false;
+      NS_LOG_INFO (this << " UL grant allocated to RNTI " << (*itRach).m_rnti << " rbStart " << rbStart << " rbLen " << rbLen << " MCS " << m_ulGrantMcs << " tbSize " << newRar.m_grant.m_tbSize);
+      for (uint16_t i = rbStart; i < rbStart + rbLen; i++)
+        {
+          m_rachAllocationMap.at (i) = (*itRach).m_rnti;
+        }
+      rbStart = rbStart + rbLen;
+      
+      if (m_harqOn == true)
+        {
+          // generate UL-DCI for HARQ retransmissions
+          UlDciListElement_s uldci;
+          uldci.m_rnti = newRar.m_rnti;
+          uldci.m_rbLen = rbLen;
+          uldci.m_rbStart = rbStart;
+          uldci.m_mcs = m_ulGrantMcs;
+          uldci.m_tbSize = tbSizeBits / 8;
+          uldci.m_ndi = 1;
+          uldci.m_cceIndex = 0;
+          uldci.m_aggrLevel = 1;
+          uldci.m_ueTxAntennaSelection = 3; // antenna selection OFF
+          uldci.m_hopping = false;
+          uldci.m_n2Dmrs = 0;
+          uldci.m_tpc = 0; // no power control
+          uldci.m_cqiRequest = false; // only period CQI at this stage
+          uldci.m_ulIndex = 0; // TDD parameter
+          uldci.m_dai = 1; // TDD parameter
+          uldci.m_freqHopping = 0;
+          uldci.m_pdcchPowerOffset = 0; // not used
+
+          uint8_t harqId = 0;
+          std::map <uint16_t, uint8_t>::iterator itProcId;
+          itProcId = m_ulHarqCurrentProcessId.find (uldci.m_rnti);
+          if (itProcId == m_ulHarqCurrentProcessId.end ())
+            {
+              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << uldci.m_rnti);
+            }
+          harqId = (*itProcId).second;
+          std::map <uint16_t, UlHarqProcessesDciBuffer_t>::iterator itDci = m_ulHarqProcessesDciBuffer.find (uldci.m_rnti);
+          if (itDci == m_ulHarqProcessesDciBuffer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
+            }
+          (*itDci).second.at (harqId) = uldci;
+        }
+      
+      ret.m_buildRarList.push_back (newRar);
+    }
+  m_rachList.clear ();
+
+
+  // Process DL HARQ feedback
+  RefreshHarqProcesses ();
+  // retrieve past HARQ retx buffered
+  if (m_dlInfoListBuffered.size () > 0)
+    {
+      if (params.m_dlInfoList.size () > 0)
+        {
+          NS_LOG_INFO (this << " Received DL-HARQ feedback");
+          m_dlInfoListBuffered.insert (m_dlInfoListBuffered.end (), params.m_dlInfoList.begin (), params.m_dlInfoList.end ());
+        }
+    }
+  else
+    {
+      if (params.m_dlInfoList.size () > 0)
+        {
+          m_dlInfoListBuffered = params.m_dlInfoList;
+        }
+    }
+  if (m_harqOn == false)
+    {
+      // Ignore HARQ feedback
+      m_dlInfoListBuffered.clear ();
+    }
+  std::vector <struct DlInfoListElement_s> dlInfoListUntxed;
+  for (uint16_t i = 0; i < m_dlInfoListBuffered.size (); i++)
+    {
+      std::set <uint16_t>::iterator itRnti = rntiAllocated.find (m_dlInfoListBuffered.at (i).m_rnti);
+      if (itRnti != rntiAllocated.end ())
+        {
+          // RNTI already allocated for retx
+          continue;
+        }
+      uint8_t nLayers = m_dlInfoListBuffered.at (i).m_harqStatus.size ();
+      std::vector <bool> retx;
+      NS_LOG_INFO (this << " Processing DLHARQ feedback");
+      if (nLayers == 1)
+        {
+          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (0) == DlInfoListElement_s::NACK);
+          retx.push_back (false);
+        }
+      else
+        {
+          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (0) == DlInfoListElement_s::NACK);
+          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (1) == DlInfoListElement_s::NACK);
+        }
+      if (retx.at (0) || retx.at (1))
+        {
+          // retrieve HARQ process information
+          uint16_t rnti = m_dlInfoListBuffered.at (i).m_rnti;
+          uint8_t harqId = m_dlInfoListBuffered.at (i).m_harqProcessId;
+          NS_LOG_INFO (this << " HARQ retx RNTI " << rnti << " harqId " << (uint16_t)harqId);
+          std::map <uint16_t, DlHarqProcessesDciBuffer_t>::iterator itHarq = m_dlHarqProcessesDciBuffer.find (rnti);
+          if (itHarq == m_dlHarqProcessesDciBuffer.end ())
+            {
+              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << rnti);
+            }
+
+          DlDciListElement_s dci = (*itHarq).second.at (harqId);
+          int rv = 0;
+          if (dci.m_rv.size () == 1)
+            {
+              rv = dci.m_rv.at (0);
+            }
+          else
+            {
+              rv = (dci.m_rv.at (0) > dci.m_rv.at (1) ? dci.m_rv.at (0) : dci.m_rv.at (1));
+            }
+
+          if (rv == 3)
+            {
+              // maximum number of retx reached -> drop process
+              NS_LOG_INFO ("Maximum number of retransmissions reached -> drop process");
+              std::map <uint16_t, DlHarqProcessesStatus_t>::iterator it = m_dlHarqProcessesStatus.find (rnti);
+              if (it == m_dlHarqProcessesStatus.end ())
+                {
+                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << m_dlInfoListBuffered.at (i).m_rnti);
+                }
+              (*it).second.at (harqId) = 0;
+              std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (rnti);
+              if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
+                {
+                  NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << m_dlInfoListBuffered.at (i).m_rnti);
+                }
+              for (uint16_t k = 0; k < (*itRlcPdu).second.size (); k++)
+                {
+                  (*itRlcPdu).second.at (k).at (harqId).clear ();
+                }
+              continue;
+            }
+          // check the feasibility of retransmitting on the same RBGs
+          // translate the DCI to Spectrum framework
+          std::vector <int> dciRbg;
+          uint32_t mask = 0x1;
+          NS_LOG_INFO ("Original RBGs " << dci.m_rbBitmap << " rnti " << dci.m_rnti);
+          for (int j = 0; j < 32; j++)
+            {
+              if (((dci.m_rbBitmap & mask) >> j) == 1)
+                {
+                  dciRbg.push_back (j);
+                  NS_LOG_INFO ("\t" << j);
+                }
+              mask = (mask << 1);
+            }
+          bool free = true;
+          for (uint8_t j = 0; j < dciRbg.size (); j++)
+            {
+              if (rbgMap.at (dciRbg.at (j)) == true)
+                {
+                  free = false;
+                  break;
+                }
+            }
+          if (free)
+            {
+              // use the same RBGs for the retx
+              // reserve RBGs
+              for (uint8_t j = 0; j < dciRbg.size (); j++)
+                {
+                  rbgMap.at (dciRbg.at (j)) = true;
+                  NS_LOG_INFO ("RBG " << dciRbg.at (j) << " assigned");
+                  rbgAllocatedNum++;
+                }
+
+              NS_LOG_INFO (this << " Send retx in the same RBGs");
+            }
+          else
+            {
+              // find RBGs for sending HARQ retx
+              uint8_t j = 0;
+              uint8_t rbgId = (dciRbg.at (dciRbg.size () - 1) + 1) % numberOfRBGs;
+              uint8_t startRbg = dciRbg.at (dciRbg.size () - 1);
+              std::vector <bool> rbgMapCopy = rbgMap;
+              while ((j < dciRbg.size ())&&(startRbg != rbgId))
+                {
+                  if (rbgMapCopy.at (rbgId) == false)
+                    {
+                      rbgMapCopy.at (rbgId) = true;
+                      dciRbg.at (j) = rbgId;
+                      j++;
+                    }
+                  rbgId++;
+                }
+              if (j == dciRbg.size ())
+                {
+                  // find new RBGs -> update DCI map
+                  uint32_t rbgMask = 0;
+                  for (uint16_t k = 0; k < dciRbg.size (); k++)
+                    {
+                      rbgMask = rbgMask + (0x1 << dciRbg.at (k));
+                      rbgAllocatedNum++;
+                    }
+                  dci.m_rbBitmap = rbgMask;
+                  rbgMap = rbgMapCopy;
+                  NS_LOG_INFO (this << " Move retx in RBGs " << dciRbg.size ());
+                }
+              else
+                {
+                  // HARQ retx cannot be performed on this TTI -> store it
+                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  NS_LOG_INFO (this << " No resource for this retx -> buffer it");
+                }
+            }
+          // retrieve RLC PDU list for retx TBsize and update DCI
+          BuildDataListElement_s newEl;
+          std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (rnti);
+          if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << rnti);
+            }
+          for (uint8_t j = 0; j < nLayers; j++)
+            {
+              if (retx.at (j))
+                {
+                  if (j >= dci.m_ndi.size ())
+                    {
+                      // for avoiding errors in MIMO transient phases
+                      dci.m_ndi.push_back (0);
+                      dci.m_rv.push_back (0);
+                      dci.m_mcs.push_back (0);
+                      dci.m_tbsSize.push_back (0);
+                      NS_LOG_INFO (this << " layer " << (uint16_t)j << " no txed (MIMO transition)");
+                    }
+                  else
+                    {
+                      dci.m_ndi.at (j) = 0;
+                      dci.m_rv.at (j)++;
+                      (*itHarq).second.at (harqId).m_rv.at (j)++;
+                      NS_LOG_INFO (this << " layer " << (uint16_t)j << " RV " << (uint16_t)dci.m_rv.at (j));
+                    }
+                }
+              else
+                {
+                  // empty TB of layer j
+                  dci.m_ndi.at (j) = 0;
+                  dci.m_rv.at (j) = 0;
+                  dci.m_mcs.at (j) = 0;
+                  dci.m_tbsSize.at (j) = 0;
+                  NS_LOG_INFO (this << " layer " << (uint16_t)j << " no retx");
+                }
+            }
+          for (uint16_t k = 0; k < (*itRlcPdu).second.at (0).at (dci.m_harqProcess).size (); k++)
+            {
+              std::vector <struct RlcPduListElement_s> rlcPduListPerLc;
+              for (uint8_t j = 0; j < nLayers; j++)
+                {
+                  if (retx.at (j))
+                    {
+                      if (j < dci.m_ndi.size ())
+                        {
+                          rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
+                        }
+                    }
+                }
+
+              if (rlcPduListPerLc.size () > 0)
+                {
+                  newEl.m_rlcPduList.push_back (rlcPduListPerLc);
+                }
+            }
+          newEl.m_rnti = rnti;
+          newEl.m_dci = dci;
+          (*itHarq).second.at (harqId).m_rv = dci.m_rv;
+          // refresh timer
+          std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itHarqTimer = m_dlHarqProcessesTimer.find (rnti);
+          if (itHarqTimer== m_dlHarqProcessesTimer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find HARQ timer for RNTI " << (uint16_t)rnti);
+            }
+          (*itHarqTimer).second.at (harqId) = 0;
+          ret.m_buildDataList.push_back (newEl);
+          rntiAllocated.insert (rnti);
+        }
+      else
+        {
+          // update HARQ process status
+          NS_LOG_INFO (this << " HARQ received ACK for UE " << m_dlInfoListBuffered.at (i).m_rnti);
+          std::map <uint16_t, DlHarqProcessesStatus_t>::iterator it = m_dlHarqProcessesStatus.find (m_dlInfoListBuffered.at (i).m_rnti);
+          if (it == m_dlHarqProcessesStatus.end ())
+            {
+              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << m_dlInfoListBuffered.at (i).m_rnti);
+            }
+          (*it).second.at (m_dlInfoListBuffered.at (i).m_harqProcessId) = 0;
+          std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (m_dlInfoListBuffered.at (i).m_rnti);
+          if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << m_dlInfoListBuffered.at (i).m_rnti);
+            }
+          for (uint16_t k = 0; k < (*itRlcPdu).second.size (); k++)
+            {
+              (*itRlcPdu).second.at (k).at (m_dlInfoListBuffered.at (i).m_harqProcessId).clear ();
+            }
+        }
+    }
+  m_dlInfoListBuffered.clear ();
+  m_dlInfoListBuffered = dlInfoListUntxed;
+	
+	
+  std::map <LteFlowId_t,struct LogicalChannelConfigListElement_s>::iterator itLogicalChannels;
+	
+  for (itLogicalChannels = m_ueLogicalChannelsConfigList.begin (); itLogicalChannels != m_ueLogicalChannelsConfigList.end (); itLogicalChannels++)
+    {
+      std::set <uint16_t>::iterator itRnti = rntiAllocated.find (itLogicalChannels->first.m_rnti);
+      if ((itRnti != rntiAllocated.end ())||(!HarqProcessAvailability (itLogicalChannels->first.m_rnti)))
+        {
+          // UE already allocated for HARQ or without HARQ process available -> drop it
+          if (itRnti != rntiAllocated.end ())
+            {
+              NS_LOG_DEBUG (this << " RNTI discared for HARQ tx" << (uint16_t)(itLogicalChannels->first.m_rnti));
+            }
+          if (!HarqProcessAvailability (itLogicalChannels->first.m_rnti))
+            {
+              NS_LOG_DEBUG (this << " RNTI discared for HARQ id" << (uint16_t)(itLogicalChannels->first.m_rnti));
+            }
+          continue;
+        }
+
+
+      std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator itRlcBufferReq = m_rlcBufferReq.find (itLogicalChannels->first);
+      if (itRlcBufferReq==m_rlcBufferReq.end ())
+        continue;
+
+      int group = -1;
+      int delay = 0;
+
+      if (itRlcBufferReq->second.m_rlcRetransmissionQueueSize > 0)
+        {
+          delay = itRlcBufferReq->second.m_rlcRetransmissionHolDelay;
+          group = delay/grouping_parameter;
+        }
+      else if  (itRlcBufferReq->second.m_rlcTransmissionQueueSize > 0)
+        {
+          delay = itRlcBufferReq->second.m_rlcTransmissionQueueHolDelay;
+          group = delay/grouping_parameter;
+        }
+      else
+        {
+          continue;
+        }
+
+      UEtoHOL.insert (std::pair<LteFlowId_t,int>(itLogicalChannels->first,delay));
+
+      if (itLogicalChannels->second.m_qosBearerType == itLogicalChannels->second.QBT_NON_GBR )
+        {
+          if (map_nonGBRHOLgroupToUE.count (group)==0)
+            {
+              std::set<LteFlowId_t> v;
+              v.insert (itRlcBufferReq->first);
+              map_nonGBRHOLgroupToUE.insert (std::pair<int,std::set<LteFlowId_t> >(group,v));
+            }
+          else
+            {
+              map_nonGBRHOLgroupToUE.find (group)->second.insert (itRlcBufferReq->first);
+            }
+        }
+      else if (itLogicalChannels->second.m_qosBearerType == itLogicalChannels->second.QBT_GBR) {
+          if (map_GBRHOLgroupToUE.count (group)==0)
+            {
+              std::set<LteFlowId_t> v;
+              v.insert (itRlcBufferReq->first);
+              map_GBRHOLgroupToUE.insert (std::pair<int,std::set<LteFlowId_t> >(group,v));
+            }
+          else
+            {
+              map_GBRHOLgroupToUE.find (group)->second.insert (itRlcBufferReq->first);
+            }
+        }
+    };
+
+
+  // Prepare data for the scheduling mechanism
+  // map: UE, to the amount of traffic they have to transfer
+  std::map<LteFlowId_t, int> UeToAmountOfDataToTransfer;
+  //Initialize the map per UE, how much resources is already assigned to the user
+  std::map<LteFlowId_t, int> UeToAmountOfAssignedResources;
+  // prepare values to calculate FF metric, this metric will be the same for all flows(logical channels) that belong to the same RNTI
+  std::map < uint16_t, uint8_t > sbCqiSum;
+
+  for( std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator itrbr = m_rlcBufferReq.begin ();
+       itrbr!=m_rlcBufferReq.end (); itrbr++)
+    {
+
+      LteFlowId_t flowId = itrbr->first;                // Prepare data for the scheduling mechanism
+      // map: UE, to the amount of traffic they have to transfer
+      int amountOfDataToTransfer =  8*((int)m_rlcBufferReq.find (flowId)->second.m_rlcRetransmissionQueueSize +
+                                       (int)m_rlcBufferReq.find (flowId)->second.m_rlcTransmissionQueueSize);
+
+      UeToAmountOfDataToTransfer.insert (std::pair<LteFlowId_t,int>(flowId,amountOfDataToTransfer));
+      UeToAmountOfAssignedResources.insert (std::pair<LteFlowId_t,int>(flowId,0));
+
+      uint8_t sum = 0;
+      for (int i = 0; i < numberOfRBGs; i++)
+        {
+          std::map <uint16_t,SbMeasResult_s>::iterator itCqi;
+          itCqi = m_a30CqiRxed.find ((*itrbr).first.m_rnti);
+          std::map <uint16_t,uint8_t>::iterator itTxMode;
+          itTxMode = m_uesTxMode.find ((*itrbr).first.m_rnti);
+          if (itTxMode == m_uesTxMode.end ())
+            {
+              NS_FATAL_ERROR ("No Transmission Mode info on user " << (*itrbr).first.m_rnti);
+            }
+          int nLayer = TransmissionModesLayers::TxMode2LayerNum ((*itTxMode).second);
+          std::vector <uint8_t> sbCqis;
+          if (itCqi == m_a30CqiRxed.end ())
+            {
+              for (uint8_t k = 0; k < nLayer; k++)
+                {
+                  sbCqis.push_back (1);                        // start with lowest value
+                }
+            }
+          else
+            {
+              sbCqis = (*itCqi).second.m_higherLayerSelected.at (i).m_sbCqi;
+            }
+
+          uint8_t cqi1 = sbCqis.at (0);
+          uint8_t cqi2 = 1;
+          if (sbCqis.size () > 1)
+            {
+              cqi2 = sbCqis.at (1);
+            }
+
+          uint8_t sbCqi;
+          if ((cqi1 > 0)||(cqi2 > 0))               // CQI == 0 means "out of range" (see table 7.2.3-1 of 36.213)
+            {
+              for (uint8_t k = 0; k < nLayer; k++)
+                {
+                  if (sbCqis.size () > k)
+                    {
+                      sbCqi = sbCqis.at (k);
+                    }
+                  else
+                    {
+                      // no info on this subband
+                      sbCqi = 0;
+                    }
+                  sum += sbCqi;
+                }
+            }               // end if cqi
+        }        // end of rbgNum
+
+      sbCqiSum.insert (std::pair<uint16_t, uint8_t> ((*itrbr).first.m_rnti, sum));
+    }
+
+  // availableRBGs - set that contains indexes of available resource block groups
+  std::set<int> availableRBGs;
+  for (int i = 0; i <  numberOfRBGs; i++)
+    {
+      if (rbgMap.at (i) == false)
+        availableRBGs.insert (i);
+    }
+
+  t_it_HOLgroupToUEs itGBRgroups = map_GBRHOLgroupToUE.begin ();
+  t_it_HOLgroupToUEs itnonGBRgroups = map_nonGBRHOLgroupToUE.begin ();
+
+
+
+  // while there are more resources available, loop through the users that are grouped by HOL value
+  while (availableRBGs.size ()>0)
+    {
+      std::set<LteFlowId_t> vUEs;
+      t_it_HOLgroupToUEs itCurrentGroup;
+
+      if (itGBRgroups!=map_GBRHOLgroupToUE.end ())
+        {
+          itCurrentGroup=itGBRgroups;
+          itGBRgroups++;
+        }
+      else if (itnonGBRgroups!=map_nonGBRHOLgroupToUE.end ())                  // if there are no more flows with retransmission queue start to scheduler flows with transmission queue
+        {
+          itCurrentGroup=itnonGBRgroups;
+          itnonGBRgroups++;
+        }
+      else
+        {
+          NS_LOG_INFO ("Available RBGs:"<< availableRBGs.size ()<<"but no users");
+          break;
+        }
+
+      while (availableRBGs.size ()>0 and itCurrentGroup->second.size ()>0)
+        {
+          int currentRB = *(availableRBGs.begin ());
+          std::map<LteFlowId_t, CQI_value> UeToCQIValue;
+          std::map<LteFlowId_t, double > UeToCoitaMetric;
+          std::map<LteFlowId_t, bool> UeHasReachedGBR;
+          double maximumValueMetric = 0;
+          LteFlowId_t userWithMaximumMetric;
+          UeToCQIValue.clear ();
+          UeToCoitaMetric.clear ();
+
+          // Iterate through the users and calculate which user will use the best of the current resource bloc.end()k and assign to that user.
+          for (std::set<LteFlowId_t>::iterator it=itCurrentGroup->second.begin (); it!=itCurrentGroup->second.end (); it++)
+            {
+              LteFlowId_t flowId = *it;
+              uint8_t cqi_value = 1;                           //higher better, maximum is 15
+              double coita_metric = 1;
+              double coita_sum = 0;
+              double metric = 0;
+              uint8_t worstCQIAmongRBGsAllocatedForThisUser = 15;
+              int numberOfRBGAllocatedForThisUser = 0;
+              LogicalChannelConfigListElement_s lc = m_ueLogicalChannelsConfigList.find (flowId)->second;
+              std::map <uint16_t,SbMeasResult_s>::iterator itRntiCQIsMap = m_a30CqiRxed.find (flowId.m_rnti);
+
+              std::map <uint16_t, CqasFlowPerf_t>::iterator itStats;
+
+              if (m_flowStatsDl.find (flowId.m_rnti) == m_flowStatsDl.end ())
+                {
+                  continue;                               // TO DO:  check if this should be logged and how.
+                }
+
+              itStats = m_flowStatsDl.find (flowId.m_rnti);
+              double tbr_weight = (*itStats).second.targetThroughput / (*itStats).second.lastAveragedThroughput;
+              if (tbr_weight < 1.0)
+                tbr_weight = 1.0;
+
+              if (itRntiCQIsMap != m_a30CqiRxed.end ())
+                {
+                  for(std::set<int>::iterator it=availableRBGs.begin (); it!=availableRBGs.end (); it++)
+                    {
+                      try
+                        {
+                          int val = (itRntiCQIsMap->second.m_higherLayerSelected.at (*it).m_sbCqi.at (0));
+                          if (val==0)
+                            val=1;                                             //if no info, use minimum
+                          if (*it == currentRB)
+                            cqi_value = val;
+                          coita_sum+=val;
+
+                        }
+                      catch(std::out_of_range&)
+                        {
+                          coita_sum+=1;                                      //if no info on channel use the worst cqi
+                          NS_LOG_INFO ("No CQI for lcId:"<<flowId.m_lcId<<" rnti:"<<flowId.m_rnti<<" at subband:"<<currentRB);
+                          //std::cout<<"\n No CQI for lcId:.....................................";
+                        }
+                    }
+                  coita_metric =cqi_value/coita_sum;
+                  UeToCQIValue.insert (std::pair<LteFlowId_t,CQI_value>(flowId,cqi_value));
+                  UeToCoitaMetric.insert (std::pair<LteFlowId_t, double>(flowId,coita_metric));
+                }
+
+              if (allocationMapPerRntiPerLCId.find (flowId.m_rnti)==allocationMapPerRntiPerLCId.end ())
+                {
+                  worstCQIAmongRBGsAllocatedForThisUser=cqi_value;
+                }
+              else {
+
+                  numberOfRBGAllocatedForThisUser = (allocationMapPerRntiPerLCId.find (flowId.m_rnti)->second.size ());
+
+                  for (std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc>::iterator itRBG = allocationMapPerRntiPerLCId.find (flowId.m_rnti)->second.begin ();
+                       itRBG!=allocationMapPerRntiPerLCId.find (flowId.m_rnti)->second.end (); itRBG++)
+                    {
+                      qos_rb_and_CQI_assigned_to_lc e = itRBG->second;
+                      if (e.cqi_value_for_lc < worstCQIAmongRBGsAllocatedForThisUser)
+                        worstCQIAmongRBGsAllocatedForThisUser=e.cqi_value_for_lc;
+                    }
+
+                  if (cqi_value < worstCQIAmongRBGsAllocatedForThisUser)
+                    {
+                      worstCQIAmongRBGsAllocatedForThisUser=cqi_value;
+                    }
+                }
+
+              int mcsForThisUser = m_amc->GetMcsFromCqi (worstCQIAmongRBGsAllocatedForThisUser);
+              int tbSize = m_amc->GetTbSizeFromMcs (mcsForThisUser, (numberOfRBGAllocatedForThisUser+1) * rbgSize)/8;                           // similar to calculation of TB size (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
+
+
+              double achievableRate = (( m_amc->GetTbSizeFromMcs (mcsForThisUser, rbgSize)/ 8) / 0.001);
+              double pf_weight = achievableRate / (*itStats).second.secondLastAveragedThroughput;
+
+              UeToAmountOfAssignedResources.find (flowId)->second = tbSize;
+              FfMacSchedSapProvider::SchedDlRlcBufferReqParameters lcBufferInfo = m_rlcBufferReq.find (flowId)->second;
+
+              if (UeToAmountOfDataToTransfer.find (flowId)->second - UeToAmountOfAssignedResources.find (flowId)->second < 0)
+                {
+                  UeHasReachedGBR.insert (std::pair<LteFlowId_t,bool>(flowId,false));
+                }
+
+              double bitRateWithNewRBG = 0;
+
+              if (m_flowStatsDl.find (flowId.m_rnti)!= m_flowStatsDl.end ())                         // there are some statistics{
+                {
+                  bitRateWithNewRBG = (1.0 - (1.0 / m_timeWindow)) * (m_flowStatsDl.find (flowId.m_rnti)->second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)(tbSize*1000));
+                }
+              else
+                {
+                  bitRateWithNewRBG = (1.0 / m_timeWindow) * (double)(tbSize*1000);
+                }
+
+              if(bitRateWithNewRBG > lc.m_eRabGuaranteedBitrateDl)
+                {
+                  UeHasReachedGBR.insert (std::pair<LteFlowId_t,bool>(flowId,true));
+                }
+              else
+                {
+                  UeHasReachedGBR.insert (std::pair<LteFlowId_t,bool>(flowId,false));
+                }
+
+              int hol = UEtoHOL.find (flowId)->second;
+
+              if (hol==0)
+                hol=1;
+
+              if ( m_CqaMetric.compare ("CqaFf") == 0)
+                {
+                  metric = coita_metric*tbr_weight*hol;
+                }
+              else if (m_CqaMetric.compare ("CqaPf") == 0)
+                {
+                  metric = tbr_weight*pf_weight*hol;
+                }
+              else
+                {
+                  metric = 1;
+                }
+
+              if (metric >= maximumValueMetric)
+                {
+                  maximumValueMetric = metric;
+                  userWithMaximumMetric = flowId;
+                }
+            }
+
+          qos_rb_and_CQI_assigned_to_lc s;
+          s.cqi_value_for_lc = UeToCQIValue.find (userWithMaximumMetric)->second;
+          s.resource_block_index = currentRB;
+
+          itMap = allocationMapPerRntiPerLCId.find (userWithMaximumMetric.m_rnti);
+
+          if (itMap == allocationMapPerRntiPerLCId.end ())
+            {
+              std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> tempMap;
+              tempMap.insert (std::pair<uint8_t, qos_rb_and_CQI_assigned_to_lc> (userWithMaximumMetric.m_lcId,s));
+              allocationMapPerRntiPerLCId.insert (std::pair <uint16_t, std::multimap <uint8_t,qos_rb_and_CQI_assigned_to_lc> > (userWithMaximumMetric.m_rnti, tempMap));
+            }
+          else
+            {
+              itMap->second.insert (std::pair<uint8_t,qos_rb_and_CQI_assigned_to_lc> (userWithMaximumMetric.m_lcId,s));
+            }
+
+          // erase current RBG from the list of available RBG
+          availableRBGs.erase (currentRB);
+
+          if (UeToAmountOfDataToTransfer.find (userWithMaximumMetric)->second <= UeToAmountOfAssignedResources.find (userWithMaximumMetric)->second*tolerance)
+          //||(UeHasReachedGBR.find(userWithMaximumMetric)->second == true))
+            {
+              itCurrentGroup->second.erase (userWithMaximumMetric);
+            }
+
+        }                 // while there are more users in current group
+    }             // while there are more groups of users
+
+
+  // reset TTI stats of users
+  std::map <uint16_t, CqasFlowPerf_t>::iterator itStats;
+  for (itStats = m_flowStatsDl.begin (); itStats != m_flowStatsDl.end (); itStats++)
+    {
+      (*itStats).second.lastTtiBytesTransmitted = 0;
+    }
+
+  // 3) Creating the correspondent DCIs (Generate the transmission opportunities by grouping the RBGs of the same RNTI)
+  //FfMacSchedSapUser::SchedDlConfigIndParameters ret;
+  itMap = allocationMapPerRntiPerLCId.begin ();
+  int counter = 0;
+  std::map<uint16_t, double> m_rnti_per_ratio;
+
+  while (itMap != allocationMapPerRntiPerLCId.end ())
+    {
+      // create new BuildDataListElement_s for this LC
+      BuildDataListElement_s newEl;
+      newEl.m_rnti = (*itMap).first;
+      NS_LOG_INFO ("Scheduled RNTI:"<<newEl.m_rnti);
+      // create the DlDciListElement_s
+      DlDciListElement_s newDci;
+      std::vector <struct RlcPduListElement_s> newRlcPduLe;
+      newDci.m_rnti = (*itMap).first;
+      newDci.m_harqProcess = UpdateHarqProcessId ((*itMap).first);
+      uint16_t lcActives = LcActivePerFlow (itMap->first);
+      if (lcActives==0)           // if there is still no buffer report information on any flow
+        lcActives = 1;
+      // NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " rbg " << lcActives);
+      uint16_t RgbPerRnti = (*itMap).second.size ();
+      double doubleRBgPerRnti = RgbPerRnti;
+      double doubleRbgNum = numberOfRBGs;
+      double rrRatio = doubleRBgPerRnti/doubleRbgNum;
+      m_rnti_per_ratio.insert (std::pair<uint16_t,double>((*itMap).first,rrRatio));
+      std::map <uint16_t,SbMeasResult_s>::iterator itCqi;
+      itCqi = m_a30CqiRxed.find ((*itMap).first);
+      uint8_t worstCqi = 15;
+
+      // assign the worst value of CQI that user experienced on any of its subbands
+      for ( std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> ::iterator it = (*itMap).second.begin (); it != (*itMap).second.end (); it++)
+        {
+          if (it->second.cqi_value_for_lc<worstCqi)
+            {
+              worstCqi = it->second.cqi_value_for_lc;
+            }
+          counter++;
+        }
+
+      newDci.m_mcs.push_back (m_amc->GetMcsFromCqi (worstCqi));
+      int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (0), RgbPerRnti * rbgSize) / 8);           // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
+      newDci.m_tbsSize.push_back (tbSize);
+      newDci.m_resAlloc = 0;            // only allocation type 0 at this stage
+      newDci.m_rbBitmap = 0;    // TBD (32 bit bitmap see 7.1.6 of 36.213)
+      uint32_t rbgMask = 0;
+      std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> ::iterator itRBGsPerRNTI;
+      for ( itRBGsPerRNTI = (*itMap).second.begin (); itRBGsPerRNTI != (*itMap).second.end (); itRBGsPerRNTI++)
+        {
+          rbgMask = rbgMask + (0x1 << itRBGsPerRNTI->second.resource_block_index);
+        }
+      newDci.m_rbBitmap = rbgMask;   // (32 bit bitmap see 7.1.6 of 36.213)
+      // NOTE: In this first version of CqaFfMacScheduler, it is assumed one flow per user.
+      // create the rlc PDUs -> equally divide resources among active LCs
+      std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator itBufReq;
+      for (itBufReq = m_rlcBufferReq.begin (); itBufReq != m_rlcBufferReq.end (); itBufReq++)
+        {
+          if (((*itBufReq).first.m_rnti == (*itMap).first)
+              && (((*itBufReq).second.m_rlcTransmissionQueueSize > 0)
+                  || ((*itBufReq).second.m_rlcRetransmissionQueueSize > 0)
+                  || ((*itBufReq).second.m_rlcStatusPduSize > 0) ))
+            {
+              std::vector <struct RlcPduListElement_s> newRlcPduLe;
+              //for (uint8_t j = 0; j < nLayer; j++)
+              //{
+              RlcPduListElement_s newRlcEl;
+              newRlcEl.m_logicalChannelIdentity = (*itBufReq).first.m_lcId;
+              // newRlcEl.m_size = newDci.m_tbsSize.at (j) / lcActives;
+              newRlcEl.m_size = tbSize / lcActives;
+              // NS_LOG_INFO (this << " LCID " << (uint32_t) newRlcEl.m_logicalChannelIdentity << " size " << newRlcEl.m_size << " layer " << (uint16_t)j);
+              newRlcPduLe.push_back (newRlcEl);
+              UpdateDlRlcBufferInfo (newDci.m_rnti, newRlcEl.m_logicalChannelIdentity, newRlcEl.m_size);
+              if (m_harqOn == true)
+                {
+                  // store RLC PDU list for HARQ
+                  std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find ((*itMap).first);
+                  if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
+                    {
+                      NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << (*itMap).first);
+                    }
+                  int j=0;
+                  (*itRlcPdu).second.at (j).at (newDci.m_harqProcess).push_back (newRlcEl);
+                }
+              // }
+              newEl.m_rlcPduList.push_back (newRlcPduLe);
+            }
+          if ((*itBufReq).first.m_rnti > (*itMap).first)
+            {
+              break;
+            }
+        }
+      // for (uint8_t j = 0; j < nLayer; j++)
+      // {
+      newDci.m_ndi.push_back (1);
+      newDci.m_rv.push_back (0);
+      //}
+
+      newEl.m_dci = newDci;
+
+      if (m_harqOn == true)
+        {
+          // store DCI for HARQ
+          std::map <uint16_t, DlHarqProcessesDciBuffer_t>::iterator itDci = m_dlHarqProcessesDciBuffer.find (newEl.m_rnti);
+          if (itDci == m_dlHarqProcessesDciBuffer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find RNTI entry in DCI HARQ buffer for RNTI " << newEl.m_rnti);
+            }
+          (*itDci).second.at (newDci.m_harqProcess) = newDci;
+          // refresh timer
+          std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itHarqTimer =  m_dlHarqProcessesTimer.find (newEl.m_rnti);
+          if (itHarqTimer== m_dlHarqProcessesTimer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find HARQ timer for RNTI " << (uint16_t)newEl.m_rnti);
+            }
+          (*itHarqTimer).second.at (newDci.m_harqProcess) = 0;
+        }
+
+      // ...more parameters -> ingored in this version
+
+      ret.m_buildDataList.push_back (newEl);
+      // update UE stats
+      std::map <uint16_t, CqasFlowPerf_t>::iterator it;
+      it = m_flowStatsDl.find ((*itMap).first);
+      if (it != m_flowStatsDl.end ())
+        {
+          (*it).second.lastTtiBytesTransmitted = tbSize;
+        }
+      else
+        {
+          NS_FATAL_ERROR (this << " No Stats for this allocated UE");
+        }
+
+      itMap++;
+    } // end while allocation
+  ret.m_nrOfPdcchOfdmSymbols = 1;   // TODO: check correct value according the DCIs txed
+
+  // update UEs stats
+  NS_LOG_INFO (this << " Update UEs statistics");
+  for (itStats = m_flowStatsDl.begin (); itStats != m_flowStatsDl.end (); itStats++)
+    {
+      if (allocationMapPerRntiPerLCId.find (itStats->first)!= allocationMapPerRntiPerLCId.end ())
+        {
+          (*itStats).second.secondLastAveragedThroughput = ((1.0 - (1 / m_timeWindow)) * (*itStats).second.secondLastAveragedThroughput) + ((1 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTransmitted / 0.001));
+        }
+
+      (*itStats).second.totalBytesTransmitted += (*itStats).second.lastTtiBytesTransmitted;
+      // update average throughput (see eq. 12.3 of Sec 12.3.1.2 of LTE – The UMTS Long Term Evolution, Ed Wiley)
+      (*itStats).second.lastAveragedThroughput = ((1.0 - (1.0 / m_timeWindow)) * (*itStats).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTransmitted / 0.001));
+      NS_LOG_INFO (this << " UE total bytes " << (*itStats).second.totalBytesTransmitted);
+      NS_LOG_INFO (this << " UE average throughput " << (*itStats).second.lastAveragedThroughput);
+      (*itStats).second.lastTtiBytesTransmitted = 0;
+    }
+
+  m_schedSapUser->SchedDlConfigInd (ret);
+
+  int count_allocated_resource_blocks = 0;
+  for (std::map <uint16_t, std::multimap <uint8_t, qos_rb_and_CQI_assigned_to_lc> >::iterator itMap = allocationMapPerRntiPerLCId.begin (); itMap!=allocationMapPerRntiPerLCId.end (); itMap++)
+    {
+      count_allocated_resource_blocks+=itMap->second.size ();
+    }
+  NS_LOG_INFO (this << " Allocated RBs:" << count_allocated_resource_blocks);
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_rachList = params.m_rachList;
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+
+  for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
+    {
+      if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::P10 )
+        {
+          // wideband CQI reporting
+          std::map <uint16_t,uint8_t>::iterator it;
+          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
+          it = m_p10CqiRxed.find (rnti);
+          if (it == m_p10CqiRxed.end ())
+            {
+              // create the new entry
+              m_p10CqiRxed.insert ( std::pair<uint16_t, uint8_t > (rnti, params.m_cqiList.at (i).m_wbCqi.at (0)) ); // only codeword 0 at this stage (SISO)
+              // generate correspondent timer
+              m_p10CqiTimers.insert ( std::pair<uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
+            }
+          else
+            {
+              // update the CQI value and refresh correspondent timer
+              (*it).second = params.m_cqiList.at (i).m_wbCqi.at (0);
+              // update correspondent timer
+              std::map <uint16_t,uint32_t>::iterator itTimers;
+              itTimers = m_p10CqiTimers.find (rnti);
+              (*itTimers).second = m_cqiTimersThreshold;
+            }
+        }
+      else if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::A30 )
+        {
+          // subband CQI reporting high layer configured
+          std::map <uint16_t,SbMeasResult_s>::iterator it;
+          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
+          it = m_a30CqiRxed.find (rnti);
+          if (it == m_a30CqiRxed.end ())
+            {
+              // create the new entry
+              m_a30CqiRxed.insert ( std::pair<uint16_t, SbMeasResult_s > (rnti, params.m_cqiList.at (i).m_sbMeasResult) );
+              m_a30CqiTimers.insert ( std::pair<uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
+            }
+          else
+            {
+              // update the CQI value and refresh correspondent timer
+              (*it).second = params.m_cqiList.at (i).m_sbMeasResult;
+              std::map <uint16_t,uint32_t>::iterator itTimers;
+              itTimers = m_a30CqiTimers.find (rnti);
+              (*itTimers).second = m_cqiTimersThreshold;
+            }
+        }
+      else
+        {
+          NS_LOG_ERROR (this << " CQI type unknown");
+        }
+    }
+
+  return;
+}
+
+
+double
+CqaFfMacScheduler::EstimateUlSinr (uint16_t rnti, uint16_t rb)
+{
+  std::map <uint16_t, std::vector <double> >::iterator itCqi = m_ueCqi.find (rnti);
+  if (itCqi == m_ueCqi.end ())
+    {
+      // no cqi info about this UE
+      return (NO_SINR);
+
+    }
+  else
+    {
+      // take the average SINR value among the available
+      double sinrSum = 0;
+      int sinrNum = 0;
+      for (uint32_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
+        {
+          double sinr = (*itCqi).second.at (i);
+          if (sinr != NO_SINR)
+            {
+              sinrSum += sinr;
+              sinrNum++;
+            }
+        }
+      double estimatedSinr = (sinrNum > 0) ? (sinrSum / sinrNum) : DBL_MAX;
+      // store the value
+      (*itCqi).second.at (rb) = estimatedSinr;
+      return (estimatedSinr);
+    }
+}
+
+void
+CqaFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
+{
+  NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
+
+  RefreshUlCqiMaps ();
+
+  // Generate RBs map
+  FfMacSchedSapUser::SchedUlConfigIndParameters ret;
+  std::vector <bool> rbMap;
+  uint16_t rbAllocatedNum = 0;
+  std::set <uint16_t> rntiAllocated;
+  std::vector <uint16_t> rbgAllocationMap;
+  // update with RACH allocation map
+  rbgAllocationMap = m_rachAllocationMap;
+  //rbgAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
+  m_rachAllocationMap.clear ();
+  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
+
+  rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  // remove RACH allocation
+  for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
+    {
+      if (rbgAllocationMap.at (i) != 0)
+        {
+          rbMap.at (i) = true;
+          NS_LOG_DEBUG (this << " Allocated for RACH " << i);
+        }
+    }
+
+
+  if (m_harqOn == true)
+    {
+      //   Process UL HARQ feedback
+      for (uint16_t i = 0; i < params.m_ulInfoList.size (); i++)
+        {
+          if (params.m_ulInfoList.at (i).m_receptionStatus == UlInfoListElement_s::NotOk)
+            {
+              // retx correspondent block: retrieve the UL-DCI
+              uint16_t rnti = params.m_ulInfoList.at (i).m_rnti;
+              std::map <uint16_t, uint8_t>::iterator itProcId = m_ulHarqCurrentProcessId.find (rnti);
+              if (itProcId == m_ulHarqCurrentProcessId.end ())
+                {
+                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
+                }
+              uint8_t harqId = (uint8_t)((*itProcId).second - HARQ_PERIOD) % HARQ_PROC_NUM;
+              NS_LOG_INFO (this << " UL-HARQ retx RNTI " << rnti << " harqId " << (uint16_t)harqId << " i " << i << " size "  << params.m_ulInfoList.size ());
+              std::map <uint16_t, UlHarqProcessesDciBuffer_t>::iterator itHarq = m_ulHarqProcessesDciBuffer.find (rnti);
+              if (itHarq == m_ulHarqProcessesDciBuffer.end ())
+                {
+                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
+                  continue;
+                }
+              UlDciListElement_s dci = (*itHarq).second.at (harqId);
+              std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (rnti);
+              if (itStat == m_ulHarqProcessesStatus.end ())
+                {
+                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
+                }
+              if ((*itStat).second.at (harqId) >= 3)
+                {
+                  NS_LOG_INFO ("Max number of retransmissions reached (UL)-> drop process");
+                  continue;
+                }
+              bool free = true;
+
+              for (int j = dci.m_rbStart; j < dci.m_rbStart + dci.m_rbLen; j++)
+                {
+                  if (rbMap.at (j) == true)
+                    {
+                      free = false;
+                      NS_LOG_INFO (this << " BUSY " << j);
+                    }
+                }
+              if (free)
+                {
+                  // retx on the same RBs
+                  for (int j = dci.m_rbStart; j < dci.m_rbStart + dci.m_rbLen; j++)
+                    {
+                      rbMap.at (j) = true;
+                      rbgAllocationMap.at (j) = dci.m_rnti;
+                      NS_LOG_INFO ("\tRB " << j);
+                      rbAllocatedNum++;
+                    }
+                  NS_LOG_INFO (this << " Send retx in the same RBs " << (uint16_t)dci.m_rbStart << " to " << dci.m_rbStart + dci.m_rbLen << " RV " << (*itStat).second.at (harqId) + 1);
+                }
+              else
+                {
+                  NS_LOG_INFO ("Cannot allocate retx due to RACH allocations for UE " << rnti);
+                  continue;
+                }
+              dci.m_ndi = 0;
+              // Update HARQ buffers with new HarqId
+              (*itStat).second.at ((*itProcId).second) = (*itStat).second.at (harqId) + 1;
+              (*itStat).second.at (harqId) = 0;
+              (*itHarq).second.at ((*itProcId).second) = dci;
+              ret.m_dciList.push_back (dci);
+              rntiAllocated.insert (dci.m_rnti);
+            }
+          else
+            {
+              NS_LOG_INFO (this << " HARQ-ACK feedback from RNTI " << params.m_ulInfoList.at (i).m_rnti);
+            }
+        }
+    }
+
+  std::map <uint16_t,uint32_t>::iterator it;
+  int nflows = 0;
+
+  for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
+    {
+      std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*it).first);
+      // select UEs with queues not empty and not yet allocated for HARQ
+      if (((*it).second > 0)&&(itRnti == rntiAllocated.end ()))
+        {
+          nflows++;
+        }
+    }
+
+  if (nflows == 0)
+    {
+      if (ret.m_dciList.size () > 0)
+        {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+          m_schedSapUser->SchedUlConfigInd (ret);
+        }
+
+      return;  // no flows to be scheduled
+    }
+
+
+  // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
+  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  if (rbPerFlow < 3)
+    {
+      rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
+    }
+  int rbAllocated = 0;
+
+  std::map <uint16_t, CqasFlowPerf_t>::iterator itStats;
+  if (m_nextRntiUl != 0)
+    {
+      for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
+        {
+          if ((*it).first == m_nextRntiUl)
+            {
+              break;
+            }
+        }
+      if (it == m_ceBsrRxed.end ())
+        {
+          NS_LOG_ERROR (this << " no user found");
+        }
+    }
+  else
+    {
+      it = m_ceBsrRxed.begin ();
+      m_nextRntiUl = (*it).first;
+    }
+  do
+    {
+      std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*it).first);
+      if ((itRnti != rntiAllocated.end ())||((*it).second == 0))
+        {
+          // UE already allocated for UL-HARQ -> skip it
+          NS_LOG_DEBUG (this << " UE already allocated in HARQ -> discared, RNTI " << (*it).first);
+          it++;
+          if (it == m_ceBsrRxed.end ())
+            {
+              // restart from the first
+              it = m_ceBsrRxed.begin ();
+            }
+          continue;
+        }
+      if (rbAllocated + rbPerFlow - 1 > m_cschedCellConfig.m_ulBandwidth)
+        {
+          // limit to physical resources last resource assignment
+          rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
+          // at least 3 rbg per flow to ensure TxOpportunity >= 7 bytes
+          if (rbPerFlow < 3)
+            {
+              // terminate allocation
+              rbPerFlow = 0;
+            }
+        }
+
+      UlDciListElement_s uldci;
+      uldci.m_rnti = (*it).first;
+      uldci.m_rbLen = rbPerFlow;
+      bool allocated = false;
+      NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
+        {
+          // check availability
+          bool free = true;
+          for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
+            {
+              if (rbMap.at (j) == true)
+                {
+                  free = false;
+                  break;
+                }
+            }
+          if (free)
+            {
+              uldci.m_rbStart = rbAllocated;
+
+              for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
+                {
+                  rbMap.at (j) = true;
+                  // store info on allocation for managing ul-cqi interpretation
+                  rbgAllocationMap.at (j) = (*it).first;
+                }
+              rbAllocated += rbPerFlow;
+              allocated = true;
+              break;
+            }
+          rbAllocated++;
+          if (rbAllocated + rbPerFlow - 1 > m_cschedCellConfig.m_ulBandwidth)
+            {
+              // limit to physical resources last resource assignment
+              rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
+              // at least 3 rbg per flow to ensure TxOpportunity >= 7 bytes
+              if (rbPerFlow < 3)
+                {
+                  // terminate allocation
+                  rbPerFlow = 0;
+                }
+            }
+        }
+      if (!allocated)
+        {
+          // unable to allocate new resource: finish scheduling
+          m_nextRntiUl = (*it).first;
+          if (ret.m_dciList.size () > 0)
+            {
+              m_schedSapUser->SchedUlConfigInd (ret);
+            }
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+          return;
+        }
+
+
+
+      std::map <uint16_t, std::vector <double> >::iterator itCqi = m_ueCqi.find ((*it).first);
+      int cqi = 0;
+      if (itCqi == m_ueCqi.end ())
+        {
+          // no cqi info about this UE
+          uldci.m_mcs = 0; // MCS 0 -> UL-AMC TBD
+        }
+      else
+        {
+          // take the lowest CQI value (worst RB)
+          double minSinr = (*itCqi).second.at (uldci.m_rbStart);
+          if (minSinr == NO_SINR)
+            {
+              minSinr = EstimateUlSinr ((*it).first, uldci.m_rbStart);
+            }
+          for (uint16_t i = uldci.m_rbStart; i < uldci.m_rbStart + uldci.m_rbLen; i++)
+            {
+              double sinr = (*itCqi).second.at (i);
+              if (sinr == NO_SINR)
+                {
+                  sinr = EstimateUlSinr ((*it).first, i);
+                }
+              if ((*itCqi).second.at (i) < minSinr)
+                {
+                  minSinr = (*itCqi).second.at (i);
+                }
+            }
+
+          // translate SINR -> cqi: WILD ACK: same as DL
+          double s = log2 ( 1 + (
+                              std::pow (10, minSinr / 10 )  /
+                              ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
+          cqi = m_amc->GetCqiFromSpectralEfficiency (s);
+          if (cqi == 0)
+            {
+              it++;
+              if (it == m_ceBsrRxed.end ())
+                {
+                  // restart from the first
+                  it = m_ceBsrRxed.begin ();
+                }
+              NS_LOG_DEBUG (this << " UE discared for CQI=0, RNTI " << uldci.m_rnti);
+              // remove UE from allocation map
+              for (uint16_t i = uldci.m_rbStart; i < uldci.m_rbStart + uldci.m_rbLen; i++)
+                {
+                  rbgAllocationMap.at (i) = 0;
+                }
+              continue; // CQI == 0 means "out of range" (see table 7.2.3-1 of 36.213)
+            }
+          uldci.m_mcs = m_amc->GetMcsFromCqi (cqi);
+        }
+
+      uldci.m_tbSize = (m_amc->GetTbSizeFromMcs (uldci.m_mcs, rbPerFlow) / 8);
+      UpdateUlRlcBufferInfo (uldci.m_rnti, uldci.m_tbSize);
+      uldci.m_ndi = 1;
+      uldci.m_cceIndex = 0;
+      uldci.m_aggrLevel = 1;
+      uldci.m_ueTxAntennaSelection = 3; // antenna selection OFF
+      uldci.m_hopping = false;
+      uldci.m_n2Dmrs = 0;
+      uldci.m_tpc = 0; // no power control
+      uldci.m_cqiRequest = false; // only period CQI at this stage
+      uldci.m_ulIndex = 0; // TDD parameter
+      uldci.m_dai = 1; // TDD parameter
+      uldci.m_freqHopping = 0;
+      uldci.m_pdcchPowerOffset = 0; // not used
+      ret.m_dciList.push_back (uldci);
+      // store DCI for HARQ_PERIOD
+      uint8_t harqId = 0;
+      if (m_harqOn == true)
+        {
+          std::map <uint16_t, uint8_t>::iterator itProcId;
+          itProcId = m_ulHarqCurrentProcessId.find (uldci.m_rnti);
+          if (itProcId == m_ulHarqCurrentProcessId.end ())
+            {
+              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << uldci.m_rnti);
+            }
+          harqId = (*itProcId).second;
+          std::map <uint16_t, UlHarqProcessesDciBuffer_t>::iterator itDci = m_ulHarqProcessesDciBuffer.find (uldci.m_rnti);
+          if (itDci == m_ulHarqProcessesDciBuffer.end ())
+            {
+              NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
+            }
+          (*itDci).second.at (harqId) = uldci;
+        }
+
+      NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
+
+      // update TTI  UE stats
+      itStats = m_flowStatsUl.find ((*it).first);
+      if (itStats != m_flowStatsUl.end ())
+        {
+          (*itStats).second.lastTtiBytesTransmitted =  uldci.m_tbSize;
+        }
+      else
+        {
+          NS_LOG_DEBUG (this << " No Stats for this allocated UE");
+        }
+
+
+      it++;
+      if (it == m_ceBsrRxed.end ())
+        {
+          // restart from the first
+          it = m_ceBsrRxed.begin ();
+        }
+      if ((rbAllocated == m_cschedCellConfig.m_ulBandwidth) || (rbPerFlow == 0))
+        {
+          // Stop allocation: no more PRBs
+          m_nextRntiUl = (*it).first;
+          break;
+        }
+    }
+  while (((*it).first != m_nextRntiUl)&&(rbPerFlow!=0));
+
+
+  // Update global UE stats
+  // update UEs stats
+  for (itStats = m_flowStatsUl.begin (); itStats != m_flowStatsUl.end (); itStats++)
+    {
+      (*itStats).second.totalBytesTransmitted += (*itStats).second.lastTtiBytesTransmitted;
+      // update average throughput (see eq. 12.3 of Sec 12.3.1.2 of LTE – The UMTS Long Term Evolution, Ed Wiley)
+      (*itStats).second.lastAveragedThroughput = ((1.0 - (1.0 / m_timeWindow)) * (*itStats).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTransmitted / 0.001));
+      NS_LOG_INFO (this << " UE total bytes " << (*itStats).second.totalBytesTransmitted);
+      NS_LOG_INFO (this << " UE average throughput " << (*itStats).second.lastAveragedThroughput);
+      (*itStats).second.lastTtiBytesTransmitted = 0;
+    }
+  m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+  m_schedSapUser->SchedUlConfigInd (ret);
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+
+  std::map <uint16_t,uint32_t>::iterator it;
+
+  for (unsigned int i = 0; i < params.m_macCeList.size (); i++)
+    {
+      if ( params.m_macCeList.at (i).m_macCeType == MacCeListElement_s::BSR )
+        {
+          // buffer status report
+          // note that this scheduler does not differentiate the
+          // allocation according to which LCGs have more/less bytes
+          // to send.
+          // Hence the BSR of different LCGs are just summed up to get
+          // a total queue size that is used for allocation purposes.
+
+          uint32_t buffer = 0;
+          for (uint8_t lcg = 0; lcg < 4; ++lcg)
+            {
+              uint8_t bsrId = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (lcg);
+              buffer += BufferSizeLevelBsr::BsrId2BufferSize (bsrId);
+            }
+
+          uint16_t rnti = params.m_macCeList.at (i).m_rnti;
+          NS_LOG_LOGIC (this << "RNTI=" << rnti << " buffer=" << buffer);
+          it = m_ceBsrRxed.find (rnti);
+          if (it == m_ceBsrRxed.end ())
+            {
+              // create the new entry
+              m_ceBsrRxed.insert ( std::pair<uint16_t, uint32_t > (rnti, buffer));
+            }
+          else
+            {
+              // update the buffer size value
+              (*it).second = buffer;
+            }
+        }
+    }
+
+  return;
+}
+
+void
+CqaFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+// retrieve the allocation for this subframe
+  switch (m_ulCqiFilter)
+    {
+    case FfMacScheduler::SRS_UL_CQI:
+      {
+        // filter all the CQIs that are not SRS based
+        if (params.m_ulCqi.m_type != UlCqi_s::SRS)
+          {
+            return;
+          }
+      }
+      break;
+    case FfMacScheduler::PUSCH_UL_CQI:
+      {
+        // filter all the CQIs that are not SRS based
+        if (params.m_ulCqi.m_type != UlCqi_s::PUSCH)
+          {
+            return;
+          }
+      }
+    case FfMacScheduler::ALL_UL_CQI:
+      break;
+
+    default:
+      NS_FATAL_ERROR ("Unknown UL CQI type");
+    }
+
+  switch (params.m_ulCqi.m_type)
+    {
+    case UlCqi_s::PUSCH:
+      {
+        std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
+        std::map <uint16_t, std::vector <double> >::iterator itCqi;
+        NS_LOG_DEBUG (this << " Collect PUSCH CQIs of Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+        itMap = m_allocationMaps.find (params.m_sfnSf);
+        if (itMap == m_allocationMaps.end ())
+          {
+            return;
+          }
+        for (uint32_t i = 0; i < (*itMap).second.size (); i++)
+          {
+            // convert from fixed point notation Sxxxxxxxxxxx.xxx to double
+            double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (i));
+            itCqi = m_ueCqi.find ((*itMap).second.at (i));
+            if (itCqi == m_ueCqi.end ())
+              {
+                // create a new entry
+                std::vector <double> newCqi;
+                for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
+                  {
+                    if (i == j)
+                      {
+                        newCqi.push_back (sinr);
+                      }
+                    else
+                      {
+                        // initialize with NO_SINR value.
+                        newCqi.push_back (NO_SINR);
+                      }
+
+                  }
+                m_ueCqi.insert (std::pair <uint16_t, std::vector <double> > ((*itMap).second.at (i), newCqi));
+                // generate correspondent timer
+                m_ueCqiTimers.insert (std::pair <uint16_t, uint32_t > ((*itMap).second.at (i), m_cqiTimersThreshold));
+              }
+            else
+              {
+                // update the value
+                (*itCqi).second.at (i) = sinr;
+                NS_LOG_DEBUG (this << " RNTI " << (*itMap).second.at (i) << " RB " << i << " SINR " << sinr);
+                // update correspondent timer
+                std::map <uint16_t, uint32_t>::iterator itTimers;
+                itTimers = m_ueCqiTimers.find ((*itMap).second.at (i));
+                (*itTimers).second = m_cqiTimersThreshold;
+
+              }
+
+          }
+        // remove obsolete info on allocation
+        m_allocationMaps.erase (itMap);
+      }
+      break;
+    case UlCqi_s::SRS:
+      {
+        NS_LOG_DEBUG (this << " Collect SRS CQIs of Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+        // get the RNTI from vendor specific parameters
+        uint16_t rnti = 0;
+        NS_ASSERT (params.m_vendorSpecificList.size () > 0);
+        for (uint16_t i = 0; i < params.m_vendorSpecificList.size (); i++)
+          {
+            if (params.m_vendorSpecificList.at (i).m_type == SRS_CQI_RNTI_VSP)
+              {
+                Ptr<SrsCqiRntiVsp> vsp = DynamicCast<SrsCqiRntiVsp> (params.m_vendorSpecificList.at (i).m_value);
+                rnti = vsp->GetRnti ();
+              }
+          }
+        std::map <uint16_t, std::vector <double> >::iterator itCqi;
+        itCqi = m_ueCqi.find (rnti);
+        if (itCqi == m_ueCqi.end ())
+          {
+            // create a new entry
+            std::vector <double> newCqi;
+            for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
+              {
+                double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (j));
+                newCqi.push_back (sinr);
+                NS_LOG_INFO (this << " RNTI " << rnti << " new SRS-CQI for RB  " << j << " value " << sinr);
+
+              }
+            m_ueCqi.insert (std::pair <uint16_t, std::vector <double> > (rnti, newCqi));
+            // generate correspondent timer
+            m_ueCqiTimers.insert (std::pair <uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
+          }
+        else
+          {
+            // update the values
+            for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
+              {
+                double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (j));
+                (*itCqi).second.at (j) = sinr;
+                NS_LOG_INFO (this << " RNTI " << rnti << " update SRS-CQI for RB  " << j << " value " << sinr);
+              }
+            // update correspondent timer
+            std::map <uint16_t, uint32_t>::iterator itTimers;
+            itTimers = m_ueCqiTimers.find (rnti);
+            (*itTimers).second = m_cqiTimersThreshold;
+
+          }
+
+
+      }
+      break;
+    case UlCqi_s::PUCCH_1:
+    case UlCqi_s::PUCCH_2:
+    case UlCqi_s::PRACH:
+      {
+        NS_FATAL_ERROR ("PfFfMacScheduler supports only PUSCH and SRS UL-CQIs");
+      }
+      break;
+    default:
+      NS_FATAL_ERROR ("Unknown type of UL-CQI");
+    }
+  return;
+}
+
+void
+CqaFfMacScheduler::RefreshDlCqiMaps (void)
+{
+  // refresh DL CQI P01 Map
+  std::map <uint16_t,uint32_t>::iterator itP10 = m_p10CqiTimers.begin ();
+  while (itP10 != m_p10CqiTimers.end ())
+    {
+      NS_LOG_INFO (this << " P10-CQI for user " << (*itP10).first << " is " << (uint32_t)(*itP10).second << " thr " << (uint32_t)m_cqiTimersThreshold);
+      if ((*itP10).second == 0)
+        {
+          // delete correspondent entries
+          std::map <uint16_t,uint8_t>::iterator itMap = m_p10CqiRxed.find ((*itP10).first);
+          NS_ASSERT_MSG (itMap != m_p10CqiRxed.end (), " Does not find CQI report for user " << (*itP10).first);
+          NS_LOG_INFO (this << " P10-CQI expired for user " << (*itP10).first);
+          m_p10CqiRxed.erase (itMap);
+          std::map <uint16_t,uint32_t>::iterator temp = itP10;
+          itP10++;
+          m_p10CqiTimers.erase (temp);
+        }
+      else
+        {
+          (*itP10).second--;
+          itP10++;
+        }
+    }
+
+  // refresh DL CQI A30 Map
+  std::map <uint16_t,uint32_t>::iterator itA30 = m_a30CqiTimers.begin ();
+  while (itA30 != m_a30CqiTimers.end ())
+    {
+      NS_LOG_INFO (this << " A30-CQI for user " << (*itA30).first << " is " << (uint32_t)(*itA30).second << " thr " << (uint32_t)m_cqiTimersThreshold);
+      if ((*itA30).second == 0)
+        {
+          // delete correspondent entries
+          std::map <uint16_t,SbMeasResult_s>::iterator itMap = m_a30CqiRxed.find ((*itA30).first);
+          NS_ASSERT_MSG (itMap != m_a30CqiRxed.end (), " Does not find CQI report for user " << (*itA30).first);
+          NS_LOG_INFO (this << " A30-CQI expired for user " << (*itA30).first);
+          m_a30CqiRxed.erase (itMap);
+          std::map <uint16_t,uint32_t>::iterator temp = itA30;
+          itA30++;
+          m_a30CqiTimers.erase (temp);
+        }
+      else
+        {
+          (*itA30).second--;
+          itA30++;
+        }
+    }
+
+  return;
+}
+
+
+void
+CqaFfMacScheduler::RefreshUlCqiMaps (void)
+{
+  // refresh UL CQI  Map
+  std::map <uint16_t,uint32_t>::iterator itUl = m_ueCqiTimers.begin ();
+  while (itUl != m_ueCqiTimers.end ())
+    {
+      NS_LOG_INFO (this << " UL-CQI for user " << (*itUl).first << " is " << (uint32_t)(*itUl).second << " thr " << (uint32_t)m_cqiTimersThreshold);
+      if ((*itUl).second == 0)
+        {
+          // delete correspondent entries
+          std::map <uint16_t, std::vector <double> >::iterator itMap = m_ueCqi.find ((*itUl).first);
+          NS_ASSERT_MSG (itMap != m_ueCqi.end (), " Does not find CQI report for user " << (*itUl).first);
+          NS_LOG_INFO (this << " UL-CQI exired for user " << (*itUl).first);
+          (*itMap).second.clear ();
+          m_ueCqi.erase (itMap);
+          std::map <uint16_t,uint32_t>::iterator temp = itUl;
+          itUl++;
+          m_ueCqiTimers.erase (temp);
+        }
+      else
+        {
+          (*itUl).second--;
+          itUl++;
+        }
+    }
+
+  return;
+}
+
+void
+CqaFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size)
+{
+  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
+  LteFlowId_t flow (rnti, lcid);
+  it = m_rlcBufferReq.find (flow);
+  if (it != m_rlcBufferReq.end ())
+    {
+      NS_LOG_INFO (this << " UE " << rnti << " LC " << (uint16_t)lcid << " txqueue " << (*it).second.m_rlcTransmissionQueueSize << " retxqueue " << (*it).second.m_rlcRetransmissionQueueSize << " status " << (*it).second.m_rlcStatusPduSize << " decrease " << size);
+      // Update queues: RLC tx order Status, ReTx, Tx
+      // Update status queue
+      if (((*it).second.m_rlcStatusPduSize > 0) && (size >= (*it).second.m_rlcStatusPduSize))
+        {
+          (*it).second.m_rlcStatusPduSize = 0;
+        }
+      else if (((*it).second.m_rlcRetransmissionQueueSize > 0) && (size >= (*it).second.m_rlcRetransmissionQueueSize))
+        {
+          (*it).second.m_rlcRetransmissionQueueSize = 0;
+        }
+      else if ((*it).second.m_rlcTransmissionQueueSize > 0)
+        {
+          uint32_t rlcOverhead;
+          if (lcid == 1)
+            {
+              // for SRB1 (using RLC AM) it's better to
+              // overestimate RLC overhead rather than
+              // underestimate it and risk unneeded
+              // segmentation which increases delay 
+              rlcOverhead = 4;
+            }
+          else
+            {
+              // minimum RLC overhead due to header
+              rlcOverhead = 2;
+            }
+          // update transmission queue
+          if ((*it).second.m_rlcTransmissionQueueSize <= size - rlcOverhead)
+            {
+              (*it).second.m_rlcTransmissionQueueSize = 0;
+            }
+          else
+            {
+              (*it).second.m_rlcTransmissionQueueSize -= size - rlcOverhead;
+            }
+        }
+    }
+  else
+    {
+      NS_LOG_ERROR (this << " Does not find DL RLC Buffer Report of UE " << rnti);
+    }
+}
+
+void
+CqaFfMacScheduler::UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size)
+{
+
+  size = size - 2; // remove the minimum RLC overhead
+  std::map <uint16_t,uint32_t>::iterator it = m_ceBsrRxed.find (rnti);
+  if (it != m_ceBsrRxed.end ())
+    {
+      NS_LOG_INFO (this << " UE " << rnti << " size " << size << " BSR " << (*it).second);
+      if ((*it).second >= size)
+        {
+          (*it).second -= size;
+        }
+      else
+        {
+          (*it).second = 0;
+        }
+    }
+  else
+    {
+      NS_LOG_ERROR (this << " Does not find BSR report info of UE " << rnti);
+    }
+
+}
+
+void
+CqaFfMacScheduler::TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode)
+{
+  NS_LOG_FUNCTION (this << " RNTI " << rnti << " txMode " << (uint16_t)txMode);
+  FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params;
+  params.m_rnti = rnti;
+  params.m_transmissionMode = txMode;
+  m_cschedSapUser->CschedUeConfigUpdateInd (params);
+}
+
+
+}
diff -Naur ns-3.19/src/lte/model/cqa-ff-mac-scheduler.h ns-3.20/src/lte/model/cqa-ff-mac-scheduler.h
--- ns-3.19/src/lte/model/cqa-ff-mac-scheduler.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lte/model/cqa-ff-mac-scheduler.h	2014-06-17 10:33:14.077994542 -0700
@@ -0,0 +1,292 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors: Biljana Bojovic <bbojovic@cttc.es>, Nicola Baldo<nbaldo@cttc.es>.
+ *
+ * Note: Implementation is using many common scheduler functionalities in its original version implemented by Marco Miozzo<mmiozzo@cttc.es> in PF and RR
+ * schedulers. *
+ */
+
+#ifndef CQA_FF_MAC_SCHEDULER_H
+#define CQA_FF_MAC_SCHEDULER_H
+
+#include <ns3/lte-common.h>
+#include <ns3/ff-mac-csched-sap.h>
+#include <ns3/ff-mac-sched-sap.h>
+#include <ns3/ff-mac-scheduler.h>
+#include <vector>
+#include <map>
+#include <set>
+#include <ns3/nstime.h>
+#include <ns3/lte-amc.h>
+
+// value for SINR outside the range defined by FF-API, used to indicate that there
+// is no CQI for this element
+
+#define NO_SINR -5000
+#define HARQ_PROC_NUM 8
+#define HARQ_DL_TIMEOUT 11
+
+namespace ns3 {
+
+typedef std::vector < uint8_t > DlHarqProcessesStatus_t;
+typedef std::vector < uint8_t > DlHarqProcessesTimer_t;
+typedef std::vector < DlDciListElement_s > DlHarqProcessesDciBuffer_t;
+typedef std::vector < std::vector <struct RlcPduListElement_s> > RlcPduList_t; // vector of the LCs and layers per UE
+typedef std::vector < RlcPduList_t > DlHarqRlcPduListBuffer_t; // vector of the 8 HARQ processes per UE
+typedef std::vector < UlDciListElement_s > UlHarqProcessesDciBuffer_t;
+typedef std::vector < uint8_t > UlHarqProcessesStatus_t;
+
+struct CqasFlowPerf_t
+{
+  Time flowStart;
+  unsigned long totalBytesTransmitted;     /// Total bytes send by eNb for this UE
+  unsigned int lastTtiBytesTransmitted;    /// Total bytes send by eNB in last tti for this UE
+  double lastAveragedThroughput;           /// Past average throughput
+  double secondLastAveragedThroughput;
+  double targetThroughput;                 /// Target throughput
+
+};
+
+/**
+ * \ingroup ff-api
+ * \brief Implements the SCHED SAP and CSCHED SAP for the Channel and QoS Aware Scheduler
+ *
+ * This class implements the interface defined by the FfMacScheduler abstract class
+ */
+
+class CqaFfMacScheduler : public FfMacScheduler
+{
+public:
+  /**
+   * \brief Constructor
+   *
+   * Creates the MAC Scheduler interface implementation
+   */
+  CqaFfMacScheduler ();
+
+  /**
+   * Destructor
+   */
+  virtual ~CqaFfMacScheduler ();
+
+  // inherited from Object
+  virtual void DoDispose (void);
+  static TypeId GetTypeId (void);
+
+  // inherited from FfMacScheduler
+  virtual void SetFfMacCschedSapUser (FfMacCschedSapUser* s);
+  virtual void SetFfMacSchedSapUser (FfMacSchedSapUser* s);
+  virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
+  virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
+
+  friend class CqaSchedulerMemberCschedSapProvider;
+  friend class CqaSchedulerMemberSchedSapProvider;
+
+  void TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode);
+
+private:
+  //
+  // Implementation of the CSCHED API primitives
+  // (See 4.1 for description of the primitives)
+  //
+
+  void DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params);
+
+  void DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params);
+
+  void DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params);
+
+  void DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params);
+
+  void DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params);
+
+  //
+  // Implementation of the SCHED API primitives
+  // (See 4.2 for description of the primitives)
+  //
+
+  void DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params);
+
+  void DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params);
+
+  void DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params);
+
+  void DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params);
+
+  void DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params);
+
+  void DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+
+  void DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params);
+
+  void DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params);
+
+  void DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params);
+
+  void DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params);
+
+  void DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+
+
+  int GetRbgSize (int dlbandwidth);
+
+  int LcActivePerFlow (uint16_t rnti);
+
+  double EstimateUlSinr (uint16_t rnti, uint16_t rb);
+
+  void RefreshDlCqiMaps (void);
+  void RefreshUlCqiMaps (void);
+
+  void UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size);
+  void UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size);
+
+  /**
+  * \brief Update and return a new process Id for the RNTI specified
+  *
+  * \param rnti the RNTI of the UE to be updated
+  * \return the process id  value
+  */
+  uint8_t UpdateHarqProcessId (uint16_t rnti);
+
+  /**
+  * \brief Return the availability of free process for the RNTI specified
+  *
+  * \param rnti the RNTI of the UE to be updated
+  * \return the process id  value
+  */
+  uint8_t HarqProcessAvailability (uint16_t rnti);
+
+  /**
+  * \brief Refresh HARQ processes according to the timers
+  *
+  */
+  void RefreshHarqProcesses ();
+
+  Ptr<LteAmc> m_amc;
+
+  /*
+   * Vectors of UE's LC info
+  */
+  std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> m_rlcBufferReq;
+
+
+  /*
+  * Map of UE statistics (per RNTI basis) in downlink
+  */
+  std::map <uint16_t, CqasFlowPerf_t> m_flowStatsDl;
+
+  /*
+  * Map of UE statistics (per RNTI basis)
+  */
+  std::map <uint16_t, CqasFlowPerf_t> m_flowStatsUl;
+
+  std::map <LteFlowId_t,struct LogicalChannelConfigListElement_s> m_ueLogicalChannelsConfigList;
+
+  /*
+  * Map of UE's DL CQI P01 received
+  */
+  std::map <uint16_t,uint8_t> m_p10CqiRxed;
+  /*
+  * Map of UE's timers on DL CQI P01 received
+  */
+  std::map <uint16_t,uint32_t> m_p10CqiTimers;
+
+  /*
+  * Map of UE's DL CQI A30 received
+  */
+  std::map <uint16_t,SbMeasResult_s> m_a30CqiRxed;
+  /*
+  * Map of UE's timers on DL CQI A30 received
+  */
+  std::map <uint16_t,uint32_t> m_a30CqiTimers;
+
+  /*
+  * Map of previous allocated UE per RBG
+  * (used to retrieve info from UL-CQI)
+  */
+  std::map <uint16_t, std::vector <uint16_t> > m_allocationMaps;
+
+  /*
+  * Map of UEs' UL-CQI per RBG
+  */
+  std::map <uint16_t, std::vector <double> > m_ueCqi;
+  /*
+  * Map of UEs' timers on UL-CQI per RBG
+  */
+  std::map <uint16_t, uint32_t> m_ueCqiTimers;
+
+  /*
+  * Map of UE's buffer status reports received
+  */
+  std::map <uint16_t,uint32_t> m_ceBsrRxed;
+
+  // MAC SAPs
+  FfMacCschedSapUser* m_cschedSapUser;
+  FfMacSchedSapUser* m_schedSapUser;
+  FfMacCschedSapProvider* m_cschedSapProvider;
+  FfMacSchedSapProvider* m_schedSapProvider;
+
+
+  // Internal parameters
+  FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
+
+
+  double m_timeWindow;
+
+  uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
+
+  uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid
+
+  std::map <uint16_t,uint8_t> m_uesTxMode; // txMode of the UEs
+
+  // HARQ attributes
+  /**
+  * m_harqOn when false inhibit te HARQ mechanisms (by default active)
+  */
+  bool m_harqOn;
+  std::map <uint16_t, uint8_t> m_dlHarqCurrentProcessId;
+  //HARQ status
+  // 0: process Id available
+  // x>0: process Id equal to `x` trasmission count
+  std::map <uint16_t, DlHarqProcessesStatus_t> m_dlHarqProcessesStatus;
+  std::map <uint16_t, DlHarqProcessesTimer_t> m_dlHarqProcessesTimer;
+  std::map <uint16_t, DlHarqProcessesDciBuffer_t> m_dlHarqProcessesDciBuffer;
+  std::map <uint16_t, DlHarqRlcPduListBuffer_t> m_dlHarqProcessesRlcPduListBuffer;
+  std::vector <DlInfoListElement_s> m_dlInfoListBuffered; // HARQ retx buffered
+
+  std::map <uint16_t, uint8_t> m_ulHarqCurrentProcessId;
+  //HARQ status
+  // 0: process Id available
+  // x>0: process Id equal to `x` trasmission count
+  std::map <uint16_t, UlHarqProcessesStatus_t> m_ulHarqProcessesStatus;
+  std::map <uint16_t, UlHarqProcessesDciBuffer_t> m_ulHarqProcessesDciBuffer;
+
+
+  // RACH attributes
+  std::vector <struct RachListElement_s> m_rachList;
+  std::vector <uint16_t> m_rachAllocationMap;
+  uint8_t m_ulGrantMcs; // MCS for UL grant (default 0)
+
+
+  std::string m_CqaMetric;
+
+};
+
+} // namespace ns3
+
+#endif /* QOS_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/model/epc-enb-application.cc ns-3.20/src/lte/model/epc-enb-application.cc
--- ns-3.19/src/lte/model/epc-enb-application.cc	2014-06-17 10:34:00.724634453 -0700
+++ ns-3.20/src/lte/model/epc-enb-application.cc	2014-06-17 10:33:14.078994534 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("EpcEnbApplication")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcEnbApplication");
 
 
 EpcEnbApplication::EpsFlowId_t::EpsFlowId_t ()
diff -Naur ns-3.19/src/lte/model/epc-gtpu-header.cc ns-3.20/src/lte/model/epc-gtpu-header.cc
--- ns-3.19/src/lte/model/epc-gtpu-header.cc	2014-06-17 10:34:00.726634438 -0700
+++ ns-3.20/src/lte/model/epc-gtpu-header.cc	2014-06-17 10:33:14.079994526 -0700
@@ -30,8 +30,7 @@
  *        GTP-U-v1 Header
  ********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (GtpuHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GtpuHeader);
 
 TypeId
 GtpuHeader::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/epc-mme.cc ns-3.20/src/lte/model/epc-mme.cc
--- ns-3.19/src/lte/model/epc-mme.cc	2014-06-17 10:34:00.726634438 -0700
+++ ns-3.20/src/lte/model/epc-mme.cc	2014-06-17 10:33:14.080994518 -0700
@@ -33,8 +33,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (EpcMme)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcMme);
 
 EpcMme::EpcMme ()
   : m_s11SapSgw (0)
diff -Naur ns-3.19/src/lte/model/epc-sgw-pgw-application.cc ns-3.20/src/lte/model/epc-sgw-pgw-application.cc
--- ns-3.19/src/lte/model/epc-sgw-pgw-application.cc	2014-06-17 10:34:00.728634422 -0700
+++ ns-3.20/src/lte/model/epc-sgw-pgw-application.cc	2014-06-17 10:33:14.082994503 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("EpcSgwPgwApplication")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcSgwPgwApplication");
 
 
 /////////////////////////
diff -Naur ns-3.19/src/lte/model/epc-tft.cc ns-3.20/src/lte/model/epc-tft.cc
--- ns-3.19/src/lte/model/epc-tft.cc	2014-06-17 10:34:00.730634407 -0700
+++ ns-3.20/src/lte/model/epc-tft.cc	2014-06-17 10:33:14.083994495 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("EpcTft")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcTft");
 
 std::ostream& operator<< (std::ostream& os, EpcTft::Direction& d)
 {
diff -Naur ns-3.19/src/lte/model/epc-ue-nas.cc ns-3.20/src/lte/model/epc-ue-nas.cc
--- ns-3.19/src/lte/model/epc-ue-nas.cc	2014-06-17 10:34:00.730634407 -0700
+++ ns-3.20/src/lte/model/epc-ue-nas.cc	2014-06-17 10:33:14.084994488 -0700
@@ -35,7 +35,7 @@
 
 
 
-const char* g_ueNasStateName[EpcUeNas::NUM_STATES] =
+static const std::string g_ueNasStateName[EpcUeNas::NUM_STATES] =
 {
   "OFF",
   "ATTACHING",
@@ -44,16 +44,15 @@
   "ACTIVE"
 };
 
-std::string ToString (EpcUeNas::State s)
+static inline const std::string & ToString (EpcUeNas::State s)
 {
-  return std::string (g_ueNasStateName[s]);
+  return g_ueNasStateName[s];
 }
 
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (EpcUeNas)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcUeNas);
 
 EpcUeNas::EpcUeNas ()
   : m_state (OFF),
diff -Naur ns-3.19/src/lte/model/epc-x2.cc ns-3.20/src/lte/model/epc-x2.cc
--- ns-3.19/src/lte/model/epc-x2.cc	2014-06-17 10:34:00.734634376 -0700
+++ ns-3.20/src/lte/model/epc-x2.cc	2014-06-17 10:33:14.088994457 -0700
@@ -80,8 +80,7 @@
 
 ///////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2);
 
 EpcX2::EpcX2 ()
   : m_x2cUdpPort (4444),
diff -Naur ns-3.19/src/lte/model/epc-x2-header.cc ns-3.20/src/lte/model/epc-x2-header.cc
--- ns-3.19/src/lte/model/epc-x2-header.cc	2014-06-17 10:34:00.732634392 -0700
+++ ns-3.20/src/lte/model/epc-x2-header.cc	2014-06-17 10:33:14.085994480 -0700
@@ -27,8 +27,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2Header);
 
 EpcX2Header::EpcX2Header ()
   : m_messageType (0xfa),
@@ -146,8 +145,7 @@
 
 /////////////////////////////////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestHeader);
 
 EpcX2HandoverRequestHeader::EpcX2HandoverRequestHeader ()
   : m_numberOfIes (1 + 1 + 1 + 1),
@@ -435,8 +433,7 @@
 
 /////////////////////////////////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestAckHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestAckHeader);
 
 EpcX2HandoverRequestAckHeader::EpcX2HandoverRequestAckHeader ()
   : m_numberOfIes (1 + 1 + 1 + 1),
@@ -661,8 +658,7 @@
 
 /////////////////////////////////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverPreparationFailureHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverPreparationFailureHeader);
 
 EpcX2HandoverPreparationFailureHeader::EpcX2HandoverPreparationFailureHeader ()
   : m_numberOfIes (1 + 1 + 1),
@@ -787,8 +783,7 @@
 
 /////////////////////////////////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2SnStatusTransferHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2SnStatusTransferHeader);
 
 EpcX2SnStatusTransferHeader::EpcX2SnStatusTransferHeader ()
   : m_numberOfIes (3),
@@ -980,8 +975,7 @@
 
 /////////////////////////////////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2UeContextReleaseHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2UeContextReleaseHeader);
 
 EpcX2UeContextReleaseHeader::EpcX2UeContextReleaseHeader ()
   : m_numberOfIes (1 + 1),
@@ -1088,8 +1082,7 @@
 
 /////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2LoadInformationHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2LoadInformationHeader);
 
 EpcX2LoadInformationHeader::EpcX2LoadInformationHeader ()
   : m_numberOfIes (1),
@@ -1313,8 +1306,7 @@
 
 ////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (EpcX2ResourceStatusUpdateHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcX2ResourceStatusUpdateHeader);
 
 EpcX2ResourceStatusUpdateHeader::EpcX2ResourceStatusUpdateHeader ()
   : m_numberOfIes (3),
diff -Naur ns-3.19/src/lte/model/eps-bearer-tag.cc ns-3.20/src/lte/model/eps-bearer-tag.cc
--- ns-3.19/src/lte/model/eps-bearer-tag.cc	2014-06-17 10:34:00.734634376 -0700
+++ ns-3.20/src/lte/model/eps-bearer-tag.cc	2014-06-17 10:33:14.088994457 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (EpsBearerTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpsBearerTag);
 
 TypeId
 EpsBearerTag::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/fdbet-ff-mac-scheduler.cc ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/fdbet-ff-mac-scheduler.cc	2014-06-17 10:34:01.091631620 -0700
+++ ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.cc	2014-06-17 10:33:14.421991887 -0700
@@ -35,7 +35,7 @@
 
 namespace ns3 {
 
-int FdBetType0AllocationRbg[4] = {
+static const int FdBetType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -43,8 +43,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (FdBetFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FdBetFfMacScheduler);
 
 
 
@@ -1526,6 +1525,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1593,7 +1593,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/fdmt-ff-mac-scheduler.cc ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/fdmt-ff-mac-scheduler.cc	2014-06-17 10:34:01.093631604 -0700
+++ ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.cc	2014-06-17 10:33:14.423991871 -0700
@@ -35,7 +35,7 @@
 
 namespace ns3 {
 
-int FdMtType0AllocationRbg[4] = {
+static const int FdMtType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -43,8 +43,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (FdMtFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FdMtFfMacScheduler);
 
 
 
@@ -1505,6 +1504,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1571,7 +1571,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/fdtbfq-ff-mac-scheduler.cc ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/fdtbfq-ff-mac-scheduler.cc	2014-06-17 10:34:01.095631589 -0700
+++ ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.cc	2014-06-17 10:33:14.425991856 -0700
@@ -36,7 +36,7 @@
 
 namespace ns3 {
 
-int FdTbfqType0AllocationRbg[4] = {
+static const int FdTbfqType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -44,8 +44,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (FdTbfqFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FdTbfqFfMacScheduler);
 
 
 
@@ -1755,6 +1754,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1822,7 +1822,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/ff-mac-scheduler.cc ns-3.20/src/lte/model/ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/ff-mac-scheduler.cc	2014-06-17 10:34:01.097631573 -0700
+++ ns-3.20/src/lte/model/ff-mac-scheduler.cc	2014-06-17 10:33:14.427991840 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (FfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FfMacScheduler);
 
 
 FfMacScheduler::FfMacScheduler ()
diff -Naur ns-3.19/src/lte/model/lte-amc.cc ns-3.20/src/lte/model/lte-amc.cc
--- ns-3.19/src/lte/model/lte-amc.cc	2014-06-17 10:34:01.098631566 -0700
+++ ns-3.20/src/lte/model/lte-amc.cc	2014-06-17 10:33:14.428991833 -0700
@@ -36,14 +36,13 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteAmc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteAmc);
 
 // from 3GPP R1-081483 "Conveying MCS and TB size via PDCCH"
 // file TBS_support.xls
 // tab "MCS table" (rounded to 2 decimal digits)
 // the index in the vector (0-15) identifies the CQI value
-double SpectralEfficiencyForCqi[16] = {
+static const double SpectralEfficiencyForCqi[16] = {
   0.0, // out of range
   0.15, 0.23, 0.38, 0.6, 0.88, 1.18,
   1.48, 1.91, 2.41,
@@ -51,12 +50,13 @@
 };
 
 
+#if 0 // currently unused
 // Table 7.1.7.1-1 of 3GPP TS 36.213 v8.8.0
 // the index in the vector (range 0-31; valid values 0-28) identifies the MCS index
 // note that this is similar to the one in R1-081483 but:
 //  1) a few values are different
 //  2) in R1-081483, a valid MCS index is in the range 1-30 (not 0-28)
-int ModulationSchemeForMcs[32] = {
+static const int ModulationSchemeForMcs[32] = {
   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
   4, 4, 4, 4, 4, 4, 4,
   6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
@@ -64,6 +64,7 @@
   4,  // reserved
   6,  // reserved
 };
+#endif
 
 
 // from 3GPP R1-081483 "Conveying MCS and TB size via PDCCH"
@@ -71,7 +72,7 @@
 // tab "MCS table" (rounded to 2 decimal digits)
 // the index in the table corresponds to the MCS index according to the convention in TS 36.213
 // (i.e., the MCS index reported in R1-081483 minus one)
-double SpectralEfficiencyForMcs[32] = {
+static const double SpectralEfficiencyForMcs[32] = {
   0.15, 0.19, 0.23, 0.31, 0.38, 0.49, 0.6, 0.74, 0.88, 1.03, 1.18,
   1.33, 1.48, 1.7, 1.91, 2.16, 2.41, 2.57,
   2.73, 3.03, 3.32, 3.61, 3.9, 4.21, 4.52, 4.82, 5.12, 5.33, 5.55,
@@ -79,7 +80,7 @@
 };
 
 // Table 7.1.7.1-1 of 3GPP TS 36.213 v8.8.0
-int McsToItbs[29] = {
+static const int McsToItbs[29] = {
   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 18,
   19, 20, 21, 22, 23, 24, 25, 26
 };
@@ -88,7 +89,7 @@
 // 3GPP TS 36.213 v8.8.0 Table 7.1.7.2.1-1: Transport block size table (dimension 27×110)
 // for NPRB = 1 and Itbs = 6 the stadard returns 328, but it not consisent with the
 // other values, therefore we used 88 obtained following the sequence of NPRB = 1 values
-int TransportBlockSizeTable [110][27] = {
+static const int TransportBlockSizeTable [110][27] = {
 
   /* NPRB 001*/
   { 16, 24, 32, 40, 56, 72, 88, 104, 120, 136, 144, 176, 208, 224, 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712},
diff -Naur ns-3.19/src/lte/model/lte-anr.cc ns-3.20/src/lte/model/lte-anr.cc
--- ns-3.19/src/lte/model/lte-anr.cc	2014-06-17 10:34:01.100631550 -0700
+++ ns-3.20/src/lte/model/lte-anr.cc	2014-06-17 10:33:13.612998130 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteAnr)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteAnr);
 
 
 LteAnr::LteAnr (uint16_t servingCellId)
diff -Naur ns-3.19/src/lte/model/lte-asn1-header.cc ns-3.20/src/lte/model/lte-asn1-header.cc
--- ns-3.19/src/lte/model/lte-asn1-header.cc	2014-06-17 10:34:01.101631542 -0700
+++ ns-3.20/src/lte/model/lte-asn1-header.cc	2014-06-17 10:33:13.614998115 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Asn1Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Asn1Header);
 
 TypeId
 Asn1Header::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/lte-common.cc ns-3.20/src/lte/model/lte-common.cc
--- ns-3.19/src/lte/model/lte-common.cc	2014-06-17 10:34:01.102631535 -0700
+++ ns-3.20/src/lte/model/lte-common.cc	2014-06-17 10:33:13.615998107 -0700
@@ -127,7 +127,7 @@
 //static double g_lowestFpS11dot3Value = -4096; // 0x8001 (1000 0000 0000 0000)
 
 
-uint32_t BufferSizeLevelBsrTable[64] = {
+static const uint32_t BufferSizeLevelBsrTable[64] = {
 
   0, 10, 12, 14, 17, 19, 22, 26, 31, 36, 42, 49, 57, 67, 78, 91, 
   107, 125, 146, 171, 200, 234, 274, 321, 376, 440, 515, 603, 
diff -Naur ns-3.19/src/lte/model/lte-enb-mac.cc ns-3.20/src/lte/model/lte-enb-mac.cc
--- ns-3.19/src/lte/model/lte-enb-mac.cc	2014-06-17 10:34:01.107631496 -0700
+++ ns-3.20/src/lte/model/lte-enb-mac.cc	2014-06-17 10:33:13.621998061 -0700
@@ -43,8 +43,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (LteEnbMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteEnbMac);
 
 
 
diff -Naur ns-3.19/src/lte/model/lte-enb-net-device.cc ns-3.20/src/lte/model/lte-enb-net-device.cc
--- ns-3.19/src/lte/model/lte-enb-net-device.cc	2014-06-17 10:34:01.109631480 -0700
+++ ns-3.20/src/lte/model/lte-enb-net-device.cc	2014-06-17 10:33:13.623998045 -0700
@@ -48,8 +48,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED ( LteEnbNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED ( LteEnbNetDevice);
 
 TypeId LteEnbNetDevice::GetTypeId (void)
 {
diff -Naur ns-3.19/src/lte/model/lte-enb-phy.cc ns-3.20/src/lte/model/lte-enb-phy.cc
--- ns-3.19/src/lte/model/lte-enb-phy.cc	2014-06-17 10:34:01.112631458 -0700
+++ ns-3.20/src/lte/model/lte-enb-phy.cc	2014-06-17 10:33:13.626998022 -0700
@@ -49,8 +49,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteEnbPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteEnbPhy);
 
 // duration of the data part of a subframe in DL
 // = 0.001 / 14 * 11 (fixed to 11 symbols) -1ns as margin to avoid overlapping simulator events
@@ -814,7 +813,7 @@
   m_ulBandwidth = ulBandwidth;
   m_dlBandwidth = dlBandwidth;
 
-  int Type0AllocationRbg[4] = {
+  static const int Type0AllocationRbg[4] = {
     10,     // RGB size 1
     26,     // RGB size 2
     63,     // RGB size 3
diff -Naur ns-3.19/src/lte/model/lte-enb-rrc.cc ns-3.20/src/lte/model/lte-enb-rrc.cc
--- ns-3.19/src/lte/model/lte-enb-rrc.cc	2014-06-17 10:34:01.116631427 -0700
+++ ns-3.20/src/lte/model/lte-enb-rrc.cc	2014-06-17 10:33:13.632997976 -0700
@@ -100,7 +100,7 @@
 ///////////////////////////////////////////
 
 
-const char* g_ueManagerStateName[UeManager::NUM_STATES] = 
+static const std::string g_ueManagerStateName[UeManager::NUM_STATES] =
 {
   "INITIAL_RANDOM_ACCESS",
   "CONNECTION_SETUP",
@@ -114,14 +114,13 @@
   "HANDOVER_LEAVING",
 };
 
-std::string ToString (UeManager::State s)
+static const std::string & ToString (UeManager::State s)
 {
-  return std::string (g_ueManagerStateName[s]);
+  return g_ueManagerStateName[s];
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (UeManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UeManager);
 
 
 UeManager::UeManager ()
@@ -1042,7 +1041,7 @@
 {
   NS_LOG_FUNCTION (this);
   const uint8_t MAX_DRB_ID = 32;  
-  for (uint8_t drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
+  for (int drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
        drbid != m_lastAllocatedDrbid; 
        drbid = (drbid + 1) % MAX_DRB_ID)
     {
@@ -1220,8 +1219,7 @@
 // eNB RRC methods
 ///////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
 
 LteEnbRrc::LteEnbRrc ()
   : m_x2SapProvider (0),
@@ -2197,10 +2195,10 @@
 
 
 // from 3GPP TS 36.213 table 8.2-1 UE Specific SRS Periodicity
-const uint8_t SRS_ENTRIES = 9;
-uint16_t g_srsPeriodicity[SRS_ENTRIES] = {0, 2, 5, 10, 20, 40,  80, 160, 320};
-uint16_t g_srsCiLow[SRS_ENTRIES] =       {0, 0, 2,  7, 17, 37,  77, 157, 317};
-uint16_t g_srsCiHigh[SRS_ENTRIES] =      {0, 1, 6, 16, 36, 76, 156, 316, 636};
+static const uint8_t SRS_ENTRIES = 9;
+static const uint16_t g_srsPeriodicity[SRS_ENTRIES] = {0, 2, 5, 10, 20, 40,  80, 160, 320};
+static const uint16_t g_srsCiLow[SRS_ENTRIES] =       {0, 0, 2,  7, 17, 37,  77, 157, 317};
+static const uint16_t g_srsCiHigh[SRS_ENTRIES] =      {0, 1, 6, 16, 36, 76, 156, 316, 636};
 
 void 
 LteEnbRrc::SetSrsPeriodicity (uint32_t p)
diff -Naur ns-3.19/src/lte/model/lte-handover-algorithm.cc ns-3.20/src/lte/model/lte-handover-algorithm.cc
--- ns-3.19/src/lte/model/lte-handover-algorithm.cc	2014-06-17 10:34:01.118631411 -0700
+++ ns-3.20/src/lte/model/lte-handover-algorithm.cc	2014-06-17 10:33:13.634997960 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteHandoverAlgorithm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteHandoverAlgorithm);
 
 
 LteHandoverAlgorithm::LteHandoverAlgorithm ()
diff -Naur ns-3.19/src/lte/model/lte-mi-error-model.cc ns-3.20/src/lte/model/lte-mi-error-model.cc
--- ns-3.19/src/lte/model/lte-mi-error-model.cc	2014-06-17 10:34:00.270637958 -0700
+++ ns-3.20/src/lte/model/lte-mi-error-model.cc	2014-06-17 10:33:13.640997914 -0700
@@ -47,7 +47,7 @@
 namespace ns3 {
 
   // global table of the effective code rates (ECR)s that have BLER performance curves
-  double BlerCurvesEcrMap[38] = {
+  static const double BlerCurvesEcrMap[38] = {
     // QPSK (M=2)
     0.01, 0.026, 0.04,   // ECRs of MCS0 retx
     0.08, 0.1, 0.11, 0.15, 0.19, 0.24, 0.3, 0.37, 0.44, 0.51, // ECRs of MCSs
@@ -60,24 +60,26 @@
   };
 
   // Table codifing standard MCSs ECR to available ECRs
-  uint8_t McsEcrBlerTableMapping[29] = {
+  static const uint8_t McsEcrBlerTableMapping[29] = {
     3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
     16, 17, 18, 19, 20, 21, 22,
     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37    
   };
 
   // Table of ECR of the standard MCSs
-  double McsEcrTable [29] = {0.08, 0.1, 0.11, 0.15, 0.19, 0.24, 0.3, 0.37, 0.44, 0.51, 0.3, 0.33, 0.37, 0.42, 0.48, 0.54, 0.6, 0.43, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.89, 0.92
+  static const double McsEcrTable [29] = {0.08, 0.1, 0.11, 0.15, 0.19, 0.24, 0.3, 0.37, 0.44, 0.51, 0.3, 0.33, 0.37, 0.42, 0.48, 0.54, 0.6, 0.43, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.89, 0.92
   };
 
+#if 0 // currently unused
   // Table with ECRs obtained with retransmissions with BLER curves
-  double HarqRetxEcr[9] = {0.00064, 0.000512, 0.000041, 0.09, 0.027, 0.0081, 0.185, 0.079, 0.034    
+  static const double HarqRetxEcr[9] = {0.00064, 0.000512, 0.000041, 0.09, 0.027, 0.0081, 0.185, 0.079, 0.034
   };
+#endif
  
   // PCFICH-PDCCH Error model based on 3GPP R4-081920 "LTE PDCCH/PCFICH
   //  Demodulation Performance Results with Implementation Margin"
   
-  double PdcchPcfichBlerCurveXaxis[PDCCH_PCFICH_CURVE_SIZE] = {
+  static const double PdcchPcfichBlerCurveXaxis[PDCCH_PCFICH_CURVE_SIZE] = {
       -10,-9.8,-9.6, -9.4, -9.2, -9.0, -8.8, -8.6, -8.4, -8.2, -8.0,
       -7.8, -7.6, -7.4, -7.2, -7.0, -6.8, -6.6, -6.4,   -6.2, -6.0, 
       -5.8, -5.6, -5.4, -5.2, -5.0, -4.8, -4.6, -4.4, -4.2, -4.0, 
@@ -85,7 +87,7 @@
       -1.8, -1.6, -1.4, -1.2, -1.0
   };
   
-  double PdcchPcfichBlerCurveYaxis[PDCCH_PCFICH_CURVE_SIZE] = {
+  static const double PdcchPcfichBlerCurveYaxis[PDCCH_PCFICH_CURVE_SIZE] = {
     0.922602, 0.871559, 0.82334, 0.777789, 0.734758, 0.694107, 0.655706,
     0.619429, 0.585159, 0.552785, 0.520927, 0.479229, 0.440869, 0.405579,
     0.373114, 0.343104, 0.309947,0.279994, 0.252936, 0.228492, 0.206048,
@@ -96,9 +98,11 @@
   
   };
   
-  int TbsIndex[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, -1};
+#if 0 // currently unused
+  static const int TbsIndex[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, -1};
+#endif
   
-  uint16_t cbSizeTable[188] = {   // as K column of table 5.1.3-3 of TS 36,212
+  static const uint16_t cbSizeTable[188] = {   // as K column of table 5.1.3-3 of TS 36,212
     
     40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152,
     160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 264,
@@ -114,43 +118,41 @@
     5824, 5888, 5952, 6016, 6080, 6144   
   };
   
-  ;
-  
-uint16_t cbMiSizeTable [9] = {40, 104, 160, 256, 512, 1024, 2560, 4032, 6144};
+static const uint16_t cbMiSizeTable [9] = {40, 104, 160, 256, 512, 1024, 2560, 4032, 6144};
 
 
-double MI_map_qpsk[MI_MAP_QPSK_SIZE] = {
+static const double MI_map_qpsk[MI_MAP_QPSK_SIZE] = {
   0.008922, 0.011813, 0.014697, 0.017570, 0.020430, 0.023276, 0.026109, 0.028929, 0.031734, 0.034526, 0.037304, 0.040069, 0.042821, 0.045559, 0.048285, 0.050999, 0.053700, 0.056389, 0.059066, 0.061731, 0.064384, 0.067026, 0.069657, 0.072277, 0.074885, 0.077483, 0.080070, 0.082647, 0.085213, 0.087769, 0.090315, 0.092850, 0.095376, 0.097892, 0.100399, 0.102895, 0.105383, 0.107861, 0.110329, 0.112789, 0.115239, 0.117680, 0.120113, 0.122536, 0.124951, 0.127357, 0.129755, 0.132144, 0.134525, 0.136897, 0.139261, 0.141616, 0.143964, 0.146303, 0.148635, 0.150958, 0.153273, 0.155581, 0.157881, 0.160173, 0.162457, 0.164734, 0.167003, 0.169265, 0.171519, 0.173765, 0.176005, 0.178237, 0.180461, 0.182679, 0.184889, 0.187092, 0.189288, 0.191477, 0.193659, 0.195834, 0.198002, 0.200164, 0.202318, 0.204465, 0.206606, 0.208740, 0.210867, 0.212988, 0.215102, 0.217209, 0.219310, 0.221405, 0.223492, 0.225574, 0.227649, 0.229717, 0.231780, 0.233835, 0.235885, 0.237928, 0.239965, 0.241996, 0.244021, 0.246039, 0.248052, 0.250058, 0.252058, 0.254052, 0.256040, 0.258023, 0.259999, 0.261969, 0.263933, 0.265892, 0.267844, 0.269791, 0.271732, 0.273667, 0.275597, 0.277520, 0.279438, 0.281350, 0.283257, 0.285158, 0.287053, 0.288943, 0.290827, 0.292705, 0.294578, 0.296446, 0.298308, 0.300164, 0.302015, 0.303861, 0.305701, 0.307536, 0.309365, 0.311189, 0.313007, 0.314821, 0.316629, 0.318431, 0.320229, 0.322021, 0.323808, 0.325589, 0.327366, 0.329137, 0.330903, 0.332664, 0.334420, 0.336171, 0.337916, 0.339657, 0.341392, 0.343123, 0.344848, 0.346568, 0.348284, 0.349994, 0.351699, 0.353400, 0.355095, 0.356786, 0.358471, 0.360152, 0.361828, 0.363499, 0.365165, 0.366174, 0.367827, 0.369475, 0.371118, 0.372755, 0.374388, 0.376015, 0.377637, 0.379255, 0.380867, 0.382474, 0.384076, 0.385674, 0.387266, 0.388854, 0.390436, 0.392014, 0.393587, 0.395155, 0.396718, 0.398277, 0.399830, 0.401379, 0.402924, 0.404463, 0.405998, 0.407529, 0.409054, 0.410576, 0.412092, 0.413604, 0.415111, 0.416614, 0.418113, 0.419606, 0.421096, 0.422581, 0.424061, 0.425537, 0.427009, 0.428476, 0.429939, 0.431398, 0.432852, 0.434302, 0.435748, 0.437189, 0.438627, 0.440060, 0.441488, 0.442913, 0.444333, 0.445749, 0.447161, 0.448569, 0.449973, 0.451373, 0.452768, 0.454160, 0.455547, 0.456931, 0.458310, 0.459685, 0.461057, 0.462424, 0.463788, 0.465147, 0.466503, 0.467854, 0.469202, 0.470546, 0.471886, 0.473222, 0.474555, 0.475883, 0.477208, 0.478529, 0.479846, 0.481159, 0.482469, 0.483774, 0.485077, 0.486375, 0.487670, 0.488961, 0.490248, 0.491532, 0.492812, 0.494088, 0.495361, 0.496630, 0.497896, 0.499158, 0.500416, 0.501671, 0.502922, 0.504170, 0.505414, 0.506655, 0.507893, 0.509126, 0.510357, 0.511584, 0.512807, 0.514027, 0.515244, 0.516457, 0.517667, 0.518873, 0.520076, 0.521276, 0.522472, 0.523665, 0.524855, 0.526042, 0.527225, 0.528404, 0.529581, 0.530754, 0.531924, 0.533091, 0.534255, 0.535415, 0.536572, 0.537726, 0.538877, 0.540024, 0.541169, 0.542310, 0.543448, 0.544583, 0.545715, 0.546844, 0.547969, 0.549092, 0.550211, 0.551328, 0.552441, 0.553551, 0.554658, 0.555763, 0.556864, 0.557962, 0.559057, 0.560149, 0.561238, 0.562325, 0.563408, 0.564488, 0.565566, 0.566640, 0.567712, 0.568780, 0.569846, 0.570909, 0.571969, 0.573026, 0.574080, 0.575131, 0.576180, 0.577225, 0.578268, 0.579308, 0.580345, 0.581380, 0.582411, 0.583440, 0.584466, 0.585489, 0.586510, 0.587528, 0.588543, 0.589555, 0.590565, 0.591571, 0.592576, 0.593577, 0.594576, 0.595572, 0.596565, 0.597556, 0.598544, 0.599530, 0.600513, 0.601493, 0.602470, 0.603445, 0.604418, 0.605387, 0.606355, 0.607319, 0.608281, 0.609241, 0.610198, 0.611152, 0.612104, 0.613053, 0.614000, 0.614944, 0.615886, 0.616825, 0.617762, 0.618696, 0.619628, 0.620557, 0.621484, 0.622409, 0.623331, 0.624250, 0.625167, 0.626082, 0.626994, 0.627904, 0.628812, 0.629717, 0.630619, 0.631520, 0.632418, 0.633313, 0.634206, 0.635097, 0.635986, 0.636872, 0.637756, 0.638637, 0.639516, 0.640393, 0.641268, 0.642140, 0.643010, 0.643878, 0.644743, 0.645606, 0.646467, 0.647326, 0.648182, 0.649037, 0.649889, 0.650738, 0.651586, 0.652431, 0.653274, 0.654115, 0.654954, 0.655790, 0.656624, 0.657457, 0.658287, 0.659114, 0.659940, 0.660763, 0.661585, 0.662404, 0.663221, 0.664036, 0.664849, 0.665660, 0.666468, 0.667275, 0.668079, 0.668882, 0.669682, 0.670480, 0.671276, 0.672070, 0.672862, 0.673652, 0.674440, 0.675226, 0.676010, 0.676792, 0.677572, 0.678349, 0.679125, 0.679899, 0.680671, 0.681440, 0.682208, 0.682974, 0.683738, 0.684500, 0.685260, 0.686018, 0.686774, 0.687528, 0.688280, 0.689030, 0.689778, 0.690525, 0.691269, 0.692012, 0.692752, 0.693491, 0.694228, 0.694963, 0.695696, 0.696427, 0.697156, 0.697883, 0.698609, 0.699333, 0.700055, 0.700774, 0.701493, 0.702209, 0.702923, 0.703636, 0.704347, 0.705056, 0.705763, 0.706468, 0.707172, 0.707874, 0.708574, 0.709272, 0.709969, 0.710663, 0.711356, 0.712047, 0.712737, 0.713424, 0.714110, 0.714794, 0.715477, 0.716157, 0.716836, 0.717513, 0.718189, 0.718862, 0.719535, 0.720205, 0.720873, 0.721540, 0.722206, 0.722869, 0.723531, 0.724191, 0.724850, 0.725507, 0.726162, 0.726815, 0.727467, 0.728117, 0.728766, 0.729413, 0.730058, 0.730702, 0.731344, 0.731984, 0.732623, 0.733260, 0.733896, 0.734530, 0.735162, 0.735793, 0.736422, 0.737050, 0.737676, 0.738300, 0.738923, 0.739544, 0.740164, 0.740782, 0.741399, 0.742014, 0.742627, 0.743239, 0.743850, 0.744459, 0.745066, 0.745672, 0.746276, 0.746879, 0.747480, 0.748080, 0.748678, 0.749275, 0.749870, 0.750464, 0.751056, 0.751647, 0.752236, 0.752824, 0.753410, 0.753995, 0.754579, 0.755161, 0.755741, 0.756320, 0.756898, 0.757474, 0.758049, 0.758622, 0.759194, 0.759764, 0.760333, 0.760901, 0.761467, 0.762032, 0.762595, 0.763157, 0.763717, 0.764277, 0.764834, 0.765391, 0.765946, 0.766499, 0.767051, 0.767602, 0.768152, 0.768700, 0.769246, 0.769792, 0.770336, 0.770878, 0.771419, 0.771959, 0.772498, 0.773035, 0.773571, 0.774106, 0.774639, 0.775171, 0.775701, 0.776231, 0.776759, 0.777285, 0.777811, 0.778335, 0.778858, 0.779379, 0.779899, 0.780418, 0.780936, 0.781452, 0.781967, 0.782481, 0.782993, 0.783504, 0.784014, 0.784523, 0.785030, 0.785536, 0.786041, 0.786545, 0.787047, 0.787549, 0.788048, 0.788547, 0.789045, 0.789541, 0.790036, 0.790530, 0.791022, 0.791513, 0.792004, 0.792493, 0.792980, 0.793467, 0.793952, 0.794436, 0.794919, 0.795401, 0.795881, 0.796361, 0.796839, 0.797316, 0.797792, 0.798266, 0.798740, 0.799212, 0.799683, 0.800153, 0.800622, 0.801090, 0.801556, 0.802022, 0.802486, 0.802949, 0.803411, 0.803872, 0.804331, 0.804790, 0.805247, 0.805704, 0.806159, 0.806613, 0.807066, 0.807518, 0.807969, 0.808418, 0.808867, 0.809314, 0.809761, 0.810206, 0.810650, 0.811093, 0.811535, 0.811976, 0.812416, 0.812854, 0.813292, 0.813729, 0.814164, 0.814599, 0.815032, 0.815464, 0.815896, 0.816326, 0.816755, 0.817183, 0.817610, 0.818036, 0.818461, 0.818885, 0.819308, 0.819730, 0.820151, 0.820571, 0.820990, 0.821407, 0.821824, 0.822240, 0.822655, 0.823068, 0.823481, 0.823893, 0.824303, 0.824713, 0.825122, 0.825529, 0.825936, 0.826342, 0.826747, 0.827150, 0.827553, 0.827955, 0.828356, 0.828756, 0.829154, 0.829552, 0.829949, 0.830345, 0.830740, 0.831134, 0.831527, 0.831919, 0.832311, 0.832701, 0.833090, 0.833478, 0.833866, 0.834252, 0.834638, 0.835022, 0.835406, 0.835789, 0.836170, 0.836551, 0.836931, 0.837310, 0.837688, 0.838065, 0.838442, 0.838817, 0.839191, 0.839565, 0.839938, 0.840309, 0.840680, 0.841050, 0.841419, 0.841787, 0.842154, 0.842521, 0.842886, 0.843251, 0.843615, 0.843977, 0.844339, 0.844700, 0.845061, 0.845420, 0.845778, 0.846136, 0.846493, 0.846849, 0.847204, 0.847558, 0.847911, 0.848263, 0.848615, 0.848966, 0.849316, 0.849665, 0.850013, 0.850360, 0.850707, 0.851052, 0.851397, 0.851741, 0.852085, 0.852427, 0.852768, 0.853109, 0.853449, 0.853788, 0.854126, 0.854464, 0.854801, 0.855136, 0.855471, 0.855806, 0.856139, 0.856472, 0.856803, 0.857134, 0.857465, 0.857794, 0.858123, 0.858451, 0.858778, 0.859104, 0.859429, 0.859754, 0.860078, 0.860401, 0.860723, 0.861045, 0.861366, 0.861686, 0.862005
 };
 
 
 
-double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = {
+static const double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = {
   0.013000, 0.017000, 0.021000, 0.025000, 0.029000, 0.033000, 0.037000, 0.041000, 0.045000, 0.049000, 0.053000, 0.057000, 0.061000, 0.065000, 0.069000, 0.073000, 0.077000, 0.081000, 0.085000, 0.089000, 0.093000, 0.097000, 0.101000, 0.105000, 0.109000, 0.113000, 0.117000, 0.121000, 0.125000, 0.129000, 0.133000, 0.137000, 0.141000, 0.145000, 0.149000, 0.153000, 0.157000, 0.161000, 0.165000, 0.169000, 0.173000, 0.177000, 0.181000, 0.185000, 0.189000, 0.193000, 0.197000, 0.201000, 0.205000, 0.209000, 0.213000, 0.217000, 0.221000, 0.225000, 0.229000, 0.233000, 0.237000, 0.241000, 0.245000, 0.249000, 0.253000, 0.257000, 0.261000, 0.265000, 0.269000, 0.273000, 0.277000, 0.281000, 0.285000, 0.289000, 0.293000, 0.297000, 0.301000, 0.305000, 0.309000, 0.313000, 0.317000, 0.321000, 0.325000, 0.329000, 0.333000, 0.337000, 0.341000, 0.345000, 0.349000, 0.353000, 0.357000, 0.361000, 0.365000, 0.369000, 0.373000, 0.377000, 0.381000, 0.385000, 0.389000, 0.393000, 0.397000, 0.401000, 0.405000, 0.409000, 0.413000, 0.417000, 0.421000, 0.425000, 0.429000, 0.433000, 0.437000, 0.441000, 0.445000, 0.449000, 0.453000, 0.457000, 0.461000, 0.465000, 0.469000, 0.473000, 0.477000, 0.481000, 0.485000, 0.489000, 0.493000, 0.497000, 0.501000, 0.505000, 0.509000, 0.513000, 0.517000, 0.521000, 0.525000, 0.529000, 0.533000, 0.537000, 0.541000, 0.545000, 0.549000, 0.553000, 0.557000, 0.561000, 0.565000, 0.569000, 0.573000, 0.577000, 0.581000, 0.585000, 0.589000, 0.593000, 0.597000, 0.601000, 0.605000, 0.609000, 0.613000, 0.617000, 0.621000, 0.625000, 0.629000, 0.633000, 0.637000, 0.641000, 0.645000, 0.649000, 0.653000, 0.657000, 0.661000, 0.665000, 0.669000, 0.673000, 0.677000, 0.681000, 0.685000, 0.689000, 0.693000, 0.697000, 0.701000, 0.705000, 0.709000, 0.713000, 0.717000, 0.721000, 0.725000, 0.729000, 0.733000, 0.737000, 0.741000, 0.745000, 0.749000, 0.753000, 0.757000, 0.761000, 0.765000, 0.769000, 0.773000, 0.777000, 0.781000, 0.785000, 0.789000, 0.793000, 0.797000, 0.801000, 0.805000, 0.809000, 0.813000, 0.817000, 0.821000, 0.825000, 0.829000, 0.833000, 0.837000, 0.841000, 0.845000, 0.849000, 0.853000, 0.857000, 0.861000, 0.865000, 0.869000, 0.873000, 0.877000, 0.881000, 0.885000, 0.889000, 0.893000, 0.897000, 0.901000, 0.905000, 0.909000, 0.913000, 0.917000, 0.921000, 0.925000, 0.929000, 0.933000, 0.937000, 0.941000, 0.945000, 0.949000, 0.953000, 0.957000, 0.961000, 0.965000, 0.969000, 0.973000, 0.977000, 0.981000, 0.985000, 0.989000, 0.993000, 0.997000, 1.001000, 1.005000, 1.009000, 1.013000, 1.017000, 1.021000, 1.025000, 1.029000, 1.033000, 1.037000, 1.041000, 1.045000, 1.049000, 1.053000, 1.057000, 1.061000, 1.065000, 1.069000, 1.073000, 1.077000, 1.081000, 1.085000, 1.089000, 1.093000, 1.097000, 1.101000, 1.105000, 1.109000, 1.113000, 1.117000, 1.121000, 1.125000, 1.129000, 1.133000, 1.137000, 1.141000, 1.145000, 1.149000, 1.153000, 1.157000, 1.161000, 1.165000, 1.169000, 1.173000, 1.177000, 1.181000, 1.185000, 1.189000, 1.193000, 1.197000, 1.201000, 1.205000, 1.209000, 1.213000, 1.217000, 1.221000, 1.225000, 1.229000, 1.233000, 1.237000, 1.241000, 1.245000, 1.249000, 1.253000, 1.257000, 1.261000, 1.265000, 1.269000, 1.273000, 1.277000, 1.281000, 1.285000, 1.289000, 1.293000, 1.297000, 1.301000, 1.305000, 1.309000, 1.313000, 1.317000, 1.321000, 1.325000, 1.329000, 1.333000, 1.337000, 1.341000, 1.345000, 1.349000, 1.353000, 1.357000, 1.361000, 1.365000, 1.369000, 1.373000, 1.377000, 1.381000, 1.385000, 1.389000, 1.393000, 1.397000, 1.401000, 1.405000, 1.409000, 1.413000, 1.417000, 1.421000, 1.425000, 1.429000, 1.433000, 1.437000, 1.441000, 1.445000, 1.449000, 1.453000, 1.457000, 1.461000, 1.465000, 1.469000, 1.473000, 1.477000, 1.481000, 1.485000, 1.489000, 1.493000, 1.497000, 1.501000, 1.505000, 1.509000, 1.513000, 1.517000, 1.521000, 1.525000, 1.529000, 1.533000, 1.537000, 1.541000, 1.545000, 1.549000, 1.553000, 1.557000, 1.561000, 1.565000, 1.569000, 1.573000, 1.577000, 1.581000, 1.585000, 1.589000, 1.593000, 1.597000, 1.601000, 1.605000, 1.609000, 1.613000, 1.617000, 1.621000, 1.625000, 1.629000, 1.633000, 1.637000, 1.641000, 1.645000, 1.649000, 1.653000, 1.657000, 1.661000, 1.665000, 1.669000, 1.673000, 1.677000, 1.681000, 1.685000, 1.689000, 1.693000, 1.697000, 1.701000, 1.705000, 1.709000, 1.713000, 1.717000, 1.721000, 1.725000, 1.729000, 1.733000, 1.737000, 1.741000, 1.745000, 1.749000, 1.753000, 1.757000, 1.761000, 1.765000, 1.769000, 1.773000, 1.777000, 1.781000, 1.785000, 1.789000, 1.793000, 1.797000, 1.801000, 1.805000, 1.809000, 1.813000, 1.817000, 1.821000, 1.825000, 1.829000, 1.833000, 1.837000, 1.841000, 1.845000, 1.849000, 1.853000, 1.857000, 1.861000, 1.865000, 1.869000, 1.873000, 1.877000, 1.881000, 1.885000, 1.889000, 1.893000, 1.897000, 1.901000, 1.905000, 1.909000, 1.913000, 1.917000, 1.921000, 1.925000, 1.929000, 1.933000, 1.937000, 1.941000, 1.945000, 1.949000, 1.953000, 1.957000, 1.961000, 1.965000, 1.969000, 1.973000, 1.977000, 1.981000, 1.985000, 1.989000, 1.993000, 1.997000, 2.001000, 2.005000, 2.009000, 2.013000, 2.017000, 2.021000, 2.025000, 2.029000, 2.033000, 2.037000, 2.041000, 2.045000, 2.049000, 2.053000, 2.057000, 2.061000, 2.065000, 2.069000, 2.073000, 2.077000, 2.081000, 2.085000, 2.089000, 2.093000, 2.097000, 2.101000, 2.105000, 2.109000, 2.113000, 2.117000, 2.121000, 2.125000, 2.129000, 2.133000, 2.137000, 2.141000, 2.145000, 2.149000, 2.153000, 2.157000, 2.161000, 2.165000, 2.169000, 2.173000, 2.177000, 2.181000, 2.185000, 2.189000, 2.193000, 2.197000, 2.201000, 2.205000, 2.209000, 2.213000, 2.217000, 2.221000, 2.225000, 2.229000, 2.233000, 2.237000, 2.241000, 2.245000, 2.249000, 2.253000, 2.257000, 2.261000, 2.265000, 2.269000, 2.273000, 2.277000, 2.281000, 2.285000, 2.289000, 2.293000, 2.297000, 2.301000, 2.305000, 2.309000, 2.313000, 2.317000, 2.321000, 2.325000, 2.329000, 2.333000, 2.337000, 2.341000, 2.345000, 2.349000, 2.353000, 2.357000, 2.361000, 2.365000, 2.369000, 2.373000, 2.377000, 2.381000, 2.385000, 2.389000, 2.393000, 2.397000, 2.401000, 2.405000, 2.409000, 2.413000, 2.417000, 2.421000, 2.425000, 2.429000, 2.433000, 2.437000, 2.441000, 2.445000, 2.449000, 2.453000, 2.457000, 2.461000, 2.465000, 2.469000, 2.473000, 2.477000, 2.481000, 2.485000, 2.489000, 2.493000, 2.497000, 2.501000, 2.505000, 2.509000, 2.513000, 2.517000, 2.521000, 2.525000, 2.529000, 2.533000, 2.537000, 2.541000, 2.545000, 2.549000, 2.553000, 2.557000, 2.561000, 2.565000, 2.569000, 2.573000, 2.577000, 2.581000, 2.585000, 2.589000, 2.593000, 2.597000, 2.601000, 2.605000, 2.609000, 2.613000, 2.617000, 2.621000, 2.625000, 2.629000, 2.633000, 2.637000, 2.641000, 2.645000, 2.649000, 2.653000, 2.657000, 2.661000, 2.665000, 2.669000, 2.673000, 2.677000, 2.681000, 2.685000, 2.689000, 2.693000, 2.697000, 2.701000, 2.705000, 2.709000, 2.713000, 2.717000, 2.721000, 2.725000, 2.729000, 2.733000, 2.737000, 2.741000, 2.745000, 2.749000, 2.753000, 2.757000, 2.761000, 2.765000, 2.769000, 2.773000, 2.777000, 2.781000, 2.785000, 2.789000, 2.793000, 2.797000, 2.801000, 2.805000, 2.809000, 2.813000, 2.817000, 2.821000, 2.825000, 2.829000, 2.833000, 2.837000, 2.841000, 2.845000, 2.849000, 2.853000, 2.857000, 2.861000, 2.865000, 2.869000, 2.873000, 2.877000, 2.881000, 2.885000, 2.889000, 2.893000, 2.897000, 2.901000, 2.905000, 2.909000, 2.913000, 2.917000, 2.921000, 2.925000, 2.929000, 2.933000, 2.937000, 2.941000, 2.945000, 2.949000, 2.953000, 2.957000, 2.961000, 2.965000, 2.969000, 2.973000, 2.977000, 2.981000, 2.985000, 2.989000, 2.993000, 2.997000, 3.001000, 3.005000, 3.009000, 3.013000, 3.017000, 3.021000, 3.025000, 3.029000, 3.033000, 3.037000, 3.041000, 3.045000, 3.049000, 3.053000, 3.057000, 3.061000, 3.065000, 3.069000, 3.073000, 3.077000, 3.081000, 3.085000, 3.089000, 3.093000, 3.097000, 3.101000, 3.105000, 3.109000, 3.113000, 3.117000, 3.121000, 3.125000, 3.129000, 3.133000, 3.137000, 3.141000, 3.145000, 3.149000, 3.153000, 3.157000, 3.161000, 3.165000, 3.169000, 3.173000, 3.177000, 3.181000, 3.185000, 3.189000, 3.193000, 3.197000
 };
 
 
-double MI_map_16qam[MI_MAP_16QAM_SIZE] = {
+static const double MI_map_16qam[MI_MAP_16QAM_SIZE] = {
   0.018884, 0.021859, 0.024808, 0.027732, 0.030631, 0.033506, 0.036357, 0.039185, 0.041991, 0.044776, 0.047538, 0.050280, 0.053002, 0.055703, 0.058385, 0.061048, 0.063692, 0.066318, 0.068925, 0.071514, 0.074086, 0.076640, 0.079178, 0.081699, 0.084203, 0.086691, 0.089163, 0.091619, 0.094059, 0.096484, 0.098894, 0.101289, 0.103669, 0.106034, 0.108385, 0.110721, 0.113043, 0.115351, 0.117645, 0.119926, 0.122192, 0.124446, 0.126686, 0.128912, 0.131126, 0.133326, 0.135514, 0.137689, 0.139852, 0.142001, 0.144139, 0.146101, 0.148211, 0.150308, 0.152392, 0.154464, 0.156524, 0.158571, 0.160606, 0.162630, 0.164641, 0.166641, 0.168629, 0.170606, 0.172572, 0.174526, 0.176470, 0.178403, 0.180325, 0.182236, 0.184136, 0.186027, 0.187907, 0.189777, 0.191636, 0.193486, 0.195326, 0.197156, 0.198976, 0.200787, 0.202588, 0.204380, 0.206162, 0.207935, 0.209700, 0.211455, 0.213201, 0.214938, 0.216666, 0.218386, 0.220097, 0.221800, 0.223494, 0.225180, 0.226857, 0.228526, 0.230187, 0.231840, 0.233485, 0.235121, 0.236750, 0.238372, 0.239985, 0.241591, 0.243189, 0.244779, 0.246362, 0.247938, 0.249506, 0.251067, 0.252621, 0.254167, 0.255707, 0.257239, 0.258764, 0.260283, 0.261794, 0.263299, 0.264797, 0.266288, 0.267772, 0.269250, 0.270722, 0.272186, 0.273645, 0.275097, 0.276542, 0.277981, 0.279414, 0.280841, 0.282262, 0.283676, 0.285085, 0.286487, 0.287883, 0.289274, 0.290659, 0.292037, 0.293410, 0.294777, 0.296139, 0.297495, 0.298845, 0.300189, 0.301528, 0.302862, 0.304190, 0.305513, 0.306830, 0.308142, 0.309449, 0.310750, 0.312046, 0.313337, 0.314623, 0.315903, 0.317179, 0.318449, 0.319715, 0.320975, 0.322231, 0.323481, 0.324727, 0.325968, 0.327204, 0.328436, 0.329662, 0.330884, 0.332102, 0.333314, 0.334522, 0.335726, 0.336924, 0.338119, 0.339309, 0.340494, 0.341675, 0.342852, 0.344024, 0.345192, 0.346355, 0.347515, 0.348670, 0.349821, 0.350967, 0.352110, 0.353248, 0.354382, 0.355512, 0.356639, 0.357761, 0.358879, 0.359993, 0.361103, 0.362209, 0.363311, 0.364410, 0.365504, 0.366595, 0.367682, 0.368765, 0.369844, 0.370920, 0.371992, 0.373060, 0.374125, 0.375186, 0.376243, 0.377297, 0.378347, 0.379393, 0.380436, 0.381476, 0.382512, 0.383545, 0.384574, 0.385600, 0.386622, 0.387641, 0.388657, 0.389669, 0.390678, 0.391683, 0.392686, 0.393685, 0.394681, 0.395674, 0.396663, 0.397649, 0.398632, 0.399612, 0.400589, 0.401563, 0.402534, 0.403501, 0.404466, 0.405427, 0.406386, 0.407341, 0.408294, 0.409243, 0.410190, 0.411133, 0.412074, 0.413012, 0.413947, 0.414879, 0.415808, 0.416735, 0.417658, 0.418579, 0.419497, 0.420412, 0.421325, 0.422234, 0.423142, 0.424046, 0.424947, 0.425846, 0.426743, 0.427636, 0.428527, 0.429416, 0.430302, 0.431185, 0.432065, 0.432943, 0.433819, 0.434692, 0.435562, 0.436430, 0.437296, 0.438159, 0.439019, 0.439877, 0.440733, 0.441586, 0.442437, 0.443285, 0.444131, 0.444975, 0.445816, 0.446493, 0.447329, 0.448163, 0.448994, 0.449823, 0.450650, 0.451474, 0.452297, 0.453116, 0.453934, 0.454749, 0.455562, 0.456373, 0.457182, 0.457988, 0.458793, 0.459595, 0.460395, 0.461192, 0.461988, 0.462781, 0.463572, 0.464362, 0.465149, 0.465934, 0.466716, 0.467497, 0.468276, 0.469053, 0.469827, 0.470600, 0.471370, 0.472139, 0.472905, 0.473670, 0.474432, 0.475193, 0.475952, 0.476708, 0.477463, 0.478216, 0.478967, 0.479716, 0.480463, 0.481208, 0.481951, 0.482692, 0.483432, 0.484169, 0.484905, 0.485639, 0.486371, 0.487101, 0.487830, 0.488556, 0.489281, 0.490004, 0.490726, 0.491445, 0.492163, 0.492879, 0.493593, 0.494306, 0.495016, 0.495725, 0.496433, 0.497138, 0.497842, 0.498544, 0.499245, 0.499944, 0.500641, 0.501337, 0.502030, 0.502723, 0.503413, 0.504102, 0.504790, 0.505475, 0.506159, 0.506842, 0.507523, 0.508202, 0.508880, 0.509556, 0.510231, 0.510904, 0.511575, 0.512245, 0.512914, 0.513581, 0.514246, 0.514910, 0.515572, 0.516233, 0.516893, 0.517551, 0.518207, 0.518862, 0.519515, 0.520167, 0.520818, 0.521467, 0.522115, 0.522761, 0.523405, 0.524049, 0.524691, 0.525331, 0.525970, 0.526608, 0.527244, 0.527879, 0.528513, 0.529145, 0.529776, 0.530405, 0.531033, 0.531660, 0.532285, 0.532909, 0.533532, 0.534153, 0.534773, 0.535392, 0.536009, 0.536625, 0.537240, 0.537853, 0.538465, 0.539076, 0.539361, 0.539968, 0.540575, 0.541180, 0.541783, 0.542386, 0.542987, 0.543587, 0.544186, 0.544783, 0.545379, 0.545974, 0.546568, 0.547160, 0.547751, 0.548341, 0.548930, 0.549517, 0.550103, 0.550688, 0.551272, 0.551855, 0.552436, 0.553016, 0.553595, 0.554173, 0.554749, 0.555325, 0.555899, 0.556472, 0.557044, 0.557615, 0.558184, 0.558753, 0.559320, 0.559886, 0.560451, 0.561015, 0.561578, 0.562140, 0.562700, 0.563259, 0.563818, 0.564375, 0.564931, 0.565486, 0.566040, 0.566593, 0.567144, 0.567695, 0.568244, 0.568793, 0.569340, 0.569887, 0.570432, 0.570976, 0.571519, 0.572061, 0.572602, 0.573142, 0.573681, 0.574219, 0.574756, 0.575292, 0.575827, 0.576361, 0.576894, 0.577425, 0.577956, 0.578486, 0.579015, 0.579543, 0.580069, 0.580595, 0.581120, 0.581644, 0.582167, 0.582689, 0.583210, 0.583730, 0.584249, 0.584767, 0.585284, 0.585800, 0.586315, 0.586829, 0.587342, 0.587855, 0.588366, 0.588877, 0.589386, 0.589895, 0.590402, 0.590909, 0.591415, 0.591920, 0.592424, 0.592927, 0.593429, 0.593930, 0.594431, 0.594930, 0.595429, 0.595926, 0.596423, 0.596919, 0.597414, 0.597908, 0.598402, 0.598894, 0.599386, 0.599876, 0.600366, 0.600855, 0.601343, 0.601830, 0.602317, 0.602802, 0.603287, 0.603771, 0.604254, 0.604736, 0.605217, 0.605697, 0.606177, 0.606656, 0.607134, 0.607611, 0.608087, 0.608563, 0.609038, 0.609511, 0.609985, 0.610457, 0.610928, 0.611399, 0.611869, 0.612338, 0.612806, 0.613274, 0.613740, 0.614206, 0.614671, 0.615136, 0.615599, 0.616062, 0.616524, 0.616985, 0.617446, 0.617905, 0.618364, 0.618822, 0.619280, 0.619736, 0.620192, 0.620647, 0.621102, 0.621555, 0.622008, 0.622460, 0.622912, 0.623362, 0.623812, 0.624261, 0.624710, 0.625157, 0.625604, 0.626051, 0.626496, 0.626941, 0.627385, 0.627828, 0.628271, 0.628713, 0.629154, 0.629594, 0.630034, 0.630473, 0.630911, 0.631349, 0.631786, 0.632222, 0.632658, 0.633093, 0.633527, 0.633960, 0.634393, 0.634825, 0.635257, 0.635687, 0.636117, 0.636547, 0.636975, 0.637403, 0.637831, 0.638257, 0.638683, 0.639109, 0.639533, 0.639957, 0.640381, 0.640803, 0.641225, 0.641647, 0.642067, 0.642487, 0.642907, 0.643326, 0.643744, 0.644161, 0.644578, 0.644994, 0.645410, 0.645824, 0.646239, 0.646652, 0.647065, 0.647477, 0.647889, 0.648300, 0.648711, 0.649120, 0.649530, 0.649938, 0.650346, 0.650753, 0.651160, 0.651566, 0.651972, 0.652377, 0.652781, 0.653184, 0.653587, 0.653990, 0.654392, 0.654793, 0.655193, 0.655593, 0.655993, 0.656392, 0.656790, 0.657187, 0.657584, 0.657981, 0.658377, 0.658772, 0.659167, 0.659561, 0.659954, 0.660347, 0.660739, 0.661131, 0.661522, 0.661913, 0.662303, 0.662692, 0.663081, 0.663469, 0.663857, 0.664244, 0.664631, 0.665017, 0.665402, 0.665787, 0.666171, 0.666555, 0.666938, 0.667321, 0.667703, 0.668085, 0.668466, 0.668846, 0.669226, 0.669605, 0.669984, 0.670362, 0.670740, 0.671117, 0.671494, 0.671870, 0.672245, 0.672620, 0.672995, 0.673368, 0.673742, 0.674115, 0.674487, 0.674859, 0.675230, 0.675601, 0.675971, 0.676340, 0.676709, 0.677078, 0.677446, 0.677814, 0.678181, 0.678547, 0.678913, 0.679279, 0.679643, 0.680008, 0.680372, 0.680735, 0.681098, 0.681460, 0.681822, 0.682184, 0.682544, 0.682905, 0.683265, 0.683624, 0.683983, 0.684341, 0.684699, 0.685056, 0.685413, 0.685769, 0.686125, 0.686481, 0.686835, 0.687190, 0.687544, 0.687897, 0.688250, 0.688602, 0.688954, 0.689305, 0.689656, 0.690007, 0.690357, 0.690706, 0.691055, 0.691404, 0.691752, 0.692099, 0.692446, 0.692793, 0.693139, 0.693485, 0.693830, 0.694175, 0.694519, 0.694863, 0.695206, 0.695549, 0.695891, 0.696233, 0.696574, 0.696915, 0.697256, 0.697596, 0.697935, 0.698274, 0.698613, 0.698951, 0.699289, 0.699626, 0.699963, 0.700299, 0.700635, 0.700971, 0.701306, 0.701640, 0.701974, 0.702308, 0.702641, 0.702974, 0.703306, 0.703638, 0.703969, 0.704300, 0.704631, 0.704961, 0.705291, 0.705620, 0.705949, 0.706277, 0.706605, 0.706932, 0.707259, 0.707586, 0.707912, 0.708238, 0.708563, 0.708888, 0.709212, 0.709536, 0.709859, 0.710183, 0.710505, 0.710828, 0.711149, 0.711471, 0.711792, 0.712112, 0.712432, 0.712752, 0.713071, 0.713390, 0.713709, 0.714027, 0.714344, 0.714661, 0.714978, 0.715295, 0.715611, 0.715926, 0.716241, 0.716556, 0.716870, 0.717184, 0.717497, 0.717811, 0.718123, 0.718435, 0.718747, 0.719059, 0.719370, 0.719680, 0.719991, 0.720300, 0.720610, 0.720919, 0.721227, 0.721536, 0.721843, 0.722151, 0.722458, 0.722764, 0.723071, 0.723376, 0.723682, 0.723987, 0.724291, 0.724596, 0.724899, 0.725203, 0.725506, 0.725809, 0.726111, 0.726413, 0.726714, 0.727015, 0.727316, 0.727616, 0.727916, 0.728216, 0.728515, 0.728814, 0.729112, 0.729410, 0.729708, 0.730005, 0.730302, 0.730599, 0.730895, 0.731191, 0.731486, 0.731781, 0.732076, 0.732370, 0.732664, 0.732957, 0.733250, 0.733543, 0.733835, 0.734127, 0.734419, 0.734710, 0.735001, 0.735292, 0.735582, 0.735872, 0.736161, 0.736450, 0.736739, 0.737027, 0.737315, 0.737603, 0.737890, 0.738177, 0.738463, 0.738750, 0.739035, 0.739321, 0.739606, 0.739891, 0.740175, 0.740459, 0.740743, 0.741026, 0.741309, 0.741591, 0.741874, 0.742155, 0.742437, 0.742718, 0.742999, 0.743279, 0.743559, 0.743839, 0.744119, 0.744398, 0.744676, 0.744955, 0.745233, 0.745510, 0.745788, 0.746065, 0.746341, 0.746618, 0.746893, 0.747169, 0.747444, 0.747719, 0.747994, 0.748268, 0.748542, 0.748815, 0.749089, 0.749361, 0.749634, 0.749906, 0.750178, 0.750450, 0.750721, 0.750992, 0.751262, 0.751532, 0.751802, 0.752072, 0.752341, 0.752610, 0.752878, 0.753146, 0.753414, 0.753682, 0.753949, 0.754216, 0.754482, 0.754748, 0.755014, 0.755280, 0.755545, 0.755810, 0.756074, 0.756339, 0.756603, 0.756866, 0.757129, 0.757392, 0.757655, 0.757917, 0.758179, 0.758441, 0.758702, 0.758963, 0.759224, 0.759484, 0.759744, 0.760004, 0.760264, 0.760523, 0.760781, 0.761040, 0.761298, 0.761556, 0.761813, 0.762071, 0.762328, 0.762584, 0.762840, 0.763096, 0.763352, 0.763607, 0.763862, 0.764117, 0.764371, 0.764626, 0.764879
 };
 
-double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = {
+static const double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = {
   0.063000, 0.073000, 0.083000, 0.093000, 0.103000, 0.113000, 0.123000, 0.133000, 0.143000, 0.153000, 0.163000, 0.173000, 0.183000, 0.193000, 0.203000, 0.213000, 0.223000, 0.233000, 0.243000, 0.253000, 0.263000, 0.273000, 0.283000, 0.293000, 0.303000, 0.313000, 0.323000, 0.333000, 0.343000, 0.353000, 0.363000, 0.373000, 0.383000, 0.393000, 0.403000, 0.413000, 0.423000, 0.433000, 0.443000, 0.453000, 0.463000, 0.473000, 0.483000, 0.493000, 0.503000, 0.513000, 0.523000, 0.533000, 0.543000, 0.553000, 0.563000, 0.573000, 0.583000, 0.593000, 0.603000, 0.613000, 0.623000, 0.633000, 0.643000, 0.653000, 0.663000, 0.673000, 0.683000, 0.693000, 0.703000, 0.713000, 0.723000, 0.733000, 0.743000, 0.753000, 0.763000, 0.773000, 0.783000, 0.793000, 0.803000, 0.813000, 0.823000, 0.833000, 0.843000, 0.853000, 0.863000, 0.873000, 0.883000, 0.893000, 0.903000, 0.913000, 0.923000, 0.933000, 0.943000, 0.953000, 0.963000, 0.973000, 0.983000, 0.993000, 1.003000, 1.013000, 1.023000, 1.033000, 1.043000, 1.053000, 1.063000, 1.073000, 1.083000, 1.093000, 1.103000, 1.113000, 1.123000, 1.133000, 1.143000, 1.153000, 1.163000, 1.173000, 1.183000, 1.193000, 1.203000, 1.213000, 1.223000, 1.233000, 1.243000, 1.253000, 1.263000, 1.273000, 1.283000, 1.293000, 1.303000, 1.313000, 1.323000, 1.333000, 1.343000, 1.353000, 1.363000, 1.373000, 1.383000, 1.393000, 1.403000, 1.413000, 1.423000, 1.433000, 1.443000, 1.453000, 1.463000, 1.473000, 1.483000, 1.493000, 1.503000, 1.513000, 1.523000, 1.533000, 1.543000, 1.553000, 1.563000, 1.573000, 1.583000, 1.593000, 1.603000, 1.613000, 1.623000, 1.633000, 1.643000, 1.653000, 1.663000, 1.673000, 1.683000, 1.693000, 1.703000, 1.713000, 1.723000, 1.733000, 1.743000, 1.753000, 1.763000, 1.773000, 1.783000, 1.793000, 1.803000, 1.813000, 1.823000, 1.833000, 1.843000, 1.853000, 1.863000, 1.873000, 1.883000, 1.893000, 1.903000, 1.913000, 1.923000, 1.933000, 1.943000, 1.953000, 1.963000, 1.973000, 1.983000, 1.993000, 2.003000, 2.013000, 2.023000, 2.033000, 2.043000, 2.053000, 2.063000, 2.073000, 2.083000, 2.093000, 2.103000, 2.113000, 2.123000, 2.133000, 2.143000, 2.153000, 2.163000, 2.173000, 2.183000, 2.193000, 2.203000, 2.213000, 2.223000, 2.233000, 2.243000, 2.253000, 2.263000, 2.273000, 2.283000, 2.293000, 2.303000, 2.313000, 2.323000, 2.333000, 2.343000, 2.353000, 2.363000, 2.373000, 2.383000, 2.393000, 2.403000, 2.413000, 2.423000, 2.433000, 2.443000, 2.453000, 2.463000, 2.473000, 2.483000, 2.493000, 2.503000, 2.513000, 2.523000, 2.533000, 2.543000, 2.553000, 2.563000, 2.573000, 2.583000, 2.593000, 2.603000, 2.613000, 2.623000, 2.633000, 2.643000, 2.653000, 2.663000, 2.673000, 2.683000, 2.693000, 2.703000, 2.713000, 2.723000, 2.733000, 2.743000, 2.753000, 2.763000, 2.773000, 2.783000, 2.793000, 2.803000, 2.813000, 2.823000, 2.833000, 2.843000, 2.853000, 2.863000, 2.873000, 2.883000, 2.893000, 2.903000, 2.913000, 2.923000, 2.933000, 2.943000, 2.953000, 2.963000, 2.973000, 2.983000, 2.993000, 3.003000, 3.013000, 3.023000, 3.033000, 3.043000, 3.053000, 3.063000, 3.073000, 3.083000, 3.093000, 3.103000, 3.113000, 3.123000, 3.133000, 3.143000, 3.153000, 3.163000, 3.173000, 3.183000, 3.193000, 3.203000, 3.213000, 3.223000, 3.233000, 3.243000, 3.253000, 3.263000, 3.273000, 3.283000, 3.293000, 3.303000, 3.313000, 3.323000, 3.333000, 3.343000, 3.353000, 3.363000, 3.373000, 3.383000, 3.393000, 3.403000, 3.413000, 3.423000, 3.433000, 3.443000, 3.453000, 3.463000, 3.473000, 3.483000, 3.493000, 3.503000, 3.513000, 3.523000, 3.533000, 3.543000, 3.553000, 3.563000, 3.573000, 3.583000, 3.593000, 3.603000, 3.613000, 3.623000, 3.633000, 3.643000, 3.653000, 3.663000, 3.673000, 3.683000, 3.693000, 3.703000, 3.713000, 3.723000, 3.733000, 3.743000, 3.753000, 3.763000, 3.773000, 3.783000, 3.793000, 3.803000, 3.813000, 3.823000, 3.833000, 3.843000, 3.853000, 3.863000, 3.873000, 3.883000, 3.893000, 3.903000, 3.913000, 3.923000, 3.933000, 3.943000, 3.953000, 3.963000, 3.973000, 3.983000, 3.993000, 4.003000, 4.013000, 4.023000, 4.033000, 4.043000, 4.053000, 4.063000, 4.073000, 4.083000, 4.093000, 4.103000, 4.113000, 4.123000, 4.133000, 4.143000, 4.153000, 4.163000, 4.173000, 4.183000, 4.193000, 4.203000, 4.213000, 4.223000, 4.233000, 4.243000, 4.253000, 4.263000, 4.273000, 4.283000, 4.293000, 4.303000, 4.313000, 4.323000, 4.333000, 4.343000, 4.353000, 4.363000, 4.373000, 4.383000, 4.393000, 4.403000, 4.413000, 4.423000, 4.433000, 4.443000, 4.453000, 4.463000, 4.473000, 4.483000, 4.493000, 4.503000, 4.513000, 4.523000, 4.533000, 4.543000, 4.553000, 4.563000, 4.573000, 4.583000, 4.593000, 4.603000, 4.613000, 4.623000, 4.633000, 4.643000, 4.653000, 4.663000, 4.673000, 4.683000, 4.693000, 4.703000, 4.713000, 4.723000, 4.733000, 4.743000, 4.753000, 4.763000, 4.773000, 4.783000, 4.793000, 4.803000, 4.813000, 4.823000, 4.833000, 4.843000, 4.853000, 4.863000, 4.873000, 4.883000, 4.893000, 4.903000, 4.913000, 4.923000, 4.933000, 4.943000, 4.953000, 4.963000, 4.973000, 4.983000, 4.993000, 5.003000, 5.013000, 5.023000, 5.033000, 5.043000, 5.053000, 5.063000, 5.073000, 5.083000, 5.093000, 5.103000, 5.113000, 5.123000, 5.133000, 5.143000, 5.153000, 5.163000, 5.173000, 5.183000, 5.193000, 5.203000, 5.213000, 5.223000, 5.233000, 5.243000, 5.253000, 5.263000, 5.273000, 5.283000, 5.293000, 5.303000, 5.313000, 5.323000, 5.333000, 5.343000, 5.353000, 5.363000, 5.373000, 5.383000, 5.393000, 5.403000, 5.413000, 5.423000, 5.433000, 5.443000, 5.453000, 5.463000, 5.473000, 5.483000, 5.493000, 5.503000, 5.513000, 5.523000, 5.533000, 5.543000, 5.553000, 5.563000, 5.573000, 5.583000, 5.593000, 5.603000, 5.613000, 5.623000, 5.633000, 5.643000, 5.653000, 5.663000, 5.673000, 5.683000, 5.693000, 5.703000, 5.713000, 5.723000, 5.733000, 5.743000, 5.753000, 5.763000, 5.773000, 5.783000, 5.793000, 5.803000, 5.813000, 5.823000, 5.833000, 5.843000, 5.853000, 5.863000, 5.873000, 5.883000, 5.893000, 5.903000, 5.913000, 5.923000, 5.933000, 5.943000, 5.953000, 5.963000, 5.973000, 5.983000, 5.993000, 6.003000, 6.013000, 6.023000, 6.033000, 6.043000, 6.053000, 6.063000, 6.073000, 6.083000, 6.093000, 6.103000, 6.113000, 6.123000, 6.133000, 6.143000, 6.153000, 6.163000, 6.173000, 6.183000, 6.193000, 6.203000, 6.213000, 6.223000, 6.233000, 6.243000, 6.253000, 6.263000, 6.273000, 6.283000, 6.293000, 6.303000, 6.313000, 6.323000, 6.333000, 6.343000, 6.353000, 6.363000, 6.373000, 6.383000, 6.393000, 6.403000, 6.413000, 6.423000, 6.433000, 6.443000, 6.453000, 6.463000, 6.473000, 6.483000, 6.493000, 6.503000, 6.513000, 6.523000, 6.533000, 6.543000, 6.553000, 6.563000, 6.573000, 6.583000, 6.593000, 6.603000, 6.613000, 6.623000, 6.633000, 6.643000, 6.653000, 6.663000, 6.673000, 6.683000, 6.693000, 6.703000, 6.713000, 6.723000, 6.733000, 6.743000, 6.753000, 6.763000, 6.773000, 6.783000, 6.793000, 6.803000, 6.813000, 6.823000, 6.833000, 6.843000, 6.853000, 6.863000, 6.873000, 6.883000, 6.893000, 6.903000, 6.913000, 6.923000, 6.933000, 6.943000, 6.953000, 6.963000, 6.973000, 6.983000, 6.993000, 7.003000, 7.013000, 7.023000, 7.033000, 7.043000, 7.053000, 7.063000, 7.073000, 7.083000, 7.093000, 7.103000, 7.113000, 7.123000, 7.133000, 7.143000, 7.153000, 7.163000, 7.173000, 7.183000, 7.193000, 7.203000, 7.213000, 7.223000, 7.233000, 7.243000, 7.253000, 7.263000, 7.273000, 7.283000, 7.293000, 7.303000, 7.313000, 7.323000, 7.333000, 7.343000, 7.353000, 7.363000, 7.373000, 7.383000, 7.393000, 7.403000, 7.413000, 7.423000, 7.433000, 7.443000, 7.453000, 7.463000, 7.473000, 7.483000, 7.493000, 7.503000, 7.513000, 7.523000, 7.533000, 7.543000, 7.553000, 7.563000, 7.573000, 7.583000, 7.593000, 7.603000, 7.613000, 7.623000, 7.633000, 7.643000, 7.653000, 7.663000, 7.673000, 7.683000, 7.693000, 7.703000, 7.713000, 7.723000, 7.733000, 7.743000, 7.753000, 7.763000, 7.773000, 7.783000, 7.793000, 7.803000, 7.813000, 7.823000, 7.833000, 7.843000, 7.853000, 7.863000, 7.873000, 7.883000, 7.893000, 7.903000, 7.913000, 7.923000, 7.933000, 7.943000, 7.953000, 7.963000, 7.973000, 7.983000, 7.993000, 8.003000, 8.013000, 8.023000, 8.033000, 8.043000, 8.053000, 8.063000, 8.073000, 8.083000, 8.093000, 8.103000, 8.113000, 8.123000, 8.133000, 8.143000, 8.153000, 8.163000, 8.173000, 8.183000, 8.193000, 8.203000, 8.213000, 8.223000, 8.233000, 8.243000, 8.253000, 8.263000, 8.273000, 8.283000, 8.293000, 8.303000, 8.313000, 8.323000, 8.333000, 8.343000, 8.353000, 8.363000, 8.373000, 8.383000, 8.393000, 8.403000, 8.413000, 8.423000, 8.433000, 8.443000, 8.453000, 8.463000, 8.473000, 8.483000, 8.493000, 8.503000, 8.513000, 8.523000, 8.533000, 8.543000, 8.553000, 8.563000, 8.573000, 8.583000, 8.593000, 8.603000, 8.613000, 8.623000, 8.633000, 8.643000, 8.653000, 8.663000, 8.673000, 8.683000, 8.693000, 8.703000, 8.713000, 8.723000, 8.733000, 8.743000, 8.753000, 8.763000, 8.773000, 8.783000, 8.793000, 8.803000, 8.813000, 8.823000, 8.833000, 8.843000, 8.853000, 8.863000, 8.873000, 8.883000, 8.893000, 8.903000, 8.913000, 8.923000, 8.933000, 8.943000, 8.953000, 8.963000, 8.973000, 8.983000, 8.993000, 9.003000, 9.013000, 9.023000, 9.033000, 9.043000, 9.053000, 9.063000, 9.073000, 9.083000, 9.093000, 9.103000, 9.113000, 9.123000, 9.133000, 9.143000, 9.153000, 9.163000, 9.173000, 9.183000, 9.193000, 9.203000, 9.213000, 9.223000, 9.233000, 9.243000, 9.253000, 9.263000, 9.273000, 9.283000, 9.293000, 9.303000, 9.313000, 9.323000, 9.333000, 9.343000, 9.353000, 9.363000, 9.373000, 9.383000, 9.393000, 9.403000, 9.413000, 9.423000, 9.433000, 9.443000, 9.453000, 9.463000, 9.473000, 9.483000, 9.493000, 9.503000, 9.513000, 9.523000, 9.533000, 9.543000, 9.553000, 9.563000, 9.573000, 9.583000, 9.593000, 9.603000, 9.613000, 9.623000, 9.633000, 9.643000, 9.653000, 9.663000, 9.673000, 9.683000, 9.693000, 9.703000, 9.713000, 9.723000, 9.733000, 9.743000, 9.753000, 9.763000, 9.773000, 9.783000, 9.793000, 9.803000, 9.813000, 9.823000, 9.833000, 9.843000, 9.853000, 9.863000, 9.873000, 9.883000, 9.893000, 9.903000, 9.913000, 9.923000, 9.933000, 9.943000, 9.953000, 9.963000, 9.973000, 9.983000, 9.993000
 };
 
 
-double MI_map_64qam[MI_MAP_64QAM_SIZE] = {
+static const double MI_map_64qam[MI_MAP_64QAM_SIZE] = {
   0.036455, 0.064415, 0.090225, 0.114215, 0.136597, 0.157298, 0.176808, 0.195063, 0.212193, 0.228310, 0.243505, 0.257860, 0.271445, 0.284323, 0.296550, 0.308175, 0.319243, 0.329796, 0.339870, 0.349499, 0.358715, 0.367545, 0.376015, 0.384150, 0.391971, 0.399498, 0.406751, 0.413746, 0.420499, 0.427026, 0.433340, 0.439453, 0.445378, 0.451125, 0.456705, 0.462127, 0.467400, 0.472532, 0.477531, 0.482404, 0.487157, 0.491797, 0.496330, 0.500760, 0.505094, 0.509116, 0.513264, 0.517327, 0.521309, 0.525213, 0.529043, 0.532803, 0.536495, 0.540123, 0.543689, 0.547196, 0.550646, 0.554041, 0.557385, 0.560678, 0.563922, 0.567120, 0.570273, 0.573383, 0.576451, 0.579478, 0.582467, 0.585418, 0.588332, 0.591211, 0.594055, 0.596866, 0.599644, 0.602392, 0.605108, 0.607795, 0.610453, 0.613082, 0.615684, 0.618259, 0.620808, 0.623331, 0.625829, 0.628303, 0.630753, 0.633179, 0.635582, 0.637963, 0.640321, 0.642658, 0.644974, 0.647269, 0.649543, 0.651797, 0.653815, 0.656029, 0.658222, 0.660396, 0.662552, 0.664689, 0.666807, 0.668908, 0.670990, 0.673056, 0.675104, 0.677135, 0.679149, 0.681147, 0.683128, 0.685094, 0.687044, 0.688978, 0.690896, 0.692799, 0.694688, 0.696561, 0.698420, 0.700264, 0.702094, 0.703909, 0.705711, 0.707499, 0.709273, 0.711033, 0.712781, 0.714515, 0.716235, 0.717943, 0.719638, 0.721321, 0.722991, 0.724648, 0.726293, 0.727926, 0.729547, 0.731156, 0.732753, 0.734339, 0.735913, 0.737475, 0.739026, 0.740566, 0.742095, 0.743613, 0.745120, 0.746616, 0.748101, 0.749576, 0.751040, 0.752494, 0.753937, 0.755371, 0.756794, 0.758207, 0.759610, 0.761003, 0.762387, 0.763761, 0.765125, 0.766479, 0.767825, 0.769160, 0.770487, 0.771805, 0.773113, 0.774412, 0.775702, 0.776984, 0.778257, 0.779521, 0.780776, 0.782022, 0.783261, 0.784490, 0.785712, 0.786925, 0.788130, 0.789327, 0.790515, 0.791696, 0.792868, 0.794033, 0.795190, 0.796339, 0.797481, 0.798615, 0.799741, 0.800860, 0.801971, 0.803075, 0.804172, 0.805261, 0.806343, 0.807418, 0.808486, 0.809547, 0.810601, 0.811647, 0.812687, 0.813721, 0.814747, 0.815767, 0.816780, 0.817786, 0.818786, 0.819780, 0.820767, 0.821747, 0.822722, 0.823689, 0.824651, 0.825607, 0.826556, 0.827499, 0.828436, 0.829367, 0.830292, 0.831212, 0.832125, 0.833032, 0.833934, 0.834830, 0.835720, 0.836605, 0.837484, 0.838357, 0.839225, 0.840088, 0.840945, 0.841796, 0.842642, 0.843483, 0.844319, 0.845149, 0.845974, 0.846794, 0.847609, 0.848419, 0.849223, 0.850023, 0.850818, 0.851608, 0.852392, 0.853172, 0.853947, 0.854718, 0.855483, 0.856244, 0.857000, 0.857752, 0.858499, 0.859241, 0.859979, 0.860712, 0.861441, 0.862165, 0.862885, 0.863600, 0.864311, 0.865018, 0.865720, 0.866418, 0.867112, 0.867802, 0.868488, 0.869169, 0.869846, 0.870519, 0.871188, 0.871854, 0.872515, 0.873172, 0.873825, 0.874474, 0.875120, 0.875761, 0.876399, 0.877033, 0.877663, 0.878289, 0.878911, 0.879530, 0.880146, 0.880757, 0.881365, 0.881969, 0.882570, 0.883167, 0.883761, 0.884351, 0.884938, 0.885521, 0.886101, 0.886677, 0.887250, 0.887820, 0.888387, 0.888950, 0.889509, 0.890066, 0.890619, 0.891169, 0.891716, 0.892259, 0.892800, 0.893337, 0.893872, 0.894403, 0.894931, 0.895456, 0.895978, 0.896497, 0.897013, 0.897526, 0.898036, 0.898543, 0.899047, 0.899549, 0.900047, 0.900543, 0.901036, 0.901526, 0.902013, 0.902497, 0.902979, 0.903458, 0.903934, 0.904407, 0.904878, 0.905346, 0.905812, 0.906275, 0.906735, 0.907193, 0.907648, 0.908100, 0.908550, 0.908998, 0.909443, 0.909885, 0.910325, 0.910762, 0.911198, 0.911630, 0.912060, 0.912488, 0.912914, 0.913337, 0.913757, 0.914176, 0.914592, 0.915005, 0.915417, 0.915826, 0.916233, 0.916638, 0.917040, 0.917440, 0.917838, 0.918234, 0.918628, 0.919019, 0.919408, 0.919796, 0.920181, 0.920564, 0.920944, 0.921323, 0.921700, 0.922075, 0.922447, 0.922818, 0.923186, 0.923553, 0.923917, 0.924280, 0.924641, 0.924999, 0.925356, 0.925711, 0.926064, 0.926415, 0.926764, 0.927111, 0.927456, 0.927800, 0.928141, 0.928481, 0.928819, 0.929155, 0.929490, 0.929822, 0.930153, 0.930482, 0.930809, 0.931135, 0.931459, 0.931781, 0.932101, 0.932420, 0.932737, 0.933052, 0.933365, 0.933677, 0.933988, 0.934296, 0.934603, 0.934909, 0.935213, 0.935515, 0.935815, 0.936114, 0.936412, 0.936708, 0.937002, 0.937295, 0.937586, 0.937876, 0.938164, 0.938451, 0.938736, 0.939020, 0.939302, 0.939583, 0.939862, 0.940140, 0.940416, 0.940691, 0.940965, 0.941237, 0.941507, 0.941777, 0.942045, 0.942311, 0.942576, 0.942840, 0.943103, 0.943364, 0.943623, 0.943882, 0.944139, 0.944395, 0.944649, 0.944902, 0.945154, 0.945405, 0.945654, 0.945902, 0.946149, 0.946394, 0.946638, 0.946881, 0.947123, 0.947363, 0.947603, 0.947841, 0.948078, 0.948313, 0.948548, 0.948781, 0.949013, 0.949244, 0.949474, 0.949702, 0.949930, 0.950156, 0.950381, 0.950605, 0.950828, 0.951050, 0.951270, 0.951490, 0.951708, 0.951926, 0.952142, 0.952357, 0.952571, 0.952784, 0.952996, 0.953207, 0.953417, 0.953626, 0.953833, 0.954040, 0.954246, 0.954451, 0.954654, 0.954857, 0.955059, 0.955259, 0.955459, 0.955657, 0.955855, 0.956052, 0.956248, 0.956442, 0.956636, 0.956829, 0.957021, 0.957212, 0.957402, 0.957591, 0.957779, 0.957966, 0.958153, 0.958338, 0.958522, 0.958706, 0.958889, 0.959071, 0.959251, 0.959431, 0.959611, 0.959789, 0.959966, 0.960143, 0.960318, 0.960493, 0.960667, 0.960840, 0.961013, 0.961184, 0.961355, 0.961524, 0.961693, 0.961862, 0.962029, 0.962195, 0.962361, 0.962526, 0.962690, 0.962854, 0.963016, 0.963178, 0.963339, 0.963499, 0.963659, 0.963817, 0.963975, 0.964132, 0.964289, 0.964444, 0.964599, 0.964754, 0.964907, 0.965060, 0.965212, 0.965363, 0.965513, 0.965663, 0.965812, 0.965961, 0.966108, 0.966255, 0.966402, 0.966547, 0.966692, 0.966836, 0.966980, 0.967123, 0.967265, 0.967407, 0.967547, 0.967688, 0.967827, 0.967966, 0.968104, 0.968242, 0.968379, 0.968515, 0.968650, 0.968785, 0.968920, 0.969053, 0.969186, 0.969319, 0.969451, 0.969582, 0.969713, 0.969843, 0.969972, 0.970101, 0.970229, 0.970356, 0.970483, 0.970610, 0.970736, 0.970861, 0.970985, 0.971110, 0.971233, 0.971356, 0.971478, 0.971600, 0.971721, 0.971842, 0.971962, 0.972081, 0.972200, 0.972319, 0.972437, 0.972554, 0.972671, 0.972787, 0.972903, 0.973018, 0.973133, 0.973247, 0.973360, 0.973473, 0.973586, 0.973698, 0.973809, 0.973920, 0.974031, 0.974141, 0.974250, 0.974359, 0.974468, 0.974576, 0.974683, 0.974790, 0.974897, 0.975003, 0.975108, 0.975213, 0.975318, 0.975422, 0.975526, 0.975629, 0.975731, 0.975834, 0.975935, 0.976037, 0.976138, 0.976238, 0.976338, 0.976437, 0.976536, 0.976635, 0.976733, 0.976831, 0.976928, 0.977025, 0.977121, 0.977217, 0.977312, 0.977407, 0.977502, 0.977596, 0.977690, 0.977783, 0.977876, 0.977969, 0.978061, 0.978153, 0.978244, 0.978335, 0.978425, 0.978515, 0.978605, 0.978694, 0.978783, 0.978871, 0.978959, 0.979047, 0.979134, 0.979221, 0.979308, 0.979394, 0.979479, 0.979565, 0.979650, 0.979734, 0.979818, 0.979902, 0.979986, 0.980069, 0.980151, 0.980234, 0.980316, 0.980397, 0.980479, 0.980560, 0.980640, 0.980720, 0.980800, 0.980879, 0.980959, 0.981037, 0.981116, 0.981194, 0.981271, 0.981349, 0.981426, 0.981503, 0.981579, 0.981655, 0.981731, 0.981806, 0.981881, 0.981956, 0.982030, 0.982104, 0.982178, 0.982251, 0.982324, 0.982397, 0.982469, 0.982541, 0.982613, 0.982685, 0.982756, 0.982827, 0.982897, 0.982967, 0.983037, 0.983107, 0.983176, 0.983245, 0.983314, 0.983382, 0.983450, 0.983518, 0.983586, 0.983653, 0.983720, 0.983786, 0.983853, 0.983919, 0.983985, 0.984050, 0.984115, 0.984180, 0.984245, 0.984309, 0.984373, 0.984437, 0.984500, 0.984564, 0.984627, 0.984689, 0.984752, 0.984814, 0.984876, 0.984937, 0.984999, 0.985060, 0.985121, 0.985181, 0.985242, 0.985302
 };
 
-double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = {
+static const double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = {
   0.250000, 0.460000, 0.670000, 0.880000, 1.090000, 1.300000, 1.510000, 1.720000, 1.930000, 2.140000, 2.350000, 2.560000, 2.770000, 2.980000, 3.190000, 3.400000, 3.610000, 3.820000, 4.030000, 4.240000, 4.450000, 4.660000, 4.870000, 5.080000, 5.290000, 5.500000, 5.710000, 5.920000, 6.130000, 6.340000, 6.550000, 6.760000, 6.970000, 7.180000, 7.390000, 7.600000, 7.810000, 8.020000, 8.230000, 8.440000, 8.650000, 8.860000, 9.070000, 9.280000, 9.490000, 9.700000, 9.910000, 10.120000, 10.330000, 10.540000, 10.750000, 10.960000, 11.170000, 11.380000, 11.590000, 11.800000, 12.010000, 12.220000, 12.430000, 12.640000, 12.850000, 13.060000, 13.270000, 13.480000, 13.690000, 13.900000, 14.110000, 14.320000, 14.530000, 14.740000, 14.950000, 15.160000, 15.370000, 15.580000, 15.790000, 16.000000, 16.210000, 16.420000, 16.630000, 16.840000, 17.050000, 17.260000, 17.470000, 17.680000, 17.890000, 18.100000, 18.310000, 18.520000, 18.730000, 18.940000, 19.150000, 19.360000, 19.570000, 19.780000, 19.990000, 20.200000, 20.410000, 20.620000, 20.830000, 21.040000, 21.250000, 21.460000, 21.670000, 21.880000, 22.090000, 22.300000, 22.510000, 22.720000, 22.930000, 23.140000, 23.350000, 23.560000, 23.770000, 23.980000, 24.190000, 24.400000, 24.610000, 24.820000, 25.030000, 25.240000, 25.450000, 25.660000, 25.870000, 26.080000, 26.290000, 26.500000, 26.710000, 26.920000, 27.130000, 27.340000, 27.550000, 27.760000, 27.970000, 28.180000, 28.390000, 28.600000, 28.810000, 29.020000, 29.230000, 29.440000, 29.650000, 29.860000, 30.070000, 30.280000, 30.490000, 30.700000, 30.910000, 31.120000, 31.330000, 31.540000, 31.750000, 31.960000, 32.170000, 32.380000, 32.590000, 32.800000, 33.010000, 33.220000, 33.430000, 33.640000, 33.850000, 34.060000, 34.270000, 34.480000, 34.690000, 34.900000, 35.110000, 35.320000, 35.530000, 35.740000, 35.950000, 36.160000, 36.370000, 36.580000, 36.790000, 37.000000, 37.210000, 37.420000, 37.630000, 37.840000, 38.050000, 38.260000, 38.470000, 38.680000, 38.890000, 39.100000, 39.310000, 39.520000, 39.730000, 39.940000, 40.150000, 40.360000, 40.570000, 40.780000, 40.990000, 41.200000, 41.410000, 41.620000, 41.830000, 42.040000, 42.250000, 42.460000, 42.670000, 42.880000, 43.090000, 43.300000, 43.510000, 43.720000, 43.930000, 44.140000, 44.350000, 44.560000, 44.770000, 44.980000, 45.190000, 45.400000, 45.610000, 45.820000, 46.030000, 46.240000, 46.450000, 46.660000, 46.870000, 47.080000, 47.290000, 47.500000, 47.710000, 47.920000, 48.130000, 48.340000, 48.550000, 48.760000, 48.970000, 49.180000, 49.390000, 49.600000, 49.810000, 50.020000, 50.230000, 50.440000, 50.650000, 50.860000, 51.070000, 51.280000, 51.490000, 51.700000, 51.910000, 52.120000, 52.330000, 52.540000, 52.750000, 52.960000, 53.170000, 53.380000, 53.590000, 53.800000, 54.010000, 54.220000, 54.430000, 54.640000, 54.850000, 55.060000, 55.270000, 55.480000, 55.690000, 55.900000, 56.110000, 56.320000, 56.530000, 56.740000, 56.950000, 57.160000, 57.370000, 57.580000, 57.790000, 58.000000, 58.210000, 58.420000, 58.630000, 58.840000, 59.050000, 59.260000, 59.470000, 59.680000, 59.890000, 60.100000, 60.310000, 60.520000, 60.730000, 60.940000, 61.150000, 61.360000, 61.570000, 61.780000, 61.990000, 62.200000, 62.410000, 62.620000, 62.830000, 63.040000, 63.250000, 63.460000, 63.670000, 63.880000, 64.090000, 64.300000, 64.510000, 64.720000, 64.930000, 65.140000, 65.350000, 65.560000, 65.770000, 65.980000, 66.190000, 66.400000, 66.610000, 66.820000, 67.030000, 67.240000, 67.450000, 67.660000, 67.870000, 68.080000, 68.290000, 68.500000, 68.710000, 68.920000, 69.130000, 69.340000, 69.550000, 69.760000, 69.970000, 70.180000, 70.390000, 70.600000, 70.810000, 71.020000, 71.230000, 71.440000, 71.650000, 71.860000, 72.070000, 72.280000, 72.490000, 72.700000, 72.910000, 73.120000, 73.330000, 73.540000, 73.750000, 73.960000, 74.170000, 74.380000, 74.590000, 74.800000, 75.010000, 75.220000, 75.430000, 75.640000, 75.850000, 76.060000, 76.270000, 76.480000, 76.690000, 76.900000, 77.110000, 77.320000, 77.530000, 77.740000, 77.950000, 78.160000, 78.370000, 78.580000, 78.790000, 79.000000, 79.210000, 79.420000, 79.630000, 79.840000, 80.050000, 80.260000, 80.470000, 80.680000, 80.890000, 81.100000, 81.310000, 81.520000, 81.730000, 81.940000, 82.150000, 82.360000, 82.570000, 82.780000, 82.990000, 83.200000, 83.410000, 83.620000, 83.830000, 84.040000, 84.250000, 84.460000, 84.670000, 84.880000, 85.090000, 85.300000, 85.510000, 85.720000, 85.930000, 86.140000, 86.350000, 86.560000, 86.770000, 86.980000, 87.190000, 87.400000, 87.610000, 87.820000, 88.030000, 88.240000, 88.450000, 88.660000, 88.870000, 89.080000, 89.290000, 89.500000, 89.710000, 89.920000, 90.130000, 90.340000, 90.550000, 90.760000, 90.970000, 91.180000, 91.390000, 91.600000, 91.810000, 92.020000, 92.230000, 92.440000, 92.650000, 92.860000, 93.070000, 93.280000, 93.490000, 93.700000, 93.910000, 94.120000, 94.330000, 94.540000, 94.750000, 94.960000, 95.170000, 95.380000, 95.590000, 95.800000, 96.010000, 96.220000, 96.430000, 96.640000, 96.850000, 97.060000, 97.270000, 97.480000, 97.690000, 97.900000, 98.110000, 98.320000, 98.530000, 98.740000, 98.950000, 99.160000, 99.370000, 99.580000, 99.790000, 100.000000, 100.210000, 100.420000, 100.630000, 100.840000, 101.050000, 101.260000, 101.470000, 101.680000, 101.890000, 102.100000, 102.310000, 102.520000, 102.730000, 102.940000, 103.150000, 103.360000, 103.570000, 103.780000, 103.990000, 104.200000, 104.410000, 104.620000, 104.830000, 105.040000, 105.250000, 105.460000, 105.670000, 105.880000, 106.090000, 106.300000, 106.510000, 106.720000, 106.930000, 107.140000, 107.350000, 107.560000, 107.770000, 107.980000, 108.190000, 108.400000, 108.610000, 108.820000, 109.030000, 109.240000, 109.450000, 109.660000, 109.870000, 110.080000, 110.290000, 110.500000, 110.710000, 110.920000, 111.130000, 111.340000, 111.550000, 111.760000, 111.970000, 112.180000, 112.390000, 112.600000, 112.810000, 113.020000, 113.230000, 113.440000, 113.650000, 113.860000, 114.070000, 114.280000, 114.490000, 114.700000, 114.910000, 115.120000, 115.330000, 115.540000, 115.750000, 115.960000, 116.170000, 116.380000, 116.590000, 116.800000, 117.010000, 117.220000, 117.430000, 117.640000, 117.850000, 118.060000, 118.270000, 118.480000, 118.690000, 118.900000, 119.110000, 119.320000, 119.530000, 119.740000, 119.950000, 120.160000, 120.370000, 120.580000, 120.790000, 121.000000, 121.210000, 121.420000, 121.630000, 121.840000, 122.050000, 122.260000, 122.470000, 122.680000, 122.890000, 123.100000, 123.310000, 123.520000, 123.730000, 123.940000, 124.150000, 124.360000, 124.570000, 124.780000, 124.990000, 125.200000, 125.410000, 125.620000, 125.830000, 126.040000, 126.250000, 126.460000, 126.670000, 126.880000, 127.090000, 127.300000, 127.510000, 127.720000, 127.930000, 128.140000, 128.350000, 128.560000, 128.770000, 128.980000, 129.190000, 129.400000, 129.610000, 129.820000, 130.030000, 130.240000, 130.450000, 130.660000, 130.870000, 131.080000, 131.290000, 131.500000, 131.710000, 131.920000, 132.130000, 132.340000, 132.550000, 132.760000, 132.970000, 133.180000, 133.390000, 133.600000, 133.810000, 134.020000, 134.230000, 134.440000, 134.650000, 134.860000, 135.070000, 135.280000, 135.490000, 135.700000, 135.910000, 136.120000, 136.330000, 136.540000, 136.750000, 136.960000, 137.170000, 137.380000, 137.590000, 137.800000, 138.010000, 138.220000, 138.430000, 138.640000, 138.850000, 139.060000, 139.270000, 139.480000, 139.690000, 139.900000, 140.110000, 140.320000, 140.530000, 140.740000, 140.950000, 141.160000, 141.370000, 141.580000, 141.790000, 142.000000, 142.210000, 142.420000, 142.630000, 142.840000, 143.050000, 143.260000, 143.470000, 143.680000, 143.890000, 144.100000, 144.310000, 144.520000, 144.730000, 144.940000, 145.150000, 145.360000, 145.570000, 145.780000, 145.990000, 146.200000, 146.410000, 146.620000, 146.830000, 147.040000, 147.250000, 147.460000, 147.670000, 147.880000, 148.090000, 148.300000, 148.510000, 148.720000, 148.930000, 149.140000, 149.350000, 149.560000, 149.770000, 149.980000, 150.190000, 150.400000, 150.610000, 150.820000, 151.030000, 151.240000, 151.450000, 151.660000, 151.870000, 152.080000, 152.290000, 152.500000, 152.710000, 152.920000, 153.130000, 153.340000, 153.550000, 153.760000, 153.970000, 154.180000, 154.390000, 154.600000, 154.810000, 155.020000, 155.230000, 155.440000, 155.650000, 155.860000, 156.070000, 156.280000, 156.490000, 156.700000, 156.910000, 157.120000, 157.330000, 157.540000, 157.750000, 157.960000
 };
 
 
 
 
-double bEcrTable [9][38] = {
+static const double bEcrTable [9][38] = {
   // CB of 40 bits
   {
     0.02472, 0.06352, 0.09516, // QPSK retx
@@ -235,7 +237,7 @@
 };
   
   
-double cEcrTable [9][38] = {
+static const double cEcrTable [9][38] = {
   // CB of 40 bits
   {
     0.00543, 0.01337, 0.01969, // QPSK retx
@@ -465,21 +467,23 @@
   while (sinrIt!=sinrCopy.ValuesEnd ())
     {
       double sinrLin = *sinrIt;
-      int tr = 0;
-      while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinrLin))
-        {
-          tr++;
-        }
       if (sinrLin > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1])
         {
           MI = 1;
         }
       else 
-        {
-          NS_ASSERT_MSG (tr<MI_MAP_QPSK_SIZE, "MI map out of data");
-          MI = MI_map_qpsk[tr];
+        { 
+          // since the values in MI_map_qpsk_axis are uniformly spaced, we have
+          // index = ((sinrLin - value[0]) / (value[SIZE-1] - value[0])) * (SIZE-1)
+              // the scaling coefficient is always the same, so we use a static const
+              // to speed up the calculation
+          static const double scalingCoeffQpsk = 
+            (MI_MAP_QPSK_SIZE - 1) / (MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1] - MI_map_qpsk_axis[0]);
+          double sinrIndexDouble = (sinrLin -  MI_map_qpsk_axis[0]) * scalingCoeffQpsk + 1;
+          uint32_t sinrIndex = std::max(0.0, std::floor (sinrIndexDouble));
+          NS_ASSERT_MSG (sinrIndex < MI_MAP_QPSK_SIZE, "MI map out of data");
+          MI = MI_map_qpsk[sinrIndex];
         }
-//       NS_LOG_DEBUG (" RB " << rb << " SINR " << 10*log10 (sinrLin) << " MI " << MI);
       MIsum += MI;
       sinrIt++;
       rb++;
@@ -655,7 +659,8 @@
   else
     {
       // second segmentation size: K- = maximum K in table such that K < K+
-      Kminus = cbSizeTable[KplusId-1 > 0 ? KplusId-1 : 0];
+      // -fstrict-overflow sensitive, see bug 1868
+      Kminus = cbSizeTable[ KplusId > 1 ? KplusId - 1 : 0];
       deltaK = Kplus - Kminus;
       Cminus = floor ((((double) C * Kplus) - (double)B1) / (double)deltaK);
       Cplus = C - Cminus;
diff -Naur ns-3.19/src/lte/model/lte-net-device.cc ns-3.20/src/lte/model/lte-net-device.cc
--- ns-3.19/src/lte/model/lte-net-device.cc	2014-06-17 10:34:00.271637951 -0700
+++ ns-3.20/src/lte/model/lte-net-device.cc	2014-06-17 10:33:13.642997899 -0700
@@ -40,8 +40,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED ( LteNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED ( LteNetDevice);
 
 ////////////////////////////////
 // LteNetDevice
diff -Naur ns-3.19/src/lte/model/lte-pdcp.cc ns-3.20/src/lte/model/lte-pdcp.cc
--- ns-3.19/src/lte/model/lte-pdcp.cc	2014-06-17 10:34:00.274637928 -0700
+++ ns-3.20/src/lte/model/lte-pdcp.cc	2014-06-17 10:33:13.644997883 -0700
@@ -61,8 +61,7 @@
 
 ///////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (LtePdcp)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LtePdcp);
 
 LtePdcp::LtePdcp ()
   : m_pdcpSapUser (0),
diff -Naur ns-3.19/src/lte/model/lte-pdcp-header.cc ns-3.20/src/lte/model/lte-pdcp-header.cc
--- ns-3.19/src/lte/model/lte-pdcp-header.cc	2014-06-17 10:34:00.272637943 -0700
+++ ns-3.20/src/lte/model/lte-pdcp-header.cc	2014-06-17 10:33:13.642997899 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LtePdcpHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LtePdcpHeader);
 
 LtePdcpHeader::LtePdcpHeader ()
   : m_dcBit (0xff),
diff -Naur ns-3.19/src/lte/model/lte-pdcp-tag.cc ns-3.20/src/lte/model/lte-pdcp-tag.cc
--- ns-3.19/src/lte/model/lte-pdcp-tag.cc	2014-06-17 10:34:00.273637936 -0700
+++ ns-3.20/src/lte/model/lte-pdcp-tag.cc	2014-06-17 10:33:13.644997883 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PdcpTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PdcpTag);
 
 PdcpTag::PdcpTag ()
   : m_senderTimestamp (Seconds (0))
diff -Naur ns-3.19/src/lte/model/lte-phy.cc ns-3.20/src/lte/model/lte-phy.cc
--- ns-3.19/src/lte/model/lte-phy.cc	2014-06-17 10:34:00.276637912 -0700
+++ ns-3.20/src/lte/model/lte-phy.cc	2014-06-17 10:33:13.646997868 -0700
@@ -33,8 +33,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (LtePhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LtePhy);
 
 
 LtePhy::LtePhy ()
diff -Naur ns-3.19/src/lte/model/lte-phy-tag.cc ns-3.20/src/lte/model/lte-phy-tag.cc
--- ns-3.19/src/lte/model/lte-phy-tag.cc	2014-06-17 10:34:00.275637920 -0700
+++ ns-3.20/src/lte/model/lte-phy-tag.cc	2014-06-17 10:33:13.645997876 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LtePhyTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LtePhyTag);
 
 TypeId
 LtePhyTag::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/lte-radio-bearer-info.cc ns-3.20/src/lte/model/lte-radio-bearer-info.cc
--- ns-3.19/src/lte/model/lte-radio-bearer-info.cc	2014-06-17 10:34:00.277637905 -0700
+++ ns-3.20/src/lte/model/lte-radio-bearer-info.cc	2014-06-17 10:33:13.647997860 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRadioBearerInfo)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRadioBearerInfo);
 
 LteRadioBearerInfo::LteRadioBearerInfo (void)
 {
diff -Naur ns-3.19/src/lte/model/lte-radio-bearer-tag.cc ns-3.20/src/lte/model/lte-radio-bearer-tag.cc
--- ns-3.19/src/lte/model/lte-radio-bearer-tag.cc	2014-06-17 10:34:00.278637897 -0700
+++ ns-3.20/src/lte/model/lte-radio-bearer-tag.cc	2014-06-17 10:33:13.648997853 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRadioBearerTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRadioBearerTag);
 
 TypeId
 LteRadioBearerTag::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/lte-rlc-am.cc ns-3.20/src/lte/model/lte-rlc-am.cc
--- ns-3.19/src/lte/model/lte-rlc-am.cc	2014-06-17 10:34:00.280637881 -0700
+++ ns-3.20/src/lte/model/lte-rlc-am.cc	2014-06-17 10:33:13.650997837 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcAm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcAm);
 
 LteRlcAm::LteRlcAm ()
 {
diff -Naur ns-3.19/src/lte/model/lte-rlc-am-header.cc ns-3.20/src/lte/model/lte-rlc-am-header.cc
--- ns-3.19/src/lte/model/lte-rlc-am-header.cc	2014-06-17 10:34:00.279637889 -0700
+++ ns-3.20/src/lte/model/lte-rlc-am-header.cc	2014-06-17 10:33:13.649997845 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcAmHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcAmHeader);
 
 LteRlcAmHeader::LteRlcAmHeader ()
   : m_headerLength (0),
diff -Naur ns-3.19/src/lte/model/lte-rlc.cc ns-3.20/src/lte/model/lte-rlc.cc
--- ns-3.19/src/lte/model/lte-rlc.cc	2014-06-17 10:34:00.287637828 -0700
+++ ns-3.20/src/lte/model/lte-rlc.cc	2014-06-17 10:33:13.657997783 -0700
@@ -81,8 +81,7 @@
 
 ///////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlc);
 
 LteRlc::LteRlc ()
   : m_rlcSapUser (0),
@@ -168,8 +167,7 @@
 
 ////////////////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcSm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcSm);
 
 LteRlcSm::LteRlcSm ()
 {
diff -Naur ns-3.19/src/lte/model/lte-rlc-header.cc ns-3.20/src/lte/model/lte-rlc-header.cc
--- ns-3.19/src/lte/model/lte-rlc-header.cc	2014-06-17 10:34:00.281637874 -0700
+++ ns-3.20/src/lte/model/lte-rlc-header.cc	2014-06-17 10:33:13.651997829 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcHeader);
 
 LteRlcHeader::LteRlcHeader ()
   : m_headerLength (0),
diff -Naur ns-3.19/src/lte/model/lte-rlc-sdu-status-tag.cc ns-3.20/src/lte/model/lte-rlc-sdu-status-tag.cc
--- ns-3.19/src/lte/model/lte-rlc-sdu-status-tag.cc	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/src/lte/model/lte-rlc-sdu-status-tag.cc	2014-06-17 10:33:13.652997822 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcSduStatusTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcSduStatusTag);
 
 LteRlcSduStatusTag::LteRlcSduStatusTag ()
 {
diff -Naur ns-3.19/src/lte/model/lte-rlc-sequence-number.h ns-3.20/src/lte/model/lte-rlc-sequence-number.h
--- ns-3.19/src/lte/model/lte-rlc-sequence-number.h	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/src/lte/model/lte-rlc-sequence-number.h	2014-06-17 10:33:13.653997814 -0700
@@ -78,7 +78,7 @@
   SequenceNumber10 operator++ (int)
   {
     SequenceNumber10 retval (m_value);
-    m_value = (m_value + 1) % 1024;
+    m_value = ((uint32_t)m_value + 1) % 1024;
     return retval;
   }
 
diff -Naur ns-3.19/src/lte/model/lte-rlc-tag.cc ns-3.20/src/lte/model/lte-rlc-tag.cc
--- ns-3.19/src/lte/model/lte-rlc-tag.cc	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/lte/model/lte-rlc-tag.cc	2014-06-17 10:33:13.653997814 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RlcTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RlcTag);
 
 RlcTag::RlcTag ()
   : m_senderTimestamp (Seconds (0))
diff -Naur ns-3.19/src/lte/model/lte-rlc-tm.cc ns-3.20/src/lte/model/lte-rlc-tm.cc
--- ns-3.19/src/lte/model/lte-rlc-tm.cc	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/lte/model/lte-rlc-tm.cc	2014-06-17 10:33:13.654997806 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcTm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcTm);
 
 LteRlcTm::LteRlcTm ()
   : m_maxTxBufferSize (0),
diff -Naur ns-3.19/src/lte/model/lte-rlc-um.cc ns-3.20/src/lte/model/lte-rlc-um.cc
--- ns-3.19/src/lte/model/lte-rlc-um.cc	2014-06-17 10:34:00.286637835 -0700
+++ ns-3.20/src/lte/model/lte-rlc-um.cc	2014-06-17 10:33:13.656997791 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteRlcUm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteRlcUm);
 
 LteRlcUm::LteRlcUm ()
   : m_maxTxBufferSize (10 * 1024),
diff -Naur ns-3.19/src/lte/model/lte-rrc-protocol-ideal.cc ns-3.20/src/lte/model/lte-rrc-protocol-ideal.cc
--- ns-3.19/src/lte/model/lte-rrc-protocol-ideal.cc	2014-06-17 10:34:00.292637789 -0700
+++ ns-3.20/src/lte/model/lte-rrc-protocol-ideal.cc	2014-06-17 10:33:13.662997744 -0700
@@ -37,10 +37,9 @@
 namespace ns3 {
 
 
-const Time RRC_IDEAL_MSG_DELAY = MilliSeconds (0); 
+static const Time RRC_IDEAL_MSG_DELAY = MilliSeconds (0);
 
-NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolIdeal)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolIdeal);
 
 LteUeRrcProtocolIdeal::LteUeRrcProtocolIdeal ()
   :  m_ueRrcSapProvider (0),
@@ -207,8 +206,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolIdeal)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolIdeal);
 
 LteEnbRrcProtocolIdeal::LteEnbRrcProtocolIdeal ()
   :  m_enbRrcSapProvider (0)
@@ -421,8 +419,8 @@
  * 
  */
 
-std::map<uint32_t, LteRrcSap::HandoverPreparationInfo> g_handoverPreparationInfoMsgMap;
-uint32_t g_handoverPreparationInfoMsgIdCounter = 0;
+static std::map<uint32_t, LteRrcSap::HandoverPreparationInfo> g_handoverPreparationInfoMsgMap;
+static uint32_t g_handoverPreparationInfoMsgIdCounter = 0;
 
 /*
  * This header encodes the map key discussed above. We keep this
@@ -527,8 +525,8 @@
 
 
 
-std::map<uint32_t, LteRrcSap::RrcConnectionReconfiguration> g_handoverCommandMsgMap;
-uint32_t g_handoverCommandMsgIdCounter = 0;
+static std::map<uint32_t, LteRrcSap::RrcConnectionReconfiguration> g_handoverCommandMsgMap;
+static uint32_t g_handoverCommandMsgIdCounter = 0;
 
 /*
  * This header encodes the map key discussed above. We keep this
diff -Naur ns-3.19/src/lte/model/lte-rrc-protocol-real.cc ns-3.20/src/lte/model/lte-rrc-protocol-real.cc
--- ns-3.19/src/lte/model/lte-rrc-protocol-real.cc	2014-06-17 10:34:00.294637773 -0700
+++ ns-3.20/src/lte/model/lte-rrc-protocol-real.cc	2014-06-17 10:33:13.663997737 -0700
@@ -40,8 +40,7 @@
 
 const Time RRC_REAL_MSG_DELAY = MilliSeconds (0); 
 
-NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolReal)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolReal);
 
 LteUeRrcProtocolReal::LteUeRrcProtocolReal ()
   :  m_ueRrcSapProvider (0),
@@ -351,8 +350,7 @@
     }
 }
 
-NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolReal)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolReal);
 
 LteEnbRrcProtocolReal::LteEnbRrcProtocolReal ()
   :  m_enbRrcSapProvider (0)
diff -Naur ns-3.19/src/lte/model/lte-spectrum-phy.cc ns-3.20/src/lte/model/lte-spectrum-phy.cc
--- ns-3.19/src/lte/model/lte-spectrum-phy.cc	2014-06-17 10:34:00.298637743 -0700
+++ ns-3.20/src/lte/model/lte-spectrum-phy.cc	2014-06-17 10:33:13.668997698 -0700
@@ -53,7 +53,7 @@
 // = 0.001 / 14 * 3 (ctrl fixed to 3 symbols) -1ns as margin to avoid overlapping simulator events
 static const Time DL_CTRL_DURATION = NanoSeconds (214286 -1);
 
-double EffectiveCodingRate[29] = {
+static const double EffectiveCodingRate[29] = {
   0.08,
   0.1,
   0.11,
@@ -110,8 +110,7 @@
   return ( (a.m_rnti < b.m_rnti) || ( (a.m_rnti == b.m_rnti) && (a.m_layer < b.m_layer) ) );
 }
 
-NS_OBJECT_ENSURE_REGISTERED (LteSpectrumPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteSpectrumPhy);
 
 LteSpectrumPhy::LteSpectrumPhy ()
   : m_state (IDLE),
diff -Naur ns-3.19/src/lte/model/lte-spectrum-value-helper.cc ns-3.20/src/lte/model/lte-spectrum-value-helper.cc
--- ns-3.19/src/lte/model/lte-spectrum-value-helper.cc	2014-06-17 10:34:00.301637719 -0700
+++ ns-3.20/src/lte/model/lte-spectrum-value-helper.cc	2014-06-17 10:33:13.670997683 -0700
@@ -54,7 +54,7 @@
  * The table was converted to C syntax doing a cut & paste from TS 36.101 and running the following filter:
  * awk '{if ((NR % 7) == 1) printf("{"); printf ("%s",$0); if ((NR % 7) == 0) printf("},\n"); else printf(", ");}' | sed 's/ – /, /g' 
  */
-struct EutraChannelNumbers
+static const struct EutraChannelNumbers
 {
   uint8_t band;
   double fDlLow;
diff -Naur ns-3.19/src/lte/model/lte-ue-mac.cc ns-3.20/src/lte/model/lte-ue-mac.cc
--- ns-3.19/src/lte/model/lte-ue-mac.cc	2014-06-17 10:34:00.304637696 -0700
+++ ns-3.20/src/lte/model/lte-ue-mac.cc	2014-06-17 10:33:13.674997652 -0700
@@ -41,8 +41,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LteUeMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteUeMac);
 
 
 ///////////////////////////////////////////////////////////
diff -Naur ns-3.19/src/lte/model/lte-ue-net-device.cc ns-3.20/src/lte/model/lte-ue-net-device.cc
--- ns-3.19/src/lte/model/lte-ue-net-device.cc	2014-06-17 10:34:00.306637681 -0700
+++ ns-3.20/src/lte/model/lte-ue-net-device.cc	2014-06-17 10:33:13.675997644 -0700
@@ -48,8 +48,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED ( LteUeNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED ( LteUeNetDevice);
 
 
 TypeId LteUeNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/lte/model/lte-ue-phy.cc ns-3.20/src/lte/model/lte-ue-phy.cc
--- ns-3.19/src/lte/model/lte-ue-phy.cc	2014-06-17 10:34:00.310637650 -0700
+++ ns-3.20/src/lte/model/lte-ue-phy.cc	2014-06-17 10:33:13.679997613 -0700
@@ -106,20 +106,19 @@
 // LteUePhy methods
 ////////////////////////////////////////
 
-const char* g_uePhyStateName[LteUePhy::NUM_STATES] =
+static const std::string g_uePhyStateName[LteUePhy::NUM_STATES] =
 {
   "CELL_SEARCH",
   "SYNCHRONIZED"
 };
 
-std::string ToString (LteUePhy::State s)
+static inline const std::string & ToString (LteUePhy::State s)
 {
-  return std::string (g_uePhyStateName[s]);
+  return g_uePhyStateName[s];
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (LteUePhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteUePhy);
 
 
 LteUePhy::LteUePhy ()
@@ -1110,7 +1109,7 @@
     {
       m_dlBandwidth = dlBandwidth;
 
-      int Type0AllocationRbg[4] = {
+      static const int Type0AllocationRbg[4] = {
         10,     // RGB size 1
         26,     // RGB size 2
         63,     // RGB size 3
diff -Naur ns-3.19/src/lte/model/lte-ue-rrc.cc ns-3.20/src/lte/model/lte-ue-rrc.cc
--- ns-3.19/src/lte/model/lte-ue-rrc.cc	2014-06-17 10:34:00.314637619 -0700
+++ ns-3.20/src/lte/model/lte-ue-rrc.cc	2014-06-17 10:33:13.683997582 -0700
@@ -88,7 +88,7 @@
 
 
 
-const char* g_ueRrcStateName[LteUeRrc::NUM_STATES] = 
+static const std::string g_ueRrcStateName[LteUeRrc::NUM_STATES] =
 {
   "IDLE_START",
   "IDLE_CELL_SEARCH",
@@ -105,9 +105,9 @@
   "CONNECTED_REESTABLISHING"
 };
 
-std::string ToString (LteUeRrc::State s)
+static const std::string & ToString (LteUeRrc::State s)
 {
-  return std::string (g_ueRrcStateName[s]);
+  return g_ueRrcStateName[s];
 }
 
 
@@ -115,8 +115,7 @@
 // ue RRC methods
 /////////////////////////////
 
-NS_OBJECT_ENSURE_REGISTERED (LteUeRrc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteUeRrc);
 
 
 LteUeRrc::LteUeRrc ()
diff -Naur ns-3.19/src/lte/model/no-op-handover-algorithm.cc ns-3.20/src/lte/model/no-op-handover-algorithm.cc
--- ns-3.19/src/lte/model/no-op-handover-algorithm.cc	2014-06-17 10:34:00.316637604 -0700
+++ ns-3.20/src/lte/model/no-op-handover-algorithm.cc	2014-06-17 10:33:13.686997559 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (NoOpHandoverAlgorithm)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NoOpHandoverAlgorithm);
 
 
 NoOpHandoverAlgorithm::NoOpHandoverAlgorithm ()
diff -Naur ns-3.19/src/lte/model/pf-ff-mac-scheduler.cc ns-3.20/src/lte/model/pf-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/pf-ff-mac-scheduler.cc	2014-06-17 10:34:00.320637573 -0700
+++ ns-3.20/src/lte/model/pf-ff-mac-scheduler.cc	2014-06-17 10:33:13.690997528 -0700
@@ -34,7 +34,7 @@
 
 namespace ns3 {
 
-int PfType0AllocationRbg[4] = {
+static const int PfType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -42,8 +42,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (PfFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PfFfMacScheduler);
 
 
 
@@ -1550,6 +1549,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1617,7 +1617,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/pss-ff-mac-scheduler.cc ns-3.20/src/lte/model/pss-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/pss-ff-mac-scheduler.cc	2014-06-17 10:34:00.322637557 -0700
+++ ns-3.20/src/lte/model/pss-ff-mac-scheduler.cc	2014-06-17 10:33:13.692997513 -0700
@@ -38,7 +38,7 @@
 
 namespace ns3 {
 
-int PssType0AllocationRbg[4] = {
+static const int PssType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -46,8 +46,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (PssFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PssFfMacScheduler);
 
 
 
@@ -1855,6 +1854,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1922,7 +1922,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/rem-spectrum-phy.cc ns-3.20/src/lte/model/rem-spectrum-phy.cc
--- ns-3.19/src/lte/model/rem-spectrum-phy.cc	2014-06-17 10:34:00.323637549 -0700
+++ ns-3.20/src/lte/model/rem-spectrum-phy.cc	2014-06-17 10:33:13.693997505 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RemSpectrumPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RemSpectrumPhy);
 
 RemSpectrumPhy::RemSpectrumPhy ()
   : m_mobility (0),    
diff -Naur ns-3.19/src/lte/model/rr-ff-mac-scheduler.cc ns-3.20/src/lte/model/rr-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/rr-ff-mac-scheduler.cc	2014-06-17 10:34:00.327637518 -0700
+++ ns-3.20/src/lte/model/rr-ff-mac-scheduler.cc	2014-06-17 10:33:13.697997474 -0700
@@ -36,7 +36,7 @@
 
 namespace ns3 {
 
-int Type0AllocationRbg[4] = {
+static const int Type0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -46,8 +46,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (RrFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RrFfMacScheduler);
 
 
 class RrSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider
@@ -1389,6 +1388,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
       return;  // no flows to be scheduled
@@ -1454,7 +1454,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/tdbet-ff-mac-scheduler.cc ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/tdbet-ff-mac-scheduler.cc	2014-06-17 10:34:00.329637503 -0700
+++ ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.cc	2014-06-17 10:33:13.699997459 -0700
@@ -35,7 +35,7 @@
 
 namespace ns3 {
 
-int TdBetType0AllocationRbg[4] = {
+static const int TdBetType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -43,8 +43,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (TdBetFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TdBetFfMacScheduler);
 
 
 
@@ -1448,6 +1447,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1515,7 +1515,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/tdmt-ff-mac-scheduler.cc ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/tdmt-ff-mac-scheduler.cc	2014-06-17 10:34:00.331637488 -0700
+++ ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.cc	2014-06-17 10:33:13.700997451 -0700
@@ -35,7 +35,7 @@
 
 namespace ns3 {
 
-int TdMtType0AllocationRbg[4] = {
+static const int TdMtType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -43,8 +43,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (TdMtFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TdMtFfMacScheduler);
 
 
 
@@ -1445,6 +1444,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1511,7 +1511,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/tdtbfq-ff-mac-scheduler.cc ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/tdtbfq-ff-mac-scheduler.cc	2014-06-17 10:34:00.333637472 -0700
+++ ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.cc	2014-06-17 10:33:13.702997436 -0700
@@ -36,7 +36,7 @@
 
 namespace ns3 {
 
-int TdTbfqType0AllocationRbg[4] = {
+static const int TdTbfqType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -44,8 +44,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (TdTbfqFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TdTbfqFfMacScheduler);
 
 
 
@@ -1542,6 +1541,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1609,7 +1609,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/model/trace-fading-loss-model.cc ns-3.20/src/lte/model/trace-fading-loss-model.cc
--- ns-3.19/src/lte/model/trace-fading-loss-model.cc	2014-06-17 10:34:00.334637464 -0700
+++ ns-3.20/src/lte/model/trace-fading-loss-model.cc	2014-06-17 10:33:13.703997428 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TraceFadingLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TraceFadingLossModel);
   
 
 
diff -Naur ns-3.19/src/lte/model/tta-ff-mac-scheduler.cc ns-3.20/src/lte/model/tta-ff-mac-scheduler.cc
--- ns-3.19/src/lte/model/tta-ff-mac-scheduler.cc	2014-06-17 10:34:00.335637457 -0700
+++ ns-3.20/src/lte/model/tta-ff-mac-scheduler.cc	2014-06-17 10:33:13.705997412 -0700
@@ -35,7 +35,7 @@
 
 namespace ns3 {
 
-int TtaType0AllocationRbg[4] = {
+static const int TtaType0AllocationRbg[4] = {
   10,       // RGB size 1
   26,       // RGB size 2
   63,       // RGB size 3
@@ -43,8 +43,7 @@
 };  // see table 7.1.6.1-1 of 36.213
 
 
-NS_OBJECT_ENSURE_REGISTERED (TtaFfMacScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TtaFfMacScheduler);
 
 
 
@@ -1524,6 +1523,7 @@
     {
       if (ret.m_dciList.size () > 0)
         {
+          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
         
@@ -1590,7 +1590,7 @@
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
       NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
-      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
+      while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
           bool free = true;
diff -Naur ns-3.19/src/lte/test/epc-test-gtpu.cc ns-3.20/src/lte/test/epc-test-gtpu.cc
--- ns-3.19/src/lte/test/epc-test-gtpu.cc	2014-06-17 10:34:00.336637449 -0700
+++ ns-3.20/src/lte/test/epc-test-gtpu.cc	2014-06-17 10:33:13.706997405 -0700
@@ -28,7 +28,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("EpcGtpuTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -85,5 +85,3 @@
   NS_TEST_ASSERT_MSG_EQ (h1, h2, "Wrong value!");
 }
 
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/epc-test-gtpu.h ns-3.20/src/lte/test/epc-test-gtpu.h
--- ns-3.19/src/lte/test/epc-test-gtpu.h	2014-06-17 10:34:00.337637441 -0700
+++ ns-3.20/src/lte/test/epc-test-gtpu.h	2014-06-17 10:33:13.706997405 -0700
@@ -26,7 +26,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 
@@ -50,7 +50,4 @@
 };
 
 
-} // namespace ns3
-
-
 #endif /* EPC_TEST_GTPU_H */
diff -Naur ns-3.19/src/lte/test/epc-test-s1u-downlink.cc ns-3.20/src/lte/test/epc-test-s1u-downlink.cc
--- ns-3.19/src/lte/test/epc-test-s1u-downlink.cc	2014-06-17 10:34:00.338637433 -0700
+++ ns-3.20/src/lte/test/epc-test-s1u-downlink.cc	2014-06-17 10:33:13.707997397 -0700
@@ -41,11 +41,10 @@
 #include "ns3/eps-bearer.h"
 #include "lte-test-entities.h"
 
-namespace ns3 {
+using namespace ns3;
 
 
-NS_LOG_COMPONENT_DEFINE ("EpcTestS1uDownlink")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcTestS1uDownlink");
 
 
 
@@ -311,8 +310,3 @@
   v8.push_back (e8);
   AddTestCase (new EpcS1uDlTestCase ("1 eNB, 100 pkts 15000 bytes each", v8), TestCase::QUICK);
 }
-
-
-
-}  // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/epc-test-s1u-uplink.cc ns-3.20/src/lte/test/epc-test-s1u-uplink.cc
--- ns-3.19/src/lte/test/epc-test-s1u-uplink.cc	2014-06-17 10:34:00.339637426 -0700
+++ ns-3.20/src/lte/test/epc-test-s1u-uplink.cc	2014-06-17 10:33:13.708997389 -0700
@@ -48,12 +48,11 @@
 #include "ns3/config.h"
 #include "lte-test-entities.h"
 
-namespace ns3 {
+using namespace ns3;
 
 
 
-NS_LOG_COMPONENT_DEFINE ("EpcTestS1uUplink")
-  ;
+NS_LOG_COMPONENT_DEFINE ("EpcTestS1uUplink");
 
 /*
  * A Udp client. Sends UDP packet carrying sequence number and time
@@ -538,8 +537,3 @@
   AddTestCase (new EpcS1uUlTestCase ("1 eNB, 100 pkts 15000 bytes each", v8), TestCase::QUICK);
   
 }
-
-
-
-}  // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-simple-helper.cc ns-3.20/src/lte/test/lte-simple-helper.cc
--- ns-3.19/src/lte/test/lte-simple-helper.cc	2014-06-17 10:34:00.339637426 -0700
+++ ns-3.20/src/lte/test/lte-simple-helper.cc	2014-06-17 10:33:13.709997382 -0700
@@ -35,8 +35,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (LteSimpleHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteSimpleHelper);
 
 LteSimpleHelper::LteSimpleHelper (void)
 {
diff -Naur ns-3.19/src/lte/test/lte-simple-net-device.cc ns-3.20/src/lte/test/lte-simple-net-device.cc
--- ns-3.19/src/lte/test/lte-simple-net-device.cc	2014-06-17 10:34:00.340637418 -0700
+++ ns-3.20/src/lte/test/lte-simple-net-device.cc	2014-06-17 10:33:13.710997374 -0700
@@ -28,8 +28,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (LteSimpleNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteSimpleNetDevice);
 
 
 TypeId LteSimpleNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/lte/test/lte-test-cell-selection.cc ns-3.20/src/lte/test/lte-test-cell-selection.cc
--- ns-3.19/src/lte/test/lte-test-cell-selection.cc	2014-06-17 10:34:00.341637411 -0700
+++ ns-3.20/src/lte/test/lte-test-cell-selection.cc	2014-06-17 10:33:13.711997366 -0700
@@ -45,7 +45,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteCellSelectionTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /*
@@ -425,7 +425,3 @@
 {
   NS_LOG_FUNCTION (this << imsi << cellId << rnti);
 }
-
-
-
-} // end of namespace ns3
diff -Naur ns-3.19/src/lte/test/lte-test-cell-selection.h ns-3.20/src/lte/test/lte-test-cell-selection.h
--- ns-3.19/src/lte/test/lte-test-cell-selection.h	2014-06-17 10:34:00.342637403 -0700
+++ ns-3.20/src/lte/test/lte-test-cell-selection.h	2014-06-17 10:33:13.711997366 -0700
@@ -29,8 +29,15 @@
 #include <ns3/lte-ue-rrc.h>
 #include <vector>
 
+
 namespace ns3 {
 
+class LteUeNetDevice;
+
+}
+
+using namespace ns3;
+
 
 /**
  * \brief Test suite for executing the cell selection test cases in without-EPC
@@ -46,7 +53,6 @@
 
 
 
-class LteUeNetDevice;
 
 /**
  * \brief Testing the initial cell selection procedure by UE at IDLE state in
@@ -122,9 +128,4 @@
 
 }; // end of class LteCellSelectionTestCase
 
-
-
-} // end of namespace ns3
-
-
 #endif /* LTE_TEST_CELL_SELECTION_H */
diff -Naur ns-3.19/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lte/test/lte-test-cqa-ff-mac-scheduler.cc	2014-06-17 10:33:13.712997359 -0700
@@ -0,0 +1,691 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Biljana Bojovic<bbojovic@cttc.es>
+ *          Dizhi Zhou <dizhi.zhou@gmail.com>
+ * 			Marco Miozzo <marco.miozzo@cttc.es>,
+ *          Nicola Baldo <nbaldo@cttc.es>
+ *
+ */
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include <ns3/object.h>
+#include <ns3/spectrum-interference.h>
+#include <ns3/spectrum-error-model.h>
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/simulator.h>
+#include <ns3/packet.h>
+#include <ns3/ptr.h>
+#include "ns3/radio-bearer-stats-calculator.h"
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/eps-bearer.h>
+#include <ns3/node-container.h>
+#include <ns3/mobility-helper.h>
+#include <ns3/net-device-container.h>
+#include <ns3/lte-ue-net-device.h>
+#include <ns3/lte-enb-net-device.h>
+#include <ns3/lte-ue-rrc.h>
+#include <ns3/lte-helper.h>
+#include "ns3/string.h"
+#include "ns3/double.h"
+#include <ns3/lte-enb-phy.h>
+#include <ns3/lte-ue-phy.h>
+#include <ns3/boolean.h>
+#include <ns3/enum.h>
+
+#include "ns3/point-to-point-epc-helper.h"
+#include "ns3/network-module.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/point-to-point-helper.h"
+
+#include "lte-test-cqa-ff-mac-scheduler.h"
+
+NS_LOG_COMPONENT_DEFINE ("LenaTestCqaFfMacScheduler");
+
+using namespace ns3;
+
+LenaTestCqaFfMacSchedulerSuite::LenaTestCqaFfMacSchedulerSuite ()
+  : TestSuite ("lte-cqa-ff-mac-scheduler", SYSTEM)
+{
+  NS_LOG_INFO ("creating LenaTestCqaFfMacSchedulerSuite");
+
+  bool errorModel = false;
+
+  // General config
+  // Traffic: UDP traffic with fixed rate
+  // Token generation rate = traffic rate
+  // RLC header length = 2 bytes, PDCP header = 2 bytes
+  // Simulation time = 1.0 sec
+  // Throughput in this file is calculated in RLC layer
+
+  //Test Case 1: homogeneous flow test in CQA (same distance)
+  // DOWNLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
+  // Traffic info
+  //   UDP traffic: payload size = 200 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
+  // Totol bandwidth: 24 PRB at Itbs 26 -> 2196 -> 2196000 byte/sec
+  // 1 user -> 232000 * 1 = 232000 < 2196000 -> throughput = 232000 byte/sec
+  // 3 user -> 232000 * 3 = 696000 < 2196000 -> througphut = 232000 byte/sec
+  // 6 user -> 232000 * 6 = 139200 < 2196000 -> throughput = 232000 byte/sec
+  // 12 user -> 232000 * 12 = 2784000 > 2196000 -> throughput = 2196000 / 12 = 183000 byte/sec
+  // UPLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
+  // 1 user -> 25 PRB at Itbs 26 -> 2292 -> 2292000 > 232000 -> throughput = 232000 bytes/sec
+  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
+  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
+  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (1,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (3,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (6,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+
+  //AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (12,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
+
+  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
+  // Traffic info
+  //   UDP traffic: payload size = 200 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
+  // Totol bandwidth: 24 PRB at Itbs 20 -> 1383 -> 1383000 byte/sec
+  // 1 user -> 903000 * 1 = 232000 < 1383000 -> throughput = 232000 byte/sec
+  // 3 user -> 232000 * 3 = 696000 < 1383000 -> througphut = 232000 byte/sec
+  // 6 user -> 232000 * 6 = 139200 > 1383000 -> throughput = 1383000 / 6 = 230500 byte/sec
+  // 12 user -> 232000 * 12 = 2784000 > 1383000 -> throughput =  1383000 / 12 = 115250 byte/sec
+  // UPLINK - DISTANCE 4800 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
+  // 1 user -> 25 PRB at Itbs 13 -> 807 -> 807000 > 232000 -> throughput = 232000 bytes/sec
+  // 3 users -> 8 PRB at Itbs 13 -> 253 -> 253000 > 232000 -> throughput = 232000 bytes/sec
+  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
+  // after the patch enforcing min 3 PRBs per UE:
+  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (1,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (3,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (6,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
+  //AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (12,4800,115250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
+
+  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
+  // Traffic info
+  //   UDP traffic: payload size = 200 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
+  // Totol bandwidth: 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec
+  // 1 user -> 903000 * 1 = 232000 < 1191000 -> throughput = 232000 byte/sec
+  // 3 user -> 232000 * 3 = 696000 < 1191000 -> througphut = 232000 byte/sec
+  // 6 user -> 232000 * 6 = 1392000 > 1191000 -> throughput = 1191000 / 6 = 198500 byte/sec
+  // 12 user -> 232000 * 12 = 2784000 > 1191000 -> throughput =  1191000 / 12 = 99250 byte/sec
+
+  // UPLINK - DISTANCE 6000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213)
+  // 1 user -> 25 PRB at Itbs 11 -> 621 -> 621000 > 232000 -> throughput = 232000 bytes/sec
+  // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 < 232000 -> throughput = 201000  bytes/sec
+  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
+  // after the patch enforcing min 3 PRBs per UE:
+  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (1,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (3,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (6,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
+  //AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (12,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
+
+  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
+  // Traffic info
+  //   UDP traffic: payload size = 200 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
+  // Totol bandwidth: 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec
+  // 1 user -> 903000 * 1 = 232000 < 775000 -> throughput = 232000 byte/sec
+  // 3 user -> 232000 * 3 = 696000 > 775000 -> througphut = 232000 byte/sec
+  // 6 user -> 232000 * 6 = 139200 > 775000 -> throughput = 775000 / 6 = 129166 byte/sec
+  // 12 user -> 232000 * 12 = 2784000 > 775000 -> throughput =  775000 / 12 = 64583 byte/sec
+  // UPLINK - DISTANCE 10000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
+  // 1 user -> 24 PRB at Itbs 8 -> 437 -> 437000 > 232000 -> throughput = 232000 bytes/sec
+  // 3 users -> 8 PRB at Itbs 8 -> 137 -> 137000 < 232000 -> throughput = 137000 bytes/sec
+  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
+  // after the patch enforcing min 3 PRBs per UE:
+  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (1,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (3,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
+  //AddTestCase (new LenaCqaFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
+
+  // Test Case 2: homogeneous flow test in CQA (different distance)
+  // Traffic1 info
+  //   UDP traffic: payload size = 100 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
+  // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
+  // 132000 * 4 = 528000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec
+  std::vector<uint16_t> dist1;
+  dist1.push_back (0);       // User 0 distance --> MCS 28
+  dist1.push_back (4800);    // User 1 distance --> MCS 22
+  dist1.push_back (6000);    // User 2 distance --> MCS 20
+  dist1.push_back (10000);   // User 3 distance --> MCS 14
+  std::vector<uint16_t> packetSize1;
+  packetSize1.push_back (100);
+  packetSize1.push_back (100);
+  packetSize1.push_back (100);
+  packetSize1.push_back (100);
+  std::vector<uint32_t> estThrCqaDl1;
+  estThrCqaDl1.push_back (132000); // User 0 estimated TTI throughput from CQA
+  estThrCqaDl1.push_back (132000); // User 1 estimated TTI throughput from CQA
+  estThrCqaDl1.push_back (132000); // User 2 estimated TTI throughput from CQA
+  estThrCqaDl1.push_back (132000); // User 3 estimated TTI throughput from CQA
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase2 (dist1,estThrCqaDl1,packetSize1,1,errorModel), TestCase::QUICK);
+
+  // Traffic2 info
+  //   UDP traffic: payload size = 200 bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
+  // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s
+  // 232000 * 4 = 928000 < 1209046 -> estimated throughput in downlink = 928000 / 4 = 230000 byte/sec
+  std::vector<uint16_t> dist2;
+  dist2.push_back (0);       // User 0 distance --> MCS 28
+  dist2.push_back (4800);    // User 1 distance --> MCS 22
+  dist2.push_back (6000);    // User 2 distance --> MCS 20
+  dist2.push_back (10000);   // User 3 distance --> MCS 14
+  std::vector<uint16_t> packetSize2;
+  packetSize2.push_back (200);
+  packetSize2.push_back (200);
+  packetSize2.push_back (200);
+  packetSize2.push_back (200);
+  std::vector<uint32_t> estThrCqaDl2;
+  estThrCqaDl2.push_back (230000); // User 0 estimated TTI throughput from CQA
+  estThrCqaDl2.push_back (230000); // User 1 estimated TTI throughput from CQA
+  estThrCqaDl2.push_back (230000); // User 2 estimated TTI throughput from CQA
+  estThrCqaDl2.push_back (230000); // User 3 estimated TTI throughput from CQA
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase2 (dist2,estThrCqaDl2,packetSize2,1,errorModel), TestCase::QUICK);
+
+  // Test Case 3: heterogeneous flow test in CQA
+  //   UDP traffic: payload size = [100,200,300] bytes, interval = 1 ms
+  //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate
+  // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s
+  // 132000 + 232000 + 332000 = 696000 < 1486569 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec
+  std::vector<uint16_t> dist3;
+  dist3.push_back (0);    // User 0 distance --> MCS 28
+  dist3.push_back (4800);    // User 1 distance --> MCS 22
+  dist3.push_back (6000);    // User 2 distance --> MCS 20
+  std::vector<uint16_t> packetSize3;
+  packetSize3.push_back (100);
+  packetSize3.push_back (200);
+  packetSize3.push_back (300);
+  std::vector<uint32_t> estThrCqaDl3;
+  estThrCqaDl3.push_back (132000); // User 0 estimated TTI throughput from CQA
+  estThrCqaDl3.push_back (232000); // User 1 estimated TTI throughput from CQA
+  estThrCqaDl3.push_back (332000); // User 2 estimated TTI throughput from CQA
+  AddTestCase (new LenaCqaFfMacSchedulerTestCase2 (dist3,estThrCqaDl3,packetSize3,1,errorModel), TestCase::QUICK);
+
+}
+
+static LenaTestCqaFfMacSchedulerSuite lenaTestCqaFfMacSchedulerSuite;
+
+// --------------- T E S T - C A S E   # 1 ------------------------------
+
+
+std::string 
+LenaCqaFfMacSchedulerTestCase1::BuildNameString (uint16_t nUser, uint16_t dist)
+{
+  std::ostringstream oss;
+  oss << nUser << " UEs, distance " << dist << " m";
+  return oss.str ();
+}
+
+
+LenaCqaFfMacSchedulerTestCase1::LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
+  : TestCase (BuildNameString (nUser, dist)),
+    m_nUser (nUser),
+    m_dist (dist),
+    m_packetSize (packetSize),
+    m_interval (interval),
+    m_thrRefDl (thrRefDl),
+    m_thrRefUl (thrRefUl),
+    m_errorModelEnabled (errorModelEnabled)
+{
+}
+
+LenaCqaFfMacSchedulerTestCase1::~LenaCqaFfMacSchedulerTestCase1 ()
+{
+}
+
+void
+LenaCqaFfMacSchedulerTestCase1::DoRun (void)
+{
+  NS_LOG_FUNCTION (this << GetName ());
+
+  if (!m_errorModelEnabled)
+    {
+      Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+      Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+    }
+
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<PointToPointEpcHelper>  epcHelper = CreateObject<PointToPointEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+
+  //LogComponentEnable ("CqaFfMacScheduler", LOG_DEBUG);
+
+  Ptr<Node> pgw = epcHelper->GetPgwNode ();
+
+  // Create a single RemoteHost
+  NodeContainer remoteHostContainer;
+  remoteHostContainer.Create (1);
+  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
+  InternetStackHelper internet;
+  internet.Install (remoteHostContainer);
+
+  // Create the Internet
+  PointToPointHelper p2ph;
+  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
+  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
+  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.001)));
+  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
+  Ipv4AddressHelper ipv4h;
+  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
+  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
+  // interface 0 is localhost, 1 is the p2p device
+  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
+
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
+  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
+
+  //Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010));
+  //Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005));
+  //Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  //Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  //Config::SetDefault ("ns3::LteEnbRrc::EpsBearerToRlcMapping", EnumValue (LteHelper::RLC_UM_ALWAYS));
+
+//   LogComponentDisableAll (LOG_LEVEL_ALL);
+  //LogComponentEnable ("LenaTestCqaFfMacCheduler", LOG_LEVEL_ALL);
+   
+  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (m_nUser);
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (enbNodes);
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (ueNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::CqaFfMacScheduler");
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+
+  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
+  enbPhy->SetAttribute ("TxPower", DoubleValue (30.0));
+  enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
+
+  // Set UEs' position and power
+  for (int i = 0; i < m_nUser; i++)
+    {
+      Ptr<ConstantPositionMobilityModel> mm = ueNodes.Get (i)->GetObject<ConstantPositionMobilityModel> ();
+      mm->SetPosition (Vector (m_dist, 0.0, 0.0));
+      Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (i)->GetObject<LteUeNetDevice> ();
+      Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
+      uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
+      uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
+    }
+
+  // Install the IP stack on the UEs
+  internet.Install (ueNodes);
+  Ipv4InterfaceContainer ueIpIface;
+  ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
+
+  // Assign IP address to UEs
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ueNode = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+    }
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate an EPS bearer on all UEs
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<NetDevice> ueDevice = ueDevs.Get (u);
+      GbrQosInformation qos;
+      qos.gbrDl = (m_packetSize + 32) * (1000 / m_interval) * 8;  // bit/s, considering IP, UDP, RLC, PDCP header size
+      qos.gbrUl = (m_packetSize + 32) * (1000 / m_interval) * 8;
+      qos.mbrDl = 0;
+      qos.mbrUl = 0;
+      
+      enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+      EpsBearer bearer (q, qos);
+      lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default ());  
+    }
+
+  // Install downlind and uplink applications
+  uint16_t dlPort = 1234;
+  uint16_t ulPort = 2000;
+  PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
+  PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
+  ApplicationContainer clientApps;
+  ApplicationContainer serverApps;
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      ++ulPort;
+      serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive packets from remotehost
+      serverApps.Add (ulPacketSinkHelper.Install (remoteHost));  // receive packets from UEs
+
+      UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink packets generator
+      dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
+      dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
+      dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize));
+
+      UdpClientHelper ulClient (remoteHostAddr, ulPort);           // downlink packets generator
+      ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
+      ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
+      ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize));
+
+      clientApps.Add (dlClient.Install (remoteHost));
+      clientApps.Add (ulClient.Install (ueNodes.Get (u)));
+    }
+
+  serverApps.Start (Seconds (0.030));
+  clientApps.Start (Seconds (0.030));
+
+  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
+  double statsDuration = 0.5;
+  double tolerance = 0.1;
+  Simulator::Stop (Seconds (statsStartTime + statsDuration - 0.0001));
+
+  lteHelper->EnableRlcTraces ();
+  lteHelper->EnableMacTraces ();
+  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats ();
+  rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
+  rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
+
+  Simulator::Run ();
+
+  /**
+   * Check that the downlink assignation is done in a "token bank fair queue" manner
+   */
+
+  NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s) at distance " << m_dist);
+  std::vector <uint64_t> dlDataRxed;
+  for (int i = 0; i < m_nUser; i++)
+    {
+      // get the imsi
+      uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
+      // get the lcId
+      uint8_t lcId = 4;
+      uint64_t data = rlcStats->GetDlRxData (imsi, lcId);
+      dlDataRxed.push_back (data);
+      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << "  thr " << (double)dlDataRxed.at (i) / statsDuration << " ref " << m_thrRefDl);
+    }
+
+  for (int i = 0; i < m_nUser; i++)
+    {
+      NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / statsDuration, m_thrRefDl, m_thrRefDl * tolerance, " Unfair Throughput!");
+    }
+
+  /**
+  * Check that the uplink assignation is done in a "round robin" manner
+  */
+
+  NS_LOG_INFO ("UL - Test with " << m_nUser << " user(s) at distance " << m_dist);
+  std::vector <uint64_t> ulDataRxed;
+  for (int i = 0; i < m_nUser; i++)
+    {
+      // get the imsi
+      uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
+      // get the lcId
+      uint8_t lcId = 4;
+      ulDataRxed.push_back (rlcStats->GetUlRxData (imsi, lcId));
+      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)ulDataRxed.at (i) << "  thr " << (double)ulDataRxed.at (i) / statsDuration << " ref " << m_thrRefUl);
+    }
+
+  for (int i = 0; i < m_nUser; i++)
+    {
+      NS_TEST_ASSERT_MSG_EQ_TOL ((double)ulDataRxed.at (i) / statsDuration, m_thrRefUl, m_thrRefUl * tolerance, " Unfair Throughput!");
+    }
+  Simulator::Destroy ();
+
+}
+
+
+
+// --------------- T E S T - C A S E   # 2 ------------------------------
+
+
+std::string 
+LenaCqaFfMacSchedulerTestCase2::BuildNameString (uint16_t nUser, std::vector<uint16_t> dist)
+{
+  std::ostringstream oss;
+  oss << "distances (m) = [ " ;
+  for (std::vector<uint16_t>::iterator it = dist.begin (); it != dist.end (); ++it)
+    {
+      oss << *it << " ";
+    }
+  oss << "]";
+  return oss.str ();
+}
+
+
+LenaCqaFfMacSchedulerTestCase2::LenaCqaFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval,bool errorModelEnabled)
+  : TestCase (BuildNameString (dist.size (), dist)),
+    m_nUser (dist.size ()),
+    m_dist (dist),
+    m_packetSize (packetSize),
+    m_interval (interval),
+    m_estThrCqaDl (estThrCqaDl),
+    m_errorModelEnabled (errorModelEnabled)
+{
+}
+
+LenaCqaFfMacSchedulerTestCase2::~LenaCqaFfMacSchedulerTestCase2 ()
+{
+}
+
+void
+LenaCqaFfMacSchedulerTestCase2::DoRun (void)
+{
+
+  if (!m_errorModelEnabled)
+    {
+      Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+      Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+    }
+
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<PointToPointEpcHelper>  epcHelper = CreateObject<PointToPointEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+
+  Ptr<Node> pgw = epcHelper->GetPgwNode ();
+
+  // Create a single RemoteHost
+  NodeContainer remoteHostContainer;
+  remoteHostContainer.Create (1);
+  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
+  InternetStackHelper internet;
+  internet.Install (remoteHostContainer);
+
+  // Create the Internet
+  PointToPointHelper p2ph;
+  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
+  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
+  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.001)));
+  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
+  Ipv4AddressHelper ipv4h;
+  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
+  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
+  // interface 0 is localhost, 1 is the p2p device
+  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
+
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
+  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
+
+
+//   LogComponentDisableAll (LOG_LEVEL_ALL);
+  //LogComponentEnable ("LenaTestCqaFfMacCheduler", LOG_LEVEL_ALL);
+   
+  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (m_nUser);
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (enbNodes);
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (ueNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::CqaFfMacScheduler");
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  Ptr<LteEnbNetDevice> lteEnbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  Ptr<LteEnbPhy> enbPhy = lteEnbDev->GetPhy ();
+  enbPhy->SetAttribute ("TxPower", DoubleValue (30.0));
+  enbPhy->SetAttribute ("NoiseFigure", DoubleValue (5.0));
+
+  // Set UEs' position and power
+  for (int i = 0; i < m_nUser; i++)
+    {
+      Ptr<ConstantPositionMobilityModel> mm = ueNodes.Get (i)->GetObject<ConstantPositionMobilityModel> ();
+      mm->SetPosition (Vector (m_dist.at (i), 0.0, 0.0));
+      Ptr<LteUeNetDevice> lteUeDev = ueDevs.Get (i)->GetObject<LteUeNetDevice> ();
+      Ptr<LteUePhy> uePhy = lteUeDev->GetPhy ();
+      uePhy->SetAttribute ("TxPower", DoubleValue (23.0));
+      uePhy->SetAttribute ("NoiseFigure", DoubleValue (9.0));
+    }
+
+  // Install the IP stack on the UEs
+  internet.Install (ueNodes);
+  Ipv4InterfaceContainer ueIpIface;
+  ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
+
+  // Assign IP address to UEs
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ueNode = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+    }
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate an EPS bearer on all UEs
+
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<NetDevice> ueDevice = ueDevs.Get (u);
+      GbrQosInformation qos;
+      qos.gbrDl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8;  // bit/s, considering IP, UDP, RLC, PDCP header size
+      qos.gbrUl = (m_packetSize.at (u) + 32) * (1000 / m_interval) * 8;
+      qos.mbrDl = qos.gbrDl;
+      qos.mbrUl = qos.gbrUl;
+  
+      enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+      EpsBearer bearer (q, qos);
+      lteHelper->ActivateDedicatedEpsBearer (ueDevice, bearer, EpcTft::Default ());  
+    }
+
+
+  // Install downlind and uplink applications
+  uint16_t dlPort = 1234;
+  uint16_t ulPort = 2000;
+  PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
+  PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
+  ApplicationContainer clientApps;
+  ApplicationContainer serverApps;
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      ++ulPort;
+      serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get (u))); // receive packets from remotehost
+      serverApps.Add (ulPacketSinkHelper.Install (remoteHost));  // receive packets from UEs
+
+      UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort); // uplink packets generator
+      dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
+      dlClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
+      dlClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
+
+      UdpClientHelper ulClient (remoteHostAddr, ulPort);           // downlink packets generator
+      ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds (m_interval)));
+      ulClient.SetAttribute ("MaxPackets", UintegerValue (1000000));
+      ulClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize.at (u)));
+
+      clientApps.Add (dlClient.Install (remoteHost));
+      clientApps.Add (ulClient.Install (ueNodes.Get (u)));
+   }
+
+  serverApps.Start (Seconds (0.030));
+  clientApps.Start (Seconds (0.030));
+
+  double statsStartTime = 0.04; // need to allow for RRC connection establishment + SRS
+  double statsDuration = 0.5;
+  double tolerance = 0.1;
+  Simulator::Stop (Seconds (statsStartTime + statsDuration - 0.0001));
+
+  lteHelper->EnableRlcTraces ();
+  Ptr<RadioBearerStatsCalculator> rlcStats = lteHelper->GetRlcStats ();
+  rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime)));
+  rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration)));
+
+
+  Simulator::Run ();
+
+  /**
+   * Check that the downlink assignation is done in a "token bank fair queue" manner
+   */
+
+  NS_LOG_INFO ("DL - Test with " << m_nUser << " user(s)");
+  std::vector <uint64_t> dlDataRxed;
+  for (int i = 0; i < m_nUser; i++)
+    {
+      // get the imsi
+      uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
+      // get the lcId
+      uint8_t lcId = 4;
+      dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
+      NS_LOG_INFO ("\tUser " << i << " dist " << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << "  thr " << (double)dlDataRxed.at (i) / statsDuration << " ref " << m_estThrCqaDl.at (i));
+    }
+
+  for (int i = 0; i < m_nUser; i++)
+    {
+      NS_TEST_ASSERT_MSG_EQ_TOL ((double)dlDataRxed.at (i) / statsDuration, m_estThrCqaDl.at (i), m_estThrCqaDl.at (i) * tolerance, " Unfair Throughput!");
+    }
+
+  Simulator::Destroy ();
+
+}
diff -Naur ns-3.19/src/lte/test/lte-test-cqa-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-cqa-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-cqa-ff-mac-scheduler.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/lte/test/lte-test-cqa-ff-mac-scheduler.h	2014-06-17 10:33:13.712997359 -0700
@@ -0,0 +1,83 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author:  Biljana Bojovic<bbojovic@cttc.es>
+ *          Dizhi Zhou <dizhi.zhou@gmail.com>
+ * 			Marco Miozzo <marco.miozzo@cttc.es>,
+ *          Nicola Baldo <nbaldo@cttc.es>
+ *
+ */
+
+#ifndef LENA_TEST_CQA_FF_MAC_SCHEDULER_H
+#define LENA_TEST_CQA_FF_MAC_SCHEDULER_H
+
+#include "ns3/simulator.h"
+#include "ns3/test.h"
+
+
+using namespace ns3;
+
+/**
+* This is a system test program. The test is based on a scenario with single eNB and several UEs.
+* The goal of the test is validating if the obtained throughput performance is consistent with the definition of CQA scheduler.
+*
+*/
+
+class LenaCqaFfMacSchedulerTestCase1 : public TestCase
+{
+public:
+  LenaCqaFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
+  virtual ~LenaCqaFfMacSchedulerTestCase1 ();
+
+private:
+  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
+  virtual void DoRun (void);
+  uint16_t m_nUser;
+  uint16_t m_dist;
+  uint16_t m_packetSize;  // byte
+  uint16_t m_interval;    // ms
+  double m_thrRefDl;
+  double m_thrRefUl;
+  bool m_errorModelEnabled;
+};
+
+
+class LenaCqaFfMacSchedulerTestCase2 : public TestCase
+{
+public:
+  LenaCqaFfMacSchedulerTestCase2 (std::vector<uint16_t> dist, std::vector<uint32_t> estThrCqaDl, std::vector<uint16_t> packetSize, uint16_t interval, bool  errorModelEnabled);
+  virtual ~LenaCqaFfMacSchedulerTestCase2 ();
+
+private:
+  static std::string BuildNameString (uint16_t nUser, std::vector<uint16_t> dist);
+  virtual void DoRun (void);
+  uint16_t m_nUser;
+  std::vector<uint16_t> m_dist;
+  std::vector<uint16_t> m_packetSize;  // byte
+  uint16_t m_interval;    // ms
+  std::vector<uint32_t> m_estThrCqaDl;
+  bool m_errorModelEnabled;
+};
+
+
+class LenaTestCqaFfMacSchedulerSuite : public TestSuite
+{
+public:
+  LenaTestCqaFfMacSchedulerSuite ();
+};
+
+#endif /* LENA_TEST_CQA_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-downlink-sinr.cc ns-3.20/src/lte/test/lte-test-downlink-sinr.cc
--- ns-3.19/src/lte/test/lte-test-downlink-sinr.cc	2014-06-17 10:34:00.342637403 -0700
+++ ns-3.20/src/lte/test/lte-test-downlink-sinr.cc	2014-06-17 10:33:13.713997351 -0700
@@ -37,8 +37,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteDownlinkSinrTest");
 
-namespace ns3 {
-
+using namespace ns3;
 
 /**
  * Test 1.1 SINR calculation in downlink
@@ -446,6 +445,3 @@
   dlPhy->Dispose ();
   Simulator::Destroy ();
 }
-
-
-} // namespace
diff -Naur ns-3.19/src/lte/test/lte-test-downlink-sinr.h ns-3.20/src/lte/test/lte-test-downlink-sinr.h
--- ns-3.19/src/lte/test/lte-test-downlink-sinr.h	2014-06-17 10:34:00.343637395 -0700
+++ ns-3.20/src/lte/test/lte-test-downlink-sinr.h	2014-06-17 10:33:13.713997351 -0700
@@ -27,9 +27,7 @@
 
 #include "ns3/test.h"
 
-
-namespace ns3 {
-
+using namespace ns3;
 
 /**
  * Test 1.1 SINR calculation in downlink
@@ -70,6 +68,4 @@
     Ptr<SpectrumValue> m_sinr;
 };
 
-} // namespace ns3
-
 #endif /* LTE_TEST_DOWNLINK_SINR_H */
diff -Naur ns-3.19/src/lte/test/lte-test-earfcn.cc ns-3.20/src/lte/test/lte-test-earfcn.cc
--- ns-3.19/src/lte/test/lte-test-earfcn.cc	2014-06-17 10:34:00.343637395 -0700
+++ ns-3.20/src/lte/test/lte-test-earfcn.cc	2014-06-17 10:33:13.713997351 -0700
@@ -27,7 +27,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteTestEarfcn");
 
-namespace ns3 {
+using namespace ns3;
 
 class LteEarfcnTestCase : public TestCase
 {
@@ -150,6 +150,3 @@
   AddTestCase (new LteEarfcnTestCase ("EARFCN=19400", 19400, 1730e6), TestCase::QUICK);
   AddTestCase (new LteEarfcnTestCase ("EARFCN=50000", 50000, 0.0), TestCase::QUICK);
 }
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/lte/test/lte-test-entities.cc ns-3.20/src/lte/test/lte-test-entities.cc
--- ns-3.19/src/lte/test/lte-test-entities.cc	2014-06-17 10:34:00.344637387 -0700
+++ ns-3.20/src/lte/test/lte-test-entities.cc	2014-06-17 10:33:13.714997343 -0700
@@ -186,7 +186,7 @@
 LteTestRrc::Start ()
 {
   NS_LOG_FUNCTION (this);
-  NS_ASSERT_MSG (m_arrivalTime != 0, "Arrival time must be different from 0");
+  NS_ASSERT_MSG (m_arrivalTime != Time (0), "Arrival time must be different from 0");
 
   // Stats
   m_txPdus++;
@@ -608,8 +608,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (EpcTestRrc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EpcTestRrc);
 
 EpcTestRrc::EpcTestRrc ()
   : m_s1SapProvider (0)
diff -Naur ns-3.19/src/lte/test/lte-test-fading.cc ns-3.20/src/lte/test/lte-test-fading.cc
--- ns-3.19/src/lte/test/lte-test-fading.cc	2014-06-17 10:34:00.345637379 -0700
+++ ns-3.20/src/lte/test/lte-test-fading.cc	2014-06-17 10:33:13.715997336 -0700
@@ -52,7 +52,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteFadingTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -295,6 +295,3 @@
   (*outPsd1)[1] = (10 * std::log10 (180000*(*outPsd1)[1])) - (10 * std::log10 (180000*(*inPsd1)[1]));
   m_fadingSamples.push_back ((*outPsd1));
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-fading.h ns-3.20/src/lte/test/lte-test-fading.h
--- ns-3.19/src/lte/test/lte-test-fading.h	2014-06-17 10:34:00.345637379 -0700
+++ ns-3.20/src/lte/test/lte-test-fading.h	2014-06-17 10:33:13.716997328 -0700
@@ -31,7 +31,7 @@
 
 #include <ns3/trace-fading-loss-model.h>
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -83,7 +83,4 @@
     uint16_t m_mcsIndex;
 };
 
-} // namespace ns3
-
-
 #endif /*LTE_TEST_FADING_H*/
diff -Naur ns-3.19/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	2014-06-17 10:34:00.346637372 -0700
+++ ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	2014-06-17 10:33:13.716997328 -0700
@@ -53,7 +53,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestFdBetFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestFdBetFfMacSchedulerSuite::LenaTestFdBetFfMacSchedulerSuite ()
   : TestSuite ("lte-fdbet-ff-mac-scheduler", SYSTEM)
@@ -489,10 +489,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h	2014-06-17 10:34:00.346637372 -0700
+++ ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h	2014-06-17 10:33:13.717997320 -0700
@@ -27,7 +27,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -81,10 +81,4 @@
   LenaTestFdBetFfMacSchedulerSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_FDBET_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc	2014-06-17 10:34:00.348637356 -0700
+++ ns-3.20/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc	2014-06-17 10:33:13.719997305 -0700
@@ -60,7 +60,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestFdTbfqFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestFdTbfqFfMacSchedulerSuite::LenaTestFdTbfqFfMacSchedulerSuite ()
   : TestSuite ("lte-fdtbfq-ff-mac-scheduler", SYSTEM)
@@ -693,10 +693,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h	2014-06-17 10:34:00.348637356 -0700
+++ ns-3.20/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h	2014-06-17 10:33:13.719997305 -0700
@@ -27,7 +27,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -84,8 +84,4 @@
 
 
 
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_FDTBFQ_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-harq.cc ns-3.20/src/lte/test/lte-test-harq.cc
--- ns-3.19/src/lte/test/lte-test-harq.cc	2014-06-17 10:34:00.349637349 -0700
+++ ns-3.20/src/lte/test/lte-test-harq.cc	2014-06-17 10:33:13.719997305 -0700
@@ -54,7 +54,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestHarq");
 
-namespace ns3 {
+using namespace ns3;
 
 
 LenaTestHarqSuite::LenaTestHarqSuite ()
@@ -260,6 +260,3 @@
 
   Simulator::Destroy ();
 }
-
-
-} // namespace
diff -Naur ns-3.19/src/lte/test/lte-test-harq.h ns-3.20/src/lte/test/lte-test-harq.h
--- ns-3.19/src/lte/test/lte-test-harq.h	2014-06-17 10:34:00.349637349 -0700
+++ ns-3.20/src/lte/test/lte-test-harq.h	2014-06-17 10:33:13.720997297 -0700
@@ -25,7 +25,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -61,10 +61,4 @@
   LenaTestHarqSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_HARQ_H */
diff -Naur ns-3.19/src/lte/test/lte-test-interference.cc ns-3.20/src/lte/test/lte-test-interference.cc
--- ns-3.19/src/lte/test/lte-test-interference.cc	2014-06-17 10:34:00.350637341 -0700
+++ ns-3.20/src/lte/test/lte-test-interference.cc	2014-06-17 10:33:13.721997289 -0700
@@ -41,7 +41,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteInterferenceTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 void
@@ -248,6 +248,3 @@
       NS_TEST_ASSERT_MSG_EQ ((uint32_t)mcs, (uint32_t)m_ulMcs, "Wrong UL MCS");
     }
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-interference.h ns-3.20/src/lte/test/lte-test-interference.h
--- ns-3.19/src/lte/test/lte-test-interference.h	2014-06-17 10:34:00.350637341 -0700
+++ ns-3.20/src/lte/test/lte-test-interference.h	2014-06-17 10:33:13.721997289 -0700
@@ -25,7 +25,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -62,8 +62,4 @@
   uint16_t m_ulMcs;
 };
 
-
-} // namespace ns3
-
-
 #endif /* LTE_TEST_INTERFERENCE_H */
diff -Naur ns-3.19/src/lte/test/lte-test-link-adaptation.cc ns-3.20/src/lte/test/lte-test-link-adaptation.cc
--- ns-3.19/src/lte/test/lte-test-link-adaptation.cc	2014-06-17 10:34:00.351637333 -0700
+++ ns-3.20/src/lte/test/lte-test-link-adaptation.cc	2014-06-17 10:33:13.722997281 -0700
@@ -37,7 +37,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteLinkAdaptationTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -244,6 +244,3 @@
       NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index");
     }
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-link-adaptation.h ns-3.20/src/lte/test/lte-test-link-adaptation.h
--- ns-3.19/src/lte/test/lte-test-link-adaptation.h	2014-06-17 10:34:00.352637325 -0700
+++ ns-3.20/src/lte/test/lte-test-link-adaptation.h	2014-06-17 10:33:13.722997281 -0700
@@ -24,7 +24,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -55,8 +55,4 @@
   uint16_t m_mcsIndex;
 };
 
-
-} // namespace ns3
-
-
 #endif /* LTE_TEST_LINK_ADAPTATION_H */
diff -Naur ns-3.19/src/lte/test/lte-test-mimo.cc ns-3.20/src/lte/test/lte-test-mimo.cc
--- ns-3.19/src/lte/test/lte-test-mimo.cc	2014-06-17 10:34:00.352637325 -0700
+++ ns-3.20/src/lte/test/lte-test-mimo.cc	2014-06-17 10:33:13.723997274 -0700
@@ -58,7 +58,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteTestMimo");
 
-namespace ns3 {
+using namespace ns3;
 
 
 LenaTestMimoSuite::LenaTestMimoSuite ()
@@ -261,8 +261,3 @@
   m_dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId));
   NS_LOG_INFO (Simulator::Now () << "\t get bytes " << m_dlDataRxed.at (m_dlDataRxed.size () - 1));
 }
-
-
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-mimo.h ns-3.20/src/lte/test/lte-test-mimo.h
--- ns-3.19/src/lte/test/lte-test-mimo.h	2014-06-17 10:34:00.353637318 -0700
+++ ns-3.20/src/lte/test/lte-test-mimo.h	2014-06-17 10:33:13.723997274 -0700
@@ -25,7 +25,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -60,10 +60,4 @@
   LenaTestMimoSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_MIMO_H */
diff -Naur ns-3.19/src/lte/test/lte-test-pathloss-model.cc ns-3.20/src/lte/test/lte-test-pathloss-model.cc
--- ns-3.19/src/lte/test/lte-test-pathloss-model.cc	2014-06-17 10:34:00.354637310 -0700
+++ ns-3.20/src/lte/test/lte-test-pathloss-model.cc	2014-06-17 10:33:13.724997266 -0700
@@ -52,7 +52,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LtePathlossModelTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -306,7 +306,3 @@
     NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index");
   }
 }
-                                         
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-pathloss-model.h ns-3.20/src/lte/test/lte-test-pathloss-model.h
--- ns-3.19/src/lte/test/lte-test-pathloss-model.h	2014-06-17 10:34:00.354637310 -0700
+++ ns-3.20/src/lte/test/lte-test-pathloss-model.h	2014-06-17 10:33:13.725997258 -0700
@@ -28,7 +28,7 @@
 #include <ns3/buildings-propagation-loss-model.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -59,9 +59,5 @@
     uint16_t m_mcsIndex;
 };
 
-
-} // namespace ns3
-
-
 #endif /* LTE_TEST_PATHLOSS_MODEL_H */
 
diff -Naur ns-3.19/src/lte/test/lte-test-pf-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-pf-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-pf-ff-mac-scheduler.cc	2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/src/lte/test/lte-test-pf-ff-mac-scheduler.cc	2014-06-17 10:33:13.726997250 -0700
@@ -52,7 +52,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestPfFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestPfFfMacSchedulerSuite::LenaTestPfFfMacSchedulerSuite ()
   : TestSuite ("lte-pf-ff-mac-scheduler", SYSTEM)
@@ -503,10 +503,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-pf-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-pf-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-pf-ff-mac-scheduler.h	2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/src/lte/test/lte-test-pf-ff-mac-scheduler.h	2014-06-17 10:33:13.727997243 -0700
@@ -26,7 +26,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -80,10 +80,4 @@
   LenaTestPfFfMacSchedulerSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_PF_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-phy-error-model.cc ns-3.20/src/lte/test/lte-test-phy-error-model.cc
--- ns-3.19/src/lte/test/lte-test-phy-error-model.cc	2014-06-17 10:34:00.358637279 -0700
+++ ns-3.20/src/lte/test/lte-test-phy-error-model.cc	2014-06-17 10:33:13.728997235 -0700
@@ -55,7 +55,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteTestPhyErrorModel");
 
-namespace ns3 {
+using namespace ns3;
 
 
 LenaTestPhyErrorModelSuite::LenaTestPhyErrorModelSuite ()
@@ -433,6 +433,3 @@
   
   Simulator::Destroy ();
 }
-
-
-} // namespace
diff -Naur ns-3.19/src/lte/test/lte-test-phy-error-model.h ns-3.20/src/lte/test/lte-test-phy-error-model.h
--- ns-3.19/src/lte/test/lte-test-phy-error-model.h	2014-06-17 10:34:00.358637279 -0700
+++ ns-3.20/src/lte/test/lte-test-phy-error-model.h	2014-06-17 10:33:13.729997227 -0700
@@ -26,7 +26,7 @@
 #include <ns3/nstime.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -86,10 +86,4 @@
   LenaTestPhyErrorModelSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_PHY_ERROR_MODEL_H */
diff -Naur ns-3.19/src/lte/test/lte-test-pss-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-pss-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-pss-ff-mac-scheduler.cc	2014-06-17 10:34:00.359637271 -0700
+++ ns-3.20/src/lte/test/lte-test-pss-ff-mac-scheduler.cc	2014-06-17 10:33:13.730997219 -0700
@@ -60,7 +60,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestPssFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestPssFfMacSchedulerSuite::LenaTestPssFfMacSchedulerSuite ()
   : TestSuite ("lte-pss-ff-mac-scheduler", SYSTEM)
@@ -687,10 +687,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-pss-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-pss-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-pss-ff-mac-scheduler.h	2014-06-17 10:34:00.359637271 -0700
+++ ns-3.20/src/lte/test/lte-test-pss-ff-mac-scheduler.h	2014-06-17 10:33:13.730997219 -0700
@@ -27,7 +27,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -82,10 +82,4 @@
   LenaTestPssFfMacSchedulerSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_PSS_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-am-e2e.cc ns-3.20/src/lte/test/lte-test-rlc-am-e2e.cc
--- ns-3.19/src/lte/test/lte-test-rlc-am-e2e.cc	2014-06-17 10:34:00.360637264 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-am-e2e.cc	2014-06-17 10:33:13.730997219 -0700
@@ -39,7 +39,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteRlcAmE2eTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -221,6 +221,3 @@
 
   Simulator::Destroy ();
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-am-e2e.h ns-3.20/src/lte/test/lte-test-rlc-am-e2e.h
--- ns-3.19/src/lte/test/lte-test-rlc-am-e2e.h	2014-06-17 10:34:00.360637264 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-am-e2e.h	2014-06-17 10:33:13.731997212 -0700
@@ -24,7 +24,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -57,8 +57,4 @@
     double   m_losses;
 };
 
-
-} // namespace ns3
-
-
 #endif // LTE_TEST_RLC_AM_E2E_H
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-am-transmitter.cc ns-3.20/src/lte/test/lte-test-rlc-am-transmitter.cc
--- ns-3.19/src/lte/test/lte-test-rlc-am-transmitter.cc	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-am-transmitter.cc	2014-06-17 10:33:13.731997212 -0700
@@ -29,7 +29,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteRlcAmTransmitterTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -297,6 +297,3 @@
   Simulator::Run ();
   Simulator::Destroy ();
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-am-transmitter.h ns-3.20/src/lte/test/lte-test-rlc-am-transmitter.h
--- ns-3.19/src/lte/test/lte-test-rlc-am-transmitter.h	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-am-transmitter.h	2014-06-17 10:33:13.732997204 -0700
@@ -30,6 +30,10 @@
 class LteTestMac;
 class LteTestPdcp;
 
+}
+
+using namespace ns3;
+
 /**
  * TestSuite 4.1.1 RLC AM: Only transmitter
  */
@@ -120,6 +124,4 @@
 
 };
 
-} // namespace ns3
-
 #endif // LTE_TEST_RLC_AM_TRANSMITTER_H
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-um-e2e.cc ns-3.20/src/lte/test/lte-test-rlc-um-e2e.cc
--- ns-3.19/src/lte/test/lte-test-rlc-um-e2e.cc	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-um-e2e.cc	2014-06-17 10:33:13.732997204 -0700
@@ -38,7 +38,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteRlcUmE2eTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -233,6 +233,3 @@
 
   Simulator::Destroy ();
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-um-e2e.h ns-3.20/src/lte/test/lte-test-rlc-um-e2e.h
--- ns-3.19/src/lte/test/lte-test-rlc-um-e2e.h	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-um-e2e.h	2014-06-17 10:33:13.732997204 -0700
@@ -24,7 +24,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -57,8 +57,4 @@
     double   m_losses;
 };
 
-
-} // namespace ns3
-
-
 #endif // LTE_TEST_RLC_UM_E2E_H
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-um-transmitter.cc ns-3.20/src/lte/test/lte-test-rlc-um-transmitter.cc
--- ns-3.19/src/lte/test/lte-test-rlc-um-transmitter.cc	2014-06-17 10:34:00.377637133 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-um-transmitter.cc	2014-06-17 10:33:13.733997196 -0700
@@ -29,7 +29,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteRlcUmTransmitterTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -298,7 +298,3 @@
   Simulator::Run ();
   Simulator::Destroy ();
 }
-
-} // namespace ns3
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-rlc-um-transmitter.h ns-3.20/src/lte/test/lte-test-rlc-um-transmitter.h
--- ns-3.19/src/lte/test/lte-test-rlc-um-transmitter.h	2014-06-17 10:34:00.377637133 -0700
+++ ns-3.20/src/lte/test/lte-test-rlc-um-transmitter.h	2014-06-17 10:33:13.733997196 -0700
@@ -23,13 +23,16 @@
 
 #include "ns3/test.h"
 
-
 namespace ns3 {
 
 class LteTestRrc;
 class LteTestMac;
 class LteTestPdcp;
 
+}
+
+using namespace ns3;
+
 /**
  * TestSuite 4.1.1 RLC UM: Only transmitter
  */
@@ -120,6 +123,4 @@
 
 };
 
-} // namespace ns3
-
 #endif /* LTE_TEST_RLC_UM_TRANSMITTER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-rr-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	2014-06-17 10:34:00.379637117 -0700
+++ ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	2014-06-17 10:33:13.735997181 -0700
@@ -50,7 +50,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestRrFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 
 LenaTestRrFfMacSchedulerSuite::LenaTestRrFfMacSchedulerSuite ()
@@ -292,7 +292,3 @@
 
   Simulator::Destroy ();
 }
-
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-rr-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-rr-ff-mac-scheduler.h	2014-06-17 10:34:00.379637117 -0700
+++ ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.h	2014-06-17 10:33:13.735997181 -0700
@@ -25,7 +25,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -62,10 +62,4 @@
   LenaTestRrFfMacSchedulerSuite ();
 };
 
-
-
-} // namespace ns3
-
-
-
 #endif /* LENA_TEST_RR_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-spectrum-value-helper.cc ns-3.20/src/lte/test/lte-test-spectrum-value-helper.cc
--- ns-3.19/src/lte/test/lte-test-spectrum-value-helper.cc	2014-06-17 10:34:00.382637094 -0700
+++ ns-3.20/src/lte/test/lte-test-spectrum-value-helper.cc	2014-06-17 10:33:13.738997158 -0700
@@ -28,7 +28,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteTestSpectrumValueHelper");
 
-namespace ns3 {
+using namespace ns3;
 
 class LteSpectrumModelTestCase : public TestCase
 {
@@ -1652,6 +1652,3 @@
 
 
 }
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	2014-06-17 10:34:00.382637094 -0700
+++ ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	2014-06-17 10:33:13.738997158 -0700
@@ -53,7 +53,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestTdBetFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestTdBetFfMacSchedulerSuite::LenaTestTdBetFfMacSchedulerSuite ()
   : TestSuite ("lte-tdbet-ff-mac-scheduler", SYSTEM)
@@ -491,10 +491,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h	2014-06-17 10:34:00.383637086 -0700
+++ ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h	2014-06-17 10:33:13.739997150 -0700
@@ -27,7 +27,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -81,10 +81,4 @@
   LenaTestTdBetFfMacSchedulerSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_TDBET_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc ns-3.20/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc
--- ns-3.19/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc	2014-06-17 10:34:00.385637071 -0700
+++ ns-3.20/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc	2014-06-17 10:33:13.741997135 -0700
@@ -60,7 +60,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestTdTbfqFfMacScheduler");
 
-namespace ns3 {
+using namespace ns3;
 
 LenaTestTdTbfqFfMacSchedulerSuite::LenaTestTdTbfqFfMacSchedulerSuite ()
   : TestSuite ("lte-tdtbfq-ff-mac-scheduler", SYSTEM)
@@ -693,10 +693,3 @@
   Simulator::Destroy ();
 
 }
-
-
-} // namespace ns3
-
-
-
-
diff -Naur ns-3.19/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h ns-3.20/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h
--- ns-3.19/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h	2014-06-17 10:34:00.385637071 -0700
+++ ns-3.20/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h	2014-06-17 10:33:13.741997135 -0700
@@ -27,7 +27,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -82,10 +82,4 @@
   LenaTestTdTbfqFfMacSchedulerSuite ();
 };
 
-
-
-
-} // namespace ns3
-
-
 #endif /* LENA_TEST_TDTBFQ_FF_MAC_SCHEDULER_H */
diff -Naur ns-3.19/src/lte/test/lte-test-ue-measurements.cc ns-3.20/src/lte/test/lte-test-ue-measurements.cc
--- ns-3.19/src/lte/test/lte-test-ue-measurements.cc	2014-06-17 10:34:00.388637048 -0700
+++ ns-3.20/src/lte/test/lte-test-ue-measurements.cc	2014-06-17 10:33:13.744997112 -0700
@@ -56,7 +56,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteUeMeasurementsTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 // ===== LTE-UE-MEASUREMENTS TEST SUITE ==================================== //
@@ -1933,7 +1933,3 @@
     } // end of if (report.measResults.measId == correctMeasId)
 
 } // end of void LteUeMeasurementsHandoverTestCase::RecvMeasurementReportCallback
-
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/lte-test-ue-measurements.h ns-3.20/src/lte/test/lte-test-ue-measurements.h
--- ns-3.19/src/lte/test/lte-test-ue-measurements.h	2014-06-17 10:34:00.388637048 -0700
+++ ns-3.20/src/lte/test/lte-test-ue-measurements.h	2014-06-17 10:33:13.744997112 -0700
@@ -34,9 +34,12 @@
 
 namespace ns3 {
 
-
 class MobilityModel;
 
+}
+
+using namespace ns3;
+
 
 // ===== LTE-UE-MEASUREMENTS TEST SUITE ==================================== //
 
@@ -403,9 +406,4 @@
 
 }; // end of class LteUeMeasurementsHandoverTestCase
 
-
-
-} // namespace ns3
-
-
 #endif /* LTE_TEST_UE_MEASUREMENTS_H */
diff -Naur ns-3.19/src/lte/test/lte-test-ue-phy.cc ns-3.20/src/lte/test/lte-test-ue-phy.cc
--- ns-3.19/src/lte/test/lte-test-ue-phy.cc	2014-06-17 10:34:00.389637040 -0700
+++ ns-3.20/src/lte/test/lte-test-ue-phy.cc	2014-06-17 10:33:13.745997104 -0700
@@ -26,8 +26,7 @@
 namespace ns3 {
 
  
-NS_OBJECT_ENSURE_REGISTERED (LteTestUePhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LteTestUePhy);
 
 LteTestUePhy::LteTestUePhy ()
 {
diff -Naur ns-3.19/src/lte/test/lte-test-uplink-sinr.cc ns-3.20/src/lte/test/lte-test-uplink-sinr.cc
--- ns-3.19/src/lte/test/lte-test-uplink-sinr.cc	2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/src/lte/test/lte-test-uplink-sinr.cc	2014-06-17 10:33:13.746997096 -0700
@@ -37,7 +37,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteUplinkSinrTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -479,5 +479,3 @@
   Simulator::Destroy ();
   
 }
-
-} //namespace
diff -Naur ns-3.19/src/lte/test/lte-test-uplink-sinr.h ns-3.20/src/lte/test/lte-test-uplink-sinr.h
--- ns-3.19/src/lte/test/lte-test-uplink-sinr.h	2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/src/lte/test/lte-test-uplink-sinr.h	2014-06-17 10:33:13.746997096 -0700
@@ -28,7 +28,7 @@
 #include "ns3/test.h"
 
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -74,6 +74,3 @@
 
 
 #endif /* LTE_TEST_UPLINK_SINR_H */
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/test-asn1-encoding.cc ns-3.20/src/lte/test/test-asn1-encoding.cc
--- ns-3.19/src/lte/test/test-asn1-encoding.cc	2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/src/lte/test/test-asn1-encoding.cc	2014-06-17 10:33:13.753997042 -0700
@@ -32,7 +32,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("Asn1EncodingTest");
 
-namespace ns3 {
+using namespace ns3;
 
 class TestUtils
 {
@@ -1032,5 +1032,3 @@
 
 Asn1EncodingSuite asn1EncodingSuite;
 
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/test-epc-tft-classifier.cc ns-3.20/src/lte/test/test-epc-tft-classifier.cc
--- ns-3.19/src/lte/test/test-epc-tft-classifier.cc	2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/src/lte/test/test-epc-tft-classifier.cc	2014-06-17 10:33:13.753997042 -0700
@@ -35,7 +35,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("TestEpcTftClassifier");
 
-namespace ns3 {
+using namespace ns3;
 
 class EpcTftClassifierTestCase : public TestCase
 {
@@ -329,6 +329,3 @@
   AddTestCase (new EpcTftClassifierTestCase (c4, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  5897,       10,     0,    2), TestCase::QUICK);
 
 }
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/lte/test/test-lte-antenna.cc ns-3.20/src/lte/test/test-lte-antenna.cc
--- ns-3.19/src/lte/test/test-lte-antenna.cc	2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/src/lte/test/test-lte-antenna.cc	2014-06-17 10:33:13.754997034 -0700
@@ -41,7 +41,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteAntennaTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 
@@ -256,7 +256,3 @@
 }
 
 static LteAntennaTestSuite lteAntennaTestSuite;
-
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/test-lte-epc-e2e-data.cc ns-3.20/src/lte/test/test-lte-epc-e2e-data.cc
--- ns-3.19/src/lte/test/test-lte-epc-e2e-data.cc	2014-06-17 10:34:00.399636962 -0700
+++ ns-3.20/src/lte/test/test-lte-epc-e2e-data.cc	2014-06-17 10:33:13.755997027 -0700
@@ -44,11 +44,10 @@
 
 
 
-namespace ns3 {
+using namespace ns3;
 
 
-NS_LOG_COMPONENT_DEFINE ("LteEpcE2eData")
-  ;
+NS_LOG_COMPONENT_DEFINE ("LteEpcE2eData");
 
 
 
@@ -452,8 +451,3 @@
 
 
 }
-
-
-
-}  // namespace ns3
-
diff -Naur ns-3.19/src/lte/test/test-lte-handover-delay.cc ns-3.20/src/lte/test/test-lte-handover-delay.cc
--- ns-3.19/src/lte/test/test-lte-handover-delay.cc	2014-06-17 10:34:00.399636962 -0700
+++ ns-3.20/src/lte/test/test-lte-handover-delay.cc	2014-06-17 10:33:13.755997027 -0700
@@ -46,7 +46,7 @@
 
 NS_LOG_COMPONENT_DEFINE("LteHandoverDelayTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /*
@@ -290,7 +290,3 @@
       }
   }
 } g_lteHandoverDelayTestSuite;
-
-
-
-} // end of namespace ns3
diff -Naur ns-3.19/src/lte/test/test-lte-handover-target.cc ns-3.20/src/lte/test/test-lte-handover-target.cc
--- ns-3.19/src/lte/test/test-lte-handover-target.cc	2014-06-17 10:34:00.399636962 -0700
+++ ns-3.20/src/lte/test/test-lte-handover-target.cc	2014-06-17 10:33:13.756997019 -0700
@@ -50,7 +50,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteHandoverTargetTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 /**
@@ -429,6 +429,3 @@
 
 
 static LteHandoverTargetTestSuite g_lteHandoverTargetTestSuiteInstance;
-
-
-} // end of namespace ns3
diff -Naur ns-3.19/src/lte/test/test-lte-rrc.cc ns-3.20/src/lte/test/test-lte-rrc.cc
--- ns-3.19/src/lte/test/test-lte-rrc.cc	2014-06-17 10:34:00.400636955 -0700
+++ ns-3.20/src/lte/test/test-lte-rrc.cc	2014-06-17 10:33:13.757997011 -0700
@@ -27,7 +27,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteRrcTest");
 
-namespace ns3 {
+using namespace ns3;
 
 class LteRrcConnectionEstablishmentTestCase : public TestCase
 {
@@ -378,7 +378,3 @@
 }
 
 static LteRrcTestSuite g_lteRrcTestSuiteInstance;
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/lte/test/test-lte-x2-handover.cc ns-3.20/src/lte/test/test-lte-x2-handover.cc
--- ns-3.19/src/lte/test/test-lte-x2-handover.cc	2014-06-17 10:34:00.402636940 -0700
+++ ns-3.20/src/lte/test/test-lte-x2-handover.cc	2014-06-17 10:33:13.759996996 -0700
@@ -29,7 +29,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteX2HandoverTest");
 
-namespace ns3 {
+using namespace ns3;
 
 struct HandoverEvent
 {
@@ -668,7 +668,3 @@
 }
 
 static LteX2HandoverTestSuite g_lteX2HandoverTestSuiteInstance;
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/lte/test/test-lte-x2-handover-measures.cc ns-3.20/src/lte/test/test-lte-x2-handover-measures.cc
--- ns-3.19/src/lte/test/test-lte-x2-handover-measures.cc	2014-06-17 10:34:00.401636947 -0700
+++ ns-3.20/src/lte/test/test-lte-x2-handover-measures.cc	2014-06-17 10:33:13.758997004 -0700
@@ -29,7 +29,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("LteX2HandoverMeasuresTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 struct CheckPointEvent
@@ -709,8 +709,3 @@
 } // end of LteX2HandoverMeasuresTestSuite ()
 
 static LteX2HandoverMeasuresTestSuite g_lteX2HandoverMeasuresTestSuiteInstance;
-
-
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/lte/wscript ns-3.20/src/lte/wscript
--- ns-3.19/src/lte/wscript	2014-06-17 10:34:00.403636932 -0700
+++ ns-3.20/src/lte/wscript	2014-06-17 10:33:13.760996988 -0700
@@ -79,6 +79,7 @@
         'model/fdtbfq-ff-mac-scheduler.cc',
         'model/tdtbfq-ff-mac-scheduler.cc',
         'model/pss-ff-mac-scheduler.cc',
+        'model/cqa-ff-mac-scheduler.cc',
         'model/epc-gtpu-header.cc',
         'model/trace-fading-loss-model.cc',
         'model/epc-enb-application.cc',
@@ -126,6 +127,7 @@
         'test/lte-test-fdtbfq-ff-mac-scheduler.cc',
         'test/lte-test-tdtbfq-ff-mac-scheduler.cc',
         'test/lte-test-pss-ff-mac-scheduler.cc',
+        'test/lte-test-cqa-ff-mac-scheduler.cc',
         'test/lte-test-earfcn.cc',
         'test/lte-test-spectrum-value-helper.cc',
         'test/lte-test-pathloss-model.cc',
@@ -233,6 +235,7 @@
         'model/fdtbfq-ff-mac-scheduler.h',
         'model/tdtbfq-ff-mac-scheduler.h',
         'model/pss-ff-mac-scheduler.h',
+        'model/cqa-ff-mac-scheduler.h',
         'model/trace-fading-loss-model.h',
         'model/epc-gtpu-header.h',
         'model/epc-enb-application.h',
diff -Naur ns-3.19/src/mesh/bindings/modulegen__gcc_ILP32.py ns-3.20/src/mesh/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/mesh/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.412636862 -0700
+++ ns-3.20/src/mesh/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.769996919 -0700
@@ -135,7 +135,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -148,6 +148,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -182,6 +184,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -410,24 +414,24 @@
     module.add_class('MeshPointDevice', parent=root_module['ns3::NetDevice'])
     ## mesh-wifi-interface-mac.h (module 'mesh'): ns3::MeshWifiInterfaceMac [class]
     module.add_class('MeshWifiInterfaceMac', parent=root_module['ns3::RegularWifiMac'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::NetDevice > >', 'ns3::Ptr< ns3::NetDevice >', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::NetDevice > >', 'ns3::Ptr< ns3::NetDevice >', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -468,12 +472,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -560,12 +564,12 @@
     module.add_class('PlinkFrameStartFields', outer_class=root_module['ns3::dot11s::PeerLinkFrameStart'])
     ## peer-management-protocol.h (module 'mesh'): ns3::dot11s::PeerManagementProtocol [class]
     module.add_class('PeerManagementProtocol', parent=root_module['ns3::Object'])
-    module.add_container('std::vector< std::pair< unsigned int, ns3::Mac48Address > >', 'std::pair< unsigned int, ns3::Mac48Address >', container_type='vector')
-    module.add_container('std::vector< ns3::dot11s::HwmpProtocol::FailedDestination >', 'ns3::dot11s::HwmpProtocol::FailedDestination', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit > >', 'ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit >', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::DestinationAddressUnit > >', 'ns3::Ptr< ns3::dot11s::DestinationAddressUnit >', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::PeerLink > >', 'ns3::Ptr< ns3::dot11s::PeerLink >', container_type='vector')
-    module.add_container('std::vector< ns3::Mac48Address >', 'ns3::Mac48Address', container_type='vector')
+    module.add_container('std::vector< std::pair< unsigned int, ns3::Mac48Address > >', 'std::pair< unsigned int, ns3::Mac48Address >', container_type=u'vector')
+    module.add_container('std::vector< ns3::dot11s::HwmpProtocol::FailedDestination >', 'ns3::dot11s::HwmpProtocol::FailedDestination', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit > >', 'ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::DestinationAddressUnit > >', 'ns3::Ptr< ns3::dot11s::DestinationAddressUnit >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::PeerLink > >', 'ns3::Ptr< ns3::dot11s::PeerLink >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Mac48Address >', 'ns3::Mac48Address', container_type=u'vector')
 
 def register_types_ns3_flame(module):
     root_module = module.get_root()
@@ -635,6 +639,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1367,6 +1372,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1379,6 +1388,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3115,6 +3128,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -3619,61 +3640,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3681,6 +3658,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3721,6 +3700,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4616,12 +4597,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4647,6 +4630,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6220,6 +6208,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8738,10 +8731,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3RegularWifiMac_methods(root_module, cls):
@@ -9408,6 +9401,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/mesh/bindings/modulegen__gcc_LP64.py ns-3.20/src/mesh/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/mesh/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.418636816 -0700
+++ ns-3.20/src/mesh/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.775996872 -0700
@@ -135,7 +135,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -148,6 +148,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -182,6 +184,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -410,24 +414,24 @@
     module.add_class('MeshPointDevice', parent=root_module['ns3::NetDevice'])
     ## mesh-wifi-interface-mac.h (module 'mesh'): ns3::MeshWifiInterfaceMac [class]
     module.add_class('MeshWifiInterfaceMac', parent=root_module['ns3::RegularWifiMac'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::NetDevice > >', 'ns3::Ptr< ns3::NetDevice >', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::NetDevice > >', 'ns3::Ptr< ns3::NetDevice >', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -468,12 +472,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -560,12 +564,12 @@
     module.add_class('PlinkFrameStartFields', outer_class=root_module['ns3::dot11s::PeerLinkFrameStart'])
     ## peer-management-protocol.h (module 'mesh'): ns3::dot11s::PeerManagementProtocol [class]
     module.add_class('PeerManagementProtocol', parent=root_module['ns3::Object'])
-    module.add_container('std::vector< std::pair< unsigned int, ns3::Mac48Address > >', 'std::pair< unsigned int, ns3::Mac48Address >', container_type='vector')
-    module.add_container('std::vector< ns3::dot11s::HwmpProtocol::FailedDestination >', 'ns3::dot11s::HwmpProtocol::FailedDestination', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit > >', 'ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit >', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::DestinationAddressUnit > >', 'ns3::Ptr< ns3::dot11s::DestinationAddressUnit >', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::PeerLink > >', 'ns3::Ptr< ns3::dot11s::PeerLink >', container_type='vector')
-    module.add_container('std::vector< ns3::Mac48Address >', 'ns3::Mac48Address', container_type='vector')
+    module.add_container('std::vector< std::pair< unsigned int, ns3::Mac48Address > >', 'std::pair< unsigned int, ns3::Mac48Address >', container_type=u'vector')
+    module.add_container('std::vector< ns3::dot11s::HwmpProtocol::FailedDestination >', 'ns3::dot11s::HwmpProtocol::FailedDestination', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit > >', 'ns3::Ptr< ns3::dot11s::IeBeaconTimingUnit >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::DestinationAddressUnit > >', 'ns3::Ptr< ns3::dot11s::DestinationAddressUnit >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::dot11s::PeerLink > >', 'ns3::Ptr< ns3::dot11s::PeerLink >', container_type=u'vector')
+    module.add_container('std::vector< ns3::Mac48Address >', 'ns3::Mac48Address', container_type=u'vector')
 
 def register_types_ns3_flame(module):
     root_module = module.get_root()
@@ -635,6 +639,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1367,6 +1372,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1379,6 +1388,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3115,6 +3128,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -3619,61 +3640,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3681,6 +3658,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3721,6 +3700,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4616,12 +4597,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4647,6 +4630,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6220,6 +6208,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8738,10 +8731,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3RegularWifiMac_methods(root_module, cls):
@@ -9408,6 +9401,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/mesh/examples/waf ns-3.20/src/mesh/examples/waf
--- ns-3.19/src/mesh/examples/waf	2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/mesh/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/mesh/helper/dot11s/dot11s-installer.cc ns-3.20/src/mesh/helper/dot11s/dot11s-installer.cc
--- ns-3.19/src/mesh/helper/dot11s/dot11s-installer.cc	2014-06-17 10:34:00.422636785 -0700
+++ ns-3.20/src/mesh/helper/dot11s/dot11s-installer.cc	2014-06-17 10:33:13.779996841 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 using namespace dot11s;
-NS_OBJECT_ENSURE_REGISTERED (Dot11sStack)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Dot11sStack);
   
 TypeId
 Dot11sStack::GetTypeId ()
diff -Naur ns-3.19/src/mesh/helper/flame/flame-installer.cc ns-3.20/src/mesh/helper/flame/flame-installer.cc
--- ns-3.19/src/mesh/helper/flame/flame-installer.cc	2014-06-17 10:34:00.423636777 -0700
+++ ns-3.20/src/mesh/helper/flame/flame-installer.cc	2014-06-17 10:33:13.779996841 -0700
@@ -26,8 +26,7 @@
 namespace ns3
 {
 using namespace flame;
-NS_OBJECT_ENSURE_REGISTERED (FlameStack)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlameStack);
   
 TypeId
 FlameStack::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/dot11s/airtime-metric.cc ns-3.20/src/mesh/model/dot11s/airtime-metric.cc
--- ns-3.19/src/mesh/model/dot11s/airtime-metric.cc	2014-06-17 10:34:00.425636762 -0700
+++ ns-3.20/src/mesh/model/dot11s/airtime-metric.cc	2014-06-17 10:33:13.781996826 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 namespace dot11s {
-NS_OBJECT_ENSURE_REGISTERED (AirtimeLinkMetricCalculator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AirtimeLinkMetricCalculator);
   
 TypeId
 AirtimeLinkMetricCalculator::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/dot11s/hwmp-protocol.cc ns-3.20/src/mesh/model/dot11s/hwmp-protocol.cc
--- ns-3.19/src/mesh/model/dot11s/hwmp-protocol.cc	2014-06-17 10:34:00.428636739 -0700
+++ ns-3.20/src/mesh/model/dot11s/hwmp-protocol.cc	2014-06-17 10:33:13.784996803 -0700
@@ -41,8 +41,7 @@
 namespace ns3 {
 namespace dot11s {
 
-NS_OBJECT_ENSURE_REGISTERED (HwmpProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HwmpProtocol);
   
 TypeId
 HwmpProtocol::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/dot11s/hwmp-rtable.cc ns-3.20/src/mesh/model/dot11s/hwmp-rtable.cc
--- ns-3.19/src/mesh/model/dot11s/hwmp-rtable.cc	2014-06-17 10:34:00.429636731 -0700
+++ ns-3.20/src/mesh/model/dot11s/hwmp-rtable.cc	2014-06-17 10:33:13.785996795 -0700
@@ -31,8 +31,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("HwmpRtable");
 
-NS_OBJECT_ENSURE_REGISTERED (HwmpRtable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HwmpRtable);
 
 TypeId
 HwmpRtable::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/dot11s/hwmp-tag.cc ns-3.20/src/mesh/model/dot11s/hwmp-tag.cc
--- ns-3.19/src/mesh/model/dot11s/hwmp-tag.cc	2014-06-17 10:34:00.430636723 -0700
+++ ns-3.20/src/mesh/model/dot11s/hwmp-tag.cc	2014-06-17 10:33:13.786996787 -0700
@@ -23,8 +23,7 @@
 namespace ns3 {
 namespace dot11s {
 
-NS_OBJECT_ENSURE_REGISTERED (HwmpTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HwmpTag);
   
 //Class HwmpTag:
 HwmpTag::HwmpTag () :
diff -Naur ns-3.19/src/mesh/model/dot11s/ie-dot11s-perr.cc ns-3.20/src/mesh/model/dot11s/ie-dot11s-perr.cc
--- ns-3.19/src/mesh/model/dot11s/ie-dot11s-perr.cc	2014-06-17 10:34:00.434636692 -0700
+++ ns-3.20/src/mesh/model/dot11s/ie-dot11s-perr.cc	2014-06-17 10:33:13.790996757 -0700
@@ -108,7 +108,12 @@
 bool
 IePerr::IsFull () const
 {
-  return (GetInformationFieldSize () + 2 /* ID + LENGTH*/+ 10 /* Size of Mac48Address + uint32_t (one unit)*/> 255);
+  // -fstrict-overflow sensitive, see bug 1868
+  return (GetInformationFieldSize ()
+          > 255
+          -   2 /* ID + LENGTH*/
+          -  10 /* Size of Mac48Address + uint32_t (one unit)*/
+          );
 }
 std::vector<HwmpProtocol::FailedDestination>
 IePerr::GetAddressUnitVector () const
diff -Naur ns-3.19/src/mesh/model/dot11s/ie-dot11s-preq.cc ns-3.20/src/mesh/model/dot11s/ie-dot11s-preq.cc
--- ns-3.19/src/mesh/model/dot11s/ie-dot11s-preq.cc	2014-06-17 10:34:00.436636677 -0700
+++ ns-3.20/src/mesh/model/dot11s/ie-dot11s-preq.cc	2014-06-17 10:33:13.792996741 -0700
@@ -423,7 +423,8 @@
     {
       return false;
     }
-  if ((GetInformationFieldSize () + 11) > 255)
+  // -fstrict-overflow sensitive, see bug 1868
+  if ( GetInformationFieldSize () > 255 - 11 )
     {
       return false;
     }
@@ -432,7 +433,8 @@
 bool
 IePreq::IsFull () const
 {
-  return ((GetInformationFieldSize () + 11) > 255);
+  // -fstrict-overflow sensitive, see bug 1868
+  return ( GetInformationFieldSize () > 255 - 11 );
 }
 std::ostream &
 operator << (std::ostream &os, const IePreq &a)
diff -Naur ns-3.19/src/mesh/model/dot11s/peer-link.cc ns-3.20/src/mesh/model/dot11s/peer-link.cc
--- ns-3.19/src/mesh/model/dot11s/peer-link.cc	2014-06-17 10:34:00.438636662 -0700
+++ ns-3.20/src/mesh/model/dot11s/peer-link.cc	2014-06-17 10:33:13.794996726 -0700
@@ -31,8 +31,7 @@
 namespace ns3 {
 namespace dot11s {
 
-NS_OBJECT_ENSURE_REGISTERED ( PeerLink)
-  ;
+NS_OBJECT_ENSURE_REGISTERED ( PeerLink);
 
 TypeId
 PeerLink::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/dot11s/peer-link-frame.cc ns-3.20/src/mesh/model/dot11s/peer-link-frame.cc
--- ns-3.19/src/mesh/model/dot11s/peer-link-frame.cc	2014-06-17 10:34:00.437636669 -0700
+++ ns-3.20/src/mesh/model/dot11s/peer-link-frame.cc	2014-06-17 10:33:13.793996733 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 namespace dot11s {
-NS_OBJECT_ENSURE_REGISTERED (PeerLinkFrameStart)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PeerLinkFrameStart);
 
 PeerLinkFrameStart::PeerLinkFrameStart () :
   m_subtype (255), m_capability (0), m_aid (0), m_rates (SupportedRates ()), m_meshId (),
diff -Naur ns-3.19/src/mesh/model/dot11s/peer-management-protocol.cc ns-3.20/src/mesh/model/dot11s/peer-management-protocol.cc
--- ns-3.19/src/mesh/model/dot11s/peer-management-protocol.cc	2014-06-17 10:34:00.440636646 -0700
+++ ns-3.20/src/mesh/model/dot11s/peer-management-protocol.cc	2014-06-17 10:33:13.796996710 -0700
@@ -39,8 +39,7 @@
 /***************************************************
  * PeerManager
  ***************************************************/
-NS_OBJECT_ENSURE_REGISTERED (PeerManagementProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PeerManagementProtocol);
 
 TypeId
 PeerManagementProtocol::GetTypeId (void)
diff -Naur ns-3.19/src/mesh/model/flame/flame-header.cc ns-3.20/src/mesh/model/flame/flame-header.cc
--- ns-3.19/src/mesh/model/flame/flame-header.cc	2014-06-17 10:34:00.441636638 -0700
+++ ns-3.20/src/mesh/model/flame/flame-header.cc	2014-06-17 10:33:13.797996702 -0700
@@ -26,8 +26,7 @@
 namespace ns3 {
 namespace flame {
 
-NS_OBJECT_ENSURE_REGISTERED (FlameHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlameHeader);
 
 FlameHeader::FlameHeader () :
   m_cost (0), m_seqno (0), m_origDst (Mac48Address ()), m_origSrc (Mac48Address ())
diff -Naur ns-3.19/src/mesh/model/flame/flame-protocol.cc ns-3.20/src/mesh/model/flame/flame-protocol.cc
--- ns-3.19/src/mesh/model/flame/flame-protocol.cc	2014-06-17 10:34:00.442636631 -0700
+++ ns-3.20/src/mesh/model/flame/flame-protocol.cc	2014-06-17 10:33:13.798996695 -0700
@@ -38,10 +38,8 @@
 //-----------------------------------------------------------------------------
 // FlameTag
 //-----------------------------------------------------------------------------
-NS_OBJECT_ENSURE_REGISTERED (FlameTag)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (FlameProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlameTag);
+NS_OBJECT_ENSURE_REGISTERED (FlameProtocol);
 
 TypeId
 FlameTag::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/flame/flame-rtable.cc ns-3.20/src/mesh/model/flame/flame-rtable.cc
--- ns-3.19/src/mesh/model/flame/flame-rtable.cc	2014-06-17 10:34:00.443636623 -0700
+++ ns-3.20/src/mesh/model/flame/flame-rtable.cc	2014-06-17 10:33:13.799996687 -0700
@@ -28,8 +28,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("FlameRtable");
 
-NS_OBJECT_ENSURE_REGISTERED (FlameRtable)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlameRtable);
 
 TypeId
 FlameRtable::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/mesh-l2-routing-protocol.cc ns-3.20/src/mesh/model/mesh-l2-routing-protocol.cc
--- ns-3.19/src/mesh/model/mesh-l2-routing-protocol.cc	2014-06-17 10:34:00.444636615 -0700
+++ ns-3.20/src/mesh/model/mesh-l2-routing-protocol.cc	2014-06-17 10:33:13.801996672 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MeshL2RoutingProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MeshL2RoutingProtocol);
 
 TypeId
 MeshL2RoutingProtocol::GetTypeId (void)
diff -Naur ns-3.19/src/mesh/model/mesh-point-device.cc ns-3.20/src/mesh/model/mesh-point-device.cc
--- ns-3.19/src/mesh/model/mesh-point-device.cc	2014-06-17 10:34:00.445636607 -0700
+++ ns-3.20/src/mesh/model/mesh-point-device.cc	2014-06-17 10:33:13.802996664 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MeshPointDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MeshPointDevice);
 
 TypeId
 MeshPointDevice::GetTypeId ()
diff -Naur ns-3.19/src/mesh/model/mesh-wifi-interface-mac.cc ns-3.20/src/mesh/model/mesh-wifi-interface-mac.cc
--- ns-3.19/src/mesh/model/mesh-wifi-interface-mac.cc	2014-06-17 10:34:00.447636592 -0700
+++ ns-3.20/src/mesh/model/mesh-wifi-interface-mac.cc	2014-06-17 10:33:13.803996656 -0700
@@ -40,8 +40,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MeshWifiInterfaceMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MeshWifiInterfaceMac);
 
 TypeId
 MeshWifiInterfaceMac::GetTypeId ()
diff -Naur ns-3.19/src/mesh/test/dot11s/dot11s-test-suite.cc ns-3.20/src/mesh/test/dot11s/dot11s-test-suite.cc
--- ns-3.19/src/mesh/test/dot11s/dot11s-test-suite.cc	2014-06-17 10:34:00.448636584 -0700
+++ ns-3.20/src/mesh/test/dot11s/dot11s-test-suite.cc	2014-06-17 10:33:13.804996648 -0700
@@ -26,8 +26,8 @@
 #include "ns3/peer-link-frame.h"
 #include "ns3/ie-dot11s-peer-management.h"
 
-namespace ns3 {
-namespace dot11s {
+using namespace ns3;
+using namespace dot11s;
 
 /// Built-in self test for FlameHeader
 struct MeshHeaderTest : public TestCase
@@ -285,5 +285,3 @@
 }
 
 static Dot11sTestSuite g_dot11sTestSuite;
-}
-}
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap	2014-06-17 10:34:00.448636584 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap	2014-06-17 10:33:13.805996641 -0700
@@ -1,55 +1,55 @@
-ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7            ?   ?   Ѐ<                    E                                 ت  ?   ?   Ј<                    E                                   ?   ?   Ј<                    E                                   E   E   Ѐ            0   D%                               A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                @ J    $0H`l3         9 7          x        Ԁ               a  R   R   Ѐ<                P  J   $0H`l4mesh3         9 7          q        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                 Ԁ               JO A   A                 JO         $0H`l  4mesh        ) ?   ?   Ѐ<                `   E                                 + E   E   Ѐ            p   D%                             + ?   ?   Ѐ<                    E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - ?   ?   Ј<                   E                              u. E   E   Ѐ            0   D%              /               F   F                         $0H`l
- O4mesh        j A   A                j         $0H`l 4mesh         F   F                 ?         $0H`l
- 4mesh       JO A   A                          $0H`l @4mesh        F   F               0          $0H`l
- !4mesh       j A   A               0 2         $0H`l 4mesh         F   F               @          $0H`l
- 34mesh       JO A   A               @          $0H`l 4mesh       ve ?   ?   Ѐ<                   E                                vf E   E   Ѐ               D%                            f ?   ?   Ѐ<                @   E                                @g       Ԁ              g ?   ?   Ѐ<                   E                             vh E   E   Ѐ            P   D%              /             C ?   ?   Ѐ<                   E                                 E   E   Ѐ               D%                            > ?   ?   Ѐ<                `   E                                       Ԁ              u ?   ?   Ѐ<                   E                               E   E   Ѐ            p   D%              ,             4 ?   ?   Ј<                   E                              L   L                               
+ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7            ?   ?   Ѐ<                    E                                 ت  ?   ?   Ј<                    E                                   ?   ?   Ј<                    E                                   E   E   Ѐ            0   D%                               A   A               @ k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                P J    $0H`l3         9 7          x        Ԁ               a  R   R   Ѐ<                `  J   $0H`l4mesh3         9 7          q        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                 Ԁ               JO A   A                 JO         $0H`l  4mesh        ) ?   ?   Ѐ<                p   E                                 + E   E   Ѐ               D%                             + ?   ?   Ѐ<                0   E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - ?   ?   Ј<                   E                              u. E   E   Ѐ            @   D%              /               F   F                         $0H`l
+ O4mesh        j A   A               P j         $0H`l 4mesh         F   F                ?         $0H`l
+ 4mesh       JO A   A               `          $0H`l @4mesh        F   F                         $0H`l
+ !4mesh       j A   A               p 2         $0H`l 4mesh         F   F                         $0H`l
+ 34mesh       JO A   A                         $0H`l 4mesh       ve ?   ?   Ѐ<                   E                                vf E   E   Ѐ               D%                            f ?   ?   Ѐ<                   E                                @g       Ԁ              g ?   ?   Ѐ<                   E                             vh E   E   Ѐ               D%              /             C ?   ?   Ѐ<                  E                                 E   E   Ѐ               D%                            > ?   ?   Ѐ<                   E                                       Ԁ              u ?   ?   Ѐ<                0  E                               E   E   Ѐ               D%              ,             4 ?   ?   Ј<                0  E                              L   L          @                    
 
-        L   L   <                                       
+        L   L   <                                       
      
-       q       Ԁ               L   L                               
+       q       Ԁ               L   L                               
 
-        L   L   <                                      
+        L   L   <                P                     
      
-              Ԁ                     <                              E      @  
+              Ԁ                     <                `              E      @  
 
- 	 l                                                                                                                    Ԁ              > L   L                                
+ 	 l                                                                                                                    Ԁ              > L   L                                
 
-       j L   L                               
+       j L   L          p                    
 
-              Ԁ              | L   L   <                0                     
+              Ԁ              | L   L   <                                     
      
-              Ԁ                     <                                E      @  
+              Ԁ                     <                                E      @  
 
- 	 l                                                                                                             #       Ԁ              R       <                @              E      @  
+ 	 l                                                                                                             #       Ԁ              R       <                              E      @  
 
- 	 l                                                                                                              F   F               P #'         $0H`l
- c&4mesh       j A   A               P t'         $0H`l #'4mesh               Ԁ              F        <                P              E     @  
+ 	 l                                                                                                              F   F               #'         $0H`l
+ c&4mesh       j A   A               t'         $0H`l #'4mesh               Ԁ              F        <                              E     @  
 
- 	 l                                                                                                             V        Ԁ                      <                                E     @  
+ 	 l                                                                                                             V        Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ                      <                `              E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                               F   F               ` +.         $0H`l
- .u'4mesh       JO A   A               ` 
-/         $0H`l .4mesh              Ԁ                     <                p              E     @  
+ 	 l                                                                                                               F   F               +.         $0H`l
+ .u'4mesh       JO A   A               0
+/         $0H`l .4mesh              Ԁ                     <                              E     @  
 
- 	 l                                                                                                             &       Ԁ              }       <                                E     @  
+ 	 l                                                                                                             &       Ԁ              }       <                @               E     @  
 
- 	 l                                                                                                                    Ԁ              "       <                              E     @  
+ 	 l                                                                                                                    Ԁ              "       <                              E     @  
 
- 	 l                                                                                                              F   F               p Ke6         $0H`l
- 5/4mesh       j A   A               p *6         $0H`l e64mesh       w        Ԁ                      <                              E     @  
+ 	 l                                                                                                              F   F                Ke6         $0H`l
+ 5/4mesh       j A   A               P*6         $0H`l e64mesh       w        Ԁ                      <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                                E     @  
+ 	 l                                                                                                                     Ԁ                      <                `               E     @  
 
- 	 l                                                                                                             M        Ԁ                      <                              E     @  
+ 	 l                                                                                                             M        Ԁ                      <                               E     @  
 
- 	 l                                                                                                               F   F                k>         $0H`l
- F=64mesh       JO A   A                JX>         $0H`l >4mesh         ?   ?   Ѐ<                  E                                ! E   E   Ѐ              D%                            " ?   ?   Ѐ<                   E                                "       Ԁ              # ?   ?   Ѐ<                  E                             # E   E   Ѐ               D%                             ?   ?   Ѐ<                  E                                m ?   ?   Ј<                  E                                m E   E   Ѐ              D%              h               ?   ?   Ѐ<                  E                                       Ԁ               ?   ?   Ѐ<                   E                              E   E   Ѐ               D%                                   Ԁ                     <                              E     @  
+ 	 l                                                                                                               F   F               0k>         $0H`l
+ F=64mesh       JO A   A               pJX>         $0H`l >4mesh         ?   ?   Ѐ<                @  E                                ! E   E   Ѐ            P  D%                            " ?   ?   Ѐ<                  E                                "       Ԁ              # ?   ?   Ѐ<                `  E                             # E   E   Ѐ              D%                             ?   ?   Ѐ<                p  E                                m ?   ?   Ј<                p  E                                m E   E   Ѐ              D%              h               ?   ?   Ѐ<                  E                                       Ԁ               ?   ?   Ѐ<                  E                              E   E   Ѐ              D%                                   Ԁ                     <                              E     @  
 
- 	 l                                                                                                             &       Ԁ              }       <                0               E     @  
+ 	 l                                                                                                             &       Ԁ              }       <                               E     @  
 
- 	 l                                                                                                             m       Ԁ                     <                               E     @  
+ 	 l                                                                                                             m       Ԁ                     <                              E     @  
 
- 	 l                                                                                                              F   F                E         $0H`l
- DX>4mesh       j A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ 	 l                                                                                                              F   F               E         $0H`l
+ DX>4mesh       j A   A               jE         $0H`l E4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap	2014-06-17 10:34:00.449636577 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap	2014-06-17 10:33:13.806996633 -0700
@@ -1,94 +1,94 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                  J     $0H`l3          9 7          o?        Ԁ               N@  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          ^@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          mA        Ԁ               B        Ԁ               9C  P   P   Ѐ<                  J    $0H`l3         9 7          D  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          YE        Ԁ               h  E   E   Ѐ            @   D%                                  ?   ?   Ѐ<                    E                                 l  ?   ?   Ј<                    E                                         Ԁ               3  ?   ?   Ј<                    E                                 ܬ        Ԁ               +  E   E   Ѐ            0   D%                             4        Ԁ               k  A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                @ J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                P  J   $0H`l4mesh3         9 7                  Ԁ               C P   P   Ѐ<                 J     $0H`l3         9 7          S       Ԁ               O A   A                 JO         $0H`l  4mesh        5) E   E   Ѐ            P   D%                                W) ?   ?   Ѐ<                `   E                                  *       Ԁ               *       Ԁ               :+ E   E   Ѐ            p   D%                             <, ?   ?   Ѐ<                    E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               }- ?   ?   Ј<                   E                              &.       Ԁ               . E   E   Ѐ            0   D%              /               F   F                         $0H`l
-  ] 4mesh         F   F                         $0H`l
- O4mesh         A   A                j         $0H`l 4mesh       =  F   F                          $0H`l
- 4mesh       k  F   F                 ?         $0H`l
- 4mesh       O A   A                          $0H`l @4mesh        F   F               0           $0H`l
- @4mesh        F   F               0          $0H`l
- !4mesh        A   A               0 2         $0H`l 4mesh       =  F   F               @          $0H`l
- P4mesh       k  F   F               @          $0H`l
- 34mesh       O A   A               @          $0H`l 4mesh       d E   E   Ѐ            `   D%                               
-e ?   ?   Ѐ<                   E                                e       Ԁ              f E   E   Ѐ               D%                            g ?   ?   Ѐ<                @   E                                g       Ԁ              ~g ?   ?   Ѐ<                   E                             &h       Ԁ              h E   E   Ѐ            P   D%              /             j       Ԁ               E   E   Ѐ            p   D%                                ?   ?   Ѐ<                   E                                       Ԁ              Y       Ԁ               E   E   Ѐ               D%                             ?   ?   Ѐ<                `   E                                       Ԁ              	 ?   ?   Ѐ<                   E                             u E   E   Ѐ            p   D%              ,              ?   ?   Ј<                   E                             p       Ԁ              ަ L   L                               
+ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          o?        Ԁ               N@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ^@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          mA        Ԁ               B        Ԁ               9C  P   P   Ѐ<                0 J    $0H`l3         9 7          D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          YE        Ԁ               h  E   E   Ѐ            P   D%                                  ?   ?   Ѐ<                    E                                 l  ?   ?   Ј<                    E                                         Ԁ               3  ?   ?   Ј<                    E                                 ܬ        Ԁ               +  E   E   Ѐ            0   D%                             4        Ԁ               k  A   A               @ k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                P J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                `  J   $0H`l4mesh3         9 7                  Ԁ               C P   P   Ѐ<                 J     $0H`l3         9 7          S       Ԁ               O A   A                 JO         $0H`l  4mesh        5) E   E   Ѐ            `   D%                                W) ?   ?   Ѐ<                p   E                                  *       Ԁ               *       Ԁ               :+ E   E   Ѐ               D%                             <, ?   ?   Ѐ<                0   E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               }- ?   ?   Ј<                   E                              &.       Ԁ               . E   E   Ѐ            @   D%              /               F   F               p          $0H`l
+  ] 4mesh         F   F                         $0H`l
+ O4mesh         A   A               P j         $0H`l 4mesh       =  F   F                         $0H`l
+ 4mesh       k  F   F                ?         $0H`l
+ 4mesh       O A   A               `          $0H`l @4mesh        F   F                          $0H`l
+ @4mesh        F   F                         $0H`l
+ !4mesh        A   A               p 2         $0H`l 4mesh       =  F   F                         $0H`l
+ P4mesh       k  F   F                         $0H`l
+ 34mesh       O A   A                         $0H`l 4mesh       d E   E   Ѐ               D%                               
+e ?   ?   Ѐ<                   E                                e       Ԁ              f E   E   Ѐ               D%                            g ?   ?   Ѐ<                   E                                g       Ԁ              ~g ?   ?   Ѐ<                   E                             &h       Ԁ              h E   E   Ѐ               D%              /             j       Ԁ               E   E   Ѐ               D%                                ?   ?   Ѐ<                  E                                       Ԁ              Y       Ԁ               E   E   Ѐ               D%                             ?   ?   Ѐ<                   E                                       Ԁ              	 ?   ?   Ѐ<                0  E                             u E   E   Ѐ               D%              ,              ?   ?   Ј<                0  E                             p       Ԁ              ަ L   L                               
 
-       	 L   L                               
+       	 L   L          @                    
 
-       5 L   L   <                                       
+       5 L   L   <                                       
      
-       E       Ԁ               L   L                               
+       E       Ԁ               L   L                               
 
-       l L   L   <                                      
+       l L   L   <                P                     
      
-       (       Ԁ               L   L   <                                      
+       (       Ԁ               L   L   <                                      
      
-       L       Ԁ              {       <                               E      @  
+       L       Ԁ              {       <                               E      @  
 
- 	 l                                                                                                                    Ԁ                     <                              E      @  
+ 	 l                                                                                                                    Ԁ                     <                `              E      @  
 
- 	 l                                                                                                             "       Ԁ               L   L                                
+ 	 l                                                                                                             "       Ԁ               L   L                                
 
-        L   L                               
+        L   L          p                    
 
-        L   L                               
+        L   L                               
 
-              Ԁ               L   L   <                                      
+              Ԁ               L   L   <                                     
      
-              Ԁ               L   L   <                0                     
+              Ԁ               L   L   <                                     
      
-              Ԁ                     <                                E      @  
+              Ԁ                     <                                E      @  
 
- 	 l                                                                                                                    Ԁ              N       <                @              E      @  
+ 	 l                                                                                                                    Ԁ              N       <                              E      @  
 
- 	 l                                                                                                                    Ԁ                     <                               E      @  
+ 	 l                                                                                                                    Ԁ                     <                               E      @  
 
- 	 l                                                                                                              F   F               P 
+ 	 l                                                                                                              F   F               0
 c&         $0H`l
- 4mesh        F   F               P #'         $0H`l
- c&4mesh        A   A               P t'         $0H`l #'4mesh               Ԁ                      <                               E     @  
+ 4mesh        F   F               #'         $0H`l
+ c&4mesh        A   A               t'         $0H`l #'4mesh               Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              A        <                P              E     @  
+ 	 l                                                                                                                     Ԁ              A        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                                E     @  
+ 	 l                                                                                                                     Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ              {        <                `              E     @  
+ 	 l                                                                                                                     Ԁ              {        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              	        <                               E     @  
+ 	 l                                                                                                                     Ԁ              	        <                P              E     @  
 
- 	 l                                                                                                             =  F   F               ` *.         $0H`l
- #'&4mesh       k  F   F               ` +.         $0H`l
- .u'4mesh       O A   A               ` 
-/         $0H`l .4mesh       {       Ԁ                     <                               E     @  
+ 	 l                                                                                                             =  F   F               `*.         $0H`l
+ #'&4mesh       k  F   F               +.         $0H`l
+ .u'4mesh       O A   A               0
+/         $0H`l .4mesh       {       Ԁ                     <                p              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                p              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                             R       Ԁ                     <                                E     @  
+ 	 l                                                                                                             R       Ԁ                     <                @               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                             _       Ԁ                     <                              E     @  
+ 	 l                                                                                                             _       Ԁ                     <                              E     @  
 
- 	 l                                                                                                              F   F               p J5         $0H`l
- .4.4mesh        F   F               p Ke6         $0H`l
- 5/4mesh        A   A               p *6         $0H`l e64mesh               Ԁ              :        <                               E     @  
+ 	 l                                                                                                              F   F               J5         $0H`l
+ .4.4mesh        F   F                Ke6         $0H`l
+ 5/4mesh        A   A               P*6         $0H`l e64mesh               Ԁ              :        <                              E     @  
 
- 	 l                                                                                                             J        Ԁ                      <                              E     @  
+ 	 l                                                                                                             J        Ԁ                      <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                                E     @  
+ 	 l                                                                                                                     Ԁ                      <                `               E     @  
 
- 	 l                                                                                                             !        Ԁ                      <                              E     @  
+ 	 l                                                                                                             !        Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              9	        <                0              E     @  
+ 	 l                                                                                                                     Ԁ              9	        <                              E     @  
 
- 	 l                                                                                                             =  F   F                jF=         $0H`l
- e654mesh       k  F   F                k>         $0H`l
- F=64mesh       O A   A                JX>         $0H`l >4mesh       h  E   E   Ѐ            @  D%                                 ?   ?   Ѐ<                  E                                2!       Ԁ              ! E   E   Ѐ              D%                            h" ?   ?   Ѐ<                   E                                x"       Ԁ              " ?   ?   Ѐ<                  E                             S#       Ԁ              &       Ԁ              5 E   E   Ѐ            P  D%                               W ?   ?   Ѐ<                  E                                 ?   ?   Ј<                  E                                       Ԁ               E   E   Ѐ              D%              h              ߢ ?   ?   Ѐ<                  E                                       Ԁ              > ?   ?   Ѐ<                   E                             ˣ       Ԁ               E   E   Ѐ               D%                                   Ԁ              {       Ԁ                     <                `              E     @  
+ 	 l                                                                                                             =  F   F               jF=         $0H`l
+ e654mesh       k  F   F               0k>         $0H`l
+ F=64mesh       O A   A               pJX>         $0H`l >4mesh       h  E   E   Ѐ              D%                                 ?   ?   Ѐ<                @  E                                2!       Ԁ              ! E   E   Ѐ            P  D%                            h" ?   ?   Ѐ<                  E                                x"       Ԁ              " ?   ?   Ѐ<                `  E                             S#       Ԁ              &       Ԁ              5 E   E   Ѐ              D%                               W ?   ?   Ѐ<                p  E                                 ?   ?   Ј<                p  E                                       Ԁ               E   E   Ѐ              D%              h              ߢ ?   ?   Ѐ<                  E                                       Ԁ              > ?   ?   Ѐ<                  E                             ˣ       Ԁ               E   E   Ѐ              D%                                   Ԁ              {       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                             R       Ԁ              1       <                0               E     @  
+ 	 l                                                                                                             R       Ԁ              1       <                               E     @  
 
- 	 l                                                                                                             A       Ԁ                     <                               E     @  
+ 	 l                                                                                                             A       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             Ѩ       Ԁ                      <                p              E     @  
+ 	 l                                                                                                             Ѩ       Ԁ                      <                               E     @  
 
- 	 l                                                                                                              F   F                D         $0H`l
- >v=4mesh        F   F                E         $0H`l
- DX>4mesh        A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ 	 l                                                                                                              F   F               D         $0H`l
+ >v=4mesh        F   F               E         $0H`l
+ DX>4mesh        A   A               jE         $0H`l E4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap	2014-06-17 10:34:00.450636569 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap	2014-06-17 10:33:13.807996625 -0700
@@ -1,116 +1,116 @@
-ò            i         R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                       Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                  J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7          AA        Ԁ               VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          fB        Ԁ               B  P   P   Ѐ<                  J    $0H`l3         9 7          uC        Ԁ               C  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          -E        Ԁ               ]  F   F                 ]          $0H`l
-  = 4mesh          E   E   Ѐ            @   D%                                  ?   ?   Ј<                @   E                                         Ԁ                 ?   ?   Ј<                    E                                         Ԁ                 E   E   Ѐ            0   D%                             j        Ԁ                 ?   ?   Ѐ<                `   E                                      Ԁ                 A   A                 k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                @ J    $0H`l3         9 7          a  R   R   Ѐ<                P  J   $0H`l4mesh3         9 7                 Ԁ               ( E   E   Ѐ            P   D%                                ) ?   ?   Ѐ<                `   E                                 )       Ԁ               * ?   ?   Ј<                p   E                                 *       Ԁ               + E   E   Ѐ               D%                             y,       Ԁ               - ?   ?   Ѐ<                   E                              -       Ԁ               - ?   ?   Ј<                   E                              -       Ԁ                F   F                         $0H`l
-  ] 4mesh         F   F                1         $0H`l
- 4mesh         F   F                         $0H`l
- O4mesh       j=  F   F                          $0H`l
- 4mesh       m  F   F                 Q         $0H`l
- U4mesh         F   F                 ?         $0H`l
- 4mesh        F   F               0           $0H`l
- @4mesh        F   F               0 qP         $0H`l
- !4mesh        F   F               0          $0H`l
- !4mesh       j=  F   F               @          $0H`l
- P4mesh       m  F   F               @          $0H`l
- 4mesh         F   F               @          $0H`l
- 34mesh       sd E   E   Ѐ            `   D%                               ve ?   ?   Ѐ<                   E                                e       Ԁ              vf E   E   Ѐ               D%                            g ?   ?   Ј<                   E                                /g       Ԁ              g ?   ?   Ѐ<                   E                             g       Ԁ              h E   E   Ѐ               D%                            i       Ԁ              Bj ?   ?   Ѐ<                   E                             Rj       Ԁ              A E   E   Ѐ            p   D%                               C ?   ?   Ѐ<                   E                                S       Ԁ               ?   ?   Ј<                   E                                ,       Ԁ                     Ԁ              N ?   ?   Ј<                   E                             ^       Ԁ              4 ?   ?   Ј<                   E                             D       Ԁ              3 L   L                               
+ò            i         R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                       Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                 J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7          AA        Ԁ               VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          fB        Ԁ               B  P   P   Ѐ<                0 J    $0H`l3         9 7          uC        Ԁ               C  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          -E        Ԁ               ]  F   F               @ ]          $0H`l
+  = 4mesh          E   E   Ѐ            P   D%                                  ?   ?   Ј<                P   E                                         Ԁ                 ?   ?   Ј<                    E                                         Ԁ                 E   E   Ѐ            0   D%                             j        Ԁ                 ?   ?   Ѐ<                p   E                                      Ԁ                 A   A               @ k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                P J    $0H`l3         9 7          a  R   R   Ѐ<                `  J   $0H`l4mesh3         9 7                 Ԁ               ( E   E   Ѐ            `   D%                                ) ?   ?   Ѐ<                p   E                                 )       Ԁ               * ?   ?   Ј<                   E                                 *       Ԁ               + E   E   Ѐ               D%                             y,       Ԁ               - ?   ?   Ѐ<                   E                              -       Ԁ               - ?   ?   Ј<                   E                              -       Ԁ                F   F               p          $0H`l
+  ] 4mesh         F   F                1         $0H`l
+ 4mesh         F   F                         $0H`l
+ O4mesh       j=  F   F                         $0H`l
+ 4mesh       m  F   F                Q         $0H`l
+ U4mesh         F   F                ?         $0H`l
+ 4mesh        F   F                          $0H`l
+ @4mesh        F   F                qP         $0H`l
+ !4mesh        F   F                         $0H`l
+ !4mesh       j=  F   F                         $0H`l
+ P4mesh       m  F   F                         $0H`l
+ 4mesh         F   F                         $0H`l
+ 34mesh       sd E   E   Ѐ               D%                               ve ?   ?   Ѐ<                   E                                e       Ԁ              vf E   E   Ѐ               D%                            g ?   ?   Ј<                   E                                /g       Ԁ              g ?   ?   Ѐ<                   E                             g       Ԁ              h E   E   Ѐ               D%                            i       Ԁ              Bj ?   ?   Ѐ<                  E                             Rj       Ԁ              A E   E   Ѐ               D%                               C ?   ?   Ѐ<                  E                                S       Ԁ               ?   ?   Ј<                   E                                ,       Ԁ                     Ԁ              N ?   ?   Ј<                @  E                             ^       Ԁ              4 ?   ?   Ј<                0  E                             D       Ԁ              3 L   L          P                    
 
-       ^ L   L                               
+       ^ L   L                               
 
-        L   L                               
+        L   L          @                    
 
-       q       Ԁ               L   L   <                                      
+       q       Ԁ               L   L   <                P                     
      
-              Ԁ               L   L   <                                      
+              Ԁ               L   L   <                                      
      
-       X       Ԁ               L   L   <                                     
+       X       Ԁ               L   L   <                `                     
      
-              Ԁ                     <                               E      @  
+              Ԁ                     <                p              E      @  
 
- 	 l                                                                                                                    Ԁ              v       <                               E      @  
+ 	 l                                                                                                                    Ԁ              v       <                               E      @  
 
- 	 l                                                                                                                    Ԁ                     <                              E      @  
+ 	 l                                                                                                                    Ԁ                     <                `              E      @  
 
- 	 l                                                                                                             j L   L                               
+ 	 l                                                                                                             j L   L          p                    
 
-        L   L                               
+        L   L                               
 
-        L   L          0                    
+        L   L                              
 
-              Ԁ              \ L   L   <                @                     
+              Ԁ              \ L   L   <                                     
      
-       l       Ԁ               L   L   <                                      
+       l       Ԁ               L   L   <                                     
      
-              Ԁ              | L   L   <                0                     
+              Ԁ              | L   L   <                                     
      
-       #       Ԁ              R       <                @              E      @  
+       #       Ԁ              R       <                              E      @  
 
- 	 l                                                                                                             b       Ԁ                     <                               E      @  
+ 	 l                                                                                                             b       Ԁ                     <                               E      @  
 
- 	 l                                                                                                             '       Ԁ              V       <                P              E      @  
+ 	 l                                                                                                             '       Ԁ              V       <                              E      @  
 
- 	 l                                                                                                              F   F               P 
+ 	 l                                                                                                              F   F               0
 c&         $0H`l
- 4mesh        F   F               P &         $0H`l
- 8&c&4mesh        F   F               P #'         $0H`l
- c&4mesh       @        Ԁ              o        <                `              E     @  
+ 4mesh        F   F               &         $0H`l
+ 8&c&4mesh        F   F               #'         $0H`l
+ c&4mesh       @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              F        <                P              E     @  
+ 	 l                                                                                                                     Ԁ              F        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                `              E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                P              E     @  
 
  	 l                                                                                                             0
-        Ԁ              _        <                p              E     @  
+        Ԁ              _        <                              E     @  
 
- 	 l                                                                                                             j=  F   F               ` *.         $0H`l
- #'&4mesh       m  F   F               ` 3.         $0H`l
- -.4mesh         F   F               ` +.         $0H`l
- .u'4mesh       `       Ԁ              ?       <                              E     @  
+ 	 l                                                                                                             j=  F   F               `*.         $0H`l
+ #'&4mesh       m  F   F               3.         $0H`l
+ -.4mesh         F   F               +.         $0H`l
+ .u'4mesh       `       Ԁ              ?       <                              E     @  
 
- 	 l                                                                                                             O       Ԁ                     <                               E     @  
+ 	 l                                                                                                             O       Ԁ                     <                p              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                p              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ              "       <                              E     @  
+ 	 l                                                                                                                    Ԁ              "       <                              E     @  
 
- 	 l                                                                                                             2       Ԁ                     <                              E     @  
+ 	 l                                                                                                             2       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                              F   F               p J5         $0H`l
- .4.4mesh        F   F               p 5         $0H`l
- z554mesh        F   F               p Ke6         $0H`l
- 5/4mesh                Ԁ                      <                              E     @  
+ 	 l                                                                                                              F   F               J5         $0H`l
+ .4.4mesh        F   F               5         $0H`l
+ z554mesh        F   F                Ke6         $0H`l
+ 5/4mesh                Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              6        <                               E     @  
+ 	 l                                                                                                                     Ԁ              6        <                              E     @  
 
- 	 l                                                                                                             w        Ԁ                      <                              E     @  
+ 	 l                                                                                                             w        Ԁ                      <                              E     @  
 
- 	 l                                                                                                             M        Ԁ                      <                              E     @  
+ 	 l                                                                                                             M        Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              4        <                0              E     @  
+ 	 l                                                                                                                     Ԁ              4        <                              E     @  
 
  	 l                                                                                                             u	        Ԁ              
-        <                              E     @  
+        <                0              E     @  
 
- 	 l                                                                                                             j=  F   F                jF=         $0H`l
- e654mesh       m  F   F                v=         $0H`l
- =F=4mesh         F   F                k>         $0H`l
- F=64mesh        E   E   Ѐ            @  D%                                 ?   ?   Ѐ<                  E                                !       Ԁ              "       Ԁ              # ?   ?   Ѐ<                  E                             &#       Ԁ              # ?   ?   Ј<                  E                                #       Ԁ              V% E   E   Ѐ              D%              p              &       Ԁ              & ?   ?   Ѐ<                  E                             &       Ԁ               E   E   Ѐ            P  D%                               m ?   ?   Ј<                  E                                }       Ԁ              m E   E   Ѐ              D%              h                     Ԁ               ?   ?   Ѐ<                   E                                    Ԁ              v ?   ?   Ј<                  E                                       Ԁ              \ ?   ?   Ѐ<                  E                             l       Ԁ                     Ԁ              ?       <                               E     @  
+ 	 l                                                                                                             j=  F   F               jF=         $0H`l
+ e654mesh       m  F   F               @v=         $0H`l
+ =F=4mesh         F   F               0k>         $0H`l
+ F=64mesh        E   E   Ѐ              D%                                 ?   ?   Ѐ<                @  E                                !       Ԁ              "       Ԁ              # ?   ?   Ѐ<                `  E                             &#       Ԁ              # ?   ?   Ј<                P  E                                #       Ԁ              V% E   E   Ѐ            `  D%              p              &       Ԁ              & ?   ?   Ѐ<                p  E                             &       Ԁ               E   E   Ѐ              D%                               m ?   ?   Ј<                p  E                                }       Ԁ              m E   E   Ѐ              D%              h                     Ԁ               ?   ?   Ѐ<                  E                                    Ԁ              v ?   ?   Ј<                  E                                       Ԁ              \ ?   ?   Ѐ<                  E                             l       Ԁ                     Ԁ              ?       <                              E     @  
 
- 	 l                                                                                                             O       Ԁ                     <                `              E     @  
+ 	 l                                                                                                             O       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                             m       Ԁ                     <                               E     @  
+ 	 l                                                                                                             m       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                p              E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             <       Ԁ              k       <                0              E     @  
+ 	 l                                                                                                             <       Ԁ              k       <                              E     @  
 
- 	 l                                                                                                              F   F                D         $0H`l
- >v=4mesh        F   F                1E         $0H`l
- DD4mesh        F   F                E         $0H`l
+ 	 l                                                                                                              F   F               D         $0H`l
+ >v=4mesh        F   F               1E         $0H`l
+ DD4mesh        F   F               E         $0H`l
  DX>4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap	2014-06-17 10:34:00.451636561 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap	2014-06-17 10:33:13.807996625 -0700
@@ -1,98 +1,98 @@
-ò            i         <   <                           $0H`l 4mesh        0  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                  J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >        Ԁ               _?  P   P   Ѐ<                  J     $0H`l3          9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          mA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B        Ԁ               9C  P   P   Ѐ<                  J    $0H`l3         9 7          IC        Ԁ               D  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          /D        Ԁ               D  P   P   Ѐ<                0 J    $0H`l3         9 7          YE        Ԁ               ]  F   F                 ]          $0H`l
-  = 4mesh        h  E   E   Ѐ            @   D%                                  ?   ?   Ѐ<                @   E                                 l  ?   ?   Ј<                @   E                                 E  ?   ?   Ј<                @   E                                         Ԁ               ܬ        Ԁ               +  E   E   Ѐ            P   D%                             .  ?   ?   Ѐ<                    E                                 >        Ԁ                 ?   ?   Ѐ<                `   E                              4        Ԁ                 E   E   Ѐ            0   D%              .              5) E   E   Ѐ            P   D%                                W) ?   ?   Ѐ<                p   E                                  *       Ԁ               B* ?   ?   Ј<                p   E                                 *       Ԁ               :+ E   E   Ѐ               D%                             <, ?   ?   Ѐ<                @   E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               . E   E   Ѐ            P   D%              0              6 A   A                Ƴ         $0H`l ] 4mesh         F   F                         $0H`l
-  ] 4mesh        1 F   F                1         $0H`l
- 4mesh         A   A                 T         $0H`l 4mesh       =  F   F                          $0H`l
- 4mesh       m  F   F                 Q         $0H`l
- U4mesh       6 A   A               0          $0H`l 4mesh        F   F               0           $0H`l
- @4mesh       1 F   F               0 qP         $0H`l
- !4mesh         A   A               @ &         $0H`l P4mesh       =  F   F               @          $0H`l
- P4mesh       m  F   F               @          $0H`l
- 4mesh       d E   E   Ѐ            `   D%                               
-e ?   ?   Ѐ<                   E                                e       Ԁ              f ?   ?   Ј<                   E                                \g       Ԁ              &h       Ԁ              uh E   E   Ѐ               D%                            xi ?   ?   Ѐ<                `   E                                i       Ԁ              i ?   ?   Ѐ<                   E                             j       Ԁ              Bk E   E   Ѐ            p   D%              8              E   E   Ѐ            p   D%                                ?   ?   Ѐ<                   E                                       Ԁ               ?   ?   Ј<                   E                                Y       Ԁ               E   E   Ѐ               D%                            ?   ?   Ѐ<                   E                                       Ԁ              	 ?   ?   Ѐ<                   E                              ?   ?   Ј<                   E                                    Ԁ              N E   E   Ѐ               D%                            L   L                                
+ò            i         <   <                           $0H`l 4mesh        0  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          mA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B        Ԁ               9C  P   P   Ѐ<                0 J    $0H`l3         9 7          IC        Ԁ               D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          /D        Ԁ               D  P   P   Ѐ<                0 J    $0H`l3         9 7          YE        Ԁ               ]  F   F               @ ]          $0H`l
+  = 4mesh        h  E   E   Ѐ            P   D%                                  ?   ?   Ѐ<                P   E                                 l  ?   ?   Ј<                P   E                                 E  ?   ?   Ј<                P   E                                         Ԁ               ܬ        Ԁ               +  E   E   Ѐ            `   D%                             .  ?   ?   Ѐ<                0   E                                 >        Ԁ                 ?   ?   Ѐ<                p   E                              4        Ԁ                 E   E   Ѐ            @   D%              .              5) E   E   Ѐ            `   D%                                W) ?   ?   Ѐ<                   E                                  *       Ԁ               B* ?   ?   Ј<                   E                                 *       Ԁ               :+ E   E   Ѐ               D%                             <, ?   ?   Ѐ<                P   E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               . E   E   Ѐ            `   D%              0              6 A   A               p Ƴ         $0H`l ] 4mesh         F   F               p          $0H`l
+  ] 4mesh        1 F   F                1         $0H`l
+ 4mesh         A   A                T         $0H`l 4mesh       =  F   F                         $0H`l
+ 4mesh       m  F   F                Q         $0H`l
+ U4mesh       6 A   A                         $0H`l 4mesh        F   F                          $0H`l
+ @4mesh       1 F   F                qP         $0H`l
+ !4mesh         A   A                &         $0H`l P4mesh       =  F   F                         $0H`l
+ P4mesh       m  F   F                         $0H`l
+ 4mesh       d E   E   Ѐ               D%                               
+e ?   ?   Ѐ<                   E                                e       Ԁ              f ?   ?   Ј<                   E                                \g       Ԁ              &h       Ԁ              uh E   E   Ѐ               D%                            xi ?   ?   Ѐ<                   E                                i       Ԁ              i ?   ?   Ѐ<                  E                             j       Ԁ              Bk E   E   Ѐ               D%              8              E   E   Ѐ               D%                                ?   ?   Ѐ<                   E                                       Ԁ               ?   ?   Ј<                   E                                Y       Ԁ               E   E   Ѐ            0  D%                            ?   ?   Ѐ<                   E                                       Ԁ              	 ?   ?   Ѐ<                @  E                              ?   ?   Ј<                @  E                                    Ԁ              N E   E   Ѐ               D%                            L   L                                
 
-        L   L                               
+        L   L          P                    
 
-       ަ L   L                               
+       ަ L   L                               
 
-       (       Ԁ               L   L   <                                      
+       (       Ԁ               L   L   <                                      
      
-       +       Ԁ               L   L   <                                     
+       +       Ԁ               L   L   <                `                     
      
-       ?       Ԁ              n       <                                E      @  
+       ?       Ԁ              n       <                                E      @  
 
- 	 l                                                                                                             ~       Ԁ                     <                               E      @  
+ 	 l                                                                                                             ~       Ԁ                     <                p              E      @  
 
- 	 l                                                                                                             L       Ԁ              {       <                               E      @  
+ 	 l                                                                                                             L       Ԁ              {       <                               E      @  
 
- 	 l                                                                                                             6 A   A               P F8&         $0H`l 4mesh        L   L                               
+ 	 l                                                                                                             6 A   A               F8&         $0H`l 4mesh        L   L                               
 
-       @ L   L          0                    
+       @ L   L                              
 
-       l L   L   <                                       
+       l L   L   <                                       
      
-       |       Ԁ               L   L   <                @                     
+       |       Ԁ               L   L   <                                     
      
-              Ԁ               L   L   <                                      
+              Ԁ               L   L   <                                     
      
-       R L   L                               
+       R L   L          0                    
 
-              Ԁ                     <                               E      @  
+              Ԁ                     <                               E      @  
 
- 	 l                                                                                                                    Ԁ              R       <                P              E      @  
+ 	 l                                                                                                                    Ԁ              R       <                              E      @  
 
- 	 l                                                                                                                    Ԁ               F   F               P 
+ 	 l                                                                                                                    Ԁ               F   F               0
 c&         $0H`l
- 4mesh       1 F   F               P &         $0H`l
- 8&c&4mesh               <                                E     @  
+ 4mesh       1 F   F               &         $0H`l
+ 8&c&4mesh               <                @               E     @  
 
- 	 l                                                                                                                     Ԁ              k        <                `              E     @  
+ 	 l                                                                                                                     Ԁ              k        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              	        <                               E     @  
+ 	 l                                                                                                                     Ԁ              	        <                P              E     @  
 
  	 l                                                                                                             
         Ԁ              [
-        <                p              E     @  
+        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                A   A               ` f-         $0H`l &4mesh       =  F   F               ` *.         $0H`l
- #'&4mesh       m  F   F               ` 3.         $0H`l
- -.4mesh       $       <                                E     @  
+ 	 l                                                                                                                     Ԁ                A   A               Pf-         $0H`l &4mesh       =  F   F               `*.         $0H`l
+ #'&4mesh       m  F   F               3.         $0H`l
+ -.4mesh       $       <                `               E     @  
 
- 	 l                                                                                                             4       Ԁ                     <                              E     @  
+ 	 l                                                                                                             4       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             {       Ԁ                     <                               E     @  
+ 	 l                                                                                                             {       Ԁ                     <                p              E     @  
 
- 	 l                                                                                                             _       Ԁ                     <                              E     @  
+ 	 l                                                                                                             _       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             P       Ԁ              6 A   A               p z5         $0H`l 4.4mesh        F   F               p J5         $0H`l
- .4.4mesh       1 F   F               p 5         $0H`l
- z554mesh                <                                E     @  
+ 	 l                                                                                                             P       Ԁ              6 A   A               pz5         $0H`l 4.4mesh        F   F               J5         $0H`l
+ .4.4mesh       1 F   F               5         $0H`l
+ z554mesh                <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                              E     @  
+ 	 l                                                                                                                      Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              :        <                               E     @  
+ 	 l                                                                                                                     Ԁ              :        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              9	        <                0              E     @  
+ 	 l                                                                                                                     Ԁ              9	        <                              E     @  
 
- 	 l                                                                                                             I	        Ԁ              	        <                              E     @  
+ 	 l                                                                                                             I	        Ԁ              	        <                0              E     @  
 
  	 l                                                                                                             
-        Ԁ                A   A                =         $0H`l 54mesh       =  F   F                jF=         $0H`l
- e654mesh       m  F   F                v=         $0H`l
- =F=4mesh       h  E   E   Ѐ            @  D%                                 ?   ?   Ѐ<                  E                                2!       Ԁ              ! ?   ?   Ј<                  E                                S#       Ԁ              ~# ?   ?   Ј<                  E                                &$       Ԁ              $ E   E   Ѐ              D%              p              % ?   ?   Ѐ<                  E                                %       Ԁ              && ?   ?   Ѐ<                  E                             &       Ԁ              ' E   E   Ѐ               D%                            5 E   E   Ѐ            P  D%                               W ?   ?   Ѐ<                  E                                       Ԁ               E   E   Ѐ               D%                            ߢ ?   ?   Ѐ<                0  E                                       Ԁ              ߣ E   E   Ѐ            @  D%                           
- ?   ?   Ј<                  E                                       Ԁ               ?   ?   Ѐ<                  E                                    Ԁ              ԡ       <                P               E     @  
+        Ԁ                A   A               =         $0H`l 54mesh       =  F   F               jF=         $0H`l
+ e654mesh       m  F   F               @v=         $0H`l
+ =F=4mesh       h  E   E   Ѐ              D%                                 ?   ?   Ѐ<                P  E                                2!       Ԁ              ! ?   ?   Ј<                P  E                                S#       Ԁ              ~# ?   ?   Ј<                P  E                                &$       Ԁ              $ E   E   Ѐ            `  D%              p              % ?   ?   Ѐ<                  E                                %       Ԁ              && ?   ?   Ѐ<                p  E                             &       Ԁ              ' E   E   Ѐ              D%                            5 E   E   Ѐ              D%                               W ?   ?   Ѐ<                  E                                       Ԁ               E   E   Ѐ              D%                            ߢ ?   ?   Ѐ<                  E                                       Ԁ              ߣ E   E   Ѐ              D%                           
+ ?   ?   Ј<                  E                                       Ԁ               ?   ?   Ѐ<                  E                                    Ԁ              ԡ       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              ;       <                               E     @  
+ 	 l                                                                                                                    Ԁ              ;       <                              E     @  
 
- 	 l                                                                                                             {       Ԁ                     <                `              E     @  
+ 	 l                                                                                                             {       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             Ѩ       Ԁ                      <                p              E     @  
+ 	 l                                                                                                             Ѩ       Ԁ                      <                               E     @  
 
- 	 l                                                                                                                    Ԁ              g       <                0              E     @  
+ 	 l                                                                                                                    Ԁ              g       <                              E     @  
 
- 	 l                                                                                                                    Ԁ              6 A   A                ƼD         $0H`l v=4mesh        F   F                D         $0H`l
- >v=4mesh       1 F   F                1E         $0H`l
+ 	 l                                                                                                                    Ԁ              6 A   A               ƼD         $0H`l v=4mesh        F   F               D         $0H`l
+ >v=4mesh       1 F   F               1E         $0H`l
  DD4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap	2014-06-17 10:34:00.451636561 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap	2014-06-17 10:33:13.808996618 -0700
@@ -1,58 +1,58 @@
-ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                  J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7                  Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               |>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          O@  R   R   Ј<                   J   $0H`l4mesh3         9 7          VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          uC        Ԁ               \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          ]  F   F                 ]          $0H`l
-  = 4mesh          ?   ?   Ѐ<                @   E                                 ت  ?   ?   Ј<                @   E                                   ?   ?   Ј<                @   E                                   E   E   Ѐ            P   D%                               ?   ?   Ѐ<                    E                                 j        Ԁ                 ?   ?   Ѐ<                `   E                                E   E   Ѐ            0   D%              .              ) ?   ?   Ѐ<                p   E                                 * ?   ?   Ј<                p   E                                 + E   E   Ѐ               D%                             + ?   ?   Ѐ<                @   E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - E   E   Ѐ            P   D%              0              Ƴ A   A                Ƴ         $0H`l ] 4mesh         F   F                1         $0H`l
- 4mesh         A   A                 T         $0H`l 4mesh       m  F   F                 Q         $0H`l
- U4mesh       Ƴ A   A               0          $0H`l 4mesh        F   F               0 qP         $0H`l
- !4mesh         A   A               @ &         $0H`l P4mesh       m  F   F               @          $0H`l
- 4mesh       ve ?   ?   Ѐ<                   E                                g ?   ?   Ј<                   E                                h E   E   Ѐ               D%                            i ?   ?   Ѐ<                `   E                                i       Ԁ              Bj ?   ?   Ѐ<                   E                             j E   E   Ѐ            p   D%              8             C ?   ?   Ѐ<                   E                                 ?   ?   Ј<                   E                                 E   E   Ѐ               D%                           > ?   ?   Ѐ<                   E                                       Ԁ              u ?   ?   Ѐ<                   E                             N ?   ?   Ј<                   E                              E   E   Ѐ               D%                            L   L                                
+ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               |>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          O@  R   R   Ј<                   J   $0H`l4mesh3         9 7          VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          uC        Ԁ               \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          ]  F   F               @ ]          $0H`l
+  = 4mesh          ?   ?   Ѐ<                P   E                                 ت  ?   ?   Ј<                P   E                                   ?   ?   Ј<                P   E                                   E   E   Ѐ            `   D%                               ?   ?   Ѐ<                0   E                                 j        Ԁ                 ?   ?   Ѐ<                p   E                                E   E   Ѐ            @   D%              .              ) ?   ?   Ѐ<                   E                                 * ?   ?   Ј<                   E                                 + E   E   Ѐ               D%                             + ?   ?   Ѐ<                P   E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - E   E   Ѐ            `   D%              0              Ƴ A   A               p Ƴ         $0H`l ] 4mesh         F   F                1         $0H`l
+ 4mesh         A   A                T         $0H`l 4mesh       m  F   F                Q         $0H`l
+ U4mesh       Ƴ A   A                         $0H`l 4mesh        F   F                qP         $0H`l
+ !4mesh         A   A                &         $0H`l P4mesh       m  F   F                         $0H`l
+ 4mesh       ve ?   ?   Ѐ<                   E                                g ?   ?   Ј<                   E                                h E   E   Ѐ               D%                            i ?   ?   Ѐ<                   E                                i       Ԁ              Bj ?   ?   Ѐ<                  E                             j E   E   Ѐ               D%              8             C ?   ?   Ѐ<                   E                                 ?   ?   Ј<                   E                                 E   E   Ѐ            0  D%                           > ?   ?   Ѐ<                   E                                       Ԁ              u ?   ?   Ѐ<                @  E                             N ?   ?   Ј<                @  E                              E   E   Ѐ               D%                            L   L                                
 
-       3 L   L                               
+       3 L   L          P                    
 
-       X       Ԁ               L   L   <                                     
+       X       Ԁ               L   L   <                `                     
      
-              Ԁ              j       <                                E      @  
+              Ԁ              j       <                                E      @  
 
- 	 l                                                                                                                    Ԁ                     <                               E      @  
+ 	 l                                                                                                                    Ԁ                     <                p              E      @  
 
- 	 l                                                                                                             Ƴ A   A               P F8&         $0H`l 4mesh        L   L          0                    
+ 	 l                                                                                                             Ƴ A   A               F8&         $0H`l 4mesh        L   L                              
 
-        L   L   <                                       
+        L   L   <                                       
      
-              Ԁ              \ L   L   <                @                     
+              Ԁ              \ L   L   <                                     
      
-        L   L                               
+        L   L          0                    
 
-       '       Ԁ              V       <                P              E      @  
+       '       Ԁ              V       <                              E      @  
 
- 	 l                                                                                                             f       Ԁ               F   F               P &         $0H`l
- 8&c&4mesh                 <                                E     @  
+ 	 l                                                                                                             f       Ԁ               F   F               &         $0H`l
+ 8&c&4mesh                 <                @               E     @  
 
- 	 l                                                                                                             @        Ԁ              o        <                `              E     @  
+ 	 l                                                                                                             @        Ԁ              o        <                              E     @  
 
  	 l                                                                                                             0
-        Ԁ              _        <                p              E     @  
+        Ԁ              _        <                              E     @  
 
- 	 l                                                                                                             o        Ԁ                A   A               ` f-         $0H`l &4mesh       m  F   F               ` 3.         $0H`l
- -.4mesh               <                                E     @  
+ 	 l                                                                                                             o        Ԁ                A   A               Pf-         $0H`l &4mesh       m  F   F               3.         $0H`l
+ -.4mesh               <                `               E     @  
 
- 	 l                                                                                                             `       Ԁ              ?       <                              E     @  
+ 	 l                                                                                                             `       Ԁ              ?       <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             $       Ԁ              Ƴ A   A               p z5         $0H`l 4.4mesh        F   F               p 5         $0H`l
- z554mesh                 <                                E     @  
+ 	 l                                                                                                             $       Ԁ              Ƴ A   A               pz5         $0H`l 4.4mesh        F   F               5         $0H`l
+ z554mesh                 <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                              E     @  
+ 	 l                                                                                                                      Ԁ                      <                               E     @  
 
  	 l                                                                                                             u	        Ԁ              
-        <                              E     @  
+        <                0              E     @  
 
  	 l                                                                                                             
-        Ԁ                A   A                =         $0H`l 54mesh       m  F   F                v=         $0H`l
- =F=4mesh         ?   ?   Ѐ<                  E                                ! ?   ?   Ј<                  E                                # ?   ?   Ј<                  E                                V% E   E   Ѐ              D%              p              x% ?   ?   Ѐ<                  E                                &       Ԁ              & ?   ?   Ѐ<                  E                             ' E   E   Ѐ               D%                            à ?   ?   Ѐ<                  E                                m E   E   Ѐ               D%                             ?   ?   Ѐ<                0  E                                       Ԁ              k E   E   Ѐ            @  D%                           v ?   ?   Ј<                  E                                \ ?   ?   Ѐ<                  E                                     <                P               E     @  
+        Ԁ                A   A               =         $0H`l 54mesh       m  F   F               @v=         $0H`l
+ =F=4mesh         ?   ?   Ѐ<                P  E                                ! ?   ?   Ј<                P  E                                # ?   ?   Ј<                P  E                                V% E   E   Ѐ            `  D%              p              x% ?   ?   Ѐ<                  E                                &       Ԁ              & ?   ?   Ѐ<                p  E                             ' E   E   Ѐ              D%                            à ?   ?   Ѐ<                  E                                m E   E   Ѐ              D%                             ?   ?   Ѐ<                  E                                       Ԁ              k E   E   Ѐ              D%                           v ?   ?   Ј<                  E                                \ ?   ?   Ѐ<                  E                                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              ?       <                               E     @  
+ 	 l                                                                                                                    Ԁ              ?       <                              E     @  
 
- 	 l                                                                                                             <       Ԁ              k       <                0              E     @  
+ 	 l                                                                                                             <       Ԁ              k       <                              E     @  
 
- 	 l                                                                                                             {       Ԁ              Ƴ A   A                ƼD         $0H`l v=4mesh        F   F                1E         $0H`l
+ 	 l                                                                                                             {       Ԁ              Ƴ A   A               ƼD         $0H`l v=4mesh        F   F               1E         $0H`l
  DD4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap	2014-06-17 10:34:00.453636546 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap	2014-06-17 10:33:13.810996602 -0700
@@ -1,132 +1,132 @@
-ò            i       }>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          {?  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B  R   R   Ј<                   J   $0H`l4mesh3          9 7          C  R   R   Ј<                   J   $0H`l4mesh3          9 7          D  R   R   Ј<                   J   $0H`l4mesh3          9 7          [  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          t  R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7              A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7            R   R   Ј<                   J   $0H`l4mesh3          9 7          '  R   R   Ј<                   J   $0H`l4mesh3          9 7          R R   R   Ј<                   J   $0H`l4mesh3          9 7          k R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          JO A   A                 JO         $0H`l  4mesh        eP R   R   Ѐ<                0  J   $0H`l4mesh3          9 7          uP       Ԁ               P P   P   Ѐ<                 J     $0H`l3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          P R   R   Ј<                   J   $0H`l4mesh3          9 7          W R   R   Ј<                   J   $0H`l4mesh3          9 7                 Ԁ                2   2   Ѐ<                @ J 4mesh 7                  Ԁ                2   2   Ѐ<                0 J 4mesh 7            2   2   Ј<                0 J 4mesh 7           v       Ԁ                R   R   Ѐ<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7          ! R   R   Ј<                P  J   $0H`l4mesh3          9 7          f A   A                f         $0H`l4mesh        g R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          %h R   R   Ј<                @  J   $0H`l4mesh3          9 7          i R   R   Ј<                @  J   $0H`l4mesh3          9 7          <j R   R   Ј<                @  J   $0H`l4mesh3          9 7          1k R   R   Ј<                @  J   $0H`l4mesh3          9 7          8l R   R   Ј<                @  J   $0H`l4mesh3          9 7          Hm R   R   Ј<                @  J   $0H`l4mesh3          9 7          {s R   R   Ѐ<                `  J   $0H`l4mesh3          9 7          t R   R   Ј<                `  J   $0H`l4mesh3          9 7          u R   R   Ј<                `  J   $0H`l4mesh3          9 7          v R   R   Ј<                `  J   $0H`l4mesh3          9 7          x R   R   Ј<                `  J   $0H`l4mesh3          9 7          y R   R   Ј<                `  J   $0H`l4mesh3          9 7           {       Ԁ               j A   A                j         $0H`lf4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                P J    $0H`l3          9 7                 Ԁ               	 R   R   Ѐ<                `  J   $0H`l4mesh3          9 7          	 R   R   Ј<                `  J   $0H`l4mesh3          9 7          7		 R   R   Ј<                `  J   $0H`l4mesh3          9 7          Y
-	 R   R   Ј<                `  J   $0H`l4mesh3          9 7          i	 R   R   Ј<                `  J   $0H`l4mesh3          9 7          p	 R   R   Ј<                `  J   $0H`l4mesh3          9 7          	 R   R   Ј<                `  J   $0H`l4mesh3          9 7           	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           r	       Ԁ               "s	 2   2   Ѐ<                p J 4mesh 7           s	       Ԁ              2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         3        Ԁ              4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         ܥ  A   A                          $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7         æ        Ԁ              i  P   P   Ѐ<                 J    $0H`l3         9 7         y        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         `        Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              JW A   A                          $0H`l4mesh       G F   F               0 ˈ         $0H`l
-4mesh       j A   A               0 :         $0H`l4mesh         L   L                
+ò            i       }>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          {?  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B  R   R   Ј<                   J   $0H`l4mesh3          9 7          C  R   R   Ј<                   J   $0H`l4mesh3          9 7          D  R   R   Ј<                   J   $0H`l4mesh3          9 7          [  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          t  R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7              A   A               0 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7            R   R   Ј<                   J   $0H`l4mesh3          9 7          '  R   R   Ј<                   J   $0H`l4mesh3          9 7          R R   R   Ј<                   J   $0H`l4mesh3          9 7          k R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          JO A   A                JO         $0H`l  4mesh        eP R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          uP       Ԁ               P P   P   Ѐ<                  J     $0H`l3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7          P R   R   Ј<                0  J   $0H`l4mesh3          9 7          W R   R   Ј<                0  J   $0H`l4mesh3          9 7                 Ԁ                2   2   Ѐ<                P J 4mesh 7                  Ԁ                2   2   Ѐ<                @ J 4mesh 7            2   2   Ј<                @ J 4mesh 7           v       Ԁ                R   R   Ѐ<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          ! R   R   Ј<                `  J   $0H`l4mesh3          9 7          f A   A               p f         $0H`l4mesh        g R   R   Ѐ<                P  J   $0H`l4mesh3          9 7          %h R   R   Ј<                P  J   $0H`l4mesh3          9 7          i R   R   Ј<                P  J   $0H`l4mesh3          9 7          <j R   R   Ј<                P  J   $0H`l4mesh3          9 7          1k R   R   Ј<                P  J   $0H`l4mesh3          9 7          8l R   R   Ј<                P  J   $0H`l4mesh3          9 7          Hm R   R   Ј<                P  J   $0H`l4mesh3          9 7          {s R   R   Ѐ<                  J   $0H`l4mesh3          9 7          t R   R   Ј<                  J   $0H`l4mesh3          9 7          u R   R   Ј<                  J   $0H`l4mesh3          9 7          v R   R   Ј<                  J   $0H`l4mesh3          9 7          x R   R   Ј<                  J   $0H`l4mesh3          9 7          y R   R   Ј<                  J   $0H`l4mesh3          9 7           {       Ԁ               j A   A               ` j         $0H`lf4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                p J    $0H`l3          9 7                 Ԁ               	 R   R   Ѐ<                  J   $0H`l4mesh3          9 7          	 R   R   Ј<                  J   $0H`l4mesh3          9 7          7		 R   R   Ј<                  J   $0H`l4mesh3          9 7          Y
+	 R   R   Ј<                  J   $0H`l4mesh3          9 7          i	 R   R   Ј<                  J   $0H`l4mesh3          9 7          p	 R   R   Ј<                  J   $0H`l4mesh3          9 7          	 R   R   Ј<                  J   $0H`l4mesh3          9 7           	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           r	       Ԁ               "s	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         3        Ԁ              4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         ܥ  A   A                         $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7         æ        Ԁ              i  P   P   Ѐ<                 J    $0H`l3         9 7         y        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         `        Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              JW A   A                         $0H`l4mesh       G F   F               ˈ         $0H`l
+4mesh       j A   A                :         $0H`l4mesh         L   L                
                
 
 
-         L   L                
+         L   L                
                
 
 
-         E   E   Ѐ               D%                         
-             E   E   Ѐ               D%                      
-           ]        Ԁ                ?   ?   Ѐ<                   E                  
+         E   E   Ѐ               D%                         
+             E   E   Ѐ            0  D%                      
+           ]        Ԁ                ?   ?   Ѐ<                @  E                  
                   Ԁ              R  L   L   <                
-                       
+                       
      
 
                 Ԁ                 L   L   <                
-                     
+P                     
      
 
-       '        Ԁ              (  `   `   <                      
+       '        Ԁ              (  `   `   <                `     
          E  0    @  
 
- 	                              (        Ԁ              84  L   L                                
+ 	                              (        Ԁ              84  L   L                               
 
-       d5  L   L          0                    
+       d5  L   L          p                    
 
-       ;        Ԁ              ;  L   L   <                @     
+       ;        Ԁ              ;  L   L   <                     
                 
 
      
        ;        Ԁ              )<  `   `   <                
-                E  0    @  
+                E  0    @  
 
  	                              <        Ԁ              	>  `   `   <                
-P              E  0    @  
+              E  0    @  
 
- 	                                F   F               @ )         $0H`l
-4mesh       U ,   ,   Ѐ<                `  F                WW 2   2   Ѐ<                pJ 4mesh 7          gW       Ԁ              W A   A               @          $0H`l*4mesh       >X 2   2   Ѐ<                 J 4mesh 7          X       Ԁ              6 E   E   Ѐ               D%                         
-            E   E   Ѐ              D%         
-     g                  ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          G       Ԁ              aH 2   2   Ѐ<                J 4mesh 7          jI       Ԁ              j <   <               P \'         $0H`l 4mesh       S R   R   Ј<                 J   $0H`l4mesh3          9 7         c       Ԁ               P   P   Ѐ<                J    $0H`l3          9 7         r       Ԁ               R   R   Ѐ<                  J   $0H`l4mesh3          9 7         t       Ԁ               P   P   Ј<                J    $0H`l3         9 7         -       Ԁ              &	 6   6   Ј<                  F              
-          &	       Ԁ               E   E   Ѐ            0  D%                         
-            E   E   Ѐ              D%                      
-           2  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         3        Ԁ              l4        Ԁ              5  P   P   Ј<                 J    $0H`l3         9 7           F   F               ` +.         $0H`l
-]'-4mesh       J7 A   A               ` 
-.         $0H`l.4mesh       o F   F               p K56         $0H`l
-.54mesh       j A   A               p *6         $0H`l564mesh       v	 E   E   Ѐ            @  D%                         
-           	 E   E   Ѐ              D%                      
-           	       Ԁ              	 ?   ?   Ѐ<                   E           ^       
-          -	       Ԁ              	       Ԁ              .	 ?   ?   Ѐ<                0  E           ^       
-          >	       Ԁ              V	       Ԁ              	 `   `   <                @     
+ 	                                F   F               )         $0H`l
+4mesh       U ,   ,   Ѐ<                  F                WW 2   2   Ѐ<                J 4mesh 7          gW       Ԁ              W A   A               0         $0H`l*4mesh       >X 2   2   Ѐ<                @J 4mesh 7          X       Ԁ              6 E   E   Ѐ            P  D%                         
+            E   E   Ѐ              D%         
+     g                  ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          G       Ԁ              aH 2   2   Ѐ<                 J 4mesh 7          jI       Ԁ              j <   <               `\'         $0H`l 4mesh       S R   R   Ј<                 J   $0H`l4mesh3          9 7         c       Ԁ               P   P   Ѐ<                pJ    $0H`l3          9 7         r       Ԁ               R   R   Ѐ<                 J   $0H`l4mesh3          9 7         t       Ԁ               P   P   Ј<                 J    $0H`l3         9 7         -       Ԁ              &	 6   6   Ј<                0  F              
+          &	       Ԁ               E   E   Ѐ              D%                         
+            E   E   Ѐ            @  D%                      
+           2  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         3        Ԁ              l4        Ԁ              5  P   P   Ј<                `J    $0H`l3         9 7           F   F               p+.         $0H`l
+]'-4mesh       J7 A   A               
+.         $0H`l.4mesh       o F   F               K56         $0H`l
+.54mesh       j A   A               *6         $0H`l564mesh       v	 E   E   Ѐ              D%                         
+           	 E   E   Ѐ              D%                      
+           	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
+          -	       Ԁ              	       Ԁ              .	 ?   ?   Ѐ<                  E           ^       
+          >	       Ԁ              V	       Ԁ              	 `   `   <                     
          E  0   @  
 
  	                              )	       Ԁ              	 `   `   <                
-P               E  0   @  
+               E  0   @  
 
  	                              U	       Ԁ              *	 `   `   <                
-P              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ              	 `   `   <                
-P              E  0   @  
+              E  0   @  
 
- 	                              	 `   `   <                `     
+ 	                              	 `   `   <                     
          E  0   @  
 
  	                              	       Ԁ              A	 `   `   <                
-`               E  0   @  
+               E  0   @  
 
  	                              	       Ԁ              <	 `   `   <                
-p              E  0   @  
+              E  0   @  
 
  	                              a	 `   `   <                
-p              E  0   @  
+              E  0   @  
 
  	                              }	 `   `   <                
-p              E  0   @  
+              E  0   @  
 
- 	                              7	       Ԁ              	 `   `   <                     
+ 	                              7	       Ԁ              	 `   `   <                      
          E  0   @  
 
  	                              
 	       Ԁ              a	 `   `   <                
-p               E  0   @  
+               E  0   @  
 
  	                              Z	 `   `   <                
-p               E  0   @  
+               E  0   @  
 
  	                              /	       Ԁ              	 `   `   <                
-              E  0   @  
+              E  0   @  
 
  	                              	 `   `   <                
-              E  0   @  
+              E  0   @  
 
  	                              	 `   `   <                
-              E  0   @  
+              E  0   @  
 
- 	                                      Ԁ              j  `   `   <                     
+ 	                                      Ԁ              j  `   `   <                      
          E  0   @  
 
  	                              z        Ԁ                `   `   <                
-               E  0   @  
+                E  0   @  
 
  	                                      Ԁ                `   `   <                
-              E  0   @  
+0              E  0   @  
 
- 	                                F   F                k=         $0H`l
-6:=4mesh       J7 A   A                J@>         $0H`l=4mesh              Ԁ               `   `   <                     
+ 	                                F   F               @k=         $0H`l
+6:=4mesh       J7 A   A               J@>         $0H`l=4mesh              Ԁ               `   `   <                P     
          E  0   @  
 
  	                              ƥ       Ԁ               `   `   <                
-               E  0   @  
+                E  0   @  
 
  	                                     Ԁ              3 `   `   <                
-              E  0   @  
+`              E  0   @  
 
- 	                                     Ԁ              \ ,   ,   Ѐ<                  F      
-          l       Ԁ              o F   F                wE         $0H`l
-@>D4mesh       j A   A                jE         $0H`lxE4mesh         F   F                M         $0H`l
-E}L4mesh       J7 A   A                M         $0H`lM4mesh       o F   F                ˹T         $0H`l
-MT4mesh       j A   A                #U         $0H`lT4mesh         F   F                Z\         $0H`l
-$U[4mesh       J7 A   A                \         $0H`l[\4mesh       o F   F                c         $0H`l
-\`c4mesh       j A   A                ed         $0H`lc4mesh         F   F                +k         $0H`l
-fdk4mesh       J7 A   A                
-l         $0H`lk4mesh       o F   F                K>s         $0H`l
-lr4mesh       j A   A                *s         $0H`l>s4mesh         F   F                kz         $0H`l
-lCz4mesh       5 2   2   Ѐ<                J 4mesh 7          5       Ԁ              56 2   2   Ѐ<                J 4mesh 7          6       Ԁ              J7 A   A                JI{         $0H`lz4mesh       =8 R   R   Ѐ<                  J   $0H`l4mesh3         9 7 	        M8       Ԁ              8 2   2   Ѐ<                J 4mesh 7 	         d9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              < 2   2   Ј<                J 4mesh 7	          #<       Ԁ              O ,   ,   Ѐ<                   F                n A   A                        $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                0J   	 $0H`l3         9 7
-         p       Ԁ              q R   R   Ѐ<                @ J   $0H`l4mesh3         9 7 
-        q       Ԁ              q P   P   Ѐ<                J    $0H`l3         9 7 
-        r       Ԁ              j A   A               jւ         $0H`l4mesh    	     F   F                !         $0H`l
-	ւ4mesh    	   J# A   A                w         $0H`l"4mesh    	   o F   F               0         $0H`l
-'	w4mesh    	   j A   A               0         $0H`lÑ4mesh    
\ No newline at end of file
+ 	                                     Ԁ              \ ,   ,   Ѐ<                p  F      
+          l       Ԁ              o F   F               wE         $0H`l
+@>D4mesh       j A   A               0jE         $0H`lxE4mesh         F   F               M         $0H`l
+E}L4mesh       J7 A   A               @M         $0H`lM4mesh       o F   F               ˹T         $0H`l
+MT4mesh       j A   A               P#U         $0H`lT4mesh         F   F               Z\         $0H`l
+$U[4mesh       J7 A   A               `\         $0H`l[\4mesh       o F   F               c         $0H`l
+\`c4mesh       j A   A               ped         $0H`lc4mesh         F   F               +k         $0H`l
+fdk4mesh       J7 A   A               
+l         $0H`lk4mesh       o F   F               K>s         $0H`l
+lr4mesh       j A   A               *s         $0H`l>s4mesh         F   F               kz         $0H`l
+lCz4mesh       5 2   2   Ѐ<                 J 4mesh 7          5       Ԁ              56 2   2   Ѐ<                J 4mesh 7          6       Ԁ              J7 A   A               JI{         $0H`lz4mesh       =8 R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	        M8       Ԁ              8 2   2   Ѐ<                J 4mesh 7 	         d9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              < 2   2   Ј<                 J 4mesh 7	          #<       Ԁ              O ,   ,   Ѐ<                0  F                n A   A               @         $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                PJ   	 $0H`l3         9 7
+         p       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
+        q       Ԁ              q P   P   Ѐ<                J    $0H`l3         9 7 
+        r       Ԁ              j A   A               jւ         $0H`l4mesh    	     F   F               p!         $0H`l
+	ւ4mesh    	   J# A   A                w         $0H`l"4mesh    	   o F   F                        $0H`l
+'	w4mesh    	   j A   A                        $0H`lÑ4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap	2014-06-17 10:34:00.454636538 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap	2014-06-17 10:33:13.811996595 -0700
@@ -1,197 +1,195 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          	A  R   R   Ј<                   J   $0H`l4mesh3          9 7          +B  R   R   Ј<                   J   $0H`l4mesh3          9 7           C  R   R   Ј<                   J   $0H`l4mesh3          9 7          'D  R   R   Ј<                   J   $0H`l4mesh3          9 7          4^  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          S_        Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7          /  R   R   Ј<                  J   $0H`l4mesh3          9 7          Z  R   R   Ј<                  J   $0H`l4mesh3          9 7          j  R   R   Ј<                  J   $0H`l4mesh3          9 7          z  R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7            #        Ԁ               k  A   A                 k          $0H`l = 4mesh         2   2   Ѐ<                  J 4mesh 7           	       Ԁ               O A   A                 JO         $0H`l  4mesh        O R   R   Ѐ<                0  J   $0H`l4mesh3          9 7          P       Ԁ               HQ P   P   Ѐ<                 J     $0H`l3          9 7          XQ       Ԁ                2   2   Ѐ<                @ J 4mesh 7                   Ԁ               H 2   2   Ѐ<                @ J 4mesh 7                  Ԁ               : 2   2   Ј<                0 J 4mesh 7           J       Ԁ                <   <                         $0H`l 4mesh         R   R   Ѐ<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7          = R   R   Ј<                P  J   $0H`l4mesh3          9 7          M R   R   Ј<                P  J   $0H`l4mesh3          9 7          x R   R   Ј<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7           R   R   Ј<                P  J   $0H`l4mesh3          9 7          T R   R   Ѐ<                P  J   $0H`l4mesh3          9 7          s        Ԁ               f A   A                f         $0H`l4mesh        r R   R   Ѐ<                `  J   $0H`l4mesh3          9 7          &t R   R   Ј<                `  J   $0H`l4mesh3          9 7          ?u R   R   Ј<                `  J   $0H`l4mesh3          9 7          Xv R   R   Ј<                `  J   $0H`l4mesh3          9 7          w R   R   Ј<                `  J   $0H`l4mesh3          9 7          x P   P   Ѐ<                p J    $0H`l3         9 7          Xy R   R   Ј<                `  J   $0H`l4mesh3          9 7          z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          z       Ԁ                A   A                j         $0H`lf4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3          9 7                 Ԁ               h P   P   Ѐ<                P J    $0H`l3          9 7          x       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               hr	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ               s	 2   2   Ѐ<                p J 4mesh 7           s	       Ԁ              1  A   A                 s         $0H`l4mesh       1  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         w3        Ԁ              N4  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         ^4        Ԁ              4  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              k  A   A                          $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              ǧ  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ              D  P   P   Ѐ<                 J    $0H`l3         9 7         T        Ԁ              W A   A                          $0H`l4mesh        F   F               0          $0H`l
-4mesh       F F   F               0 ˈ         $0H`l
-4mesh       
-  L   L                
+ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          	A  R   R   Ј<                   J   $0H`l4mesh3          9 7          +B  R   R   Ј<                   J   $0H`l4mesh3          9 7           C  R   R   Ј<                   J   $0H`l4mesh3          9 7          'D  R   R   Ј<                   J   $0H`l4mesh3          9 7          4^  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          S_        Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7          /  R   R   Ј<                  J   $0H`l4mesh3          9 7          Z  R   R   Ј<                  J   $0H`l4mesh3          9 7          j  R   R   Ј<                  J   $0H`l4mesh3          9 7          z  R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7            #        Ԁ               k  A   A               0 k          $0H`l = 4mesh         2   2   Ѐ<                0 J 4mesh 7           	       Ԁ               O A   A                JO         $0H`l  4mesh        O R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          P       Ԁ               HQ P   P   Ѐ<                  J     $0H`l3          9 7          XQ       Ԁ                2   2   Ѐ<                P J 4mesh 7                   Ԁ               H 2   2   Ѐ<                P J 4mesh 7                  Ԁ               : 2   2   Ј<                @ J 4mesh 7           J       Ԁ                <   <               `          $0H`l 4mesh         R   R   Ѐ<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          = R   R   Ј<                `  J   $0H`l4mesh3          9 7          M R   R   Ј<                `  J   $0H`l4mesh3          9 7          x R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          T R   R   Ѐ<                p  J   $0H`l4mesh3          9 7          s        Ԁ               f A   A               p f         $0H`l4mesh        r R   R   Ѐ<                  J   $0H`l4mesh3          9 7          &t R   R   Ј<                  J   $0H`l4mesh3          9 7          ?u R   R   Ј<                  J   $0H`l4mesh3          9 7          Xv R   R   Ј<                  J   $0H`l4mesh3          9 7          w R   R   Ј<                  J   $0H`l4mesh3          9 7          x P   P   Ѐ<                 J    $0H`l3         9 7          Xy R   R   Ј<                  J   $0H`l4mesh3          9 7          z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          z       Ԁ                A   A               ` j         $0H`lf4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ               h P   P   Ѐ<                p J    $0H`l3          9 7          x       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               hr	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ               s	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              1  A   A                s         $0H`l4mesh       1  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         w3        Ԁ              N4  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         ^4        Ԁ              4  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              k  A   A                         $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              ǧ  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ              D  P   P   Ѐ<                 J    $0H`l3         9 7         T        Ԁ              W A   A                         $0H`l4mesh        F   F                         $0H`l
+4mesh       F F   F               ˈ         $0H`l
+4mesh         L   L               
                
 
 
-       5  L   L                
+       6  L   L                
                
 
 
-       $  E   E   Ѐ               D%                         
-           s  E   E   Ѐ               D%                      
-             E   E   Ѐ               D%              j       
-                   Ԁ                 ?   ?   Ѐ<                   E                  
-          0        Ԁ              ~  ?   ?   Ѐ<                   E                  
-          '        Ԁ                L   L   <                
-                       
+       %  E   E   Ѐ               D%                         
+           t  E   E   Ѐ            0  D%                      
+             E   E   Ѐ               D%              j       
+                   Ԁ              !  ?   ?   Ѐ<                0  E                  
+          1        Ԁ                ?   ?   Ѐ<                @  E                  
+          (        Ԁ                L   L   <                
+                       
      
 
-               Ԁ              9   L   L   <                
-                     
+               Ԁ              :   L   L   <                
+P                     
      
 
-                Ԁ              !  L   L   <                
-                      
+                Ԁ              !  L   L   <                
+@                     
      
 
-       &        Ԁ              '  `   `   <                     
+       &        Ԁ              '  `   `   <                P     
          E  0    @  
 
- 	                              '        Ԁ              '  `   `   <                      
+ 	                              '        Ԁ              '  `   `   <                `     
          E  0    @  
 
- 	                              (        Ԁ              1  F   F               @          $0H`l
-P4mesh       4  L   L                                
+ 	                              (        Ԁ              1  F   F               `         $0H`l
+P4mesh       4  L   L                               
 
-       4  L   L          0                    
+       4  L   L          p                    
 
-       6  L   L                               
+       6  L   L          p                    
 
-       /:        Ԁ              :  L   L   <                0     
+       0:        Ԁ              :  L   L   <                     
                 
 
      
-       :        Ԁ              A;  L   L   <                @     
+       :        Ԁ              B;  L   L   <                     
                 
 
      
-       ;        Ԁ              <  `   `   <                
-                E  0    @  
+       ;        Ԁ              <  `   `   <                
+                E  0    @  
 
- 	                              <        Ԁ              p=  `   `   <                
-P              E  0    @  
+ 	                              <        Ԁ              q=  `   `   <                
+              E  0    @  
 
- 	                              E>        Ԁ              ?  `   `   <                
-@              E  0    @  
+ 	                              F>        Ԁ              	?  `   `   <                
+              E  0    @  
 
- 	                              k  F   F               @ )         $0H`l
-4mesh       {U ,   ,   Ѐ<                `  F                V       Ԁ              V ,   ,   Ѐ<                P  F                V 2   2   Ѐ<                pJ 4mesh 7          W       Ԁ              X A   A               @          $0H`l*4mesh       X 2   2   Ѐ<                 J 4mesh 7          X       Ԁ              *7 E   E   Ѐ               D%                         
-           ޣ E   E   Ѐ            `  D%         
-                       - E   E   Ѐ              D%         
-     g                   F   F               P 
+ 	                              k  F   F               )         $0H`l
+4mesh       {U ,   ,   Ѐ<                  F                V       Ԁ              V ,   ,   Ѐ<                  F                V 2   2   Ѐ<                J 4mesh 7          W       Ԁ              X A   A               0         $0H`l*4mesh       X 2   2   Ѐ<                @J 4mesh 7          X       Ԁ              +7 E   E   Ѐ            P  D%                         
+           ߣ E   E   Ѐ              D%         
+                       . E   E   Ѐ              D%         
+     g                   F   F               
 W&         $0H`l
-4mesh        E 2   2   Ѐ<                pJ 4mesh 7          0E       Ԁ              ~E 2   2   Ѐ<                J 4mesh 7          F       Ԁ              F A   A               P &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              H 2   2   Ѐ<                J 4mesh 7          H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          =I       Ԁ               <   <               P \'         $0H`l 4mesh        R   R   Ѐ<                 J   $0H`l4mesh3          9 7          R   R   Ј<                 J   $0H`l4mesh3          9 7                Ԁ              6 P   P   Ѐ<                J    $0H`l3          9 7         F       Ԁ              8 R   R   Ѐ<                  J   $0H`l4mesh3          9 7         H       Ԁ               P   P   Ѐ<                J    $0H`l3         9 7          P   P   Ј<                J    $0H`l3         9 7         Z       Ԁ              {%	 6   6   Ѐ<                  F              
-          H&	 6   6   Ј<                  F              
-          &	       Ԁ              
- E   E   Ѐ              D%         
-                       * E   E   Ѐ            0  D%                         
-           y E   E   Ѐ              D%                      
-           1  A   A               ` *-         $0H`l&4mesh       1  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         2        Ԁ              g3  P   P   Ѐ<                J    $0H`l3         9 7         w3        Ԁ              /4  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         ?4        Ԁ              4  P   P   Ѐ<                 J    $0H`l3         9 7         Z5  P   P   Ј<                 J    $0H`l3         9 7         6        Ԁ              k  F   F               ` +.         $0H`l
-]'-4mesh       7 A   A               ` 
-.         $0H`l.4mesh        F   F               p J5         $0H`l
-4..4mesh       n F   F               p K56         $0H`l
-.54mesh        A   A               p *6         $0H`l564mesh       	 E   E   Ѐ            @  D%                         
-           9	 E   E   Ѐ              D%                      
-           .	 E   E   Ѐ              D%              (       
-           R	 ?   ?   Ј<                  E                    
-          b	       Ԁ              	 ?   ?   Ѐ<                   E           ^       
-          Y	       Ԁ              	       Ԁ              c	 ?   ?   Ѐ<                  E                  
-          s	       Ԁ              	 ?   ?   Ѐ<                0  E           ^       
-          j	       Ԁ              V	       Ԁ              	 `   `   <                      
+4mesh        E 2   2   Ѐ<                J 4mesh 7          0E       Ԁ              ~E 2   2   Ѐ<                J 4mesh 7          F       Ԁ              F A   A               &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              H 2   2   Ѐ<                 J 4mesh 7          H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          =I       Ԁ               <   <               `\'         $0H`l 4mesh        R   R   Ѐ<                 J   $0H`l4mesh3          9 7          R   R   Ј<                 J   $0H`l4mesh3          9 7                Ԁ              6 P   P   Ѐ<                pJ    $0H`l3          9 7         F       Ԁ              8 R   R   Ѐ<                 J   $0H`l4mesh3          9 7         H       Ԁ               P   P   Ѐ<                 J    $0H`l3         9 7          P   P   Ј<                 J    $0H`l3         9 7         Z       Ԁ              {%	 6   6   Ѐ<                0  F              
+          H&	 6   6   Ј<                0  F              
+          &	       Ԁ              
+ E   E   Ѐ               D%         
+                       + E   E   Ѐ              D%                         
+           z E   E   Ѐ            @  D%                      
+           1  A   A               *-         $0H`l&4mesh       1  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         w3        Ԁ              /4  R   R   Ѐ<                0 J   $0H`l4mesh3         9 7         ?4        Ԁ              4  P   P   Ѐ<                `J    $0H`l3         9 7         Z5  P   P   Ј<                `J    $0H`l3         9 7         6        Ԁ              k  F   F               p+.         $0H`l
+]'-4mesh       7 A   A               
+.         $0H`l.4mesh        F   F               @J5         $0H`l
+4..4mesh       n F   F               K56         $0H`l
+.54mesh        A   A               *6         $0H`l564mesh       	 E   E   Ѐ              D%                         
+           :	 E   E   Ѐ              D%                      
+           /	 E   E   Ѐ            `  D%              (       
+           S	 ?   ?   Ј<                P  E                    
+          c	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
+          Z	       Ԁ              	       Ԁ              d	 ?   ?   Ѐ<                p  E                  
+          t	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
+          k	       Ԁ              W	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              )	       Ԁ              	 `   `   <                @     
+ 	                              *	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              U	       Ԁ              	 `   `   <                
-P               E  0   @  
+ 	                              V	       Ԁ              	 `   `   <                
+               E  0   @  
 
- 	                              (	       Ԁ              	 `   `   <                
-P              E  0   @  
+ 	                              )	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              x	 `   `   <                     
+ 	                              	       Ԁ              y	 `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-P              E  0   @  
+ 	                              	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-               E  0   @  
+ 	                              	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                              A	 `   `   <                `     
+ 	                              B	 `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-`               E  0   @  
+ 	                              	       Ԁ              	 `   `   <                
+               E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-p              E  0   @  
+ 	                              	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                              	 `   `   <                
-p              E  0   @  
+ 	                              	 `   `   <                
+              E  0   @  
 
- 	                              	 `   `   <                
-p              E  0   @  
+ 	                              	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              |	 `   `   <                
-0              E  0   @  
+ 	                              	       Ԁ              }	 `   `   <                
+              E  0   @  
 
- 	                              P	 `   `   <                
-0              E  0   @  
+ 	                              Q	 `   `   <                
+              E  0   @  
 
- 	                              7	       Ԁ              	 `   `   <                @     
+ 	                              8	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              
-	       Ԁ              a	 `   `   <                     
+ 	                              	       Ԁ              b	 `   `   <                      
          E  0   @  
 
- 	                              6	       Ԁ              	 `   `   <                
-p               E  0   @  
+ 	                              7	       Ԁ              	 `   `   <                
+               E  0   @  
 
- 	                              	       Ԁ              Y	 `   `   <                
-              E  0   @  
+ 	                              	       Ԁ              Z	 `   `   <                
+              E  0   @  
 
- 	                              	 `   `   <                
-              E  0   @  
+ 	                              	 `   `   <                
+              E  0   @  
 
- 	                              	 `   `   <                
-              E  0   @  
+ 	                              	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-P              E  0   @  
+ 	                              	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                                      Ԁ              j  `   `   <                `     
+ 	                                      Ԁ              k  `   `   <                     
          E  0   @  
 
- 	                              z        Ԁ                `   `   <                     
+ 	                              {        Ԁ                `   `   <                      
          E  0   @  
 
- 	                                      Ԁ              i  `   `   <                
-               E  0   @  
+ 	                                      Ԁ              j  `   `   <                
+                E  0   @  
 
- 	                              y        Ԁ                `   `   <                
-              E  0   @  
+ 	                              z        Ԁ                `   `   <                
+0              E  0   @  
 
- 	                                      Ԁ              	  `   `   <                
-p              E  0   @  
+ 	                                      Ԁ              	  `   `   <                
+              E  0   @  
 
- 	                              1  F   F                j:=         $0H`l
-5564mesh       k  F   F                k=         $0H`l
-6:=4mesh       7 A   A                J@>         $0H`l=4mesh              Ԁ               `   `   <                     
+ 	                              1  F   F                j:=         $0H`l
+5564mesh       k  F   F               @k=         $0H`l
+6:=4mesh       7 A   A               J@>         $0H`l=4mesh              Ԁ               `   `   <                     
          E  0   @  
 
- 	                              Ƥ       Ԁ               `   `   <                     
+ 	                              Ǥ       Ԁ               `   `   <                P     
          E  0   @  
 
- 	                                     Ԁ               `   `   <                
-               E  0   @  
+ 	                                     Ԁ               `   `   <                
+                E  0   @  
 
- 	                              Ŧ       Ԁ               `   `   <                
-              E  0   @  
+ 	                              Ʀ       Ԁ               `   `   <                
+`              E  0   @  
 
- 	                               ,   ,   Ѐ<                  F      
-                 Ԁ               ,   ,   Ѐ<                  F      
-                 Ԁ               `   `   <                
-              E  0   @  
-
- 	                              p       Ԁ               F   F                D         $0H`l
-v==4mesh       n F   F                wE         $0H`l
-@>D4mesh        A   A                jE         $0H`lxE4mesh       1  F   F                |L         $0H`l
-v=xE4mesh       k  2   2   Ѐ<                J 4mesh 7          m  2   2   Ј<                J 4mesh 7          n  2   2   Ј<                J 4mesh 7          o  2   2   Ј<                J 4mesh 7          tp  2   2   Ј<                J 4mesh 7          aq  2   2   Ј<                J 4mesh 7          k  F   F                M         $0H`l
-E}L4mesh       7 A   A                M         $0H`lM4mesh        A   A                T         $0H`lM4mesh       n F   F                ˹T         $0H`l
-MT4mesh        A   A                #U         $0H`lT4mesh       1  A   A                [         $0H`lT4mesh       k  F   F                Z\         $0H`l
-$U[4mesh       7 A   A                \         $0H`l[\4mesh        A   A                
-`c         $0H`l[\4mesh       n F   F                c         $0H`l
-\`c4mesh        A   A                ed         $0H`lc4mesh       1  A   A                *k         $0H`lc4mesh       k  F   F                +k         $0H`l
-fdk4mesh       7 A   A                
-l         $0H`lk4mesh        A   A                Jr         $0H`lk4mesh       n F   F                K>s         $0H`l
-lr4mesh       1  A   A                jCz         $0H`l>s4mesh       k  F   F                kz         $0H`l
-lCz4mesh       {5 2   2   Ѐ<                J 4mesh 7          6       Ԁ              6 2   2   Ѐ<                J 4mesh 7          6       Ԁ              7 A   A                JI{         $0H`lz4mesh       7 R   R   Ѐ<                  J   $0H`l4mesh3         9 7 	        z8       Ԁ              9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              (: 2   2   Ѐ<                J 4mesh 7	          ; 2   2   Ј<                J 4mesh 7	          ; 2   2   Ј<                J 4mesh 7	          P<       Ԁ               ,   ,   Ѐ<                   F                       Ԁ               A   A                        $0H`lz4mesh       n A   A                        $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                0J   	 $0H`l3         9 7
-         p       Ԁ              q R   R   Ѐ<                @ J   $0H`l4mesh3         9 7 
-        q       Ԁ              mr P   P   Ѐ<                J    $0H`l3         9 7 
-        }r       Ԁ               A   A               jւ         $0H`l4mesh    	   1  A   A                         $0H`l4mesh    	   k  F   F                !         $0H`l
-	ւ4mesh    	   # A   A                w         $0H`l"4mesh    	    A   A               0&         $0H`l"4mesh    	   n F   F               0         $0H`l
-'	w4mesh    	    A   A               0         $0H`lÑ4mesh    
\ No newline at end of file
+ 	                               ,   ,   Ѐ<                   F      
+                 Ԁ               ,   ,   Ѐ<                p  F      
+                 Ԁ               `   `   <                
+`              E  0   @  
+
+ 	                              q       Ԁ               F   F               0D         $0H`l
+v==4mesh       n F   F               wE         $0H`l
+@>D4mesh        A   A               0jE         $0H`lxE4mesh       1  F   F               @|L         $0H`l
+v=xE4mesh       k  2   2   Ѐ<                PJ 4mesh 7          m  2   2   Ј<                PJ 4mesh 7          n  2   2   Ј<                PJ 4mesh 7          o  2   2   Ј<                PJ 4mesh 7          tp  2   2   Ј<                PJ 4mesh 7          aq  2   2   Ј<                PJ 4mesh 7          k  F   F               M         $0H`l
+E}L4mesh       7 A   A               @M         $0H`lM4mesh        A   A               `T         $0H`lM4mesh       n F   F               ˹T         $0H`l
+MT4mesh        A   A               P#U         $0H`lT4mesh       1  A   A               p[         $0H`lT4mesh       k  F   F               Z\         $0H`l
+$U[4mesh       7 A   A               `\         $0H`l[\4mesh        A   A               
+`c         $0H`l[\4mesh       n F   F               c         $0H`l
+\`c4mesh        A   A               ped         $0H`lc4mesh       1  A   A               *k         $0H`lc4mesh       k  F   F               +k         $0H`l
+fdk4mesh       7 A   A               
+l         $0H`lk4mesh        A   A               Jr         $0H`lk4mesh       n F   F               K>s         $0H`l
+lr4mesh       1  A   A               jCz         $0H`l>s4mesh       k  F   F               kz         $0H`l
+lCz4mesh       {5 2   2   Ѐ<                 J 4mesh 7          6       Ԁ              6 2   2   Ѐ<                J 4mesh 7          6       Ԁ              7 A   A               JI{         $0H`lz4mesh       7 R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	        z8       Ԁ              9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              (: 2   2   Ѐ<                 J 4mesh 7	          ; 2   2   Ј<                 J 4mesh 7	          ; 2   2   Ј<                 J 4mesh 7	          P<       Ԁ               ,   ,   Ѐ<                0  F                       Ԁ               A   A                        $0H`lz4mesh       n A   A               @         $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                PJ   	 $0H`l3         9 7
+         p       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
+        q       Ԁ              mr P   P   Ѐ<                J    $0H`l3         9 7 
+        }r       Ԁ               A   A               jւ         $0H`l4mesh    	   1  A   A                        $0H`l4mesh    	   k  F   F               p!         $0H`l
+	ւ4mesh    	   # A   A                w         $0H`l"4mesh    	    A   A               &         $0H`l"4mesh    	   n F   F                        $0H`l
+'	w4mesh    	    A   A                        $0H`lÑ4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap	2014-06-17 10:34:00.455636530 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap	2014-06-17 10:33:13.812996587 -0700
@@ -1,198 +1,198 @@
-ò            i         R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ       	                Ԁ       	        ~  P   P   Ѐ<      	           J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        ]  F   F                 ]          $0H`l
-  = 4mesh        ]  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          q^        Ԁ               _  P   P   Ѐ<                0 J    $0H`l3         9 7          '_        Ԁ                 2   2   Ѐ<                  J 4mesh 7                    Ԁ                 A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                  J   $0H`l4mesh3          9 7          )  R   R   Ј<                  J   $0H`l4mesh3          9 7          B  R   R   Ј<                  J   $0H`l4mesh3          9 7          [ R   R   Ј<                  J   $0H`l4mesh3          9 7           R   R   Ј<                  J   $0H`l4mesh3          9 7           R   R   Ј<                  J   $0H`l4mesh3          9 7           R   R   Ј<                  J   $0H`l4mesh3          9 7           2   2   Ѐ<                  J 4mesh 7           O       Ԁ                2   2   Ѐ<                P J 4mesh 7                  Ԁ               eP R   R   Ѐ<                0  J   $0H`l4mesh3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                0  J   $0H`l4mesh3          9 7          ў R   R   Ј<                0  J   $0H`l4mesh3          9 7          ϟ R   R   Ј<                0  J   $0H`l4mesh3          9 7          ߠ R   R   Ј<                0  J   $0H`l4mesh3          9 7          
- R   R   Ј<                0  J   $0H`l4mesh3          9 7          5 R   R   Ј<                0  J   $0H`l4mesh3          9 7          W R   R   Ј<                0  J   $0H`l4mesh3          9 7          U 2   2   Ѐ<                @ J 4mesh 7                   Ԁ                2   2   Ѐ<                @ J 4mesh 7           v       Ԁ                <   <                         $0H`l 4mesh         F   F                1         $0H`l
- 4mesh         R   R   Ѐ<                P  J   $0H`l4mesh3          9 7                 Ԁ               7  P   P   Ѐ<                p J    $0H`l3         9 7          G        Ԁ               f A   A                f         $0H`l4mesh        g R   R   Ѐ<                `  J   $0H`l4mesh3          9 7          h R   R   Ј<                `  J   $0H`l4mesh3          9 7          ,i R   R   Ј<                `  J   $0H`l4mesh3          9 7          <j R   R   Ј<                `  J   $0H`l4mesh3          9 7          ^k R   R   Ј<                `  J   $0H`l4mesh3          9 7          \l R   R   Ј<                `  J   $0H`l4mesh3          9 7          um R   R   Ј<                `  J   $0H`l4mesh3          9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               7x P   P   Ѐ<                p J    $0H`l3         9 7          x       Ԁ               y R   R   Ј<                `  J   $0H`l4mesh3          9 7          y       Ԁ               ?z P   P   Ѐ<                 J    $0H`l3         9 7           {       Ԁ                R   R   Ѐ<                p  J   $0H`l4mesh3          9 7                 Ԁ               	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          1	 R   R   Ј<                  J   $0H`l4mesh3         9 7          &	 R   R   Ј<                  J   $0H`l4mesh3         9 7           	 2   2   Ѐ<                 J 4mesh 7           0	       Ԁ               ~	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              j1  A   A                 s         $0H`l4mesh       2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              2  P   P   Ѐ<                 J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         A5        Ԁ              m  F   F                 Q         $0H`l
- =t4mesh       ܥ  A   A                          $0H`lt4mesh       æ        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ               F   F               0          $0H`l
-4mesh        F   F               0 qP         $0H`l
- 4mesh       G F   F               0 ˈ         $0H`l
-4mesh       _  L   L                
+ò            i         R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ       	                Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        ]  F   F               0 ]          $0H`l
+  = 4mesh        ]  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          q^        Ԁ               _  P   P   Ѐ<                @ J    $0H`l3         9 7          '_        Ԁ                 2   2   Ѐ<                  J 4mesh 7                    Ԁ                 A   A               0 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7          )  R   R   Ј<                   J   $0H`l4mesh3          9 7          B  R   R   Ј<                   J   $0H`l4mesh3          9 7          [ R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           2   2   Ѐ<                0 J 4mesh 7           O       Ԁ                2   2   Ѐ<                ` J 4mesh 7                  Ԁ               eP R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          ў R   R   Ј<                @  J   $0H`l4mesh3          9 7          ϟ R   R   Ј<                @  J   $0H`l4mesh3          9 7          ߠ R   R   Ј<                @  J   $0H`l4mesh3          9 7          
+ R   R   Ј<                @  J   $0H`l4mesh3          9 7          5 R   R   Ј<                @  J   $0H`l4mesh3          9 7          W R   R   Ј<                @  J   $0H`l4mesh3          9 7          U 2   2   Ѐ<                P J 4mesh 7                   Ԁ                2   2   Ѐ<                P J 4mesh 7           v       Ԁ                <   <               `          $0H`l 4mesh         F   F                1         $0H`l
+ 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3          9 7                 Ԁ               7  P   P   Ѐ<                 J    $0H`l3         9 7          G        Ԁ               f A   A               p f         $0H`l4mesh        g R   R   Ѐ<                  J   $0H`l4mesh3          9 7          h R   R   Ј<                  J   $0H`l4mesh3          9 7          ,i R   R   Ј<                  J   $0H`l4mesh3          9 7          <j R   R   Ј<                  J   $0H`l4mesh3          9 7          ^k R   R   Ј<                  J   $0H`l4mesh3          9 7          \l R   R   Ј<                  J   $0H`l4mesh3          9 7          um R   R   Ј<                  J   $0H`l4mesh3          9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               7x P   P   Ѐ<                 J    $0H`l3         9 7          x       Ԁ               y R   R   Ј<                  J   $0H`l4mesh3          9 7          y       Ԁ               ?z P   P   Ѐ<                 J    $0H`l3         9 7           {       Ԁ                R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ               	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          1	 R   R   Ј<                  J   $0H`l4mesh3         9 7          &	 R   R   Ј<                  J   $0H`l4mesh3         9 7           	 2   2   Ѐ<                 J 4mesh 7           0	       Ԁ               ~	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              j1  A   A                s         $0H`l4mesh       2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              2  P   P   Ѐ<                 J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         A5        Ԁ              m  F   F                Q         $0H`l
+ =t4mesh       ܥ  A   A                         $0H`lt4mesh       æ        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ               F   F                         $0H`l
+4mesh        F   F                qP         $0H`l
+ 4mesh       G F   F               ˈ         $0H`l
+4mesh       _  L   L                
                
 
 
-         L   L                
+         L   L               
                
 
 
-         L   L                
+         L   L                
                
 
 
-         E   E   Ѐ               D%                      
-           7  E   E   Ѐ               D%              j       
-           o  E   E   Ѐ               D%              e       
-                   Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
-          f        Ԁ                ?   ?   Ѐ<                   E                  
-          ]        Ԁ                ?   ?   Ѐ<                   E                  
+         E   E   Ѐ            0  D%                      
+           7  E   E   Ѐ               D%              j       
+           o  E   E   Ѐ               D%              e       
+                   Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
+          f        Ԁ                ?   ?   Ѐ<                0  E                  
+          ]        Ԁ                ?   ?   Ѐ<                @  E                  
                    Ԁ                 L   L   <                
-                     
+P                     
      
 
                 Ԁ              !!  L   L   <                
-                      
+@                     
      
 
        !        Ԁ              "  L   L   <      	          
-                      
+                      
      
 
-       %        Ԁ       	       &  `   `   <                      
+       %        Ԁ       	       &  `   `   <                     
          E  0    @  
 
- 	                              &        Ԁ              &  `   `   <                     
+ 	                              &        Ԁ              &  `   `   <                P     
          E  0    @  
 
- 	                              '        Ԁ              (  `   `   <                      
+ 	                              '        Ԁ              (  `   `   <                `     
          E  0    @  
 
- 	                              j1  F   F               @          $0H`l
-P4mesh       d5  L   L          0                    
+ 	                              j1  F   F               `         $0H`l
+P4mesh       d5  L   L          p                    
 
-       5  L   L                               
+       5  L   L          p                    
 
-       6  L   L                               
+       6  L   L                               
 
-       H9        Ԁ       	       9  L   L   <                      
+       H9        Ԁ       	       9  L   L   <                0     
                 
 
      
-       :        Ԁ              Z:  L   L   <                0     
+       :        Ԁ              Z:  L   L   <                     
                 
 
      
-       ;        Ԁ              ;  L   L   <                @     
+       ;        Ԁ              ;  L   L   <                     
                 
 
      
        <        Ԁ              	>  `   `   <                
-P              E  0    @  
+              E  0    @  
 
  	                              >        Ԁ              p>  `   `   <                
-@              E  0    @  
+              E  0    @  
 
  	                              E?        Ԁ              @  `   `   <      	          
-               E  0    @  
+@              E  0    @  
 
- 	                              m  F   F               @          $0H`l
- 4mesh       U ,   ,   Ѐ<                `  F                U       Ԁ              -V ,   ,   Ѐ<                P  F                V       Ԁ              X       Ԁ               E   E   Ѐ               D%         
-     ,                  j E   E   Ѐ            `  D%         
-                        E   E   Ѐ              D%         
-     g                   F   F               P 
+ 	                              m  F   F               P         $0H`l
+ 4mesh       U ,   ,   Ѐ<                  F                U       Ԁ              -V ,   ,   Ѐ<                  F                V       Ԁ              X       Ԁ               E   E   Ѐ            p  D%         
+     ,                  j E   E   Ѐ              D%         
+                        E   E   Ѐ              D%         
+     g                   F   F               
 W&         $0H`l
-4mesh        F   F               P &         $0H`l
-  &W&4mesh       D 2   2   Ѐ<                pJ 4mesh 7          ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          E       Ԁ              F A   A               P &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              aH 2   2   Ѐ<                J 4mesh 7          qH       Ԁ              H 2   2   Ѐ<                J 4mesh 7          jI       Ԁ              S R   R   Ј<                 J   $0H`l4mesh3          9 7         r       Ԁ              t       Ԁ               P   P   Ѐ<                J    $0H`l3         9 7          P   P   Ј<                J    $0H`l3         9 7         %	 6   6   Ѐ<                  F              
-          &	 6   6   Ј<                  F              
+4mesh        F   F               &         $0H`l
+  &W&4mesh       D 2   2   Ѐ<                J 4mesh 7          ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          E       Ԁ              F A   A               &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              aH 2   2   Ѐ<                 J 4mesh 7          qH       Ԁ              H 2   2   Ѐ<                J 4mesh 7          jI       Ԁ              S R   R   Ј<                 J   $0H`l4mesh3          9 7         r       Ԁ              t       Ԁ               P   P   Ѐ<                 J    $0H`l3         9 7          P   P   Ј<                 J    $0H`l3         9 7         %	 6   6   Ѐ<                0  F              
+          &	 6   6   Ј<                0  F              
           
- E   E   Ѐ            0  D%         
+ E   E   Ѐ              D%         
      ,                  j
- E   E   Ѐ              D%         
-                        E   E   Ѐ              D%                      
-           j1  A   A               ` *-         $0H`l&4mesh       2  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         2        Ԁ              2  P   P   Ѐ<                J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         l4        Ԁ              5  P   P   Ј<                 J    $0H`l3         9 7         5        Ԁ              m  F   F               ` 3.         $0H`l
- --4mesh         F   F               ` +.         $0H`l
-]'-4mesh        F   F               p J5         $0H`l
-4..4mesh        F   F               p 5         $0H`l
- b554mesh       o F   F               p K56         $0H`l
-.54mesh       	 E   E   Ѐ              D%                      
-           	 ?   ?   Ѐ<                  E                    
-          	 E   E   Ѐ              D%              (       
-           b	 ?   ?   Ј<                  E                    
-          	 E   E   Ѐ            P  D%                     
-           	 ?   ?   Ј<                  E                    
-          	       Ԁ              	 ?   ?   Ѐ<                   E           ^       
-          	       Ԁ       	       	 ?   ?   Ѐ<                `  E           ,       
-          	       Ԁ              	 ?   ?   Ѐ<                  E                  
-          	       Ԁ              .	 ?   ?   Ѐ<                0  E           ^       
-          W	       Ԁ       	       	 `   `   <                p     
+ E   E   Ѐ               D%         
+                        E   E   Ѐ            @  D%                      
+           j1  A   A               *-         $0H`l&4mesh       2  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         2        Ԁ              2  P   P   Ѐ<                 J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                0 J   $0H`l4mesh3         9 7         l4        Ԁ              5  P   P   Ј<                `J    $0H`l3         9 7         5        Ԁ              m  F   F               3.         $0H`l
+ --4mesh         F   F               p+.         $0H`l
+]'-4mesh        F   F               @J5         $0H`l
+4..4mesh        F   F               5         $0H`l
+ b554mesh       o F   F               K56         $0H`l
+.54mesh       	 E   E   Ѐ              D%                      
+           	 ?   ?   Ѐ<                P  E                    
+          	 E   E   Ѐ            `  D%              (       
+           b	 ?   ?   Ј<                P  E                    
+          	 E   E   Ѐ              D%                     
+           	 ?   ?   Ј<                P  E                    
+          	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
+          	       Ԁ       	       	 ?   ?   Ѐ<                  E           ,       
+          	       Ԁ              	 ?   ?   Ѐ<                p  E                  
+          	       Ԁ              .	 ?   ?   Ѐ<                  E           ^       
+          W	       Ԁ       	       	 `   `   <                     
          E  0   @  
 
- 	                              *	       Ԁ              	 `   `   <                      
+ 	                              *	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              V	       Ԁ              	 `   `   <                @     
+ 	                              V	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ       	       y	 `   `   <                     
+ 	                              	       Ԁ       	       y	 `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                     
+ 	                              	       Ԁ              	 `   `   <                     
          E  0   @  
 
  	                              	       Ԁ              	 `   `   <                
-P              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ              	 `   `   <                
-               E  0   @  
+              E  0   @  
 
  	                              	       Ԁ              }	 `   `   <                
-p              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ              	 `   `   <                
-0              E  0   @  
+              E  0   @  
 
  	                              	 `   `   <                
-0              E  0   @  
+              E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                     
+ 	                              	       Ԁ              	 `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ              b	 `   `   <                @     
+ 	                              	       Ԁ              b	 `   `   <                     
          E  0   @  
 
  	                              7	       Ԁ              /	       Ԁ              	 `   `   <                
-              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ              	 `   `   <                
-P              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ               
  `   `   <      	          
-              E  0   @  
+@              E  0   @  
 
- 	                                      Ԁ       	       k  `   `   <                     
+ 	                                      Ԁ       	       k  `   `   <                P     
          E  0   @  
 
- 	                              {        Ԁ                `   `   <                `     
+ 	                              {        Ԁ                `   `   <                     
          E  0   @  
 
- 	                                      Ԁ              j  `   `   <                     
+ 	                                      Ԁ              j  `   `   <                      
          E  0   @  
 
  	                                      Ԁ                `   `   <                
-              E  0   @  
+0              E  0   @  
 
  	                                      Ԁ                `   `   <                
-p              E  0   @  
+              E  0   @  
 
  	                              	        Ԁ              
   `   `   <      	          
-              E  0   @  
+`              E  0   @  
 
- 	                              j1  F   F                j:=         $0H`l
-5564mesh       m  F   F                v=         $0H`l
- =:=4mesh         F   F                k=         $0H`l
-6:=4mesh              Ԁ       	        `   `   <                     
+ 	                              j1  F   F                j:=         $0H`l
+5564mesh       m  F   F               pv=         $0H`l
+ =:=4mesh         F   F               @k=         $0H`l
+6:=4mesh              Ԁ       	        `   `   <                     
          E  0   @  
 
- 	                              ǣ       Ԁ               `   `   <                     
+ 	                              ǣ       Ԁ               `   `   <                     
          E  0   @  
 
- 	                                     Ԁ                     Ԁ               ,   ,   Ј<                   F      
-                 Ԁ              U ,   ,   Ѐ<                  F      
-                 Ԁ              \ ,   ,   Ѐ<                  F      
+ 	                                     Ԁ                     Ԁ               ,   ,   Ј<                  F      
+                 Ԁ              U ,   ,   Ѐ<                   F      
+                 Ԁ              \ ,   ,   Ѐ<                p  F      
           4 `   `   <                
-              E  0   @  
+`              E  0   @  
 
- 	                              D       Ԁ               F   F                D         $0H`l
-v==4mesh       o F   F                wE         $0H`l
-@>D4mesh       j1  F   F                |L         $0H`l
-v=xE4mesh       Jk  2   2   Ѐ<                J 4mesh 7          Il  2   2   Ј<                J 4mesh 7          Qm  2   2   Ј<                J 4mesh 7          Gn  2   2   Ј<                J 4mesh 7          Fo  2   2   Ј<                J 4mesh 7          p  2   2   Ј<                J 4mesh 7          q  2   2   Ј<                J 4mesh 7            F   F                M         $0H`l
-E}L4mesh        A   A                T         $0H`lM4mesh       o F   F                ˹T         $0H`l
-MT4mesh       j1  A   A                [         $0H`lT4mesh         F   F                Z\         $0H`l
-$U[4mesh        A   A                
-`c         $0H`l[\4mesh       o F   F                c         $0H`l
-\`c4mesh       j1  A   A                *k         $0H`lc4mesh         F   F                +k         $0H`l
-fdk4mesh        A   A                Jr         $0H`lk4mesh       o F   F                K>s         $0H`l
-lr4mesh       j1  A   A                jCz         $0H`l>s4mesh         F   F                kz         $0H`l
-lCz4mesh       5 2   2   Ѐ<                J 4mesh 7          6       Ԁ              9       Ԁ              < 2   2   Ј<                J 4mesh 7	          O ,   ,   Ѐ<                   F                _       Ԁ               A   A                        $0H`lz4mesh       n A   A                        $0H`l4mesh       o       Ԁ              q R   R   Ѐ<                @ J   $0H`l4mesh3         9 7 
-        r       Ԁ           	   j1  A   A                         $0H`l4mesh    	     F   F                !         $0H`l
-	ւ4mesh    	    A   A               0&         $0H`l"4mesh    	   o F   F               0         $0H`l
+ 	                              D       Ԁ               F   F               0D         $0H`l
+v==4mesh       o F   F               wE         $0H`l
+@>D4mesh       j1  F   F               @|L         $0H`l
+v=xE4mesh       Jk  2   2   Ѐ<                PJ 4mesh 7          Il  2   2   Ј<                PJ 4mesh 7          Qm  2   2   Ј<                PJ 4mesh 7          Gn  2   2   Ј<                PJ 4mesh 7          Fo  2   2   Ј<                PJ 4mesh 7          p  2   2   Ј<                PJ 4mesh 7          q  2   2   Ј<                PJ 4mesh 7            F   F               M         $0H`l
+E}L4mesh        A   A               `T         $0H`lM4mesh       o F   F               ˹T         $0H`l
+MT4mesh       j1  A   A               p[         $0H`lT4mesh         F   F               Z\         $0H`l
+$U[4mesh        A   A               
+`c         $0H`l[\4mesh       o F   F               c         $0H`l
+\`c4mesh       j1  A   A               *k         $0H`lc4mesh         F   F               +k         $0H`l
+fdk4mesh        A   A               Jr         $0H`lk4mesh       o F   F               K>s         $0H`l
+lr4mesh       j1  A   A               jCz         $0H`l>s4mesh         F   F               kz         $0H`l
+lCz4mesh       5 2   2   Ѐ<                 J 4mesh 7          6       Ԁ              9       Ԁ              < 2   2   Ј<                 J 4mesh 7	          O ,   ,   Ѐ<                0  F                _       Ԁ               A   A                        $0H`lz4mesh       n A   A               @         $0H`l4mesh       o       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
+        r       Ԁ           	   j1  A   A                        $0H`l4mesh    	     F   F               p!         $0H`l
+	ւ4mesh    	    A   A               &         $0H`l"4mesh    	   o F   F                        $0H`l
 '	w4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap	2014-06-17 10:34:00.456636522 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap	2014-06-17 10:33:13.813996579 -0700
@@ -2,225 +2,224 @@
      	     	   J   $0H`l4mesh3          9 7          \        Ԁ       
         ^        Ԁ       
           P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7            A   A          	     	            $0H`l  4mesh        8  R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	  J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	0  J   $0H`l4mesh3         9 7                  Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          $A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          'D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F                 ]          $0H`l
-  = 4mesh        4^  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          D^        Ԁ               ^  P   P   Ѐ<                0 J    $0H`l3         9 7          S_        Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7             R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7          M  R   R   Ј<                @  J   $0H`l4mesh3         9 7          #        Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7           R   R   Ј<                  J   $0H`l4mesh3          9 7           R   R   Ј<                  J   $0H`l4mesh3          9 7          ' R   R   Ј<                  J   $0H`l4mesh3          9 7          7 R   R   Ј<                  J   $0H`l4mesh3          9 7           2   2   Ѐ<                  J 4mesh 7           "       Ԁ               p 2   2   Ѐ<                P J 4mesh 7           	       Ԁ               d R   R   Ѐ<                0  J   $0H`l4mesh3          9 7          Y R   R   Ј<                0  J   $0H`l4mesh3          9 7          W R   R   Ј<                0  J   $0H`l4mesh3          9 7          g R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7          ߤ R   R   Ј<                0  J   $0H`l4mesh3          9 7           2   2   Ѐ<                @ J 4mesh 7            > F   F          	     	 ƛ         $0H`l
-  ] 4mesh         <   <                         $0H`l 4mesh         R   R   Ѐ<                `  J   $0H`l4mesh3         9 7          - R   R   Ј<                `  J   $0H`l4mesh3         9 7          O R   R   Ј<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7          x R   R   Ј<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7          1 F   F                1         $0H`l
- 4mesh        T R   R   Ѐ<                P  J   $0H`l4mesh3          9 7          d       Ԁ                P   P   Ѐ<                p J    $0H`l3         9 7          s        Ԁ               g R   R   Ѐ<                `  J   $0H`l4mesh3          9 7          h R   R   Ј<                `  J   $0H`l4mesh3          9 7          j R   R   Ј<                `  J   $0H`l4mesh3          9 7          k R   R   Ј<                `  J   $0H`l4mesh3          9 7          l R   R   Ј<                `  J   $0H`l4mesh3          9 7          r R   R   Ѐ<                  J   $0H`l4mesh3         9 7          s R   R   Ј<                  J   $0H`l4mesh3         9 7          t R   R   Ј<                  J   $0H`l4mesh3         9 7          v R   R   Ј<                  J   $0H`l4mesh3         9 7           w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               x P   P   Ѐ<                p J    $0H`l3         9 7          x       Ԁ               z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          
-	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           ^= F   F          	     	  <         $0H`l
- 4mesh       1  A   A                 s         $0H`l4mesh       2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              m  F   F                 Q         $0H`l
- =t4mesh       > F   F          	     	0          $0H`l
- F4mesh        F   F               0          $0H`l
-4mesh       1 F   F               0 qP         $0H`l
- 4mesh       ^= F   F          	     	@ &         $0H`l
- P4mesh         L   L          	@      
+     	     	 J     $0H`l3         9 7            A   A          	     	            $0H`l  4mesh        8  R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          $A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          'D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F               0 ]          $0H`l
+  = 4mesh        4^  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          D^        Ԁ               ^  P   P   Ѐ<                @ J    $0H`l3         9 7          S_        Ԁ                 R   R   Ѐ<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7             R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7          M  R   R   Ј<                P  J   $0H`l4mesh3         9 7          #        Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7            R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          ' R   R   Ј<                   J   $0H`l4mesh3          9 7          7 R   R   Ј<                   J   $0H`l4mesh3          9 7           2   2   Ѐ<                0 J 4mesh 7           "       Ԁ               p 2   2   Ѐ<                ` J 4mesh 7           	       Ԁ               d R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          Y R   R   Ј<                @  J   $0H`l4mesh3          9 7          W R   R   Ј<                @  J   $0H`l4mesh3          9 7          g R   R   Ј<                @  J   $0H`l4mesh3          9 7           R   R   Ј<                @  J   $0H`l4mesh3          9 7           R   R   Ј<                @  J   $0H`l4mesh3          9 7          ߤ R   R   Ј<                @  J   $0H`l4mesh3          9 7           2   2   Ѐ<                P J 4mesh 7            > F   F          	     	P ƛ         $0H`l
+  ] 4mesh         <   <               `          $0H`l 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3         9 7          - R   R   Ј<                p  J   $0H`l4mesh3         9 7          O R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          x R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          1 F   F                1         $0H`l
+ 4mesh        T R   R   Ѐ<                p  J   $0H`l4mesh3          9 7          d       Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7          s        Ԁ               g R   R   Ѐ<                  J   $0H`l4mesh3          9 7          h R   R   Ј<                  J   $0H`l4mesh3          9 7          j R   R   Ј<                  J   $0H`l4mesh3          9 7          k R   R   Ј<                  J   $0H`l4mesh3          9 7          l R   R   Ј<                  J   $0H`l4mesh3          9 7          r R   R   Ѐ<                  J   $0H`l4mesh3         9 7          s R   R   Ј<                  J   $0H`l4mesh3         9 7          t R   R   Ј<                  J   $0H`l4mesh3         9 7          v R   R   Ј<                  J   $0H`l4mesh3         9 7           w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               x P   P   Ѐ<                 J    $0H`l3         9 7          x       Ԁ               z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          
+	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           ^= F   F          	     	` <         $0H`l
+ 4mesh       1  A   A                s         $0H`l4mesh       2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              m  F   F                Q         $0H`l
+ =t4mesh       > F   F          	     	p          $0H`l
+ F4mesh        F   F                         $0H`l
+4mesh       1 F   F                qP         $0H`l
+ 4mesh       ^= F   F          	     	 &         $0H`l
+ P4mesh         L   L          	      
                
 
 
-         L   L                
+         L   L                
                
 
 
-       
-  L   L                
+         L   L               
                
 
 
-         E   E   Ѐ               D%              j       
-             E   E   Ѐ               D%              e       
-           2  E   E   Ѐ       	     	P   D%                     
-                   Ԁ       
-         ?   ?   Ѐ<           	     	`   E                   
-                  Ԁ       	         ?   ?   Ѐ<                   E           ,       
-                  Ԁ                 ?   ?   Ѐ<                   E                  
-                   Ԁ              !  L   L   <                
-                      
+         E   E   Ѐ               D%              j       
+             E   E   Ѐ               D%              e       
+           3  E   E   Ѐ       	     	   D%                     
+                   Ԁ       
+         ?   ?   Ѐ<           	     	   E                   
+                  Ԁ       	         ?   ?   Ѐ<                   E           ,       
+                  Ԁ              !  ?   ?   Ѐ<                0  E                  
+                   Ԁ              !  L   L   <                
+@                     
      
 
-       !        Ԁ              "  L   L   <      	          
-                      
+       !        Ԁ              	"  L   L   <      	          
+                      
      
 
-       "        Ԁ              p#  L   L   <      
+       "        Ԁ              q#  L   L   <      
      	     
-p                      
+                      
      
 
-       $        Ԁ       
-       %  `   `   <           	           
+       $        Ԁ       
+       %  `   `   <           	           
          E  0    @  
 
- 	                              %        Ԁ       	       %  `   `   <                      
+ 	                              %        Ԁ       	       %  `   `   <                     
          E  0    @  
 
- 	                              &        Ԁ              1  F   F               @          $0H`l
-P4mesh       6  L   L                               
+ 	                              &        Ԁ              1  F   F               `         $0H`l
+P4mesh       6  L   L          p                    
 
-       :6  L   L                               
+       ;6  L   L                               
 
-       f7  L   L          	                     
+       g7  L   L          	                     
 
-       N8        Ԁ       
-       9  L   L   <           	           
+       O8        Ԁ       
+       9  L   L   <           	           
                 
 
      
-       9        Ԁ       	       r9  L   L   <                      
+       9        Ԁ       	       s9  L   L   <                0     
                 
 
      
-       /:        Ԁ              :  L   L   <                0     
+       0:        Ԁ              :  L   L   <                     
                 
 
      
-       E>        Ԁ              ?  `   `   <                
-@              E  0    @  
+       F>        Ԁ              	?  `   `   <                
+              E  0    @  
 
- 	                              ?        Ԁ              o?  `   `   <      	          
-               E  0    @  
+ 	                              ?        Ԁ              p?  `   `   <      	          
+@              E  0    @  
 
- 	                              D@        Ԁ              A  `   `   <      
+ 	                              E@        Ԁ              A  `   `   <      
      	     
-               E  0    @  
+               E  0    @  
 
- 	                              m  F   F               @          $0H`l
- 4mesh       V       Ԁ              V ,   ,   Ѐ<                P  F                V       Ԁ              V ,   ,   Ѐ<      	            F                qW       Ԁ              W ,   ,   Ѐ<      
-     	     	   F                > F   F          	     	P F &         $0H`l
- 4mesh       W E   E   Ѐ       	     	   D%         
-                         E   E   Ѐ               D%         
-     ,                  ޣ E   E   Ѐ            `  D%         
-                        F   F               P 
+ 	                              m  F   F               P         $0H`l
+ 4mesh       V       Ԁ              V ,   ,   Ѐ<                  F                V       Ԁ              V ,   ,   Ѐ<      	          `  F                qW       Ԁ              W ,   ,   Ѐ<      
+     	     	  F                > F   F          	     	 F &         $0H`l
+ 4mesh       X E   E   Ѐ       	     	0  D%         
+                         E   E   Ѐ            p  D%         
+     ,                  ߣ E   E   Ѐ              D%         
+                        F   F               
 W&         $0H`l
-4mesh       1 F   F               P &         $0H`l
-  &W&4mesh        E 2   2   Ѐ<                pJ 4mesh 7          F       Ԁ              G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          W
- E   E   Ѐ       	     	   D%         
-                        
- E   E   Ѐ            0  D%         
-     ,                  
- E   E   Ѐ              D%         
-                       ^= F   F          	     	` f-         $0H`l
- *&&4mesh       1  A   A               ` *-         $0H`l&4mesh       2        Ԁ              g3  P   P   Ѐ<                J    $0H`l3         9 7         6        Ԁ              m  F   F               ` 3.         $0H`l
- --4mesh        E   E   Ѐ       	     	   D%         
-                        f E   E   Ѐ            @  D%         
-     ,                  > F   F          	     	p b5         $0H`l
- -4.4mesh        F   F               p J5         $0H`l
-4..4mesh       1 F   F               p 5         $0H`l
- b554mesh       .	 E   E   Ѐ              D%              (       
-           =	 E   E   Ѐ            P  D%                     
-           @	       Ԁ       
-       	 ?   ?   Ѐ<           	     	  E                   
-          	       Ԁ       	       ,	 ?   ?   Ѐ<                `  E           ,       
-          	       Ԁ              c	 ?   ?   Ѐ<                  E                  
-          W	       Ԁ       
-       	 `   `   <           	           
+4mesh       1 F   F               &         $0H`l
+  &W&4mesh        E 2   2   Ѐ<                J 4mesh 7          F       Ԁ              G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          X
+ E   E   Ѐ       	     	@  D%         
+                        
+ E   E   Ѐ              D%         
+     ,                  
+ E   E   Ѐ               D%         
+                       ^= F   F          	     	Pf-         $0H`l
+ *&&4mesh       1  A   A               *-         $0H`l&4mesh       2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         6        Ԁ              m  F   F               3.         $0H`l
+ --4mesh        E   E   Ѐ       	     	`  D%         
+                        g E   E   Ѐ              D%         
+     ,                  > F   F          	     	pb5         $0H`l
+ -4.4mesh        F   F               @J5         $0H`l
+4..4mesh       1 F   F               5         $0H`l
+ b554mesh       /	 E   E   Ѐ            `  D%              (       
+           >	 E   E   Ѐ              D%                     
+           A	       Ԁ       
+       	 ?   ?   Ѐ<           	     	  E                   
+          	       Ԁ       	       -	 ?   ?   Ѐ<                  E           ,       
+          	       Ԁ              d	 ?   ?   Ѐ<                p  E                  
+          X	       Ԁ       
+       	 `   `   <           	          
          E  0   @  
 
- 	                              *	       Ԁ       	       	 `   `   <                p     
+ 	                              +	       Ԁ       	       	 `   `   <                     
          E  0   @  
 
- 	                              V	       Ԁ              	 `   `   <                      
+ 	                              W	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <           	     0     
+ 	                              	       Ԁ       
+       	 `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       	 `   `   <                     
+ 	                              	       Ԁ       	       	 `   `   <                      
          E  0   @  
 
- 	                              	 `   `   <                     
+ 	                              	 `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ              x	 `   `   <                     
+ 	                              	       Ԁ              y	 `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <                
-               E  0   @  
+ 	                              	       Ԁ       
+       	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              /	 `   `   <      	          
-              E  0   @  
+ 	                              	       Ԁ              0	 `   `   <      	          
+              E  0   @  
 
- 	                              	 `   `   <      	          
-              E  0   @  
+ 	                              	 `   `   <      	          
+              E  0   @  
 
- 	                              	       Ԁ              	 `   `   <           	     @     
+ 	                              	       Ԁ              	 `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       A	 `   `   <                     
+ 	                              	       Ԁ       	       B	 `   `   <                      
          E  0   @  
 
- 	                              	 `   `   <      
+ 	                              	 `   `   <      
      	     
-P              E  0   @  
+              E  0   @  
 
- 	                              	 `   `   <                     
+ 	                              	 `   `   <                      
          E  0   @  
 
- 	                              P	 `   `   <                
-0              E  0   @  
+ 	                              Q	 `   `   <                
+              E  0   @  
 
- 	                              `	       Ԁ              b	 `   `   <                     
+ 	                              a	       Ԁ              c	 `   `   <                      
          E  0   @  
 
- 	                              7	       Ԁ              	 `   `   <                @     
+ 	                              8	       Ԁ              	 `   `   <                     
          E  0   @  
 
- 	                              	 `   `   <      	          
-              E  0   @  
+ 	                              	 `   `   <      	          
+0              E  0   @  
 
- 	                              	       Ԁ              	       Ԁ              	 `   `   <                
-P              E  0   @  
+ 	                              	       Ԁ              	       Ԁ              	 `   `   <                
+              E  0   @  
 
- 	                              	       Ԁ              	 `   `   <      	          
-              E  0   @  
+ 	                              	       Ԁ              	 `   `   <      	          
+@              E  0   @  
 
- 	                               
-       Ԁ              
+ 	                               
+       Ԁ              
  `   `   <      
      	     
-p              E  0   @  
+              E  0   @  
 
- 	                              ^= F   F          	     	 =         $0H`l
- l554mesh                Ԁ       
-       k  `   `   <           	          
+ 	                              ^= F   F          	     	 =         $0H`l
+ l554mesh                Ԁ       
+       l  `   `   <           	          
          E  0   @  
 
- 	                              {        Ԁ       	         `   `   <                     
+ 	                              |        Ԁ       	         `   `   <                P     
          E  0   @  
 
- 	                                      Ԁ              j  `   `   <                `     
+ 	                                      Ԁ              k  `   `   <                     
          E  0   @  
 
- 	                                      Ԁ              	  `   `   <                
-p              E  0   @  
+ 	                                      Ԁ              	  `   `   <                
+              E  0   @  
 
- 	                              	        Ԁ              	  `   `   <      	          
-              E  0   @  
+ 	                              	        Ԁ              	  `   `   <      	          
+`              E  0   @  
 
- 	                              
-        Ԁ                `   `   <      
+ 	                              
+        Ԁ                `   `   <      
      	     
-              E  0   @  
+               E  0   @  
 
- 	                              1  F   F                j:=         $0H`l
-5564mesh       m  F   F                v=         $0H`l
- =:=4mesh       > F   F          	     	 ƤD         $0H`l
- l5v=4mesh              Ԁ       
-        `   `   <           	          
+ 	                              1  F   F                j:=         $0H`l
+5564mesh       m  F   F               pv=         $0H`l
+ =:=4mesh       > F   F          	     	0ƤD         $0H`l
+ l5v=4mesh              Ԁ       
+        `   `   <           	     @     
          E  0   @  
 
- 	                              Ǣ       Ԁ       	        `   `   <                     
+ 	                              Ȣ       Ԁ       	        `   `   <                     
          E  0   @  
 
- 	                                     Ԁ              E ,   ,   Ј<           	     	  F      
-          U       Ԁ       	        ,   ,   Ѐ<                   F      
-          צ 2   2   Ѐ<      
-     	     	J 4mesh 7          G ,   ,   Ј<                   F      
-          ا       Ԁ              p       Ԁ               F   F                D         $0H`l
-v==4mesh       1 F   F                1E         $0H`l
- DD4mesh       V= A   A          	     	 EL         $0H`lE4mesh       =>       Ԁ       
+ 	                                     Ԁ              F ,   ,   Ј<           	     	P  F      
+          V       Ԁ       	        ,   ,   Ѐ<                  F      
+          ئ 2   2   Ѐ<      
+     	     	`J 4mesh 7          H ,   ,   Ј<                  F      
+          ٧       Ԁ              q       Ԁ               F   F               0D         $0H`l
+v==4mesh       1 F   F               1E         $0H`l
+ DD4mesh       V= A   A          	     	pEL         $0H`lE4mesh       =>       Ԁ       
        @ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         A       Ԁ       
-       m  F   F                QL         $0H`l
- FLD4mesh        6   6   Ѐ<      	            F                         6   6   Ј<      	            F                         6   6   Ј<      	            F                        h 6   6   Ј<      	            F                        t 6   6   Ј<      	            F                        e 6   6   Ј<      	            F                        ; 6   6   Ј<      	            F                         2   2   Ѐ<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7           2   2   Ј<                 J 4mesh 7          1 F   F                qYT         $0H`l
- FLD4mesh       ; 2   2   Ѐ<      	          0J 4mesh 7          ; 2   2   Ј<      	          0J 4mesh 7          < 2   2   Ј<      	          0J 4mesh 7          = 2   2   Ј<      	          0J 4mesh 7          > 2   2   Ј<      	          0J 4mesh 7          ? 2   2   Ј<      	          0J 4mesh 7          @ 2   2   Ј<      	          0J 4mesh 7          m  A   A                [         $0H`l FL4mesh       1 <   <                c         $0H`l 4mesh         <   <                lk         $0H`l 4mesh       1^ <   <                -s         $0H`l 4mesh         <   <                z         $0H`l 4mesh       1v <   <               1         $0H`l 4mesh    	     <   <                Q=         $0H`l 4mesh    	   1j <   <               0q         $0H`l 4mesh    
\ No newline at end of file
+     	     	 J   $0H`l4mesh3         9 7         A       Ԁ       
+       m  F   F               QL         $0H`l
+ FLD4mesh        6   6   Ѐ<      	            F                         6   6   Ј<      	            F                         6   6   Ј<      	            F                        h 6   6   Ј<      	            F                        t 6   6   Ј<      	            F                        e 6   6   Ј<      	            F                        ; 6   6   Ј<      	            F                         2   2   Ѐ<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7          1 F   F               qYT         $0H`l
+ FLD4mesh       ; 2   2   Ѐ<      	          J 4mesh 7          ; 2   2   Ј<      	          J 4mesh 7          < 2   2   Ј<      	          J 4mesh 7          = 2   2   Ј<      	          J 4mesh 7          > 2   2   Ј<      	          J 4mesh 7          ? 2   2   Ј<      	          J 4mesh 7          @ 2   2   Ј<      	          J 4mesh 7          m  A   A                [         $0H`l FL4mesh       1 <   <               c         $0H`l 4mesh         <   <                lk         $0H`l 4mesh       1^ <   <               0-s         $0H`l 4mesh         <   <               @z         $0H`l 4mesh       1v <   <               P1         $0H`l 4mesh    	     <   <               `Q=         $0H`l 4mesh    	   1j <   <               pq         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap	2014-06-17 10:34:00.457636515 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap	2014-06-17 10:33:13.814996571 -0700
@@ -3,402 +3,402 @@
   *          $0H`l 4mesh          R   R   Ѐ<      
      	     	   J   $0H`l4mesh3          9 7          y        Ԁ       	          P   P   Ѐ<      	     
      
-  J     $0H`l3          9 7          /        Ԁ       
+ J     $0H`l3          9 7          /        Ԁ       
         !  R   R   Ѐ<      	     
      
-  J   $0H`l4mesh3          9 7          1        Ԁ       
+   J   $0H`l4mesh3          9 7          1        Ԁ       
           P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7          @        Ԁ       	          A   A          	     	            $0H`l  4mesh          R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	  J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	0  J   $0H`l4mesh3         9 7                  Ԁ       	        ~  P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               }>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F                 ]          $0H`l
-  = 4mesh        q^        Ԁ               _  P   P   Ѐ<                0 J    $0H`l3         9 7          [  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          t  R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7            R   R   Ј<                @  J   $0H`l4mesh3         9 7          O       Ԁ                2   2   Ѐ<                P J 4mesh 7           ƛ F   F          	     	 ƛ         $0H`l
+     	     	 J     $0H`l3         9 7          @        Ԁ       	          A   A          	     	            $0H`l  4mesh          R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               }>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F               0 ]          $0H`l
+  = 4mesh        q^        Ԁ               _  P   P   Ѐ<                @ J    $0H`l3         9 7          [  R   R   Ѐ<                P  J   $0H`l4mesh3         9 7          t  R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7          O       Ԁ                2   2   Ѐ<                ` J 4mesh 7           ƛ F   F          	     	P ƛ         $0H`l
   ] 4mesh         A   A          
      
- J         $0H`l 4mesh         R   R   Ѐ<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7           R   R   Ј<                `  J   $0H`l4mesh3         9 7          , R   R   Ј<                `  J   $0H`l4mesh3         9 7          * R   R   Ј<                `  J   $0H`l4mesh3         9 7           F   F                1         $0H`l
- 4mesh               Ԁ               7  P   P   Ѐ<                p J    $0H`l3         9 7          {s R   R   Ѐ<                  J   $0H`l4mesh3         9 7          pt R   R   Ј<                  J   $0H`l4mesh3         9 7          u R   R   Ј<                  J   $0H`l4mesh3         9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          x       Ԁ               < F   F          	     	  <         $0H`l
+0 J         $0H`l 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          , R   R   Ј<                p  J   $0H`l4mesh3         9 7          * R   R   Ј<                p  J   $0H`l4mesh3         9 7           F   F                1         $0H`l
+ 4mesh               Ԁ               7  P   P   Ѐ<                 J    $0H`l3         9 7          {s R   R   Ѐ<                  J   $0H`l4mesh3         9 7          pt R   R   Ј<                  J   $0H`l4mesh3         9 7          u R   R   Ј<                  J   $0H`l4mesh3         9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          x       Ԁ               < F   F          	     	` <         $0H`l
  4mesh         A   A          
      
-  jF         $0H`l =4mesh       m  F   F                 Q         $0H`l
- =t4mesh       ƛ F   F          	     	0          $0H`l
+@ jF         $0H`l =4mesh       m  F   F                Q         $0H`l
+ =t4mesh       ƛ F   F          	     	p          $0H`l
  F4mesh        A   A          
      
-0          $0H`l 4mesh        F   F               0 qP         $0H`l
- 4mesh       < F   F          	     	@ &         $0H`l
+P          $0H`l 4mesh        F   F                qP         $0H`l
+ 4mesh       < F   F          	     	 &         $0H`l
  P4mesh         A   A          
      
-@          $0H`l 4mesh         L   L          
-       
+`          $0H`l 4mesh         L   L          
+p      
                 
 
 
-       3  L   L          	@      
+       3  L   L          	      
                
 
 
-       _  L   L                
+       _  L   L                
                
 
 
-       o  E   E   Ѐ               D%              e       
-             E   E   Ѐ       	     	P   D%                     
+       o  E   E   Ѐ               D%              e       
+             E   E   Ѐ       	     	   D%                     
              ?   ?   Ѐ<      	     
      
-0   E                      
+   E                      
                   Ԁ       
-         ?   ?   Ѐ<           	     	`   E                   
-                  Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
+         ?   ?   Ѐ<           	     	   E                   
+                  Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
           !        Ԁ              "  L   L   <      	          
-                      
+                      
      
 
        "        Ԁ              "  L   L   <      
      	     
-p                      
+                      
      
 
        #        Ԁ       	       p$  `   `   <      	     
-     @      
+           
           E  0    @  
 
  	                              $        Ԁ       
-       $  `   `   <           	           
+       $  `   `   <           	           
          E  0    @  
 
- 	                              %        Ԁ       	       &  `   `   <                      
+ 	                              %        Ԁ       	       &  `   `   <                     
          E  0    @  
 
- 	                              6  L   L                               
+ 	                              6  L   L                               
 
-       6  L   L          	                     
+       6  L   L          	                     
 
        8  L   L   <      	     
-     P      
+           
                  
 
      
        "8        Ԁ       
-       8  L   L   <           	           
+       8  L   L   <           	           
                 
 
      
        H9        Ԁ       	       E?        Ԁ              @  `   `   <      	          
-               E  0    @  
+@              E  0    @  
 
  	                              @        Ԁ              o@  `   `   <      
      	     
-               E  0    @  
+               E  0    @  
 
- 	                              DA        Ԁ       	       m  F   F               @          $0H`l
- 4mesh       V       Ԁ              4W ,   ,   Ѐ<      	            F                DW       Ԁ              W ,   ,   Ѐ<      
-     	     	   F                #X       Ԁ       	       ƛ F   F          	     	P F &         $0H`l
+ 	                              DA        Ԁ       	       m  F   F               P         $0H`l
+ 4mesh       V       Ԁ              4W ,   ,   Ѐ<      	          `  F                DW       Ԁ              W ,   ,   Ѐ<      
+     	     	  F                #X       Ԁ       	       ƛ F   F          	     	 F &         $0H`l
  4mesh        E   E   Ѐ       
      
-p   D%           
-                          E   E   Ѐ       	     	   D%         
-                         E   E   Ѐ               D%         
+   D%           
+                          E   E   Ѐ       	     	0  D%         
+                         E   E   Ѐ            p  D%         
      ,                   A   A          
      
-P )&         $0H`l  &4mesh        F   F               P &         $0H`l
+ )&         $0H`l  &4mesh        F   F               &         $0H`l
   &W&4mesh       
  E   E   Ѐ       
      
-   D%           
+   D%           
                          
- E   E   Ѐ       	     	   D%         
+ E   E   Ѐ       	     	@  D%         
                         
- E   E   Ѐ            0  D%         
-     ,                  < F   F          	     	` f-         $0H`l
+ E   E   Ѐ              D%         
+     ,                  < F   F          	     	Pf-         $0H`l
  *&&4mesh         A   A          
      
-` -         $0H`l -4mesh       m  F   F               ` 3.         $0H`l
+ -         $0H`l -4mesh       m  F   F               3.         $0H`l
  --4mesh       T E   E   Ѐ       
      
-   D%           
-                          E   E   Ѐ       	     	   D%         
-                         E   E   Ѐ            @  D%         
-     ,                  ƛ F   F          	     	p b5         $0H`l
+   D%           
+                          E   E   Ѐ       	     	`  D%         
+                         E   E   Ѐ              D%         
+     ,                  ƛ F   F          	     	pb5         $0H`l
  -4.4mesh        A   A          
      
-p 
-l5         $0H`l b54mesh        F   F               p 5         $0H`l
- b554mesh       	 E   E   Ѐ            P  D%                     
-           	 E   E   Ѐ       	     	   D%              d       
+
+l5         $0H`l b54mesh        F   F               5         $0H`l
+ b554mesh       	 E   E   Ѐ              D%                     
+           	 E   E   Ѐ       	     	  D%              d       
            	 ?   ?   Ѐ<      	     
      
-   E                      
+   E                      
           	       Ԁ       
-       b	 ?   ?   Ѐ<           	     	  E                   
+       b	 ?   ?   Ѐ<           	     	  E                   
           	       Ԁ       	       	 `   `   <      	     
-           
+     0     
           E  0   @  
 
  	                              +	       Ԁ       
-       	 `   `   <           	           
+       	 `   `   <           	          
          E  0   @  
 
  	                              W	       Ԁ       	       	 `   `   <      	     
-           
+     @     
           E  0   @  
 
  	                              	       Ԁ       
-       	 `   `   <           	     0     
+       	 `   `   <           	          
          E  0   @  
 
  	                              	       Ԁ       	       	 `   `   <      	     
-           
+     P     
           E  0   @  
 
  	                              	       Ԁ       
-       6	 `   `   <           	     @     
+       6	 `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ              0	 `   `   <           	     @     
+ 	                              	       Ԁ              0	 `   `   <           	          
          E  0   @  
 
- 	                              	 `   `   <           	     @     
+ 	                              	 `   `   <           	          
          E  0   @  
 
  	                              	 `   `   <      	          
-              E  0   @  
+              E  0   @  
 
- 	                              	       Ԁ              '	 `   `   <           	     @     
+ 	                              	       Ԁ              '	 `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       	 `   `   <                     
+ 	                              	       Ԁ       	       	 `   `   <                      
          E  0   @  
 
  	                              J	 `   `   <      
      	     
-P              E  0   @  
+              E  0   @  
 
- 	                              	       Ԁ       	       	       Ԁ              	 `   `   <                     
+ 	                              	       Ԁ       	       	       Ԁ              	 `   `   <                      
          E  0   @  
 
  	                              T	 `   `   <      	          
-              E  0   @  
+0              E  0   @  
 
  	                              d	       Ԁ              	 `   `   <      
      	     
-`              E  0   @  
+              E  0   @  
 
  	                              	       Ԁ       	       	       Ԁ               
  `   `   <      	          
-              E  0   @  
+@              E  0   @  
 
  	                               
        Ԁ               
  `   `   <      
      	     
-p              E  0   @  
+              E  0   @  
 
  	                              
-       Ԁ       	       < F   F          	     	 =         $0H`l
+       Ԁ       	       < F   F          	     	 =         $0H`l
  l554mesh          `   `   <      	     
-           
+     `     
           E  0   @  
 
  	                                       Ԁ       
-          `   `   <           	          
+          `   `   <           	          
          E  0   @  
 
- 	                                `   `   <           	          
+ 	                                `   `   <           	          
          E  0   @  
 
  	                                      Ԁ       	       	        Ԁ              
   `   `   <      	          
-              E  0   @  
+`              E  0   @  
 
  	                              
         Ԁ              
   `   `   <      
      	     
-              E  0   @  
+               E  0   @  
 
- 	                                      Ԁ       	       m  F   F                v=         $0H`l
- =:=4mesh       ƛ F   F          	     	 ƤD         $0H`l
+ 	                                      Ԁ       	       m  F   F               pv=         $0H`l
+ =:=4mesh       ƛ F   F          	     	0ƤD         $0H`l
  l5v=4mesh        `   `   <      	     
-           
+          
           E  0   @  
 
  	                              ȡ       Ԁ       
-        `   `   <           	          
+        `   `   <           	     @     
          E  0   @  
 
- 	                                     Ԁ       	        `   `   <                     
+ 	                                     Ԁ       	        `   `   <                     
          E  0   @  
 
- 	                               ,   ,   Ѐ<           	     	  F      
-           ,   ,   Ј<           	     	  F      
+ 	                               ,   ,   Ѐ<           	     	P  F      
+           ,   ,   Ј<           	     	P  F      
                  Ԁ       	       { 2   2   Ѐ<      
-     	     	J 4mesh 7                 Ԁ       	       v 2   2   Ј<      	     
+     	     	`J 4mesh 7                 Ԁ       	       v 2   2   Ј<      	     
      
- J 4mesh 7                 Ԁ       
-        F   F                1E         $0H`l
- DD4mesh       < A   A          	     	 EL         $0H`lE4mesh        > R   R   Ѐ<      	     
-     
- J   $0H`l4mesh3          9 7         >       Ԁ       
-       ^> P   P   Ѐ<      
-     	     	J    $0H`l3         9 7         F? P   P   Ј<      
-     	     	J    $0H`l3         9 7         @       Ԁ       	       )@ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
+J 4mesh 7                 Ԁ       
+        F   F               1E         $0H`l
+ DD4mesh       < A   A          	     	pEL         $0H`lE4mesh       > R   R   Ѐ<      	     
+     
+ J   $0H`l4mesh3          9 7         >       Ԁ       
+       _> P   P   Ѐ<      
+     	     	J    $0H`l3         9 7         G? P   P   Ј<      
+     	     	J    $0H`l3         9 7         @       Ԁ       	       *@ R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
      
- J    $0H`l3         9 7         A       Ԁ       
+J    $0H`l3         9 7         A       Ԁ       
        ,  A   A          
      
- jwL         $0H`lFL4mesh       t  E   E   Ѐ       
+jwL         $0H`lFL4mesh       t  E   E   Ѐ       
      
-@  D%           
+  D%           
                            ?   ?   Ѐ<      
-     	     	  E        
+     	     	  E        
      d                 ?!       Ԁ       	       " `   `   <      	     
-     P     
+           
           E  0   @  
 
  	                              "       Ԁ       
-       i" `   `   <           	           
+       i" `   `   <           	          
          E  0   @  
 
- 	                              # E   E   Ѐ       	     	  D%         
-                        $ `   `   <           	           
+ 	                              # E   E   Ѐ       	     	  D%         
+                        $ `   `   <           	          
          E  0   @  
 
- 	                              m' `   `   <           	           
+ 	                              m' `   `   <           	          
          E  0   @  
 
- 	                              * `   `   <           	           
+ 	                              * `   `   <           	          
          E  0   @  
 
- 	                              (- `   `   <           	           
+ 	                              (- `   `   <           	          
          E  0   @  
 
- 	                              5 `   `   <           	           
+ 	                              5 `   `   <           	          
          E  0   @  
 
- 	                              	I `   `   <           	           
+ 	                              	I `   `   <           	          
          E  0   @  
 
- 	                              ƛ F   F          	     	 S         $0H`l
+ 	                              ƛ F   F          	     	S         $0H`l
 EwL4mesh        `   `   <      	     
-     `     
+          
           E  0   @  
 
  	                                     Ԁ       
-       [ `   `   <           	           
+       [ `   `   <           	          
          E  0   @  
 
- 	                              r `   `   <           	           
+ 	                              r `   `   <           	          
          E  0   @  
 
- 	                              ֨ `   `   <           	           
+ 	                              ֨ `   `   <           	          
          E  0   @  
 
- 	                               `   `   <           	           
+ 	                               `   `   <           	          
          E  0   @  
 
- 	                              Ȱ `   `   <           	           
+ 	                              Ȱ `   `   <           	          
          E  0   @  
 
- 	                              ^ `   `   <           	           
+ 	                              ^ `   `   <           	          
          E  0   @  
 
- 	                              O `   `   <           	           
+ 	                              O `   `   <           	          
          E  0   @  
 
- 	                              T 2   2   Ѐ<           	     	0J 4mesh 7          & 2   2   Ј<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7           A   A          
+ 	                              T 2   2   Ѐ<           	     	J 4mesh 7          & 2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           A   A          
      
- DT         $0H`lS4mesh       : 6   6   Ѐ<      
-     	     	@  F                        5 6   6   Ј<      
-     	     	@  F                               Ԁ       	       t E   E   Ѐ       
+ DT         $0H`lS4mesh       : 6   6   Ѐ<      
+     	     	   F                        5 6   6   Ј<      
+     	     	   F                               Ԁ       	       t E   E   Ѐ       
      
-p  D%           
-	                         À E   E   Ѐ       	     	P  D%         
-	                        < A   A          	     	 &[         $0H`lDT4mesh       X  A   A          
+0  D%           
+	                         À E   E   Ѐ       	     	  D%         
+	                        < A   A          	     	 &[         $0H`lDT4mesh       X  A   A          
      
- [         $0H`l[4mesh       ƛ A   A          	     	 F)c         $0H`l[4mesh       4	 E   E   Ѐ       
+@[         $0H`l[4mesh       ƛ A   A          	     	0F)c         $0H`l[4mesh       4	 E   E   Ѐ       
      
-  D%           
+`  D%           
 
-                         	 E   E   Ѐ       	     	`  D%         
+                         	 E   E   Ѐ       	     	@  D%         
 
-                        < A   A          	     	 fj         $0H`l[4mesh       ZV  2   2   Ѐ<      
-     	     	pJ 4mesh 7          V        Ԁ       	       qW  2   2   Ѐ<      	     
+                        < A   A          	     	Pfj         $0H`l[4mesh       ZV  2   2   Ѐ<      
+     	     	`J 4mesh 7          V        Ԁ       	       qW  2   2   Ѐ<      	     
      
-J 4mesh 7          W        Ԁ       
+pJ 4mesh 7          W        Ԁ       
        X  A   A          
      
- 'k         $0H`l)c4mesh       X  R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         Y        Ԁ       	       Y  2   2   Ѐ<      	     
+'k         $0H`l)c4mesh       X  R   R   Ѐ<      
+     	     	p J   $0H`l4mesh3          9 7         Y        Ԁ       	       Y  2   2   Ѐ<      	     
      
-J 4mesh 7          Z        Ԁ       
+J 4mesh 7          Z        Ԁ       
        ]Z  2   2   Ѐ<      
-     	     	J 4mesh 7          Z        Ԁ       	       w <   <          	     	 Gr         $0H`l 4mesh       x R   R   Ѐ<      	     
+     	     	J 4mesh 7          Z        Ԁ       	       w <   <          	     	Gr         $0H`l 4mesh       x R   R   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         x       Ԁ       
-       6y P   P   Ѐ<      
-     	     	J    $0H`l3          9 7         y       Ԁ       	       4z R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
+ J   $0H`l4mesh3          9 7         x       Ԁ       
+       7y P   P   Ѐ<      
+     	     	J    $0H`l3          9 7         y       Ԁ       	       5z R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
      
-J    $0H`l3         9 7         {       Ԁ       
+J    $0H`l3         9 7         {       Ԁ       
        ! A   A          
      
- 
-r         $0H`lGr4mesh        A   A          	     	 y         $0H`lr4mesh       t   E   E   Ѐ       
+
+r         $0H`lGr4mesh        A   A          	     	y         $0H`lr4mesh       t   E   E   Ѐ       
      
-  D%           
-                            E   E   Ѐ       	     	  D%         
+  D%           
+                            E   E   Ѐ       	     	  D%         
                           A   A          
      
- *z         $0H`lGr4mesh       t  E   E   Ѐ       
+*z         $0H`lGr4mesh       t  E   E   Ѐ       
      
-  D%   	        
-                           E   E   Ѐ       	     	  D% 	        
-                        Jv 2   2   Ѐ<      	     
+  D%   	        
+                           E   E   Ѐ       	     	  D% 	        
+                        Kv 2   2   Ѐ<      	     
      
-J 4mesh 7          Zv       Ԁ       
-       v 2   2   Ѐ<      
-     	     	J 4mesh 7          Aw       Ԁ       	       w A   A          	     	Ɖ         $0H`lz4mesh       x R   R   Ѐ<      	     
+ J 4mesh 7          [v       Ԁ       
+       v 2   2   Ѐ<      
+     	     	J 4mesh 7          Bw       Ԁ       	       w A   A          	     	 Ɖ         $0H`lz4mesh       x R   R   Ѐ<      	     
      
-  J   $0H`l4mesh3          9 7         x       Ԁ       
-       >y 2   2   Ѐ<      
-     	     	J 4mesh 7          y       Ԁ       	       | R   R   Ј<      	     
+ J   $0H`l4mesh3          9 7         x       Ԁ       
+       ?y 2   2   Ѐ<      
+     	     	J 4mesh 7          y       Ԁ       	       | R   R   Ј<      	     
      
-  J   $0H`l4mesh3          9 7         |       Ԁ       
-       n} 2   2   Ѐ<      	     
+ J   $0H`l4mesh3          9 7         |       Ԁ       
+       o} 2   2   Ѐ<      	     
      
-J 4mesh 7          ~}       Ԁ       
+ J 4mesh 7          }       Ԁ       
        u <   <          
      
-J         $0H`l 4mesh       u R   R   Ѐ<      
-     	     	  J   $0H`l4mesh3          9 7         v R   R   Ј<      
-     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       ax P   P   Ѐ<      	     
+0J         $0H`l 4mesh       u R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7         v R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       ax P   P   Ѐ<      	     
      
- J    $0H`l3          9 7         qx       Ԁ       
+@J    $0H`l3          9 7         qx       Ԁ       
        Qy R   R   Ѐ<      	     
      
-0 J   $0H`l4mesh3          9 7         ay       Ԁ       
+P J   $0H`l4mesh3          9 7         ay       Ԁ       
        y P   P   Ѐ<      
-     	     	J    $0H`l3         9 7         pz       Ԁ       	       t E   E   Ѐ       
+     	     	0J    $0H`l3         9 7         pz       Ԁ       	       t E   E   Ѐ       
      
-@  D%   
+`  D%   
         
-                         À E   E   Ѐ       	     	   D% 
+                         À E   E   Ѐ       	     	@  D% 
         
-     l                     A   A          	     	          $0H`l4mesh    	     A   A          
+     l                     A   A          	     	P         $0H`l4mesh    	     A   A          
      
- j(         $0H`l4mesh    	   _ A   A          	     	0         $0H`l(4mesh    	   u A   A          
+pj(         $0H`l4mesh    	   _ A   A          	     	`         $0H`l(4mesh    	   u A   A          
      
-0ɑ         $0H`l4mesh    	   4	 E   E   Ѐ       
+ɑ         $0H`l4mesh    	   4	 E   E   Ѐ       
      
-P  D%           
-                      	   	 E   E   Ѐ       	     	0  D%         
-     l                	   r 2   2   Ѐ<      	     
+  D%           
+                      	   	 E   E   Ѐ       	     	p  D%         
+     l                	   s 2   2   Ѐ<      	     
      
-`J 4mesh 7       	          Ԁ       
-    	    2   2   Ѐ<      
-     	     	@J 4mesh 7       	     2   2   Ј<      
-     	     	@J 4mesh 7       	          Ԁ       	    	   3 A   A          	     	@&U         $0H`lɑ4mesh    	   N R   R   Ѐ<      	     
+J 4mesh 7       	          Ԁ       
+    	    2   2   Ѐ<      
+     	     	J 4mesh 7       	     2   2   Ј<      
+     	     	J 4mesh 7       	          Ԁ       	    	   4 A   A          	     	&U         $0H`lɑ4mesh    	   O R   R   Ѐ<      	     
      
-p J   $0H`l4mesh3          9 7      	   ^       Ԁ       
-    	    2   2   Ѐ<      
-     	     	PJ 4mesh 7       	   `       Ԁ       	    	    2   2   Ѐ<      	     
+ J   $0H`l4mesh3          9 7      	   _       Ԁ       
+    	    2   2   Ѐ<      
+     	     	J 4mesh 7       	   a       Ԁ       	    	    2   2   Ѐ<      	     
      
-J 4mesh 7       	          Ԁ       
+J 4mesh 7       	          Ԁ       
     
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap	2014-06-17 10:34:00.458636507 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap	2014-06-17 10:33:13.815996564 -0700
@@ -3,372 +3,371 @@
   *          $0H`l 4mesh        =  R   R   Ѐ<      
      	     	   J   $0H`l4mesh3          9 7          M        Ԁ       	          P   P   Ѐ<      	     
      
-  J     $0H`l3          9 7          \        Ԁ       
+ J     $0H`l3          9 7          \        Ԁ       
           R   R   Ѐ<      	     
      
-  J   $0H`l4mesh3          9 7          ^        Ԁ       
+   J   $0H`l4mesh3          9 7          ^        Ԁ       
           P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7                  Ԁ       	          A   A          	     	            $0H`l  4mesh                Ԁ                 P   P   Ѐ<           	     	  J    $0H`l3         9 7            R   R   Ѐ<           	     	0  J   $0H`l4mesh3         9 7                  Ԁ               > F   F          	     	 ƛ         $0H`l
+     	     	 J     $0H`l3         9 7                  Ԁ       	          A   A          	     	            $0H`l  4mesh                Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7            R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ               > F   F          	     	P ƛ         $0H`l
   ] 4mesh        J A   A          
      
- J         $0H`l 4mesh        ^= F   F          	     	  <         $0H`l
+0 J         $0H`l 4mesh        ^= F   F          	     	` <         $0H`l
  4mesh       *  A   A          
      
-  jF         $0H`l =4mesh       > F   F          	     	0          $0H`l
+@ jF         $0H`l =4mesh       > F   F          	     	p          $0H`l
  F4mesh       J A   A          
      
-0          $0H`l 4mesh       ^= F   F          	     	@ &         $0H`l
+P          $0H`l 4mesh       ^= F   F          	     	 &         $0H`l
  P4mesh       *  A   A          
      
-@          $0H`l 4mesh         L   L          
-       
+`          $0H`l 4mesh         L   L          
+p      
                 
 
 
-         L   L          	@      
+         L   L          	      
                
 
 
-       2  E   E   Ѐ       	     	P   D%                     
-           T  ?   ?   Ѐ<      	     
+       3  E   E   Ѐ       	     	   D%                     
+           U  ?   ?   Ѐ<      	     
      
-0   E                      
-                  Ԁ       
-         ?   ?   Ѐ<           	     	`   E                   
-          "        Ԁ              p#  L   L   <      
+   E                      
+                  Ԁ       
+         ?   ?   Ѐ<           	     	   E                   
+          "        Ԁ              q#  L   L   <      
      	     
-p                      
+                      
      
 
-       #        Ԁ       	       #  `   `   <      	     
-     @      
+       #        Ԁ       	       #  `   `   <      	     
+           
           E  0    @  
 
- 	                              $        Ԁ       
-       %  `   `   <           	           
+ 	                              $        Ԁ       
+       %  `   `   <           	           
          E  0    @  
 
- 	                              f7  L   L          	                     
+ 	                              g7  L   L          	                     
 
-       7  L   L   <      	     
-     P      
+       7  L   L   <      	     
+           
                  
 
      
-       N8        Ԁ       
-       9  L   L   <           	           
+       O8        Ԁ       
+       9  L   L   <           	           
                 
 
      
-       9  L   L          
-`                     
+       9  L   L          
+                     
 
-       D@        Ԁ              A  `   `   <      
+       E@        Ԁ              A  `   `   <      
      	     
-               E  0    @  
+               E  0    @  
 
- 	                              A        Ԁ       	       qW       Ԁ              W ,   ,   Ѐ<      
-     	     	   F                W       Ԁ       	       > F   F          	     	P F &         $0H`l
+ 	                              A        Ԁ       	       qW       Ԁ              W ,   ,   Ѐ<      
+     	     	  F                W       Ԁ       	       > F   F          	     	 F &         $0H`l
  4mesh         E   E   Ѐ       
      
-p   D%           
-                         W E   E   Ѐ       	     	   D%         
+   D%           
+                         X E   E   Ѐ       	     	0  D%         
                         J A   A          
      
-P )&         $0H`l  &4mesh        
+ )&         $0H`l  &4mesh        
  E   E   Ѐ       
      
-   D%           
-                         W
- E   E   Ѐ       	     	   D%         
-                        ^= F   F          	     	` f-         $0H`l
+   D%           
+                         X
+ E   E   Ѐ       	     	@  D%         
+                        ^= F   F          	     	Pf-         $0H`l
  *&&4mesh       *  A   A          
      
-` -         $0H`l -4mesh        E   E   Ѐ       
+ -         $0H`l -4mesh        E   E   Ѐ       
      
-   D%           
-                          E   E   Ѐ       	     	   D%         
-                        > F   F          	     	p b5         $0H`l
+   D%           
+                          E   E   Ѐ       	     	`  D%         
+                        > F   F          	     	pb5         $0H`l
  -4.4mesh       J A   A          
      
-p 
-l5         $0H`l b54mesh       u	 E   E   Ѐ       	     	   D%              d       
-           	 ?   ?   Ѐ<      	     
-     
-   E                      
-          @	       Ԁ       
-       	 ?   ?   Ѐ<           	     	  E                   
-          5	 `   `   <      	     
-           
+
+l5         $0H`l b54mesh       v	 E   E   Ѐ       	     	  D%              d       
+           	 ?   ?   Ѐ<      	     
+     
+   E                      
+          A	       Ԁ       
+       	 ?   ?   Ѐ<           	     	  E                   
+          6	 `   `   <      	     
+     0     
           E  0   @  
 
- 	                              	 `   `   <      	     
-           
+ 	                              	 `   `   <      	     
+     0     
           E  0   @  
 
- 	                              W	       Ԁ       
-       	 `   `   <           	           
+ 	                              X	       Ԁ       
+       	 `   `   <           	          
          E  0   @  
 
- 	                              	 `   `   <      	     
-           
+ 	                              	 `   `   <      	     
+     @     
           E  0   @  
 
- 	                              	 `   `   <      	     
-           
+ 	                              	 `   `   <      	     
+     @     
           E  0   @  
 
- 	                              	       Ԁ       
-       T	 `   `   <      	     
-           
+ 	                              	       Ԁ       
+       U	 `   `   <      	     
+     P     
           E  0   @  
 
- 	                              	 `   `   <      	     
-           
+ 	                              	 `   `   <      	     
+     P     
           E  0   @  
 
- 	                              6	 `   `   <      	     
-           
+ 	                              7	 `   `   <      	     
+     P     
           E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <           	     @     
+ 	                              	       Ԁ       
+       	 `   `   <           	          
          E  0   @  
 
- 	                              	 `   `   <           	     @     
+ 	                              	 `   `   <           	          
          E  0   @  
 
- 	                              9	 `   `   <           	     @     
+ 	                              :	 `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <           	     @     
+ 	                              	       Ԁ              	 `   `   <           	          
          E  0   @  
 
- 	                              	 `   `   <      
+ 	                              	 `   `   <      
      	     
-P              E  0   @  
+              E  0   @  
 
- 	                              	       Ԁ       	       	       Ԁ              S	 `   `   <      
+ 	                              	       Ԁ       	       	       Ԁ              T	 `   `   <      
      	     
-`              E  0   @  
+              E  0   @  
 
- 	                              c	       Ԁ       	        
-       Ԁ              
+ 	                              d	       Ԁ       	        
+       Ԁ              
  `   `   <      
      	     
-p              E  0   @  
+              E  0   @  
 
- 	                              
-       Ԁ       	       ^= F   F          	     	 =         $0H`l
+ 	                              
+       Ԁ       	       ^= F   F          	     	 =         $0H`l
  l554mesh           `   `   <      	     
-           
+     `     
           E  0   @  
 
- 	                                       Ԁ       
-       k  `   `   <           	          
+ 	                                       Ԁ       
+       l  `   `   <           	          
          E  0   @  
 
  	                              *  A   A          
      
- *=         $0H`l =4mesh       
-        Ԁ                `   `   <      
+p*=         $0H`l =4mesh       
+        Ԁ                `   `   <      
      	     
-              E  0   @  
+               E  0   @  
 
- 	                                      Ԁ       	       > F   F          	     	 ƤD         $0H`l
+ 	                                      Ԁ       	       > F   F          	     	0ƤD         $0H`l
  l5v=4mesh         `   `   <      	     
-           
+          
           E  0   @  
 
- 	                                     Ԁ       
-        `   `   <           	          
+ 	                                     Ԁ       
+        `   `   <           	     @     
          E  0   @  
 
- 	                              i ,   ,   Ѐ<           	     	  F      
-          E ,   ,   Ј<           	     	  F      
-           A   A          
+ 	                              j ,   ,   Ѐ<           	     	P  F      
+          F ,   ,   Ј<           	     	P  F      
+           A   A          
      
- JD         $0H`l D4mesh       צ 2   2   Ѐ<      
-     	     	J 4mesh 7                 Ԁ       	       5 2   2   Ѐ<      	     
+JD         $0H`l D4mesh       ئ 2   2   Ѐ<      
+     	     	`J 4mesh 7                 Ԁ       	       6 2   2   Ѐ<      	     
      
- J 4mesh 7           2   2   Ј<      	     
+J 4mesh 7           2   2   Ј<      	     
      
- J 4mesh 7                 Ԁ       
-       V= A   A          	     	 EL         $0H`lE4mesh       x= R   R   Ѐ<      	     
+J 4mesh 7                 Ԁ       
+       V= A   A          	     	pEL         $0H`lE4mesh       x= R   R   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         =>       Ԁ       
+ J   $0H`l4mesh3          9 7         =>       Ԁ       
        ? P   P   Ј<      
-     	     	J    $0H`l3         9 7         ?       Ԁ       	       @ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
+     	     	J    $0H`l3         9 7         ?       Ԁ       	       @ R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
      
- J    $0H`l3         9 7         A       Ԁ       
+J    $0H`l3         9 7         A       Ԁ       
            E   E   Ѐ       
      
-0  D%           
+  D%           
                          *,  A   A          
      
- jwL         $0H`lFL4mesh          E   E   Ѐ       
+jwL         $0H`lFL4mesh          E   E   Ѐ       
      
-@  D%           
-                         ! ?   ?   Ѐ<      
-     	     	  E        
-     d                 !       Ԁ       	       i! `   `   <      	     
-     P     
+  D%           
+                         ! ?   ?   Ѐ<      
+     	     	  E        
+     d                 !       Ԁ       	       j! `   `   <      	     
+           
           E  0   @  
 
- 	                              >"       Ԁ       
-       # `   `   <           	           
+ 	                              ?"       Ԁ       
+       # `   `   <           	          
          E  0   @  
 
- 	                              $ E   E   Ѐ       	     	  D%         
-                        }% `   `   <           	           
+ 	                              $ E   E   Ѐ       	     	  D%         
+                        ~% `   `   <           	          
          E  0   @  
 
- 	                              ( `   `   <           	           
+ 	                              ( `   `   <           	          
          E  0   @  
 
- 	                              &+ `   `   <           	           
+ 	                              '+ `   `   <           	          
          E  0   @  
 
- 	                              - `   `   <           	           
+ 	                              - `   `   <           	          
          E  0   @  
 
- 	                              6 `   `   <           	           
+ 	                              6 `   `   <           	          
          E  0   @  
 
- 	                              I `   `   <           	           
+ 	                              I `   `   <           	          
          E  0   @  
 
- 	                              > F   F          	     	 S         $0H`l
+ 	                              > F   F          	     	S         $0H`l
 EwL4mesh         `   `   <      	     
-     `     
+          
           E  0   @  
 
  	                              7 `   `   <      	     
-     `     
+          
           E  0   @  
 
  	                              \ `   `   <      	     
-     `     
+          
           E  0   @  
 
- 	                              0       Ԁ       
-       
- `   `   <           	           
+ 	                              1       Ԁ       
+        `   `   <           	          
          E  0   @  
 
- 	                              n `   `   <           	           
+ 	                              o `   `   <           	          
          E  0   @  
 
- 	                              Y `   `   <           	           
+ 	                              Z `   `   <           	          
          E  0   @  
 
- 	                              ` `   `   <           	           
+ 	                              a `   `   <           	          
          E  0   @  
 
- 	                               `   `   <           	           
+ 	                               `   `   <           	          
          E  0   @  
 
- 	                               2   2   Ѐ<           	     	0J 4mesh 7           2   2   Ј<           	     	0J 4mesh 7          x 2   2   Ј<           	     	0J 4mesh 7          A 2   2   Ј<           	     	0J 4mesh 7          I 2   2   Ј<           	     	0J 4mesh 7          H 2   2   Ј<           	     	0J 4mesh 7          # 2   2   Ј<           	     	0J 4mesh 7          J A   A          
+ 	                               2   2   Ѐ<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7          y 2   2   Ј<           	     	J 4mesh 7          B 2   2   Ј<           	     	J 4mesh 7          J 2   2   Ј<           	     	J 4mesh 7          I 2   2   Ј<           	     	J 4mesh 7          $ 2   2   Ј<           	     	J 4mesh 7          J A   A          
      
- DT         $0H`lS4mesh        6   6   Ѐ<      
-     	     	@  F                               Ԁ       	        6   6   Ј<      
-     	     	@  F                               Ԁ       	         E   E   Ѐ       
+ DT         $0H`lS4mesh        6   6   Ѐ<      
+     	     	   F                               Ԁ       	        6   6   Ј<      
+     	     	   F                               Ԁ       	         E   E   Ѐ       
      
-p  D%           
-	                         7 E   E   Ѐ       	     	P  D%         
-	                        V= A   A          	     	 &[         $0H`lDT4mesh       *X  A   A          
+0  D%           
+	                         8 E   E   Ѐ       	     	  D%         
+	                        V= A   A          	     	 &[         $0H`lDT4mesh       *X  A   A          
      
- [         $0H`l[4mesh       6 A   A          	     	 F)c         $0H`l[4mesh       J A   A          
+@[         $0H`l[4mesh       6 A   A          	     	0F)c         $0H`l[4mesh       J A   A          
      
- ʆc         $0H`l)c4mesh       	 E   E   Ѐ       
+Pʆc         $0H`l)c4mesh       	 E   E   Ѐ       
      
-  D%           
+`  D%           
 
-                         	 E   E   Ѐ       	     	`  D%         
+                         	 E   E   Ѐ       	     	@  D%         
 
                         V  2   2   Ѐ<      
-     	     	pJ 4mesh 7          V        Ԁ       	       W  2   2   Ѐ<      	     
+     	     	`J 4mesh 7          V        Ԁ       	       W  2   2   Ѐ<      	     
      
-J 4mesh 7          W        Ԁ       
+pJ 4mesh 7          W        Ԁ       
        *X  A   A          
      
- 'k         $0H`l)c4mesh       EY  R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         UY        Ԁ       	       Y  2   2   Ѐ<      	     
+'k         $0H`l)c4mesh       EY  R   R   Ѐ<      
+     	     	p J   $0H`l4mesh3          9 7         UY        Ԁ       	       Y  2   2   Ѐ<      	     
      
-J 4mesh 7          <Z        Ԁ       
+J 4mesh 7          <Z        Ԁ       
        Z  2   2   Ѐ<      
-     	     	J 4mesh 7          Z        Ԁ       	       .x <   <          	     	 Gr         $0H`l 4mesh       Px R   R   Ѐ<      	     
+     	     	J 4mesh 7          Z        Ԁ       	       .x <   <          	     	Gr         $0H`l 4mesh       Px R   R   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         y       Ԁ       
+ J   $0H`l4mesh3          9 7         y       Ԁ       
        y P   P   Ѐ<      
-     	     	J    $0H`l3          9 7         y       Ԁ       	       z R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
+     	     	J    $0H`l3          9 7         y       Ԁ       	       z R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
      
-J    $0H`l3         9 7         {       Ԁ       
+J    $0H`l3         9 7         {       Ԁ       
        J! A   A          
      
- 
+
 r         $0H`lGr4mesh           E   E   Ѐ       
      
-  D%           
-                         7  E   E   Ѐ       	     	  D%         
+  D%           
+                         8  E   E   Ѐ       	     	  D%         
                         *  A   A          
      
- *z         $0H`lGr4mesh          E   E   Ѐ       
+*z         $0H`lGr4mesh          E   E   Ѐ       
      
-  D%   	        
-                         7! E   E   Ѐ       	     	  D% 	        
+  D%   	        
+                         8! E   E   Ѐ       	     	  D% 	        
                         u 2   2   Ѐ<      	     
      
-J 4mesh 7          v       Ԁ       
+ J 4mesh 7          v       Ԁ       
        w 2   2   Ѐ<      
-     	     	J 4mesh 7          w       Ԁ       	       6x A   A          	     	Ɖ         $0H`lz4mesh       Xx R   R   Ѐ<      	     
+     	     	J 4mesh 7          w       Ԁ       	       6x A   A          	     	 Ɖ         $0H`lz4mesh       Xx R   R   Ѐ<      	     
      
-  J   $0H`l4mesh3          9 7         y 2   2   Ѐ<      
-     	     	J 4mesh 7          y       Ԁ       	       z R   R   Ј<      	     
+ J   $0H`l4mesh3          9 7         y 2   2   Ѐ<      
+     	     	J 4mesh 7          y       Ԁ       	       z R   R   Ј<      	     
      
-  J   $0H`l4mesh3          9 7         -{ R   R   Ј<      	     
+ J   $0H`l4mesh3          9 7         -{ R   R   Ј<      	     
      
-  J   $0H`l4mesh3          9 7         +| R   R   Ј<      	     
+ J   $0H`l4mesh3          9 7         +| R   R   Ј<      	     
      
-  J   $0H`l4mesh3          9 7         |       Ԁ       
+ J   $0H`l4mesh3          9 7         |       Ԁ       
        } 2   2   Ѐ<      	     
      
-J 4mesh 7          }       Ԁ       
+ J 4mesh 7          }       Ԁ       
        Ju <   <          
      
-J         $0H`l 4mesh       w R   R   Ј<      
-     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       w P   P   Ѐ<      	     
+0J         $0H`l 4mesh       w R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       w P   P   Ѐ<      	     
      
- J    $0H`l3          9 7         x       Ԁ       
+@J    $0H`l3          9 7         x       Ԁ       
        x R   R   Ѐ<      	     
      
-0 J   $0H`l4mesh3          9 7         y       Ԁ       
+P J   $0H`l4mesh3          9 7         y       Ԁ       
        4z P   P   Ѐ<      
-     	     	J    $0H`l3         9 7         Dz       Ԁ       	         E   E   Ѐ       
+     	     	0J    $0H`l3         9 7         Dz       Ԁ       	         E   E   Ѐ       
      
-@  D%   
+`  D%   
         
-                         7 E   E   Ѐ       	     	   D% 
+                         8 E   E   Ѐ       	     	@  D% 
         
-     l                   V A   A          	     	          $0H`l4mesh    	   *  A   A          
+     l                   V A   A          	     	P         $0H`l4mesh    	   *  A   A          
      
- j(         $0H`l4mesh    	   Ju A   A          
+pj(         $0H`l4mesh    	   Ju A   A          
      
-0ɑ         $0H`l4mesh    	   	 E   E   Ѐ       
+ɑ         $0H`l4mesh    	   	 E   E   Ѐ       
      
-P  D%           
-                      	   	 E   E   Ѐ       	     	0  D%         
+  D%           
+                      	   	 E   E   Ѐ       	     	p  D%         
      l                	    2   2   Ѐ<      	     
      
-`J 4mesh 7       	          Ԁ       
+J 4mesh 7       	          Ԁ       
     	     2   2   Ј<      
-     	     	@J 4mesh 7       	           Ԁ       	    	    A   A          	     	@&U         $0H`lɑ4mesh    	    R   R   Ѐ<      	     
+     	     	J 4mesh 7       	           Ԁ       	    	    A   A          	     	&U         $0H`lɑ4mesh    	    R   R   Ѐ<      	     
      
-p J   $0H`l4mesh3          9 7      	          Ԁ       
+ J   $0H`l4mesh3          9 7      	          Ԁ       
     	   $ 2   2   Ѐ<      
-     	     	PJ 4mesh 7       	   4       Ԁ       	    	    2   2   Ѐ<      	     
+     	     	J 4mesh 7       	   4       Ԁ       	    	    2   2   Ѐ<      	     
      
-J 4mesh 7       	          Ԁ       
+J 4mesh 7       	          Ԁ       
     
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap	2014-06-17 10:34:00.460636492 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap	2014-06-17 10:33:13.818996541 -0700
@@ -1,720 +1,731 @@
-ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                  J     $0H`l3          9 7          o        Ԁ               `  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          p        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          ~       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A                         $0H`l O4mesh        j A   A                j         $0H`l 4mesh         A   A                 ?         $0H`l 4mesh       JO A   A                          $0H`l @4mesh        A   A               0          $0H`l 4mesh       j A   A               0 2         $0H`l 4mesh         L   L                                 
+ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                 J     $0H`l3          9 7          o        Ԁ               `  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          p        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          ~       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh        j A   A               0 j         $0H`l 4mesh         A   A               @ ?         $0H`l 4mesh       JO A   A               @          $0H`l @4mesh        A   A               P          $0H`l 4mesh       j A   A               P 2         $0H`l 4mesh         L   L          `                      
 
-         L   L                                
+         L   L          `                     
 
-         E   E   Ѐ            0   D%                                      ?   ?   Ѐ<                0   E                                        Ԁ              h  L   L   <                @                       
+         E   E   Ѐ            p   D%                                      ?   ?   Ѐ<                p   E                                        Ԁ              h  L   L   <                                       
      
-       $        Ԁ              S         <                @                E      @  
+       $        Ԁ              S         <                                E      @  
 
- 	 l                                                                                                             c         Ԁ              {C  L   L          P                      
+ 	 l                                                                                                             c         Ԁ              {C  L   L                                
 
-       D  L   L   <                P                       
+       D  L   L   <                                       
      
-       D        Ԁ              E        <                `                E      @  
+       D        Ԁ              E        <                                E      @  
 
- 	 l                                                                                                             F        Ԁ              G  L   L          `                     
+ 	 l                                                                                                             F        Ԁ              G  L   L                               
 
-       T        <                p                E     @  
+       T        <                                E     @  
 
- 	 l                                                                                                             d        Ԁ                      <                p                E     @  
+ 	 l                                                                                                             d        Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ                A   A               @          $0H`l 34mesh       JO A   A               @          $0H`l 4mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ                A   A                         $0H`l 34mesh       JO A   A                         $0H`l 4mesh              <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                             K       Ԁ              J       <                                E     @  
+ 	 l                                                                                                             K       Ԁ              J       <                                E     @  
 
- 	 l                                                                                                             K       Ԁ              [K       <                                E     @  
+ 	 l                                                                                                             K       Ԁ              [K       <                                E     @  
 
- 	 l                                                                                                             L       Ԁ              D       <                                E     @  
+ 	 l                                                                                                             L       Ԁ              D       <                                E     @  
 
- 	 l                                                                                                             T       Ԁ                     <                                E     @  
+ 	 l                                                                                                             T       Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                             ;       Ԁ                     <                                E     @  
+ 	 l                                                                                                             ;       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             ;       Ԁ              W       <                                E     @  
+ 	 l                                                                                                             ;       Ԁ              W       <                                E     @  
 
- 	 l                                                                                                             W       Ԁ              KX       <                                E     @  
+ 	 l                                                                                                             W       Ԁ              KX       <                                E     @  
 
- 	 l                                                                                                             ;Y       Ԁ              4       <                                E     @  
+ 	 l                                                                                                             ;Y       Ԁ              4       <                0               E     @  
 
- 	 l                                                                                                             D       Ԁ                     <                                E     @  
+ 	 l                                                                                                             D       Ԁ                     <                0               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   	  @  
+ 	 l                                                                                                                    Ԁ                     <                @               E   	  @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   	  @  
+ 	 l                                                                                                                    Ԁ                     <                @               E   	  @  
 
- 	 l                                                                                                                    Ԁ              ԡ       <                                E   
+ 	 l                                                                                                                    Ԁ              ԡ       <                P               E   
   @  
 
- 	 l                                                                                                                    Ԁ              ;       <                                E   
+ 	 l                                                                                                                    Ԁ              ;       <                P               E   
   @  
 
- 	 l                                                                                                             +       Ԁ              $e       <                               E     @  
+ 	 l                                                                                                             +       Ԁ              $e       <                `               E     @  
 
- 	 l                                                                                                             4e       Ԁ              e       <                               E     @  
+ 	 l                                                                                                             4e       Ԁ              e       <                `               E     @  
 
- 	 l                                                                                                             {f       Ԁ               A   A               P #'         $0H`l 4mesh       j A   A               P t'         $0H`l #'4mesh       t(	       <                                E     @  
+ 	 l                                                                                                             {f       Ԁ               A   A               p#'         $0H`l 4mesh       j A   A               pt'         $0H`l #'4mesh       t(	       <                               E     @  
 
- 	 l                                                                                                             (	       Ԁ              (	       <                                E     @  
+ 	 l                                                                                                             (	       Ԁ              (	       <                               E     @  
 
- 	 l                                                                                                             )	       Ԁ              	       <                0               E     @  
+ 	 l                                                                                                             )	       Ԁ              	       <                               E     @  
 
- 	 l                                                                                                             	       Ԁ              +	       <                0               E     @  
+ 	 l                                                                                                             	       Ԁ              +	       <                               E     @  
 
  	 l                                                                                                             	       Ԁ              
-       <                @               E     @  
+       <                               E     @  
 
  	 l                                                                                                             $
        Ԁ              {
-       <                @               E     @  
+       <                               E     @  
 
  	 l                                                                                                             k
-       Ԁ              dr       <                P               E     @  
+       Ԁ              dr       <                               E     @  
 
- 	 l                                                                                                             tr       Ԁ              r       <                P               E     @  
+ 	 l                                                                                                             tr       Ԁ              r       <                               E     @  
 
- 	 l                                                                                                             s       Ԁ              5       <                `               E     @  
+ 	 l                                                                                                             s       Ԁ              5       <                               E     @  
 
- 	 l                                                                                                             5       Ԁ              5       <                `               E     @  
+ 	 l                                                                                                             5       Ԁ              5       <                               E     @  
 
- 	 l                                                                                                             6       Ԁ                     <                p               E     @  
+ 	 l                                                                                                             6       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              C       <                p               E     @  
+ 	 l                                                                                                                    Ԁ              C       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              ,       <                               E     @  
+ 	 l                                                                                                                    Ԁ              ,       <                               E     @  
 
- 	 l                                                                                                             <       Ԁ                     <                               E     @  
+ 	 l                                                                                                             <       Ԁ                     <                               E     @  
 
- 	 l                                                                                                             [       Ԁ              |       <                               E     @  
+ 	 l                                                                                                             [       Ԁ              |       <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                       <                               E     @  
+ 	 l                                                                                                                    Ԁ                       <                                E     @  
 
- 	 l                                                                                                                      Ԁ                       <                               E     @  
+ 	 l                                                                                                                      Ԁ                       <                                E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              C        <                               E     @  
+ 	 l                                                                                                                     Ԁ              C        <                               E     @  
 
- 	 l                                                                                                                     Ԁ                A   A               ` +.         $0H`l u'4mesh       JO A   A               ` 
-/         $0H`l .4mesh       ,       <                               E     @  
+ 	 l                                                                                                                     Ԁ                A   A                +.         $0H`l u'4mesh       JO A   A                
+/         $0H`l .4mesh       ,       <                0               E     @  
 
- 	 l                                                                                                             <       Ԁ                     <                               E     @  
+ 	 l                                                                                                             <       Ԁ                     <                0               E     @  
 
- 	 l                                                                                                             [       Ԁ              |J       <                               E     @  
+ 	 l                                                                                                             [       Ԁ              |J       <                @               E     @  
 
- 	 l                                                                                                             J       Ԁ              J       <                               E     @  
+ 	 l                                                                                                             J       Ԁ              J       <                @               E     @  
 
- 	 l                                                                                                             K       Ԁ                     <                               E     @  
+ 	 l                                                                                                             K       Ԁ                     <                P               E     @  
 
- 	 l                                                                                                                    Ԁ              3       <                               E     @  
+ 	 l                                                                                                                    Ԁ              3       <                P               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                `               E     @  
 
- 	 l                                                                                                             ,       Ԁ                     <                               E     @  
+ 	 l                                                                                                             ,       Ԁ                     <                `               E     @  
 
- 	 l                                                                                                             K       Ԁ              D       <                                E     @  
+ 	 l                                                                                                             K       Ԁ              D       <                p               E     @  
 
- 	 l                                                                                                             T       Ԁ                     <                                E     @  
+ 	 l                                                                                                             T       Ԁ                     <                p               E     @  
 
- 	 l                                                                                                             s       Ԁ              W       <                               E     @  
+ 	 l                                                                                                             s       Ԁ              W       <                               E     @  
 
- 	 l                                                                                                             W       Ԁ              W       <                               E     @  
+ 	 l                                                                                                             W       Ԁ              W       <                               E     @  
 
- 	 l                                                                                                             X       Ԁ                     <                                E     @  
+ 	 l                                                                                                             X       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              K       <                                E     @  
+ 	 l                                                                                                                    Ԁ              K       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              4       <                0               E     @  
+ 	 l                                                                                                                    Ԁ              4       <                               E     @  
 
- 	 l                                                                                                             D       Ԁ                     <                0               E     @  
+ 	 l                                                                                                             D       Ԁ                     <                               E     @  
 
- 	 l                                                                                                             ;       Ԁ                     <                @               E     @  
+ 	 l                                                                                                             ;       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                @               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              d       <                P               E     @  
+ 	 l                                                                                                                    Ԁ              d       <                               E     @  
 
- 	 l                                                                                                             d       Ԁ              ;e       <                P               E     @  
+ 	 l                                                                                                             d       Ԁ              ;e       <                               E     @  
 
- 	 l                                                                                                             e       Ԁ               A   A               p Ke6         $0H`l /4mesh       j A   A               p *6         $0H`l e64mesh       $(	       <                `               E      @  
+ 	 l                                                                                                             e       Ԁ               A   A               Ke6         $0H`l /4mesh       j A   A               *6         $0H`l e64mesh       $(	       <                               E      @  
 
- 	 l                                                                                                             4(	       Ԁ              (	       <                `               E      @  
+ 	 l                                                                                                             4(	       Ԁ              (	       <                               E      @  
 
- 	 l                                                                                                             +)	       Ԁ              t	       <                p               E   !  @  
+ 	 l                                                                                                             +)	       Ԁ              t	       <                               E   !  @  
 
- 	 l                                                                                                             	       Ԁ              	       <                p               E   !  @  
+ 	 l                                                                                                             	       Ԁ              	       <                               E   !  @  
 
  	 l                                                                                                             {	       Ԁ              Į
-       <                               E   "  @  
+       <                                E   "  @  
 
  	 l                                                                                                             Ԯ
        Ԁ              +
-       <                               E   "  @  
+       <                                E   "  @  
 
  	 l                                                                                                             ˯
-       Ԁ              r       <                               E   #  @  
+       Ԁ              r       <                               E   #  @  
 
- 	 l                                                                                                             $r       Ԁ              {r       <                               E   #  @  
+ 	 l                                                                                                             $r       Ԁ              {r       <                               E   #  @  
 
- 	 l                                                                                                             s       Ԁ              P5       <                               E   $  @  
+ 	 l                                                                                                             s       Ԁ              P5       <                                E   $  @  
 
- 	 l                                                                                                             `5       Ԁ              5       <                               E   $  @  
+ 	 l                                                                                                             `5       Ԁ              5       <                                E   $  @  
 
- 	 l                                                                                                             W6       Ԁ                     <                               E   %  @  
+ 	 l                                                                                                             W6       Ԁ                     <                0               E   %  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   %  @  
+ 	 l                                                                                                                    Ԁ                     <                0               E   %  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   &  @  
+ 	 l                                                                                                                    Ԁ                     <                @               E   &  @  
 
- 	 l                                                                                                                     Ԁ              W       <                               E   &  @  
+ 	 l                                                                                                                     Ԁ              W       <                @               E   &  @  
 
- 	 l                                                                                                                    Ԁ              @       <                               E   '  @  
+ 	 l                                                                                                                    Ԁ              @       <                P               E   '  @  
 
- 	 l                                                                                                             P       Ԁ                     <                               E   '  @  
+ 	 l                                                                                                             P       Ԁ                     <                P               E   '  @  
 
- 	 l                                                                                                             3       Ԁ              P         <                               E   (  @  
+ 	 l                                                                                                             3       Ԁ              P         <                `               E   (  @  
 
- 	 l                                                                                                             `         Ԁ                       <                               E   (  @  
+ 	 l                                                                                                             `         Ԁ                       <                `               E   (  @  
 
- 	 l                                                                                                             C        Ԁ                      <                               E   )  @  
+ 	 l                                                                                                             C        Ԁ                      <                p               E   )  @  
 
- 	 l                                                                                                                     Ԁ                      <                               E   )  @  
+ 	 l                                                                                                                     Ԁ                      <                p               E   )  @  
 
- 	 l                                                                                                                     Ԁ                A   A                k>         $0H`l 64mesh       JO A   A                JX>         $0H`l >4mesh              <                                E   *  @  
+ 	 l                                                                                                                     Ԁ                A   A               k>         $0H`l 64mesh       JO A   A               JX>         $0H`l >4mesh              <                               E   *  @  
 
- 	 l                                                                                                                     Ԁ              W       <                                E   *  @  
+ 	 l                                                                                                                     Ԁ              W       <                               E   *  @  
 
- 	 l                                                                                                                    Ԁ              @J       <                               E   +  @  
+ 	 l                                                                                                                    Ԁ              @J       <                               E   +  @  
 
- 	 l                                                                                                             PJ       Ԁ              J       <                               E   +  @  
+ 	 l                                                                                                             PJ       Ԁ              J       <                               E   +  @  
 
- 	 l                                                                                                             3K       Ԁ                     <                                E   ,  @  
+ 	 l                                                                                                             3K       Ԁ                     <                               E   ,  @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   ,  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   ,  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   -  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   -  @  
 
- 	 l                                                                                                                    Ԁ              G       <                0               E   -  @  
+ 	 l                                                                                                                    Ԁ              G       <                               E   -  @  
 
- 	 l                                                                                                                    Ԁ                     <                @               E   .  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   .  @  
 
- 	 l                                                                                                             ,       Ԁ                     <                @               E   .  @  
+ 	 l                                                                                                             ,       Ԁ                     <                               E   .  @  
 
- 	 l                                                                                                                    Ԁ              lW       <                P               E   /  @  
+ 	 l                                                                                                                    Ԁ              lW       <                               E   /  @  
 
- 	 l                                                                                                             |W       Ԁ              W       <                P               E   /  @  
+ 	 l                                                                                                             |W       Ԁ              W       <                               E   /  @  
 
- 	 l                                                                                                             KX       Ԁ                     <                `               E   0  @  
+ 	 l                                                                                                             KX       Ԁ                     <                               E   0  @  
 
- 	 l                                                                                                                    Ԁ              #       <                `               E   0  @  
+ 	 l                                                                                                                    Ԁ              #       <                               E   0  @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E   1  @  
+ 	 l                                                                                                                    Ԁ                     <                                E   1  @  
 
- 	 l                                                                                                                    Ԁ              s       <                p               E   1  @  
+ 	 l                                                                                                                    Ԁ              s       <                                E   1  @  
 
- 	 l                                                                                                                    Ԁ              \       <                               E   2  @  
+ 	 l                                                                                                                    Ԁ              \       <                               E   2  @  
 
- 	 l                                                                                                             l       Ԁ              á       <                               E   2  @  
+ 	 l                                                                                                             l       Ԁ              á       <                               E   2  @  
 
- 	 l                                                                                                             ;       Ԁ              d       <                               E   3  @  
+ 	 l                                                                                                             ;       Ԁ              d       <                                E   3  @  
 
- 	 l                                                                                                             d       Ԁ              e       <                               E   3  @  
+ 	 l                                                                                                             d       Ԁ              e       <                                E   3  @  
 
- 	 l                                                                                                             e       Ԁ               A   A                E         $0H`l X>4mesh       j A   A                jE         $0H`l E4mesh       '	       <                               E   4  @  
+ 	 l                                                                                                             e       Ԁ               A   A               0E         $0H`l X>4mesh       j A   A               0jE         $0H`l E4mesh       '	       <                @               E   4  @  
 
- 	 l                                                                                                             (	       Ԁ              c(	       <                               E   4  @  
+ 	 l                                                                                                             (	       Ԁ              c(	       <                @               E   4  @  
 
- 	 l                                                                                                             (	       Ԁ              L	       <                               E   5  @  
+ 	 l                                                                                                             (	       Ԁ              L	       <                P               E   5  @  
 
- 	 l                                                                                                             \	       Ԁ              	       <                               E   5  @  
+ 	 l                                                                                                             \	       Ԁ              	       <                P               E   5  @  
 
  	 l                                                                                                             +	       Ԁ              
-       <                               E   6  @  
+       <                `               E   6  @  
 
  	 l                                                                                                             
        Ԁ              
-       <                               E   6  @  
+       <                `               E   6  @  
 
  	 l                                                                                                             {
-       Ԁ              q       <                               E   7  @  
+       Ԁ              q       <                p               E   7  @  
 
- 	 l                                                                                                             q       Ԁ              Sr       <                               E   7  @  
+ 	 l                                                                                                             q       Ԁ              Sr       <                p               E   7  @  
 
- 	 l                                                                                                             r       Ԁ              45       <                               E   8  @  
+ 	 l                                                                                                             r       Ԁ              45       <                               E   8  @  
 
- 	 l                                                                                                             D5       Ԁ              5       <                               E   8  @  
+ 	 l                                                                                                             D5       Ԁ              5       <                               E   8  @  
 
- 	 l                                                                                                             6       Ԁ                     <                               E   9  @  
+ 	 l                                                                                                             6       Ԁ                     <                               E   9  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   9  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   9  @  
 
- 	 l                                                                                                             [       Ԁ              Ի       <                                E   :  @  
+ 	 l                                                                                                             [       Ԁ              Ի       <                               E   :  @  
 
- 	 l                                                                                                                    Ԁ              ;       <                                E   :  @  
+ 	 l                                                                                                                    Ԁ              ;       <                               E   :  @  
 
- 	 l                                                                                                                    Ԁ              $       <                               E   ;  @  
+ 	 l                                                                                                                    Ԁ              $       <                               E   ;  @  
 
- 	 l                                                                                                             4       Ԁ                     <                               E   ;  @  
+ 	 l                                                                                                             4       Ԁ                     <                               E   ;  @  
 
- 	 l                                                                                                                    Ԁ              4         <                                E   <  @  
+ 	 l                                                                                                                    Ԁ              4         <                               E   <  @  
 
- 	 l                                                                                                             D         Ԁ                       <                                E   <  @  
+ 	 l                                                                                                             D         Ԁ                       <                               E   <  @  
 
- 	 l                                                                                                                     Ԁ                      <                0               E   =  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   =  @  
 
- 	 l                                                                                                                     Ԁ                      <                0               E   =  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   =  @  
 
- 	 l                                                                                                             [        Ԁ                A   A                HM         $0H`l E4mesh       JO A   A                M         $0H`l IM4mesh       Ԇ       <                @               E   >  @  
+ 	 l                                                                                                             [        Ԁ                A   A               HM         $0H`l E4mesh       JO A   A               M         $0H`l IM4mesh       Ԇ       <                               E   >  @  
 
- 	 l                                                                                                                    Ԁ              ;       <                @               E   >  @  
+ 	 l                                                                                                                    Ԁ              ;       <                               E   >  @  
 
- 	 l                                                                                                                    Ԁ              $J       <                P               E   ?  @  
+ 	 l                                                                                                                    Ԁ              $J       <                                E   ?  @  
 
- 	 l                                                                                                             4J       Ԁ              J       <                P               E   ?  @  
+ 	 l                                                                                                             4J       Ԁ              J       <                                E   ?  @  
 
- 	 l                                                                                                             J       Ԁ              t       <                `               E   @  @  
+ 	 l                                                                                                             J       Ԁ              t       <                               E   @  @  
 
- 	 l                                                                                                                    Ԁ                     <                `               E   @  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   @  @  
 
- 	 l                                                                                                             K       Ԁ                     <                p               E   A  @  
+ 	 l                                                                                                             K       Ԁ                     <                                E   A  @  
 
- 	 l                                                                                                                    Ԁ              +       <                p               E   A  @  
+ 	 l                                                                                                                    Ԁ              +       <                                E   A  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   B  @  
+ 	 l                                                                                                                    Ԁ                     <                0               E   B  @  
 
- 	 l                                                                                                                     Ԁ              w       <                               E   B  @  
+ 	 l                                                                                                                     Ԁ              w       <                0               E   B  @  
 
- 	 l                                                                                                                    Ԁ              `W       <                               E   C  @  
+ 	 l                                                                                                                    Ԁ              `W       <                @               E   C  @  
 
- 	 l                                                                                                             pW       Ԁ              W       <                               E   C  @  
+ 	 l                                                                                                             pW       Ԁ              W       <                @               E   C  @  
 
- 	 l                                                                                                             3X       Ԁ                     <                               E   D  @  
+ 	 l                                                                                                             3X       Ԁ                     <                P               E   D  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   D  @  
+ 	 l                                                                                                                    Ԁ                     <                P               E   D  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   E  @  
+ 	 l                                                                                                                    Ԁ                      <                `               E   E  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   E  @  
+ 	 l                                                                                                                    Ԁ              g       <                `               E   E  @  
 
- 	 l                                                                                                                    Ԁ              P       <                               E   F  @  
+ 	 l                                                                                                                    Ԁ              P       <                p               E   F  @  
 
- 	 l                                                                                                             `       Ԁ                     <                               E   F  @  
+ 	 l                                                                                                             `       Ԁ                     <                p               E   F  @  
 
- 	 l                                                                                                             #       Ԁ              d       <                               E   G  @  
+ 	 l                                                                                                             #       Ԁ              d       <                               E   G  @  
 
- 	 l                                                                                                             d       Ԁ              e       <                               E   G  @  
+ 	 l                                                                                                             d       Ԁ              e       <                               E   G  @  
 
- 	 l                                                                                                             se       Ԁ               A   A                T         $0H`l M4mesh       j A   A                ;U         $0H`l T4mesh       '	       <                               E   H  @  
+ 	 l                                                                                                             se       Ԁ               A   A               T         $0H`l M4mesh       j A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
 
- 	 l                                                                                                              (	       Ԁ              W(	       <                               E   H  @  
+ 	 l                                                                                                              (	       Ԁ              W(	       <                               E   H  @  
 
- 	 l                                                                                                             (	       Ԁ              @	       <                               E   I  @  
+ 	 l                                                                                                             (	       Ԁ              @	       <                               E   I  @  
 
- 	 l                                                                                                             P	       Ԁ              	       <                               E   I  @  
+ 	 l                                                                                                             P	       Ԁ              	       <                               E   I  @  
 
  	 l                                                                                                             	       Ԁ              
-       <                                E   J  @  
+       <                               E   J  @  
 
  	 l                                                                                                             
        Ԁ              
-       <                                E   J  @  
+       <                               E   J  @  
 
  	 l                                                                                                             c
-       Ԁ              q       <                               E   K  @  
+       Ԁ              q       <                               E   K  @  
 
- 	 l                                                                                                             q       Ԁ              Gr       <                               E   K  @  
+ 	 l                                                                                                             q       Ԁ              Gr       <                               E   K  @  
 
- 	 l                                                                                                             r       Ԁ              05       <                                E   L  @  
+ 	 l                                                                                                             r       Ԁ              05       <                               E   L  @  
 
- 	 l                                                                                                             @5       Ԁ              5       <                                E   L  @  
+ 	 l                                                                                                             @5       Ԁ              5       <                               E   L  @  
 
- 	 l                                                                                                             6       Ԁ                     <                0               E   M  @  
+ 	 l                                                                                                             6       Ԁ                     <                               E   M  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   M  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   M  @  
 
- 	 l                                                                                                             S       Ԁ              л       <                @               E   N  @  
+ 	 l                                                                                                             S       Ԁ              л       <                                E   N  @  
 
- 	 l                                                                                                                    Ԁ              7       <                @               E   N  @  
+ 	 l                                                                                                                    Ԁ              7       <                                E   N  @  
 
- 	 l                                                                                                                    Ԁ                      <                P               E   O  @  
+ 	 l                                                                                                                    Ԁ                      <                               E   O  @  
 
- 	 l                                                                                                             0       Ԁ                     <                P               E   O  @  
+ 	 l                                                                                                             0       Ԁ                     <                               E   O  @  
 
- 	 l                                                                                                                    Ԁ              0         <                `               E   P  @  
+ 	 l                                                                                                                    Ԁ              0         <                                E   P  @  
 
- 	 l                                                                                                             @         Ԁ                       <                `               E   P  @  
+ 	 l                                                                                                             @         Ԁ                       <                                E   P  @  
 
- 	 l                                                                                                                     Ԁ                      <                p               E   Q  @  
+ 	 l                                                                                                                     Ԁ                      <                0               E   Q  @  
 
- 	 l                                                                                                                     Ԁ                      <                p               E   Q  @  
+ 	 l                                                                                                                     Ԁ                      <                0               E   Q  @  
 
- 	 l                                                                                                             S        Ԁ                A   A                \         $0H`l <U4mesh       JO A   A                \         $0H`l \4mesh       І       <                               E   R  @  
+ 	 l                                                                                                             S        Ԁ                A   A               @\         $0H`l <U4mesh       JO A   A               @\         $0H`l \4mesh       І       <                P               E   R  @  
 
- 	 l                                                                                                                    Ԁ              7       <                               E   R  @  
+ 	 l                                                                                                                    Ԁ              7       <                P               E   R  @  
 
- 	 l                                                                                                                    Ԁ               J       <                               E   S  @  
+ 	 l                                                                                                                    Ԁ               J       <                `               E   S  @  
 
- 	 l                                                                                                             0J       Ԁ              J       <                               E   S  @  
+ 	 l                                                                                                             0J       Ԁ              J       <                `               E   S  @  
 
- 	 l                                                                                                             J       Ԁ              p       <                               E   T  @  
+ 	 l                                                                                                             J       Ԁ              p       <                p               E   T  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   T  @  
+ 	 l                                                                                                                    Ԁ                     <                p               E   T  @  
 
- 	 l                                                                                                             C       Ԁ                     <                               E   U  @  
+ 	 l                                                                                                             C       Ԁ                     <                               E   U  @  
 
- 	 l                                                                                                                    Ԁ              '       <                               E   U  @  
+ 	 l                                                                                                                    Ԁ              '       <                               E   U  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   V  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   V  @  
 
- 	 l                                                                                                                     Ԁ              w       <                               E   V  @  
+ 	 l                                                                                                                     Ԁ              w       <                               E   V  @  
 
- 	 l                                                                                                                    Ԁ              `W       <                               E   W  @  
+ 	 l                                                                                                                    Ԁ              `W       <                               E   W  @  
 
- 	 l                                                                                                             pW       Ԁ              W       <                               E   W  @  
+ 	 l                                                                                                             pW       Ԁ              W       <                               E   W  @  
 
- 	 l                                                                                                             3X       Ԁ                     <                               E   X  @  
+ 	 l                                                                                                             3X       Ԁ                     <                               E   X  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   X  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   X  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   Y  @  
+ 	 l                                                                                                                    Ԁ                      <                               E   Y  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   Y  @  
+ 	 l                                                                                                                    Ԁ              g       <                               E   Y  @  
 
- 	 l                                                                                                                    Ԁ              P       <                                E   Z  @  
+ 	 l                                                                                                                    Ԁ              P       <                               E   Z  @  
 
- 	 l                                                                                                             `       Ԁ                     <                                E   Z  @  
+ 	 l                                                                                                             `       Ԁ                     <                               E   Z  @  
 
- 	 l                                                                                                             #       Ԁ              d       <                               E   [  @  
+ 	 l                                                                                                             #       Ԁ              d       <                               E   [  @  
 
- 	 l                                                                                                             d       Ԁ              e       <                               E   [  @  
+ 	 l                                                                                                             d       Ԁ              e       <                               E   [  @  
 
- 	 l                                                                                                             se       Ԁ               A   A                ,d         $0H`l \4mesh       j A   A                }d         $0H`l ,d4mesh       '	       <                                E   \  @  
+ 	 l                                                                                                             se       Ԁ               A   A               ,d         $0H`l \4mesh       j A   A               }d         $0H`l ,d4mesh       '	       <                                E   \  @  
 
- 	 l                                                                                                              (	       Ԁ              W(	       <                                E   \  @  
+ 	 l                                                                                                              (	       Ԁ              W(	       <                                E   \  @  
 
- 	 l                                                                                                             (	       Ԁ              @	       <                0               E   ]  @  
+ 	 l                                                                                                             (	       Ԁ              @	       <                               E   ]  @  
 
- 	 l                                                                                                             P	       Ԁ              	       <                0               E   ]  @  
+ 	 l                                                                                                             P	       Ԁ              	       <                               E   ]  @  
 
  	 l                                                                                                             	       Ԁ              
-       <                @               E   ^  @  
+       <                                E   ^  @  
 
  	 l                                                                                                             
        Ԁ              
-       <                @               E   ^  @  
+       <                                E   ^  @  
 
  	 l                                                                                                             c
-       Ԁ              q       <                P               E   _  @  
+       Ԁ              q       <                0               E   _  @  
 
- 	 l                                                                                                             q       Ԁ              Gr       <                P               E   _  @  
+ 	 l                                                                                                             q       Ԁ              Gr       <                0               E   _  @  
 
- 	 l                                                                                                             r       Ԁ              05       <                `               E   `  @  
+ 	 l                                                                                                             r       Ԁ              05       <                @               E   `  @  
 
- 	 l                                                                                                             @5       Ԁ              5       <                `               E   `  @  
+ 	 l                                                                                                             @5       Ԁ              5       <                @               E   `  @  
 
- 	 l                                                                                                             6       Ԁ                     <                p               E   a  @  
+ 	 l                                                                                                             6       Ԁ                     <                P               E   a  @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E   a  @  
+ 	 l                                                                                                                    Ԁ                     <                P               E   a  @  
 
- 	 l                                                                                                             S       Ԁ              л       <                               E   b  @  
+ 	 l                                                                                                             S       Ԁ              л       <                `               E   b  @  
 
- 	 l                                                                                                                    Ԁ              7       <                               E   b  @  
+ 	 l                                                                                                                    Ԁ              7       <                `               E   b  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   c  @  
+ 	 l                                                                                                                    Ԁ                      <                p               E   c  @  
 
- 	 l                                                                                                             0       Ԁ                     <                               E   c  @  
+ 	 l                                                                                                             0       Ԁ                     <                p               E   c  @  
 
- 	 l                                                                                                                    Ԁ              0         <                               E   d  @  
+ 	 l                                                                                                                    Ԁ              0         <                               E   d  @  
 
- 	 l                                                                                                             @         Ԁ                       <                               E   d  @  
+ 	 l                                                                                                             @         Ԁ                       <                               E   d  @  
 
- 	 l                                                                                                                     Ԁ                      <                               E   e  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   e  @  
 
- 	 l                                                                                                                     Ԁ                      <                               E   e  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   e  @  
 
- 	 l                                                                                                             S        Ԁ                A   A                +k         $0H`l ~d4mesh       JO A   A                
-l         $0H`l k4mesh       І       <                               E   f  @  
+ 	 l                                                                                                             S        Ԁ                A   A               +k         $0H`l ~d4mesh       JO A   A               
+l         $0H`l k4mesh       І       <                               E   f  @  
 
- 	 l                                                                                                                    Ԁ              7       <                               E   f  @  
+ 	 l                                                                                                                    Ԁ              7       <                               E   f  @  
 
- 	 l                                                                                                                    Ԁ              dJ E   E   Ѐ              D%                                   J ?   ?   Ѐ<                  E                                J       Ԁ              =K       <                               E   g  @  
+ 	 l                                                                                                                    Ԁ              dJ E   E   Ѐ              D%                                   J ?   ?   Ѐ<                  E                                J       Ԁ              =K       <                               E   g  @  
 
- 	 l                                                                                                             MK       Ԁ              K       <                               E   g  @  
+ 	 l                                                                                                             MK       Ԁ              K       <                               E   g  @  
 
- 	 l                                                                                                             L       Ԁ              p       <                               E   h  @  
+ 	 l                                                                                                             L       Ԁ              p       <                               E   h  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   h  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   h  @  
 
- 	 l                                                                                                             C       Ԁ                     <                                E   i  @  
+ 	 l                                                                                                             C       Ԁ                     <                               E   i  @  
 
- 	 l                                                                                                                    Ԁ              '       <                                E   i  @  
+ 	 l                                                                                                                    Ԁ              '       <                               E   i  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   j  @  
+ 	 l                                                                                                                    Ԁ                     <                                E   j  @  
 
- 	 l                                                                                                                     Ԁ              w       <                               E   j  @  
+ 	 l                                                                                                                     Ԁ              w       <                                E   j  @  
 
- 	 l                                                                                                                    Ԁ              `W       <                                E   k  @  
+ 	 l                                                                                                                    Ԁ              `W       <                               E   k  @  
 
- 	 l                                                                                                             pW       Ԁ              W       <                                E   k  @  
+ 	 l                                                                                                             pW       Ԁ              W       <                               E   k  @  
 
- 	 l                                                                                                             3X       Ԁ                     <                0               E   l  @  
+ 	 l                                                                                                             3X       Ԁ                     <                                E   l  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   l  @  
+ 	 l                                                                                                                    Ԁ                     <                                E   l  @  
 
- 	 l                                                                                                                    Ԁ                      <                @               E   m  @  
+ 	 l                                                                                                                    Ԁ                      <                0               E   m  @  
 
- 	 l                                                                                                                    Ԁ              g       <                @               E   m  @  
+ 	 l                                                                                                                    Ԁ              g       <                0               E   m  @  
 
- 	 l                                                                                                                    Ԁ              P       <                P               E   n  @  
+ 	 l                                                                                                                    Ԁ              P       <                @               E   n  @  
 
- 	 l                                                                                                             `       Ԁ                     <                P               E   n  @  
+ 	 l                                                                                                             `       Ԁ                     <                @               E   n  @  
 
- 	 l                                                                                                             #       Ԁ              d       <                `               E   o  @  
+ 	 l                                                                                                             #       Ԁ              d       <                P               E   o  @  
 
- 	 l                                                                                                             d       Ԁ              e       <                `               E   o  @  
+ 	 l                                                                                                             d       Ԁ              e       <                P               E   o  @  
 
- 	 l                                                                                                             se       Ԁ               A   A                Kns         $0H`l l4mesh       j A   A                *s         $0H`l ns4mesh       '	       <                p               E   p  @  
+ 	 l                                                                                                             se       Ԁ               A   A               `Kns         $0H`l l4mesh       j A   A               `*s         $0H`l ns4mesh       '	       <                p               E   p  @  
 
- 	 l                                                                                                              (	       Ԁ              W(	       <                p               E   p  @  
+ 	 l                                                                                                              (	       Ԁ              W(	       <                p               E   p  @  
 
- 	 l                                                                                                             (	       Ԁ              @	       <                               E   q  @  
+ 	 l                                                                                                             (	       Ԁ              @	       <                               E   q  @  
 
- 	 l                                                                                                             P	       Ԁ              	       <                               E   q  @  
+ 	 l                                                                                                             P	       Ԁ              	       <                               E   q  @  
 
  	 l                                                                                                             	       Ԁ              
-       <                               E   r  @  
+       <                               E   r  @  
 
  	 l                                                                                                             
        Ԁ              
-       <                               E   r  @  
+       <                               E   r  @  
 
  	 l                                                                                                             c
-       Ԁ              q       <                               E   s  @  
+       Ԁ              q       <                               E   s  @  
 
- 	 l                                                                                                             q       Ԁ              Gr       <                               E   s  @  
+ 	 l                                                                                                             q       Ԁ              Gr       <                               E   s  @  
 
- 	 l                                                                                                             r       Ԁ              05       <                               E   t  @  
+ 	 l                                                                                                             r       Ԁ              05       <                               E   t  @  
 
- 	 l                                                                                                             @5       Ԁ              5       <                               E   t  @  
+ 	 l                                                                                                             @5       Ԁ              5       <                               E   t  @  
 
- 	 l                                                                                                             6       Ԁ                     <                               E   u  @  
+ 	 l                                                                                                             6       Ԁ                     <                               E   u  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   u  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   u  @  
 
- 	 l                                                                                                             S       Ԁ              л       <                               E   v  @  
+ 	 l                                                                                                             S       Ԁ              л       <                               E   v  @  
 
- 	 l                                                                                                                    Ԁ              7       <                               E   v  @  
+ 	 l                                                                                                                    Ԁ              7       <                               E   v  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   w  @  
+ 	 l                                                                                                                    Ԁ                      <                               E   w  @  
 
- 	 l                                                                                                             0       Ԁ                     <                               E   w  @  
+ 	 l                                                                                                             0       Ԁ                     <                               E   w  @  
 
- 	 l                                                                                                                    Ԁ              0         <                               E   x  @  
+ 	 l                                                                                                                    Ԁ              0         <                               E   x  @  
 
- 	 l                                                                                                             @         Ԁ                       <                               E   x  @  
+ 	 l                                                                                                             @         Ԁ                       <                               E   x  @  
 
- 	 l                                                                                                                     Ԁ                      <                                E   y  @  
+ 	 l                                                                                                                     Ԁ                      <                 	               E   y  @  
 
- 	 l                                                                                                                     Ԁ                      <                                E   y  @  
+ 	 l                                                                                                                     Ԁ                      <                 	               E   y  @  
 
- 	 l                                                                                                             S        Ԁ                A   A                k{         $0H`l s4mesh       JO A   A                Ja{         $0H`l {4mesh       І       <                               E   z  @  
+ 	 l                                                                                                             S        Ԁ                A   A               	k{         $0H`l s4mesh       JO A   A               	Ja{         $0H`l {4mesh       І       <                 	               E   z  @  
 
- 	 l                                                                                                                    Ԁ              7       <                               E   z  @  
+ 	 l                                                                                                                    Ԁ              7       <                 	               E   z  @  
 
- 	 l                                                                                                                    Ԁ               J       <                                E   {  @  
+ 	 l                                                                                                                    Ԁ               J       <                0	               E   {  @  
 
- 	 l                                                                                                             0J       Ԁ              J       <                                E   {  @  
+ 	 l                                                                                                             0J       Ԁ              J       <                0	               E   {  @  
 
- 	 l                                                                                                             J       Ԁ              p       <                0               E   |  @  
+ 	 l                                                                                                             J       Ԁ              p       <                @	               E   |  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   |  @  
+ 	 l                                                                                                                    Ԁ                     <                @	               E   |  @  
 
- 	 l                                                                                                             C       Ԁ                     <                @               E   }  @  
+ 	 l                                                                                                             C       Ԁ                     <                P	               E   }  @  
 
- 	 l                                                                                                                    Ԁ              '       <                @               E   }  @  
+ 	 l                                                                                                                    Ԁ              '       <                P	               E   }  @  
 
- 	 l                                                                                                                    Ԁ                     <                P               E   ~  @  
+ 	 l                                                                                                                    Ԁ                     <                `	               E   ~  @  
 
- 	 l                                                                                                                     Ԁ              w       <                P               E   ~  @  
+ 	 l                                                                                                                     Ԁ              w       <                `	               E   ~  @  
 
- 	 l                                                                                                                    Ԁ              `W       <                `               E     @  
+ 	 l                                                                                                                    Ԁ              `W       <                p	               E     @  
 
- 	 l                                                                                                             pW       Ԁ              W       <                `               E     @  
+ 	 l                                                                                                             pW       Ԁ              W       <                p	               E     @  
 
- 	 l                                                                                                             3X       Ԁ                     <                p               E     @  
+ 	 l                                                                                                             3X       Ԁ                     <                	               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E     @  
+ 	 l                                                                                                                    Ԁ                     <                	               E     @  
 
- 	 l                                                                                                                    Ԁ                      <                               E     @  
+ 	 l                                                                                                                    Ԁ                      <                	               E     @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E     @  
+ 	 l                                                                                                                    Ԁ              g       <                	               E     @  
 
- 	 l                                                                                                                    Ԁ              P       <                               E     @  
+ 	 l                                                                                                                    Ԁ              P       <                	               E     @  
 
- 	 l                                                                                                             `       Ԁ                     <                               E     @  
+ 	 l                                                                                                             `       Ԁ                     <                	               E     @  
 
- 	 l                                                                                                             #       Ԁ              d       <                               E     @  
+ 	 l                                                                                                             #       Ԁ              d       <                	               E     @  
 
- 	 l                                                                                                             d       Ԁ              e       <                               E     @  
+ 	 l                                                                                                             d       Ԁ              e       <                	               E     @  
 
- 	 l                                                                                                             se       Ԁ               A   A                        $0H`l a{4mesh       j A   A               j         $0H`l 4mesh       '	       <                               E     @  
+ 	 l                                                                                                             se       Ԁ               A   A               	         $0H`l a{4mesh       j A   A               	j         $0H`l 4mesh       '	       <                	               E     @  
 
- 	 l                                                                                                              (	       Ԁ              W(	       <                               E     @  
+ 	 l                                                                                                              (	       Ԁ              W(	       <                	               E     @  
 
- 	 l                                                                                                             (	       Ԁ              @	       <                               E     @  
+ 	 l                                                                                                             (	       Ԁ              @	       <                	               E     @  
 
- 	 l                                                                                                             P	       Ԁ              	       <                               E     @  
+ 	 l                                                                                                             P	       Ԁ              	       <                	               E     @  
 
  	 l                                                                                                             	       Ԁ              
-       <                               E     @  
+       <                	               E     @  
 
  	 l                                                                                                             
        Ԁ              
-       <                               E     @  
+       <                	               E     @  
 
  	 l                                                                                                             c
-       Ԁ              q       <                               E     @  
+       Ԁ              q       <                 
+               E     @  
 
- 	 l                                                                                                             q       Ԁ              Gr       <                               E     @  
+ 	 l                                                                                                             q       Ԁ              Gr       <                 
+               E     @  
 
- 	 l                                                                                                             r       Ԁ              05       <                               E     @  
+ 	 l                                                                                                             r       Ԁ              05       <                
+               E     @  
 
- 	 l                                                                                                             @5       Ԁ              5       <                               E     @  
+ 	 l                                                                                                             @5       Ԁ              5       <                
+               E     @  
 
- 	 l                                                                                                             6       Ԁ                     <                 	               E     @  
+ 	 l                                                                                                             6       Ԁ                     <                 
+               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                 	               E     @  
+ 	 l                                                                                                                    Ԁ                     <                 
+               E     @  
 
- 	 l                                                                                                             S       Ԁ              л       <                	               E     @  
+ 	 l                                                                                                             S       Ԁ              л       <                0
+               E     @  
 
- 	 l                                                                                                                    Ԁ              7       <                	               E     @  
+ 	 l                                                                                                                    Ԁ              7       <                0
+               E     @  
 
- 	 l                                                                                                                    Ԁ                      <                 	               E     @  
+ 	 l                                                                                                                    Ԁ                      <                @
+               E     @  
 
- 	 l                                                                                                             0       Ԁ                     <                 	               E     @  
+ 	 l                                                                                                             0       Ԁ                     <                @
+               E     @  
 
- 	 l                                                                                                                    Ԁ           	   0         <                0	               E     @  
+ 	 l                                                                                                                    Ԁ           	   0         <                P
+               E     @  
 
- 	 l                                                                                                          	   @         Ԁ           	            <                0	               E     @  
+ 	 l                                                                                                          	   @         Ԁ           	            <                P
+               E     @  
 
- 	 l                                                                                                          	           Ԁ           	           <                @	               E     @  
+ 	 l                                                                                                          	           Ԁ           	           <                `
+               E     @  
 
- 	 l                                                                                                          	           Ԁ           	           <                @	               E     @  
+ 	 l                                                                                                          	           Ԁ           	           <                `
+               E     @  
 
- 	 l                                                                                                          	   S        Ԁ           	     A   A                Q         $0H`l 4mesh    	   JO A   A                         $0H`l R4mesh    	   І       <                P	               E     @  
+ 	 l                                                                                                          	   S        Ԁ           	     A   A               p
+Q         $0H`l 4mesh    	   JO A   A               p
+         $0H`l R4mesh    	   І       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   7       <                P	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   7       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	    J       <                `	               E     @  
+ 	 l                                                                                                          	          Ԁ           	    J       <                
+               E     @  
 
- 	 l                                                                                                          	   0J       Ԁ           	   J       <                `	               E     @  
+ 	 l                                                                                                          	   0J       Ԁ           	   J       <                
+               E     @  
 
- 	 l                                                                                                          	   J       Ԁ           	   p       <                p	               E     @  
+ 	 l                                                                                                          	   J       Ԁ           	   p       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                p	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	   C       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   C       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   '       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   '       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	           Ԁ           	   w       <                	               E     @  
+ 	 l                                                                                                          	           Ԁ           	   w       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   `W       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   `W       <                
+               E     @  
 
- 	 l                                                                                                          	   pW       Ԁ           	   W       <                	               E     @  
+ 	 l                                                                                                          	   pW       Ԁ           	   W       <                
+               E     @  
 
- 	 l                                                                                                          	   3X       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   3X       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	           <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	           <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   g       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   g       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   P       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   P       <                                E     @  
 
- 	 l                                                                                                          	   `       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   `       Ԁ           	          <                                E     @  
 
- 	 l                                                                                                          	   #       Ԁ           	   d       <                	               E     @  
+ 	 l                                                                                                          	   #       Ԁ           	   d       <                               E     @  
 
- 	 l                                                                                                          	   d       Ԁ           	   e       <                	               E     @  
+ 	 l                                                                                                          	   d       Ԁ           	   e       <                               E     @  
 
- 	 l                                                                                                          	   se       Ԁ           	    A   A               0         $0H`l 4mesh    	   j A   A               0D         $0H`l 4mesh    	   '	       <                	               E     @  
+ 	 l                                                                                                          	   se       Ԁ           	    A   A                         $0H`l 4mesh    	   j A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
 
- 	 l                                                                                                          	    (	       Ԁ           	   W(	       <                	               E     @  
+ 	 l                                                                                                          	    (	       Ԁ           	   W(	       <                0               E     @  
 
- 	 l                                                                                                          	   (	       Ԁ           	   @	       <                 
-               E     @  
+ 	 l                                                                                                          	   (	       Ԁ           	   @	       <                @               E     @  
 
- 	 l                                                                                                          	   P	       Ԁ           	   	       <                 
-               E     @  
+ 	 l                                                                                                          	   P	       Ԁ           	   	       <                @               E     @  
 
  	 l                                                                                                          	   	       Ԁ           	   
-       <                
-               E     @  
+       <                P               E     @  
 
  	 l                                                                                                          	   
        Ԁ           	   
-       <                
-               E     @  
+       <                P               E     @  
 
  	 l                                                                                                          	   c
-       Ԁ           	   q       <                 
-               E     @  
+       Ԁ           	   q       <                `               E     @  
 
- 	 l                                                                                                          	   q       Ԁ           	   Gr       <                 
-               E     @  
+ 	 l                                                                                                          	   q       Ԁ           	   Gr       <                `               E     @  
 
- 	 l                                                                                                          	   r       Ԁ           	   05       <                0
-               E     @  
+ 	 l                                                                                                          	   r       Ԁ           	   05       <                p               E     @  
 
- 	 l                                                                                                          	   @5       Ԁ           	   5       <                0
-               E     @  
+ 	 l                                                                                                          	   @5       Ԁ           	   5       <                p               E     @  
 
- 	 l                                                                                                          	   6       Ԁ           	          <                @
-               E     @  
+ 	 l                                                                                                          	   6       Ԁ           	          <                               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                @
-               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                               E     @  
 
- 	 l                                                                                                          	   S       Ԁ           	   л       <                P
-               E     @  
+ 	 l                                                                                                          	   S       Ԁ           	   л       <                               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   7       <                P
-               E     @  
+ 	 l                                                                                                          	          Ԁ           	   7       <                               E     @  
 
- 	 l                                                                                                          	          Ԁ           	           <                `
-               E     @  
+ 	 l                                                                                                          	          Ԁ           	           <                               E     @  
 
- 	 l                                                                                                          	   0       Ԁ           	          <                `
-               E     @  
+ 	 l                                                                                                          	   0       Ԁ           	          <                               E     @  
 
  	 l                                                                                                          	          Ԁ           
-   JO A   A               @         $0H`l 4mesh    
-    2   2   Ѐ<                p
-J 4mesh 7       
-    2   2   Ј<                p
-J 4mesh 7       
-   K 2   2   Ј<                p
-J 4mesh 7       
-   ؞ 2   2   Ј<                p
-J 4mesh 7       
-    2   2   Ј<                p
-J 4mesh 7       
-   : 2   2   Ј<                p
-J 4mesh 7       
-   Ǡ 2   2   Ј<                p
-J 4mesh 7       
-   j A   A               Pꆡ         $0H`l 4mesh       J/ <   <               `
-         $0H`l 4mesh       j <   <               p*Ѱ         $0H`l 4mesh       J7 <   <               JR         $0H`l 4mesh       j <   <               j߿         $0H`l 4mesh       J  <   <               H         $0H`l 4mesh       j <   <                        $0H`l 4mesh       J  <   <               ʒ         $0H`l 4mesh       j <   <               K         $0H`l 4mesh    
\ No newline at end of file
+   JO A   A                        $0H`l 4mesh    
+    2   2   Ѐ<                J 4mesh 7       
+    2   2   Ј<                J 4mesh 7       
+   K 2   2   Ј<                J 4mesh 7       
+   ؞ 2   2   Ј<                J 4mesh 7       
+    2   2   Ј<                J 4mesh 7       
+   : 2   2   Ј<                J 4mesh 7       
+   Ǡ 2   2   Ј<                J 4mesh 7       
+   j A   A               ꆡ         $0H`l 4mesh       J/ <   <               
+         $0H`l 4mesh       j <   <               *Ѱ         $0H`l 4mesh       J7 <   <                JR         $0H`l 4mesh       j <   <               j߿         $0H`l 4mesh       J  <   <                H         $0H`l 4mesh       j <   <               0         $0H`l 4mesh       J  <   <               @ʒ         $0H`l 4mesh       j <   <               PK         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap	2014-06-17 10:34:00.461636484 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap	2014-06-17 10:33:13.819996533 -0700
@@ -1,785 +1,776 @@
-ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                  J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7                  Ԁ               B P   P   Ѐ<                 J     $0H`l3         9 7          R       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A                         $0H`l O4mesh         A   A                j         $0H`l 4mesh       k  A   A                 ?         $0H`l 4mesh       O A   A                          $0H`l @4mesh        A   A               0          $0H`l 4mesh        A   A               0 2         $0H`l 4mesh       X  L   L                                 
+ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               B P   P   Ѐ<                 J     $0H`l3         9 7          R       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh         A   A               0 j         $0H`l 4mesh       k  A   A               @ ?         $0H`l 4mesh       O A   A               @          $0H`l @4mesh        A   A               P          $0H`l 4mesh        A   A               P 2         $0H`l 4mesh       X  L   L          `                      
 
-         L   L                                
+         L   L          `                     
 
-       F  E   E   Ѐ            0   D%                                    h  ?   ?   Ѐ<                0   E                                        Ԁ                L   L   <                @                       
+       F  E   E   Ѐ            p   D%                                    h  ?   ?   Ѐ<                p   E                                        Ԁ                L   L   <                                       
      
-               Ԁ              O        <                @                E      @  
+               Ԁ              O        <                                E      @  
 
- 	 l                                                                                                                      Ԁ              C  L   L          P                      
+ 	 l                                                                                                                      Ԁ              C  L   L                                
 
-       &D  L   L   <                P                       
+       &D  L   L   <                                       
      
-       D        Ԁ              F        <                `                E      @  
+       D        Ԁ              F        <                                E      @  
 
- 	 l                                                                                                             F        Ԁ              F  L   L          `                     
+ 	 l                                                                                                             F        Ԁ              F  L   L                               
 
-       P        <                p                E     @  
+       P        <                                E     @  
 
- 	 l                                                                                                                     Ԁ                      <                p                E     @  
+ 	 l                                                                                                                     Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ              k  A   A               @          $0H`l 34mesh       O A   A               @          $0H`l 4mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ              k  A   A                         $0H`l 34mesh       O A   A                         $0H`l 4mesh              <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ              I       <                                E     @  
+ 	 l                                                                                                                    Ԁ              I       <                                E     @  
 
- 	 l                                                                                                             0K       Ԁ              _L       <                                E     @  
+ 	 l                                                                                                             0K       Ԁ              _L       <                                E     @  
 
- 	 l                                                                                                             oL       Ԁ              @       <                                E     @  
+ 	 l                                                                                                             oL       Ԁ              @       <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                                E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             Д       Ԁ                     <                                E     @  
+ 	 l                                                                                                             Д       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              0W       <                                E     @  
+ 	 l                                                                                                                    Ԁ              0W       <                                E     @  
 
- 	 l                                                                                                              X       Ԁ              X       <                                E     @  
+ 	 l                                                                                                              X       Ԁ              X       <                                E     @  
 
- 	 l                                                                                                             Y       Ԁ                     <                                E     @  
+ 	 l                                                                                                             Y       Ԁ                     <                0               E     @  
 
- 	 l                                                                                                             p       Ԁ              O       <                                E     @  
+ 	 l                                                                                                             p       Ԁ              O       <                0               E     @  
 
- 	 l                                                                                                             _       Ԁ                     <                                E   	  @  
+ 	 l                                                                                                             _       Ԁ                     <                @               E   	  @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   	  @  
+ 	 l                                                                                                                    Ԁ                     <                @               E   	  @  
 
- 	 l                                                                                                                    Ԁ                      <                                E   
+ 	 l                                                                                                                    Ԁ                      <                P               E   
   @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   
+ 	 l                                                                                                                    Ԁ                     <                P               E   
   @  
 
- 	 l                                                                                                                    Ԁ              pd       <                               E     @  
+ 	 l                                                                                                                    Ԁ              pd       <                `               E     @  
 
- 	 l                                                                                                             `e       Ԁ              ?f       <                               E     @  
+ 	 l                                                                                                             `e       Ԁ              ?f       <                `               E     @  
 
- 	 l                                                                                                             Of       Ԁ               A   A               P #'         $0H`l 4mesh        A   A               P t'         $0H`l #'4mesh       '	       <                                E     @  
+ 	 l                                                                                                             Of       Ԁ               A   A               p#'         $0H`l 4mesh        A   A               pt'         $0H`l #'4mesh       '	       <                               E     @  
 
- 	 l                                                                                                             (	       Ԁ              )	       <                                E     @  
+ 	 l                                                                                                             (	       Ԁ              )	       <                               E     @  
 
- 	 l                                                                                                             )	       Ԁ              	       <                0               E     @  
+ 	 l                                                                                                             )	       Ԁ              	       <                               E     @  
 
- 	 l                                                                                                              	       Ԁ              	       <                0               E     @  
+ 	 l                                                                                                              	       Ԁ              	       <                               E     @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                @               E     @  
+       <                               E     @  
 
  	 l                                                                                                             P
        Ԁ              /
-       <                @               E     @  
+       <                               E     @  
 
  	 l                                                                                                             ?
-       Ԁ              q       <                P               E     @  
+       Ԁ              q       <                               E     @  
 
- 	 l                                                                                                             r       Ԁ              s       <                P               E     @  
+ 	 l                                                                                                             r       Ԁ              s       <                               E     @  
 
- 	 l                                                                                                             s       Ԁ               5       <                `               E     @  
+ 	 l                                                                                                             s       Ԁ               5       <                               E     @  
 
- 	 l                                                                                                             5       Ԁ              6       <                `               E     @  
+ 	 l                                                                                                             5       Ԁ              6       <                               E     @  
 
- 	 l                                                                                                             6       Ԁ              P       <                p               E     @  
+ 	 l                                                                                                             6       Ԁ              P       <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             h       Ԁ                     <                               E     @  
+ 	 l                                                                                                             h       Ԁ                     <                               E     @  
 
- 	 l                                                                                                             /       Ԁ              ~       <                               E     @  
+ 	 l                                                                                                             /       Ԁ              ~       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              o       <                               E     @  
+ 	 l                                                                                                                    Ԁ              o       <                               E     @  
 
- 	 l                                                                                                                    Ԁ                        <                               E     @  
+ 	 l                                                                                                                    Ԁ                        <                                E     @  
 
- 	 l                                                                                                                      Ԁ                      <                               E     @  
+ 	 l                                                                                                                      Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ              P        <                               E     @  
+ 	 l                                                                                                                     Ԁ              P        <                               E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              k  A   A               ` +.         $0H`l u'4mesh       O A   A               ` 
-/         $0H`l .4mesh              <                               E     @  
+ 	 l                                                                                                                     Ԁ              k  A   A                +.         $0H`l u'4mesh       O A   A                
+/         $0H`l .4mesh              <                0               E     @  
 
- 	 l                                                                                                             h       Ԁ                     <                               E     @  
+ 	 l                                                                                                             h       Ԁ                     <                0               E     @  
 
- 	 l                                                                                                             /       Ԁ              I       <                               E     @  
+ 	 l                                                                                                             /       Ԁ              I       <                @               E     @  
 
- 	 l                                                                                                             J       Ԁ              oK       <                               E     @  
+ 	 l                                                                                                             J       Ԁ              oK       <                @               E     @  
 
- 	 l                                                                                                             K       Ԁ              @       <                               E     @  
+ 	 l                                                                                                             K       Ԁ              @       <                P               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                P               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                `               E     @  
 
- 	 l                                                                                                             X       Ԁ                     <                               E     @  
+ 	 l                                                                                                             X       Ԁ                     <                `               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                                E     @  
+ 	 l                                                                                                                    Ԁ                     <                p               E     @  
 
- 	 l                                                                                                                    Ԁ              7       <                                E     @  
+ 	 l                                                                                                                    Ԁ              7       <                p               E     @  
 
- 	 l                                                                                                             G       Ԁ              0W       <                               E     @  
+ 	 l                                                                                                             G       Ԁ              0W       <                               E     @  
 
- 	 l                                                                                                             W       Ԁ              _X       <                               E     @  
+ 	 l                                                                                                             W       Ԁ              _X       <                               E     @  
 
- 	 l                                                                                                             oX       Ԁ                     <                                E     @  
+ 	 l                                                                                                             oX       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                     Ԁ                     <                                E     @  
+ 	 l                                                                                                                     Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
- 	 l                                                                                                             p       Ԁ                     <                0               E     @  
+ 	 l                                                                                                             p       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ                      <                @               E     @  
+ 	 l                                                                                                                    Ԁ                      <                               E     @  
 
- 	 l                                                                                                                    Ԁ              O       <                @               E     @  
+ 	 l                                                                                                                    Ԁ              O       <                               E     @  
 
- 	 l                                                                                                             _       Ԁ              pd       <                P               E     @  
+ 	 l                                                                                                             _       Ԁ              pd       <                               E     @  
 
- 	 l                                                                                                             e       Ԁ              e       <                P               E     @  
+ 	 l                                                                                                             e       Ԁ              e       <                               E     @  
 
- 	 l                                                                                                             e       Ԁ               A   A               p Ke6         $0H`l /4mesh        A   A               p *6         $0H`l e64mesh       '	       <                `               E      @  
+ 	 l                                                                                                             e       Ԁ               A   A               Ke6         $0H`l /4mesh        A   A               *6         $0H`l e64mesh       '	       <                               E      @  
 
- 	 l                                                                                                             `(	       Ԁ              (	       <                `               E      @  
+ 	 l                                                                                                             `(	       Ԁ              (	       <                               E      @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                p               E   !  @  
+ 	 l                                                                                                             (	       Ԁ              	       <                               E   !  @  
 
- 	 l                                                                                                             	       Ԁ              ?	       <                p               E   !  @  
+ 	 l                                                                                                             	       Ԁ              ?	       <                               E   !  @  
 
  	 l                                                                                                             O	       Ԁ              `
-       <                               E   "  @  
+       <                                E   "  @  
 
  	 l                                                                                                              
        Ԁ              
-       <                               E   "  @  
+       <                                E   "  @  
 
  	 l                                                                                                             
-       Ԁ              q       <                               E   #  @  
+       Ԁ              q       <                               E   #  @  
 
- 	 l                                                                                                             Pr       Ԁ              r       <                               E   #  @  
+ 	 l                                                                                                             Pr       Ԁ              r       <                               E   #  @  
 
- 	 l                                                                                                             r       Ԁ               5       <                               E   $  @  
+ 	 l                                                                                                             r       Ԁ               5       <                                E   $  @  
 
- 	 l                                                                                                             5       Ԁ              6       <                               E   $  @  
+ 	 l                                                                                                             5       Ԁ              6       <                                E   $  @  
 
- 	 l                                                                                                             +6       Ԁ              P       <                               E   %  @  
+ 	 l                                                                                                             +6       Ԁ              P       <                0               E   %  @  
 
- 	 l                                                                                                                    Ԁ              W       <                               E   %  @  
+ 	 l                                                                                                                    Ԁ              W       <                0               E   %  @  
 
- 	 l                                                                                                             g       Ԁ                     <                               E   &  @  
+ 	 l                                                                                                             g       Ԁ                     <                @               E   &  @  
 
- 	 l                                                                                                             ,       Ԁ                     <                               E   &  @  
+ 	 l                                                                                                             ,       Ԁ                     <                @               E   &  @  
 
- 	 l                                                                                                                    Ԁ              ~       <                               E   '  @  
+ 	 l                                                                                                                    Ԁ              ~       <                P               E   '  @  
 
- 	 l                                                                                                             |       Ԁ                     <                               E   '  @  
+ 	 l                                                                                                             |       Ԁ                     <                P               E   '  @  
 
- 	 l                                                                                                                    Ԁ                        <                               E   (  @  
+ 	 l                                                                                                                    Ԁ                        <                `               E   (  @  
 
- 	 l                                                                                                                      Ԁ                      <                               E   (  @  
+ 	 l                                                                                                                      Ԁ                      <                `               E   (  @  
 
- 	 l                                                                                                                     Ԁ              P        <                               E   )  @  
+ 	 l                                                                                                                     Ԁ              P        <                p               E   )  @  
 
- 	 l                                                                                                                     Ԁ              W        <                               E   )  @  
+ 	 l                                                                                                                     Ԁ              W        <                p               E   )  @  
 
- 	 l                                                                                                             g        Ԁ              k  A   A                k>         $0H`l 64mesh       O A   A                JX>         $0H`l >4mesh              <                                E   *  @  
+ 	 l                                                                                                             g        Ԁ              k  A   A               k>         $0H`l 64mesh       O A   A               JX>         $0H`l >4mesh              <                               E   *  @  
 
- 	 l                                                                                                             ,       Ԁ                     <                                E   *  @  
+ 	 l                                                                                                             ,       Ԁ                     <                               E   *  @  
 
- 	 l                                                                                                                    Ԁ              I       <                               E   +  @  
+ 	 l                                                                                                                    Ԁ              I       <                               E   +  @  
 
- 	 l                                                                                                             |J       Ԁ              J       <                               E   +  @  
+ 	 l                                                                                                             |J       Ԁ              J       <                               E   +  @  
 
- 	 l                                                                                                             K       Ԁ              @       <                                E   ,  @  
+ 	 l                                                                                                             K       Ԁ              @       <                               E   ,  @  
 
- 	 l                                                                                                                    Ԁ              G       <                                E   ,  @  
+ 	 l                                                                                                                    Ԁ              G       <                               E   ,  @  
 
- 	 l                                                                                                             W       Ԁ                     <                0               E   -  @  
+ 	 l                                                                                                             W       Ԁ                     <                               E   -  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   -  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   -  @  
 
- 	 l                                                                                                                    Ԁ                     <                @               E   .  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   .  @  
 
- 	 l                                                                                                             X       Ԁ              Ӕ       <                @               E   .  @  
+ 	 l                                                                                                             X       Ԁ              Ӕ       <                               E   .  @  
 
- 	 l                                                                                                                    Ԁ              0W       <                P               E   /  @  
+ 	 l                                                                                                                    Ԁ              0W       <                               E   /  @  
 
- 	 l                                                                                                             W       Ԁ              X       <                P               E   /  @  
+ 	 l                                                                                                             W       Ԁ              X       <                               E   /  @  
 
- 	 l                                                                                                             X       Ԁ                     <                `               E   0  @  
+ 	 l                                                                                                             X       Ԁ                     <                               E   0  @  
 
- 	 l                                                                                                                    Ԁ              _       <                `               E   0  @  
+ 	 l                                                                                                                    Ԁ              _       <                               E   0  @  
 
- 	 l                                                                                                             o       Ԁ                     <                p               E   1  @  
+ 	 l                                                                                                             o       Ԁ                     <                                E   1  @  
 
- 	 l                                                                                                             H       Ԁ                     <                p               E   1  @  
+ 	 l                                                                                                             H       Ԁ                     <                                E   1  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   2  @  
+ 	 l                                                                                                                    Ԁ                      <                               E   2  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   2  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   2  @  
 
- 	 l                                                                                                                    Ԁ              pd       <                               E   3  @  
+ 	 l                                                                                                                    Ԁ              pd       <                                E   3  @  
 
- 	 l                                                                                                             d       Ԁ              Oe       <                               E   3  @  
+ 	 l                                                                                                             d       Ԁ              Oe       <                                E   3  @  
 
- 	 l                                                                                                             _e       Ԁ               A   A                E         $0H`l X>4mesh        A   A                jE         $0H`l E4mesh       '	       <                               E   4  @  
+ 	 l                                                                                                             _e       Ԁ               A   A               0E         $0H`l X>4mesh        A   A               0jE         $0H`l E4mesh       '	       <                @               E   4  @  
 
- 	 l                                                                                                             8(	       Ԁ              (	       <                               E   4  @  
+ 	 l                                                                                                             8(	       Ԁ              (	       <                @               E   4  @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                               E   5  @  
+ 	 l                                                                                                             (	       Ԁ              	       <                P               E   5  @  
 
- 	 l                                                                                                             	       Ԁ              	       <                               E   5  @  
+ 	 l                                                                                                             	       Ԁ              	       <                P               E   5  @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                               E   6  @  
+       <                `               E   6  @  
 
  	 l                                                                                                             خ
        Ԁ              ?
-       <                               E   6  @  
+       <                `               E   6  @  
 
  	 l                                                                                                             O
-       Ԁ              q       <                               E   7  @  
+       Ԁ              q       <                p               E   7  @  
 
- 	 l                                                                                                             (r       Ԁ              r       <                               E   7  @  
+ 	 l                                                                                                             (r       Ԁ              r       <                p               E   7  @  
 
- 	 l                                                                                                             r       Ԁ               5       <                               E   8  @  
+ 	 l                                                                                                             r       Ԁ               5       <                               E   8  @  
 
- 	 l                                                                                                             p5       Ԁ              5       <                               E   8  @  
+ 	 l                                                                                                             p5       Ԁ              5       <                               E   8  @  
 
- 	 l                                                                                                             5       Ԁ              P       <                               E   9  @  
+ 	 l                                                                                                             5       Ԁ              P       <                               E   9  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   9  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   9  @  
 
- 	 l                                                                                                             /       Ԁ                     <                                E   :  @  
+ 	 l                                                                                                             /       Ԁ                     <                               E   :  @  
 
- 	 l                                                                                                                    Ԁ              o       <                                E   :  @  
+ 	 l                                                                                                                    Ԁ              o       <                               E   :  @  
 
- 	 l                                                                                                                    Ԁ              ~       <                               E   ;  @  
+ 	 l                                                                                                                    Ԁ              ~       <                               E   ;  @  
 
- 	 l                                                                                                             `       Ԁ                     <                               E   ;  @  
+ 	 l                                                                                                             `       Ԁ                     <                               E   ;  @  
 
- 	 l                                                                                                                    Ԁ                        <                                E   <  @  
+ 	 l                                                                                                                    Ԁ                        <                               E   <  @  
 
- 	 l                                                                                                             p         Ԁ                       <                                E   <  @  
+ 	 l                                                                                                             p         Ԁ                       <                               E   <  @  
 
- 	 l                                                                                                                      Ԁ              P        <                0               E   =  @  
+ 	 l                                                                                                                      Ԁ              P        <                               E   =  @  
 
- 	 l                                                                                                                     Ԁ                      <                0               E   =  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   =  @  
 
- 	 l                                                                                                             /        Ԁ              k  A   A                HM         $0H`l E4mesh       O A   A                M         $0H`l IM4mesh              <                @               E   >  @  
+ 	 l                                                                                                             /        Ԁ              k  A   A               HM         $0H`l E4mesh       O A   A               M         $0H`l IM4mesh              <                               E   >  @  
 
- 	 l                                                                                                                    Ԁ              o       <                @               E   >  @  
+ 	 l                                                                                                                    Ԁ              o       <                               E   >  @  
 
- 	 l                                                                                                                    Ԁ              I       <                P               E   ?  @  
+ 	 l                                                                                                                    Ԁ              I       <                                E   ?  @  
 
- 	 l                                                                                                             `J       Ԁ              J       <                P               E   ?  @  
+ 	 l                                                                                                             `J       Ԁ              J       <                                E   ?  @  
 
- 	 l                                                                                                             J       Ԁ              @       <                `               E   @  @  
+ 	 l                                                                                                             J       Ԁ              @       <                               E   @  @  
 
- 	 l                                                                                                                    Ԁ                     <                `               E   @  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   @  @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E   A  @  
+ 	 l                                                                                                                    Ԁ                     <                                E   A  @  
 
- 	 l                                                                                                                     Ԁ              _       <                p               E   A  @  
+ 	 l                                                                                                                     Ԁ              _       <                                E   A  @  
 
- 	 l                                                                                                             o       Ԁ                     <                               E   B  @  
+ 	 l                                                                                                             o       Ԁ                     <                0               E   B  @  
 
- 	 l                                                                                                             L       Ԁ                     <                               E   B  @  
+ 	 l                                                                                                             L       Ԁ                     <                0               E   B  @  
 
- 	 l                                                                                                                    Ԁ              0W       <                               E   C  @  
+ 	 l                                                                                                                    Ԁ              0W       <                @               E   C  @  
 
- 	 l                                                                                                             W       Ԁ              W       <                               E   C  @  
+ 	 l                                                                                                             W       Ԁ              W       <                @               E   C  @  
 
- 	 l                                                                                                             X       Ԁ                     <                               E   D  @  
+ 	 l                                                                                                             X       Ԁ                     <                P               E   D  @  
 
- 	 l                                                                                                                    Ԁ              G       <                               E   D  @  
+ 	 l                                                                                                                    Ԁ              G       <                P               E   D  @  
 
- 	 l                                                                                                             W       Ԁ                     <                               E   E  @  
+ 	 l                                                                                                             W       Ԁ                     <                `               E   E  @  
 
- 	 l                                                                                                             <       Ԁ                     <                               E   E  @  
+ 	 l                                                                                                             <       Ԁ                     <                `               E   E  @  
 
- 	 l                                                                                                                    Ԁ                      <                               E   F  @  
+ 	 l                                                                                                                    Ԁ                      <                p               E   F  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   F  @  
+ 	 l                                                                                                                    Ԁ                     <                p               E   F  @  
 
- 	 l                                                                                                                    Ԁ              pd       <                               E   G  @  
+ 	 l                                                                                                                    Ԁ              pd       <                               E   G  @  
 
- 	 l                                                                                                             d       Ԁ              7e       <                               E   G  @  
+ 	 l                                                                                                             d       Ԁ              7e       <                               E   G  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A                T         $0H`l M4mesh        A   A                ;U         $0H`l T4mesh       '	       <                               E   H  @  
+ 	 l                                                                                                             Ge       Ԁ               A   A               T         $0H`l M4mesh        A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
 
- 	 l                                                                                                             ,(	       Ԁ              (	       <                               E   H  @  
+ 	 l                                                                                                             ,(	       Ԁ              (	       <                               E   H  @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                               E   I  @  
+ 	 l                                                                                                             (	       Ԁ              	       <                               E   I  @  
 
- 	 l                                                                                                             |	       Ԁ              	       <                               E   I  @  
+ 	 l                                                                                                             |	       Ԁ              	       <                               E   I  @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                                E   J  @  
+       <                               E   J  @  
 
  	 l                                                                                                             ̮
        Ԁ              '
-       <                                E   J  @  
+       <                               E   J  @  
 
  	 l                                                                                                             7
-       Ԁ              q       <                               E   K  @  
+       Ԁ              q       <                               E   K  @  
 
- 	 l                                                                                                             r       Ԁ              wr       <                               E   K  @  
+ 	 l                                                                                                             r       Ԁ              wr       <                               E   K  @  
 
- 	 l                                                                                                             r       Ԁ               5       <                                E   L  @  
+ 	 l                                                                                                             r       Ԁ               5       <                               E   L  @  
 
- 	 l                                                                                                             l5       Ԁ              5       <                                E   L  @  
+ 	 l                                                                                                             l5       Ԁ              5       <                               E   L  @  
 
- 	 l                                                                                                             5       Ԁ              P       <                0               E   M  @  
+ 	 l                                                                                                             5       Ԁ              P       <                               E   M  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   M  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   M  @  
 
- 	 l                                                                                                             '       Ԁ                     <                @               E   N  @  
+ 	 l                                                                                                             '       Ԁ                     <                                E   N  @  
 
- 	 l                                                                                                                    Ԁ              g       <                @               E   N  @  
+ 	 l                                                                                                                    Ԁ              g       <                                E   N  @  
 
- 	 l                                                                                                             w       Ԁ              ~       <                P               E   O  @  
+ 	 l                                                                                                             w       Ԁ              ~       <                               E   O  @  
 
- 	 l                                                                                                             \       Ԁ                     <                P               E   O  @  
+ 	 l                                                                                                             \       Ԁ                     <                               E   O  @  
 
- 	 l                                                                                                                    Ԁ                        <                `               E   P  @  
+ 	 l                                                                                                                    Ԁ                        <                                E   P  @  
 
- 	 l                                                                                                             l         Ԁ                       <                `               E   P  @  
+ 	 l                                                                                                             l         Ԁ                       <                                E   P  @  
 
- 	 l                                                                                                                      Ԁ              P        <                p               E   Q  @  
+ 	 l                                                                                                                      Ԁ              P        <                0               E   Q  @  
 
- 	 l                                                                                                                     Ԁ                      <                p               E   Q  @  
+ 	 l                                                                                                                     Ԁ                      <                0               E   Q  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A                \         $0H`l <U4mesh       O A   A                \         $0H`l \4mesh              <                               E   R  @  
+ 	 l                                                                                                             '        Ԁ              k  A   A               @\         $0H`l <U4mesh       O A   A               @\         $0H`l \4mesh              <                P               E   R  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   R  @  
+ 	 l                                                                                                                    Ԁ              g       <                P               E   R  @  
 
- 	 l                                                                                                             w       Ԁ              I       <                               E   S  @  
+ 	 l                                                                                                             w       Ԁ              I       <                `               E   S  @  
 
- 	 l                                                                                                             \J       Ԁ              J       <                               E   S  @  
+ 	 l                                                                                                             \J       Ԁ              J       <                `               E   S  @  
 
- 	 l                                                                                                             J       Ԁ              @       <                               E   T  @  
+ 	 l                                                                                                             J       Ԁ              @       <                p               E   T  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   T  @  
+ 	 l                                                                                                                    Ԁ                     <                p               E   T  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   U  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   U  @  
 
- 	 l                                                                                                                    Ԁ              W       <                               E   U  @  
+ 	 l                                                                                                                    Ԁ              W       <                               E   U  @  
 
- 	 l                                                                                                             g       Ԁ                     <                               E   V  @  
+ 	 l                                                                                                             g       Ԁ                     <                               E   V  @  
 
- 	 l                                                                                                             L       Ԁ                     <                               E   V  @  
+ 	 l                                                                                                             L       Ԁ                     <                               E   V  @  
 
- 	 l                                                                                                                    Ԁ              0W       <                               E   W  @  
+ 	 l                                                                                                                    Ԁ              0W       <                               E   W  @  
 
- 	 l                                                                                                             W       Ԁ              W       <                               E   W  @  
+ 	 l                                                                                                             W       Ԁ              W       <                               E   W  @  
 
- 	 l                                                                                                             X       Ԁ                     <                               E   X  @  
+ 	 l                                                                                                             X       Ԁ                     <                               E   X  @  
 
- 	 l                                                                                                                    Ԁ              G       <                               E   X  @  
+ 	 l                                                                                                                    Ԁ              G       <                               E   X  @  
 
- 	 l                                                                                                             W       Ԁ                     <                               E   Y  @  
+ 	 l                                                                                                             W       Ԁ                     <                               E   Y  @  
 
- 	 l                                                                                                             <       Ԁ                     <                               E   Y  @  
+ 	 l                                                                                                             <       Ԁ                     <                               E   Y  @  
 
- 	 l                                                                                                                    Ԁ                      <                                E   Z  @  
+ 	 l                                                                                                                    Ԁ                      <                               E   Z  @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   Z  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   Z  @  
 
- 	 l                                                                                                                    Ԁ              pd       <                               E   [  @  
+ 	 l                                                                                                                    Ԁ              pd       <                               E   [  @  
 
- 	 l                                                                                                             d       Ԁ              7e       <                               E   [  @  
+ 	 l                                                                                                             d       Ԁ              7e       <                               E   [  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A                ,d         $0H`l \4mesh        A   A                }d         $0H`l ,d4mesh       '	       <                                E   \  @  
+ 	 l                                                                                                             Ge       Ԁ               A   A               ,d         $0H`l \4mesh        A   A               }d         $0H`l ,d4mesh       '	       <                                E   \  @  
 
- 	 l                                                                                                             ,(	       Ԁ              (	       <                                E   \  @  
+ 	 l                                                                                                             ,(	       Ԁ              (	       <                                E   \  @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                0               E   ]  @  
+ 	 l                                                                                                             (	       Ԁ              	       <                               E   ]  @  
 
- 	 l                                                                                                             |	       Ԁ              	       <                0               E   ]  @  
+ 	 l                                                                                                             |	       Ԁ              	       <                               E   ]  @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                @               E   ^  @  
+       <                                E   ^  @  
 
  	 l                                                                                                             ̮
        Ԁ              '
-       <                @               E   ^  @  
+       <                                E   ^  @  
 
  	 l                                                                                                             7
-       Ԁ              q       <                P               E   _  @  
+       Ԁ              q       <                0               E   _  @  
 
- 	 l                                                                                                             r       Ԁ              wr       <                P               E   _  @  
+ 	 l                                                                                                             r       Ԁ              wr       <                0               E   _  @  
 
- 	 l                                                                                                             r       Ԁ               5       <                `               E   `  @  
+ 	 l                                                                                                             r       Ԁ               5       <                @               E   `  @  
 
- 	 l                                                                                                             l5       Ԁ              5       <                `               E   `  @  
+ 	 l                                                                                                             l5       Ԁ              5       <                @               E   `  @  
 
- 	 l                                                                                                             5       Ԁ              P       <                p               E   a  @  
+ 	 l                                                                                                             5       Ԁ              P       <                P               E   a  @  
 
- 	 l                                                                                                                    Ԁ                     <                p               E   a  @  
+ 	 l                                                                                                                    Ԁ                     <                P               E   a  @  
 
- 	 l                                                                                                             '       Ԁ                     <                               E   b  @  
+ 	 l                                                                                                             '       Ԁ                     <                `               E   b  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   b  @  
+ 	 l                                                                                                                    Ԁ              g       <                `               E   b  @  
 
- 	 l                                                                                                             w       Ԁ              ~       <                               E   c  @  
+ 	 l                                                                                                             w       Ԁ              ~       <                p               E   c  @  
 
- 	 l                                                                                                             \       Ԁ                     <                               E   c  @  
+ 	 l                                                                                                             \       Ԁ                     <                p               E   c  @  
 
- 	 l                                                                                                                    Ԁ                        <                               E   d  @  
+ 	 l                                                                                                                    Ԁ                        <                               E   d  @  
 
- 	 l                                                                                                             l         Ԁ                       <                               E   d  @  
+ 	 l                                                                                                             l         Ԁ                       <                               E   d  @  
 
- 	 l                                                                                                                      Ԁ              P        <                               E   e  @  
+ 	 l                                                                                                                      Ԁ              P        <                               E   e  @  
 
- 	 l                                                                                                                     Ԁ                      <                               E   e  @  
+ 	 l                                                                                                                     Ԁ                      <                               E   e  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A                +k         $0H`l ~d4mesh       O A   A                
-l         $0H`l k4mesh              <                               E   f  @  
+ 	 l                                                                                                             '        Ԁ              k  A   A               +k         $0H`l ~d4mesh       O A   A               
+l         $0H`l k4mesh              <                               E   f  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   f  @  
+ 	 l                                                                                                                    Ԁ              g       <                               E   f  @  
 
- 	 l                                                                                                             w       Ԁ              I E   E   Ѐ              D%                                   J ?   ?   Ѐ<                  E                                J       Ԁ              K       <                               E   g  @  
+ 	 l                                                                                                             w       Ԁ              I E   E   Ѐ              D%                                   J ?   ?   Ѐ<                  E                                J       Ԁ              K       <                               E   g  @  
 
- 	 l                                                                                                             yK       Ԁ              K       <                               E   g  @  
+ 	 l                                                                                                             yK       Ԁ              K       <                               E   g  @  
 
- 	 l                                                                                                             K       Ԁ              @       <                               E   h  @  
+ 	 l                                                                                                             K       Ԁ              @       <                               E   h  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   h  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   h  @  
 
- 	 l                                                                                                                    Ԁ                     <                                E   i  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   i  @  
 
- 	 l                                                                                                                    Ԁ              W       <                                E   i  @  
+ 	 l                                                                                                                    Ԁ              W       <                               E   i  @  
 
- 	 l                                                                                                             g       Ԁ                     <                               E   j  @  
+ 	 l                                                                                                             g       Ԁ                     <                                E   j  @  
 
- 	 l                                                                                                             L       Ԁ                     <                               E   j  @  
+ 	 l                                                                                                             L       Ԁ                     <                                E   j  @  
 
- 	 l                                                                                                                    Ԁ              0W       <                                E   k  @  
+ 	 l                                                                                                                    Ԁ              0W       <                               E   k  @  
 
- 	 l                                                                                                             W       Ԁ              W       <                                E   k  @  
+ 	 l                                                                                                             W       Ԁ              W       <                               E   k  @  
 
- 	 l                                                                                                             X       Ԁ                     <                0               E   l  @  
+ 	 l                                                                                                             X       Ԁ                     <                                E   l  @  
 
- 	 l                                                                                                                    Ԁ              G       <                0               E   l  @  
+ 	 l                                                                                                                    Ԁ              G       <                                E   l  @  
 
- 	 l                                                                                                             W       Ԁ                     <                @               E   m  @  
+ 	 l                                                                                                             W       Ԁ                     <                0               E   m  @  
 
- 	 l                                                                                                             <       Ԁ                     <                @               E   m  @  
+ 	 l                                                                                                             <       Ԁ                     <                0               E   m  @  
 
- 	 l                                                                                                                    Ԁ                      <                P               E   n  @  
+ 	 l                                                                                                                    Ԁ                      <                @               E   n  @  
 
- 	 l                                                                                                                    Ԁ                     <                P               E   n  @  
+ 	 l                                                                                                                    Ԁ                     <                @               E   n  @  
 
- 	 l                                                                                                                    Ԁ              pd       <                `               E   o  @  
+ 	 l                                                                                                                    Ԁ              pd       <                P               E   o  @  
 
- 	 l                                                                                                             d       Ԁ              7e       <                `               E   o  @  
+ 	 l                                                                                                             d       Ԁ              7e       <                P               E   o  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A                Kns         $0H`l l4mesh        A   A                *s         $0H`l ns4mesh       '	       <                p               E   p  @  
+ 	 l                                                                                                             Ge       Ԁ               A   A               `Kns         $0H`l l4mesh        A   A               `*s         $0H`l ns4mesh       '	       <                p               E   p  @  
 
- 	 l                                                                                                             ,(	       Ԁ              (	       <                p               E   p  @  
+ 	 l                                                                                                             ,(	       Ԁ              (	       <                p               E   p  @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                               E   q  @  
+ 	 l                                                                                                             (	       Ԁ              	       <                               E   q  @  
 
- 	 l                                                                                                             |	       Ԁ              	       <                               E   q  @  
+ 	 l                                                                                                             |	       Ԁ              	       <                               E   q  @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                               E   r  @  
+       <                               E   r  @  
 
  	 l                                                                                                             ̮
        Ԁ              '
-       <                               E   r  @  
+       <                               E   r  @  
 
  	 l                                                                                                             7
-       Ԁ              q       <                               E   s  @  
+       Ԁ              q       <                               E   s  @  
 
- 	 l                                                                                                             r       Ԁ              wr       <                               E   s  @  
+ 	 l                                                                                                             r       Ԁ              wr       <                               E   s  @  
 
- 	 l                                                                                                             r       Ԁ               5       <                               E   t  @  
+ 	 l                                                                                                             r       Ԁ               5       <                               E   t  @  
 
- 	 l                                                                                                             l5       Ԁ              5       <                               E   t  @  
+ 	 l                                                                                                             l5       Ԁ              5       <                               E   t  @  
 
- 	 l                                                                                                             5       Ԁ              P       <                               E   u  @  
+ 	 l                                                                                                             5       Ԁ              P       <                               E   u  @  
 
- 	 l                                                                                                                    Ԁ                     <                               E   u  @  
+ 	 l                                                                                                                    Ԁ                     <                               E   u  @  
 
- 	 l                                                                                                             '       Ԁ                     <                               E   v  @  
+ 	 l                                                                                                             '       Ԁ                     <                               E   v  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   v  @  
+ 	 l                                                                                                                    Ԁ              g       <                               E   v  @  
 
- 	 l                                                                                                             w       Ԁ              ~       <                               E   w  @  
+ 	 l                                                                                                             w       Ԁ              ~       <                               E   w  @  
 
- 	 l                                                                                                             \       Ԁ                     <                               E   w  @  
+ 	 l                                                                                                             \       Ԁ                     <                               E   w  @  
 
- 	 l                                                                                                                    Ԁ                        <                               E   x  @  
+ 	 l                                                                                                                    Ԁ                        <                               E   x  @  
 
- 	 l                                                                                                             l         Ԁ                       <                               E   x  @  
+ 	 l                                                                                                             l         Ԁ                       <                               E   x  @  
 
- 	 l                                                                                                                      Ԁ              P        <                                E   y  @  
+ 	 l                                                                                                                      Ԁ              P        <                 	               E   y  @  
 
- 	 l                                                                                                                     Ԁ                      <                                E   y  @  
+ 	 l                                                                                                                     Ԁ                      <                 	               E   y  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A                k{         $0H`l s4mesh       O A   A                Ja{         $0H`l {4mesh              <                               E   z  @  
+ 	 l                                                                                                             '        Ԁ              k  A   A               	k{         $0H`l s4mesh       O A   A               	Ja{         $0H`l {4mesh              <                 	               E   z  @  
 
- 	 l                                                                                                                    Ԁ              g       <                               E   z  @  
+ 	 l                                                                                                                    Ԁ              g       <                 	               E   z  @  
 
- 	 l                                                                                                             w       Ԁ              I       <                                E   {  @  
+ 	 l                                                                                                             w       Ԁ              I       <                0	               E   {  @  
 
- 	 l                                                                                                             \J       Ԁ              J       <                                E   {  @  
+ 	 l                                                                                                             \J       Ԁ              J       <                0	               E   {  @  
 
- 	 l                                                                                                             J       Ԁ              @       <                0               E   |  @  
+ 	 l                                                                                                             J       Ԁ              @       <                @	               E   |  @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E   |  @  
+ 	 l                                                                                                                    Ԁ                     <                @	               E   |  @  
 
- 	 l                                                                                                                    Ԁ                     <                @               E   }  @  
+ 	 l                                                                                                                    Ԁ                     <                P	               E   }  @  
 
- 	 l                                                                                                                    Ԁ              W       <                @               E   }  @  
+ 	 l                                                                                                                    Ԁ              W       <                P	               E   }  @  
 
- 	 l                                                                                                             g       Ԁ                     <                P               E   ~  @  
+ 	 l                                                                                                             g       Ԁ                     <                `	               E   ~  @  
 
- 	 l                                                                                                             L       Ԁ                     <                P               E   ~  @  
+ 	 l                                                                                                             L       Ԁ                     <                `	               E   ~  @  
 
- 	 l                                                                                                                    Ԁ              0W       <                `               E     @  
+ 	 l                                                                                                                    Ԁ              0W       <                p	               E     @  
 
- 	 l                                                                                                             W       Ԁ              W       <                `               E     @  
+ 	 l                                                                                                             W       Ԁ              W       <                p	               E     @  
 
- 	 l                                                                                                             X       Ԁ                     <                p               E     @  
+ 	 l                                                                                                             X       Ԁ                     <                	               E     @  
 
- 	 l                                                                                                                    Ԁ              G       <                p               E     @  
+ 	 l                                                                                                                    Ԁ              G       <                	               E     @  
 
- 	 l                                                                                                             W       Ԁ                     <                               E     @  
+ 	 l                                                                                                             W       Ԁ                     <                	               E     @  
 
- 	 l                                                                                                             <       Ԁ                     <                               E     @  
+ 	 l                                                                                                             <       Ԁ                     <                	               E     @  
 
- 	 l                                                                                                                    Ԁ                      <                               E     @  
+ 	 l                                                                                                                    Ԁ                      <                	               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                	               E     @  
 
- 	 l                                                                                                                    Ԁ              pd       <                               E     @  
+ 	 l                                                                                                                    Ԁ              pd       <                	               E     @  
 
- 	 l                                                                                                             d       Ԁ              7e       <                               E     @  
+ 	 l                                                                                                             d       Ԁ              7e       <                	               E     @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A                        $0H`l a{4mesh        A   A               j         $0H`l 4mesh       '	       <                               E     @  
+ 	 l                                                                                                             Ge       Ԁ               A   A               	         $0H`l a{4mesh        A   A               	j         $0H`l 4mesh       '	       <                	               E     @  
 
- 	 l                                                                                                             ,(	       Ԁ              (	       <                               E     @  
+ 	 l                                                                                                             ,(	       Ԁ              (	       <                	               E     @  
 
- 	 l                                                                                                             (	       Ԁ              	       <                               E     @  
+ 	 l                                                                                                             (	       Ԁ              	       <                	               E     @  
 
- 	 l                                                                                                             |	       Ԁ              	       <                               E     @  
+ 	 l                                                                                                             |	       Ԁ              	       <                	               E     @  
 
  	 l                                                                                                             	       Ԁ              `
-       <                               E     @  
+       <                	               E     @  
 
  	 l                                                                                                             ̮
        Ԁ              '
-       <                               E     @  
+       <                	               E     @  
 
  	 l                                                                                                             7
-       Ԁ              q       <                               E     @  
+       Ԁ              q       <                 
+               E     @  
 
- 	 l                                                                                                             r       Ԁ              wr       <                               E     @  
+ 	 l                                                                                                             r       Ԁ              wr       <                 
+               E     @  
 
- 	 l                                                                                                             r       Ԁ               5       <                               E     @  
+ 	 l                                                                                                             r       Ԁ               5       <                
+               E     @  
 
- 	 l                                                                                                             l5       Ԁ              5       <                               E     @  
+ 	 l                                                                                                             l5       Ԁ              5       <                
+               E     @  
 
- 	 l                                                                                                             5       Ԁ              P       <                 	               E     @  
+ 	 l                                                                                                             5       Ԁ              P       <                 
+               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                 	               E     @  
+ 	 l                                                                                                                    Ԁ                     <                 
+               E     @  
 
- 	 l                                                                                                             '       Ԁ                     <                	               E     @  
+ 	 l                                                                                                             '       Ԁ                     <                0
+               E     @  
 
- 	 l                                                                                                                    Ԁ              g       <                	               E     @  
+ 	 l                                                                                                                    Ԁ              g       <                0
+               E     @  
 
- 	 l                                                                                                             w       Ԁ              ~       <                 	               E     @  
+ 	 l                                                                                                             w       Ԁ              ~       <                @
+               E     @  
 
- 	 l                                                                                                             \       Ԁ                     <                 	               E     @  
+ 	 l                                                                                                             \       Ԁ                     <                @
+               E     @  
 
- 	 l                                                                                                                    Ԁ           	             <                0	               E     @  
+ 	 l                                                                                                                    Ԁ           	             <                P
+               E     @  
 
- 	 l                                                                                                          	   l         Ԁ           	            <                0	               E     @  
+ 	 l                                                                                                          	   l         Ԁ           	            <                P
+               E     @  
 
- 	 l                                                                                                          	            Ԁ           	   P        <                @	               E     @  
+ 	 l                                                                                                          	            Ԁ           	   P        <                `
+               E     @  
 
- 	 l                                                                                                          	           Ԁ           	           <                @	               E     @  
+ 	 l                                                                                                          	           Ԁ           	           <                `
+               E     @  
 
- 	 l                                                                                                          	   '        Ԁ           	   k  A   A                Q         $0H`l 4mesh    	   O A   A                         $0H`l R4mesh    	          <                P	               E     @  
+ 	 l                                                                                                          	   '        Ԁ           	   k  A   A               p
+Q         $0H`l 4mesh    	   O A   A               p
+         $0H`l R4mesh    	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   g       <                P	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   g       <                
+               E     @  
 
- 	 l                                                                                                          	   w       Ԁ           	   I       <                `	               E     @  
+ 	 l                                                                                                          	   w       Ԁ           	   I       <                
+               E     @  
 
- 	 l                                                                                                          	   \J       Ԁ           	   J       <                `	               E     @  
+ 	 l                                                                                                          	   \J       Ԁ           	   J       <                
+               E     @  
 
- 	 l                                                                                                          	   J       Ԁ           	   @       <                p	               E     @  
+ 	 l                                                                                                          	   J       Ԁ           	   @       <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                p	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   W       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   W       <                
+               E     @  
 
- 	 l                                                                                                          	   g       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   g       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	   L       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   L       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   0W       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   0W       <                
+               E     @  
 
- 	 l                                                                                                          	   W       Ԁ           	   W       <                	               E     @  
+ 	 l                                                                                                          	   W       Ԁ           	   W       <                
+               E     @  
 
- 	 l                                                                                                          	   X       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   X       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   G       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   G       <                
+               E     @  
 
- 	 l                                                                                                          	   W       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   W       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	   <       Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	   <       Ԁ           	          <                
+               E     @  
 
- 	 l                                                                                                          	          Ԁ           	           <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	           <                                E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                                E     @  
 
- 	 l                                                                                                          	          Ԁ           	   pd       <                	               E     @  
+ 	 l                                                                                                          	          Ԁ           	   pd       <                               E     @  
 
- 	 l                                                                                                          	   d       Ԁ           	   7e       <                	               E     @  
+ 	 l                                                                                                          	   d       Ԁ           	   7e       <                               E     @  
 
- 	 l                                                                                                          	   Ge       Ԁ           	    A   A               0         $0H`l 4mesh    	    A   A               0D         $0H`l 4mesh    	   '	       <                	               E     @  
+ 	 l                                                                                                          	   Ge       Ԁ           	    A   A                         $0H`l 4mesh    	    A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
 
- 	 l                                                                                                          	   ,(	       Ԁ           	   (	       <                	               E     @  
+ 	 l                                                                                                          	   ,(	       Ԁ           	   (	       <                0               E     @  
 
- 	 l                                                                                                          	   (	       Ԁ           	   	       <                 
-               E     @  
+ 	 l                                                                                                          	   (	       Ԁ           	   	       <                @               E     @  
 
- 	 l                                                                                                          	   |	       Ԁ           	   	       <                 
-               E     @  
+ 	 l                                                                                                          	   |	       Ԁ           	   	       <                @               E     @  
 
  	 l                                                                                                          	   	       Ԁ           	   `
-       <                
-               E     @  
+       <                P               E     @  
 
  	 l                                                                                                          	   ̮
        Ԁ           	   '
-       <                
-               E     @  
+       <                P               E     @  
 
  	 l                                                                                                          	   7
-       Ԁ           	   q       <                 
-               E     @  
+       Ԁ           	   q       <                `               E     @  
 
- 	 l                                                                                                          	   r       Ԁ           	   wr       <                 
-               E     @  
+ 	 l                                                                                                          	   r       Ԁ           	   wr       <                `               E     @  
 
- 	 l                                                                                                          	   r       Ԁ           	    5       <                0
-               E     @  
+ 	 l                                                                                                          	   r       Ԁ           	    5       <                p               E     @  
 
- 	 l                                                                                                          	   l5       Ԁ           	   5       <                0
-               E     @  
+ 	 l                                                                                                          	   l5       Ԁ           	   5       <                p               E     @  
 
- 	 l                                                                                                          	   5       Ԁ           	   P       <                @
-               E     @  
+ 	 l                                                                                                          	   5       Ԁ           	   P       <                               E     @  
 
- 	 l                                                                                                          	          Ԁ           	          <                @
-               E     @  
+ 	 l                                                                                                          	          Ԁ           	          <                               E     @  
 
- 	 l                                                                                                          	   '       Ԁ           	          <                P
-               E     @  
+ 	 l                                                                                                          	   '       Ԁ           	          <                               E     @  
 
- 	 l                                                                                                          	          Ԁ           	   g       <                P
-               E     @  
+ 	 l                                                                                                          	          Ԁ           	   g       <                               E     @  
 
- 	 l                                                                                                          	   w       Ԁ           	   ~       <                `
-               E     @  
+ 	 l                                                                                                          	   w       Ԁ           	   ~       <                               E     @  
 
- 	 l                                                                                                          	   \       Ԁ           	          <                `
-               E     @  
+ 	 l                                                                                                          	   \       Ԁ           	          <                               E     @  
 
  	 l                                                                                                          	          Ԁ           
-             <                p
-               E     @  
+             <                               E     @  
 
  	 l                                                                                                          
-            <                p
-               E     @  
+            <                               E     @  
 
  	 l                                                                                                          
-           <                p
-               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-           <                p
-               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-   *	        <                p
-               E     @  
+   *	        <                               E     @  
 
  	 l                                                                                                          
-           <                p
-               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-   6        <                p
-               E     @  
+   6        <                               E     @  
 
  	 l                                                                                                          
-   P        <                
-               E     @  
+   P        <                               E     @  
 
  	 l                                                                                                          
-   C        <                
-               E     @  
+   C        <                               E     @  
 
  	 l                                                                                                          
-   S        <                
-               E     @  
+   S        <                               E     @  
 
  	 l                                                                                                          
-   *        <                
-               E     @  
+   *        <                               E     @  
 
  	 l                                                                                                          
-   /        <                
-               E     @  
+   /        <                               E     @  
 
  	 l                                                                                                          
-           <                
-               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-           <                
-               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-     2   2   Ѐ<                
-J 4mesh 7       
-     2   2   Ј<                
-J 4mesh 7       
-     2   2   Ј<                
-J 4mesh 7       
-     A   A               @듙         $0H`l E4mesh    
-   G  2   2   Ј<                
-J 4mesh 7       
-     2   2   Ј<                
-J 4mesh 7       
-     2   2   Ј<                
-J 4mesh 7       
-     2   2   Ј<                
-J 4mesh 7       
-    E   E   Ѐ            
-  D%                                 
-    E   E   Ѐ            
-  D%                                 
-   f <   <               P         $0H`l 4mesh    
-    E   E   Ѐ            
-  D%                                    k  <   <               `+~         $0H`l 4mesh       n <   <               pKG         $0H`l 4mesh       `D E   E   Ѐ            
-  D%                                    k  <   <               kܷ         $0H`l 4mesh        <   <                        $0H`l 4mesh        5 E   E   Ѐ            
-  D%                                      E   E   Ѐ            
-  D%           	                         k  <   <                        $0H`l 4mesh       6 <   <               ˓         $0H`l 4mesh       r	 E   E   Ѐ               D%           
-                         k]  <   <                        $0H`l 4mesh        E   E   Ѐ              D%   	                                  <   <               f         $0H`l 4mesh    
\ No newline at end of file
+     2   2   Ѐ<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+     A   A               듙         $0H`l E4mesh    
+   G  2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+    E   E   Ѐ              D%                                 
+    E   E   Ѐ               D%                                 
+   f <   <                        $0H`l 4mesh    
+    E   E   Ѐ               D%                                    k  <   <               0+~         $0H`l 4mesh       n <   <               @KG         $0H`l 4mesh       `D E   E   Ѐ            P  D%                                    k  <   <               `kܷ         $0H`l 4mesh        <   <               p         $0H`l 4mesh        5 E   E   Ѐ              D%                                      E   E   Ѐ              D%           	                         k  <   <                        $0H`l 4mesh       6 <   <               ˓         $0H`l 4mesh       r	 E   E   Ѐ              D%           
+                         k]  <   <                        $0H`l 4mesh        E   E   Ѐ              D%   	                                  <   <               f         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap	2014-06-17 10:34:00.463636468 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap	2014-06-17 10:33:13.820996525 -0700
@@ -1,108 +1,108 @@
-ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                  J    $0H`l3         9 7          x        Ԁ               X  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          h        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          v       Ԁ               JO A   A                 JO         $0H`l  4mesh         F   F                         $0H`l
- O4mesh        j A   A                j         $0H`l 4mesh         F   F                 ?         $0H`l
- 4mesh       JO A   A                          $0H`l @4mesh        F   F               0          $0H`l
- !4mesh       j A   A               0 2         $0H`l 4mesh         L   L          @                     
+ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                0 J    $0H`l3         9 7          x        Ԁ               X  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          h        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          v       Ԁ               JO A   A                 JO         $0H`l  4mesh         F   F               P          $0H`l
+ O4mesh        j A   A               0 j         $0H`l 4mesh         F   F               ` ?         $0H`l
+ 4mesh       JO A   A               @          $0H`l @4mesh        F   F               p          $0H`l
+ !4mesh       j A   A               P 2         $0H`l 4mesh         L   L                               
 
-         L   L                                
+         L   L          `                     
 
-         E   E   Ѐ            0   D%                                      E   E   Ѐ            P   D%                                         Ԁ              m  ?   ?   Ѐ<                `   E                             }        Ԁ                L   L   <                @                       
+         E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                         Ԁ              m  ?   ?   Ѐ<                   E                             }        Ԁ                L   L   <                                       
      
-               Ԁ              {  L   L   <                p                      
+               Ԁ              {  L   L   <                                      
      
-       #        Ԁ                      <                               E      @  
+       #        Ԁ                      <                               E      @  
 
- 	 l                                                                                                                     Ԁ              8  L   L          P                      
+ 	 l                                                                                                                     Ԁ              8  L   L                                
 
-       9  L   L                               
+       9  L   L                               
 
-       :        Ԁ              ;  L   L   <                                      
+       :        Ԁ              ;  L   L   <                                      
      
-       ;        Ԁ              ;        <                `                E      @  
+       ;        Ԁ              ;        <                                E      @  
 
- 	 l                                                                                                             1=        Ԁ              5?        <                               E      @  
+ 	 l                                                                                                             1=        Ԁ              5?        <                               E      @  
 
- 	 l                                                                                                               F   F               @          $0H`l
- 34mesh       JO A   A               @          $0H`l 4mesh       x L   L                                
+ 	 l                                                                                                               F   F                         $0H`l
+ 34mesh       JO A   A                         $0H`l 4mesh       x L   L                               
 
-        L   L   <                p                       
+        L   L   <                                       
      
-       _       Ԁ               L   L                               
+       _       Ԁ               L   L                               
 
-              <                                E      @  
+              <                                E      @  
 
- 	 l                                                                                                                    Ԁ              7 L   L                                
+ 	 l                                                                                                                    Ԁ              7 L   L                                
 
-       9 L   L   <                                       
+       9 L   L   <                0                      
      
-       9       Ԁ              v9       <                                E     @  
+       9       Ԁ              v9       <                                E     @  
 
- 	 l                                                                                                             :       Ԁ              ; L   L                               
+ 	 l                                                                                                             :       Ԁ              ; L   L          @                    
 
-       O" L   L                                
+       O" L   L                                
 
-       {# L   L                               
+       {# L   L          P                    
 
-       I(       Ԁ              ( L   L   <                                     
+       I(       Ԁ              ( L   L   <                `                     
      
-       )       Ԁ              ) E   E   Ѐ               D%                                     F   F               P #'         $0H`l
- c&4mesh       j A   A               P t'         $0H`l #'4mesh       H	 E   E   Ѐ               D%                                    ,J	 E   E   Ѐ               D%                                 J	       Ԁ              K	 ?   ?   Ѐ<                0  E           ,                 K	       Ԁ              K	       <                                E     @  
+       )       Ԁ              ) E   E   Ѐ              D%                                     F   F               p#'         $0H`l
+ c&4mesh       j A   A                t'         $0H`l #'4mesh       H	 E   E   Ѐ            0  D%                                    ,J	 E   E   Ѐ              D%                                 J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 K	       Ԁ              K	       <                @               E     @  
 
  
- l                                                                                                             ,M	       Ԁ              [N	       <                @              E     @  
+ l                                                                                                             ,M	       Ԁ              [N	       <                              E     @  
 
  
- l                                                                                                             [R	       Ԁ              R	 ?   ?   Ѐ<                P  E           ,                 R	       Ԁ              i	 L   L          `                    
+ l                                                                                                             [R	       Ԁ              R	 ?   ?   Ѐ<                  E           ,                 R	       Ԁ              i	 L   L                              
 
-       8i	 L   L   <                                       
+       8i	 L   L   <                P                      
      
-       i	       Ԁ              j	 L   L   <                p                     
+       i	       Ԁ              j	 L   L   <                                     
      
-       :l	 L   L                               
+       :l	 L   L          `                    
 
-       {o	       Ԁ              Zp	       <                              E      @  
+       {o	       Ԁ              Zp	       <                              E      @  
 
  
- l                                                                                                             jp	       Ԁ              @        Ԁ                      <                              E     @  
+ l                                                                                                             jp	       Ԁ              @        Ԁ                      <                              E     @  
 
- 	 l                                                                                                             /        Ԁ                      <                               E     @  
+ 	 l                                                                                                             /        Ԁ                      <                p               E     @  
 
- 	 l                                                                                                                     Ԁ              #        <                              E     @  
+ 	 l                                                                                                                     Ԁ              #        <                               E     @  
 
- 	 l                                                                                                               F   F               ` +.         $0H`l
- .u'4mesh       JO A   A               ` 
-/         $0H`l .4mesh              <                               E     @  
+ 	 l                                                                                                               F   F               +.         $0H`l
+ .u'4mesh       JO A   A               
+/         $0H`l .4mesh              <                                E     @  
 
- 	 l                                                                                                                    Ԁ              [       <                                E     @  
+ 	 l                                                                                                                    Ԁ              [       <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                0               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
  
- l                                                                                                             p       Ԁ                     <                              E     @  
+ l                                                                                                             p       Ԁ                     <                0              E     @  
 
  
- l                                                                                                             K!       Ԁ              *"       <                              E     @  
+ l                                                                                                             K!       Ԁ              *"       <                @              E     @  
 
  
- l                                                                                                             :"       Ԁ               F   F               p Ke6         $0H`l
- 5/4mesh       j A   A               p *6         $0H`l e64mesh                Ԁ                      <                              E     @  
+ l                                                                                                             :"       Ԁ               F   F               PKe6         $0H`l
+ 5/4mesh       j A   A               *6         $0H`l e64mesh                Ԁ                      <                `              E     @  
 
- 	 l                                                                                                                     Ԁ              6        <                @               E     @  
+ 	 l                                                                                                                     Ԁ              6        <                               E     @  
 
- 	 l                                                                                                             '        Ԁ                      <                              E     @  
+ 	 l                                                                                                             '        Ԁ                      <                p              E     @  
 
- 	 l                                                                                                               F   F                k>         $0H`l
- F=64mesh       JO A   A                JX>         $0H`l >4mesh              <                                E     @  
+ 	 l                                                                                                               F   F               k>         $0H`l
+ F=64mesh       JO A   A               JX>         $0H`l >4mesh              <                               E     @  
 
- 	 l                                                                                                                    Ԁ              [       <                P               E     @  
+ 	 l                                                                                                                    Ԁ              [       <                               E     @  
 
- 	 l                                                                                                             K       Ԁ                     <                `               E     @  
+ 	 l                                                                                                             K       Ԁ                     <                               E     @  
 
  
- l                                                                                                             p       Ԁ                     <                              E     @  
+ l                                                                                                             p       Ԁ                     <                              E     @  
 
  
- l                                                                                                             !       Ԁ              !       <                               E     @  
+ l                                                                                                             !       Ԁ              !       <                              E     @  
 
  
- l                                                                                                             !       Ԁ               F   F                E         $0H`l
- DX>4mesh       j A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ l                                                                                                             !       Ԁ               F   F               E         $0H`l
+ DX>4mesh       j A   A                jE         $0H`l E4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap	2014-06-17 10:34:00.463636468 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap	2014-06-17 10:33:13.821996517 -0700
@@ -1,160 +1,160 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                  J     $0H`l3          9 7          o?        Ԁ               W@  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          g@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          vA        Ԁ               B        Ԁ               'C  P   P   Ѐ<                  J    $0H`l3         9 7          D  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          GE        Ԁ               k  A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                  J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                0  J   $0H`l4mesh3         9 7                  Ԁ               : P   P   Ѐ<                 J     $0H`l3         9 7          J       Ԁ               O A   A                 JO         $0H`l  4mesh         F   F                         $0H`l
-  ] 4mesh         F   F                         $0H`l
- O4mesh         A   A                j         $0H`l 4mesh       =  F   F                          $0H`l
- 4mesh       k  F   F                 ?         $0H`l
- 4mesh       O A   A                          $0H`l @4mesh        F   F               0           $0H`l
- @4mesh        F   F               0          $0H`l
- !4mesh        A   A               0 2         $0H`l 4mesh       8  L   L          @                      
+ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          o?        Ԁ               W@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          g@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          vA        Ԁ               B        Ԁ               'C  P   P   Ѐ<                0 J    $0H`l3         9 7          D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          GE        Ԁ               k  A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               : P   P   Ѐ<                 J     $0H`l3         9 7          J       Ԁ               O A   A                 JO         $0H`l  4mesh         F   F               P          $0H`l
+  ] 4mesh         F   F               P          $0H`l
+ O4mesh         A   A               0 j         $0H`l 4mesh       =  F   F               `          $0H`l
+ 4mesh       k  F   F               ` ?         $0H`l
+ 4mesh       O A   A               @          $0H`l @4mesh        F   F               p           $0H`l
+ @4mesh        F   F               p          $0H`l
+ !4mesh        A   A               P 2         $0H`l 4mesh       8  L   L                                
 
-       c  L   L          @                     
+       c  L   L                               
 
-         L   L                                
+         L   L          `                     
 
-       Q  E   E   Ѐ            0   D%                                      E   E   Ѐ            P   D%                                   ?   ?   Ѐ<                P   E                                        Ԁ                ?   ?   Ѐ<                `   E                                     Ԁ                L   L   <                @                       
+       Q  E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                   ?   ?   Ѐ<                   E                                        Ԁ                ?   ?   Ѐ<                   E                                     Ԁ                L   L   <                                       
      
-               Ԁ                L   L   <                p                      
+               Ԁ                L   L   <                                      
      
-               Ԁ                      <                `                E      @  
+               Ԁ                      <                                E      @  
 
- 	 l                                                                                                                     Ԁ                      <                               E      @  
+ 	 l                                                                                                                     Ԁ                      <                               E      @  
 
- 	 l                                                                                                                     Ԁ              09  L   L          P                      
+ 	 l                                                                                                                     Ԁ              09  L   L                                
 
-       [9  L   L                               
+       [9  L   L                               
 
-       :  L   L   <                p                       
+       :  L   L   <                                       
      
-       :        Ԁ               ;  L   L   <                                      
+       :        Ԁ               ;  L   L   <                                      
      
-       ;        Ԁ              <        <                `                E      @  
+       ;        Ԁ              <        <                                E      @  
 
- 	 l                                                                                                             =        Ԁ              =  F   F               @          $0H`l
- P4mesh       1>        <                               E      @  
+ 	 l                                                                                                             =        Ԁ              =  F   F                         $0H`l
+ P4mesh       1>        <                               E      @  
 
- 	 l                                                                                                             r?        Ԁ              8@  L   L                               
+ 	 l                                                                                                             r?        Ԁ              8@  L   L                               
 
-       k  F   F               @          $0H`l
- 34mesh       O A   A               @          $0H`l 4mesh        L   L                                
+       k  F   F                         $0H`l
+ 34mesh       O A   A                         $0H`l 4mesh        L   L                               
 
-       # L   L   <                p                       
+       # L   L   <                                       
      
-       3       Ԁ               L   L                               
+       3       Ԁ               L   L                               
 
-              <                                E      @  
+              <                                E      @  
 
- 	 l                                                                                                                    Ԁ              c8 L   L                                
+ 	 l                                                                                                                    Ԁ              c8 L   L                                
 
-       8 L   L   <                                       
+       8 L   L   <                0                      
      
-       K9       Ԁ              z:       <                                E     @  
+       K9       Ԁ              z:       <                                E     @  
 
- 	 l                                                                                                             :       Ԁ              V; L   L                               
+ 	 l                                                                                                             :       Ԁ              V; L   L          @                    
 
-       < L   L                               
+       < L   L                               
 
-       " L   L                                
+       " L   L                                
 
-       " L   L                               
+       " L   L          P                    
 
-       &$ L   L                               
+       &$ L   L                               
 
-       #& ?   ?   Ѐ<                   E             ,                 b'       Ԁ              ( L   L   <                                      
+       #& ?   ?   Ѐ<                  E             ,                 b'       Ԁ              ( L   L   <                                      
      
-       (       Ԁ              t( L   L   <                                     
+       (       Ԁ              t( L   L   <                `                     
      
-       0)       Ԁ               F   F               P 
+       0)       Ԁ               F   F               @
 c&         $0H`l
- 4mesh        F   F               P #'         $0H`l
- c&4mesh        A   A               P t'         $0H`l #'4mesh       hI	 E   E   Ѐ               D%                                    I	 E   E   Ѐ               D%                                 J	 ?   ?   Ѐ<                   E                               J	       Ԁ              K	 ?   ?   Ѐ<                0  E           ,                 K	       Ԁ              L	       <                                E     @  
+ 4mesh        F   F               p#'         $0H`l
+ c&4mesh        A   A                t'         $0H`l #'4mesh       hI	 E   E   Ѐ            0  D%                                    I	 E   E   Ѐ              D%                                 J	 ?   ?   Ѐ<                P  E                               J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 K	       Ԁ              L	       <                @               E     @  
 
  
- l                                                                                                              M	       Ԁ              WM	       <                @              E     @  
+ l                                                                                                              M	       Ԁ              WM	       <                              E     @  
 
  
- l                                                                                                             N	       Ԁ              O	       <                               E     @  
+ l                                                                                                             N	       Ԁ              O	       <                `              E     @  
 
  
- l                                                                                                             P	 E   E   Ѐ              D%              ,                  Q	       Ԁ              R	 ?   ?   Ѐ<                   E                             /R	       Ԁ              }R	 ?   ?   Ѐ<                P  E           ,                 %S	       Ԁ              bh	 L   L          0                    
+ l                                                                                                             P	 E   E   Ѐ            p  D%              ,                  Q	       Ԁ              R	 ?   ?   Ѐ<                  E                             /R	       Ԁ              }R	 ?   ?   Ѐ<                  E           ,                 %S	       Ԁ              bh	 L   L                              
 
-       h	 L   L          `                    
+       h	 L   L                              
 
-       i	 L   L   <                                       
+       i	 L   L   <                P                      
      
-       i	       Ԁ              Mj	 L   L   <                p                     
+       i	       Ԁ              Mj	 L   L   <                                     
      
-       	k	       Ԁ              k	 L   L   <                @                     
+       	k	       Ԁ              k	 L   L   <                                     
      
-       l	 L   L                               
+       l	 L   L          `                    
 
-       m	       Ԁ              ?o	       <                P              E      @  
+       m	       Ԁ              ?o	       <                              E      @  
 
  
- l                                                                                                             Oo	       Ԁ              o	       <                              E      @  
+ l                                                                                                             Oo	       Ԁ              o	       <                              E      @  
 
  
- l                                                                                                             p	       Ԁ                      <                `               E     @  
+ l                                                                                                             p	       Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              k        <                              E     @  
+ 	 l                                                                                                                     Ԁ              k        <                              E     @  
 
- 	 l                                                                                                             [        Ԁ                      <                               E     @  
+ 	 l                                                                                                             [        Ԁ                      <                p               E     @  
 
- 	 l                                                                                                                     Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                             _        Ԁ              =  F   F               ` *.         $0H`l
- #'&4mesh       k  F   F               ` +.         $0H`l
- .u'4mesh       O A   A               ` 
-/         $0H`l .4mesh       @       <                               E     @  
+ 	 l                                                                                                             _        Ԁ              =  F   F               *.         $0H`l
+ #'&4mesh       k  F   F               +.         $0H`l
+ .u'4mesh       O A   A               
+/         $0H`l .4mesh       @       <                                E     @  
 
- 	 l                                                                                                             0       Ԁ              _       <                                E     @  
+ 	 l                                                                                                             0       Ԁ              _       <                               E     @  
 
- 	 l                                                                                                             o       Ԁ              4       <                0               E     @  
+ 	 l                                                                                                             o       Ԁ              4       <                               E     @  
 
  
- l                                                                                                             D       Ԁ                     <                              E     @  
+ l                                                                                                             D       Ԁ                     <                0              E     @  
 
  
  l                                                                                                                    Ԁ              
-       <                p              E     @  
+       <                              E     @  
 
  
- l                                                                                                                    Ԁ              !       <                              E     @  
+ l                                                                                                                    Ԁ              !       <                              E     @  
 
  
- l                                                                                                             !       Ԁ              v!       <                              E     @  
+ l                                                                                                             !       Ԁ              v!       <                @              E     @  
 
  
- l                                                                                                             g"       Ԁ               F   F               p J5         $0H`l
- .4.4mesh        F   F               p Ke6         $0H`l
- 5/4mesh        A   A               p *6         $0H`l e64mesh                <                               E     @  
+ l                                                                                                             g"       Ԁ               F   F                J5         $0H`l
+ .4.4mesh        F   F               PKe6         $0H`l
+ 5/4mesh        A   A               *6         $0H`l e64mesh                <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                              E     @  
+ 	 l                                                                                                                      Ԁ                      <                `              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                @               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ                      <                p              E     @  
 
- 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
- e654mesh       k  F   F                k>         $0H`l
- F=64mesh       O A   A                JX>         $0H`l >4mesh       @       <                                E     @  
+ 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
+ e654mesh       k  F   F               k>         $0H`l
+ F=64mesh       O A   A               JX>         $0H`l >4mesh       @       <                               E     @  
 
- 	 l                                                                                                             0       Ԁ                     <                P               E     @  
+ 	 l                                                                                                             0       Ԁ                     <                               E     @  
 
- 	 l                                                                                                                    Ԁ              4       <                `               E     @  
+ 	 l                                                                                                                    Ԁ              4       <                               E     @  
 
  
- l                                                                                                             D       Ԁ                     <                              E     @  
+ l                                                                                                             D       Ԁ                     <                              E     @  
 
  
  l                                                                                                                    Ԁ              
-       <                              E     @  
+       <                0              E     @  
 
  
- l                                                                                                                    Ԁ                      <                              E     @  
+ l                                                                                                                    Ԁ                      <                @              E     @  
 
  
- l                                                                                                                     Ԁ              .!       <                               E     @  
+ l                                                                                                                     Ԁ              .!       <                              E     @  
 
  
- l                                                                                                             "       Ԁ               F   F                D         $0H`l
- >v=4mesh        F   F                E         $0H`l
- DX>4mesh        A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ l                                                                                                             "       Ԁ               F   F               PD         $0H`l
+ >v=4mesh        F   F               E         $0H`l
+ DX>4mesh        A   A                jE         $0H`l E4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap	2014-06-17 10:34:00.464636461 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap	2014-06-17 10:33:13.822996510 -0700
@@ -1,141 +1,141 @@
-ò            i       j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                  J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7          JA        Ԁ               DB  R   R   Ј<                   J   $0H`l4mesh3          9 7          TB        Ԁ               B  P   P   Ѐ<                  J    $0H`l3         9 7          cC        Ԁ               C  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          JD        Ԁ               E  P   P   Ѐ<                 J     $0H`l3         9 7          E        Ԁ               ]  A   A                 ]          $0H`l = 4mesh          A   A                 k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                  J    $0H`l3         9 7          X  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          v       Ԁ                F   F                         $0H`l
-  ] 4mesh         A   A                1         $0H`l 4mesh         F   F                         $0H`l
- O4mesh       j=  F   F                          $0H`l
- 4mesh       m  A   A                 Q         $0H`l 4mesh         F   F                 ?         $0H`l
- 4mesh        F   F               0           $0H`l
- @4mesh        A   A               0 qP         $0H`l !4mesh        F   F               0          $0H`l
- !4mesh         L   L          @                      
+ò            i       j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                 J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7          JA        Ԁ               DB  R   R   Ј<                   J   $0H`l4mesh3          9 7          TB        Ԁ               B  P   P   Ѐ<                0 J    $0H`l3         9 7          cC        Ԁ               C  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          JD        Ԁ               E  P   P   Ѐ<                 J     $0H`l3         9 7          E        Ԁ               ]  A   A                 ]          $0H`l = 4mesh          A   A                 k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                0 J    $0H`l3         9 7          X  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          v       Ԁ                F   F               P          $0H`l
+  ] 4mesh         A   A               0 1         $0H`l 4mesh         F   F               P          $0H`l
+ O4mesh       j=  F   F               `          $0H`l
+ 4mesh       m  A   A               @ Q         $0H`l 4mesh         F   F               ` ?         $0H`l
+ 4mesh        F   F               p           $0H`l
+ @4mesh        A   A               P qP         $0H`l !4mesh        F   F               p          $0H`l
+ !4mesh         L   L                                
 
-         L   L          @                     
+         L   L                               
 
-         E   E   Ѐ            P   D%                                 7  ?   ?   Ѐ<                P   E                                        Ԁ              m  ?   ?   Ѐ<                `   E                                     Ԁ              {  L   L   <                p                      
+         E   E   Ѐ               D%                                 7  ?   ?   Ѐ<                   E                                        Ԁ              m  ?   ?   Ѐ<                   E                                     Ԁ              {  L   L   <                                      
      
-               Ԁ                      <                `                E      @  
+               Ԁ                      <                                E      @  
 
- 	 l                                                                                                             #        Ԁ                      <                               E      @  
+ 	 l                                                                                                             #        Ԁ                      <                               E      @  
 
- 	 l                                                                                                             9  L   L                               
+ 	 l                                                                                                             9  L   L                               
 
-       :  L   L   <                p                       
+       :  L   L   <                                       
      
-       :        Ԁ              ;  L   L   <                                      
+       :        Ԁ              ;  L   L   <                                      
      
-       1=        Ԁ              j=  F   F               @          $0H`l
- P4mesh       5?        <                               E      @  
+       1=        Ԁ              j=  F   F                         $0H`l
+ P4mesh       5?        <                               E      @  
 
- 	 l                                                                                                             E?        Ԁ              ?  L   L                               
+ 	 l                                                                                                             E?        Ԁ              ?  L   L                               
 
-       @  L   L          0                     
+       @  L   L          p                     
 
-       m  A   A               @          $0H`l 4mesh         F   F               @          $0H`l
- 34mesh       x L   L                                
+       m  A   A                         $0H`l 4mesh         F   F                         $0H`l
+ 34mesh       x L   L                               
 
-        L   L                               
+        L   L                               
 
-       _       Ԁ               L   L          @                     
+       _       Ԁ               L   L                               
 
-              <                                E      @  
+              <                                E      @  
 
- 	 l                                                                                                             9 L   L   <                                       
+ 	 l                                                                                                             9 L   L   <                0                      
      
-       :       Ԁ              ; L   L                               
+       :       Ԁ              ; L   L          @                    
 
-       < L   L                               
+       < L   L                               
 
-       -= L   L          P                     
+       -= L   L                               
 
-       {# L   L                               
+       {# L   L          P                    
 
-       # L   L                               
+       # L   L                               
 
-       $ L   L          `                     
+       $ L   L                               
 
-       % E   E   Ѐ            p   D%                                    % ?   ?   Ѐ<                   E             ,                 _&       Ԁ              %' L   L   <                                       
+       % E   E   Ѐ               D%                                    % ?   ?   Ѐ<                  E             ,                 _&       Ԁ              %' L   L   <                                       
      
-       5'       Ԁ              ' L   L   <                                      
+       5'       Ԁ              ' L   L   <                                      
      
-       I(       Ԁ              ( L   L   <                                     
+       I(       Ԁ              ( L   L   <                `                     
      
-       ) E   E   Ѐ               D%                                  F   F               P 
+       ) E   E   Ѐ            0  D%                                  F   F               @
 c&         $0H`l
- 4mesh        A   A               P &         $0H`l c&4mesh        F   F               P #'         $0H`l
- c&4mesh       ,J	 E   E   Ѐ               D%                                 NJ	 ?   ?   Ѐ<                   E                               J	       Ԁ              K	 ?   ?   Ѐ<                0  E           ,                 ,M	       Ԁ              [N	       <                @              E     @  
+ 4mesh        A   A                &         $0H`l c&4mesh        F   F               p#'         $0H`l
+ c&4mesh       ,J	 E   E   Ѐ              D%                                 NJ	 ?   ?   Ѐ<                P  E                               J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 ,M	       Ԁ              [N	       <                              E     @  
 
  
- l                                                                                                             kN	       Ԁ              N	       <                               E     @  
+ l                                                                                                             kN	       Ԁ              N	       <                `              E     @  
 
  
- l                                                                                                             P	       Ԁ              RP	 E   E   Ѐ              D%              ,                  TQ	 ?   ?   Ѐ<                   E                                dQ	       Ԁ              Q	 ?   ?   Ѐ<                   E                             [R	       Ԁ              R	 ?   ?   Ѐ<                P  E           ,                 g	 L   L                                
+ l                                                                                                             P	       Ԁ              RP	 E   E   Ѐ            p  D%              ,                  TQ	 ?   ?   Ѐ<                   E                                dQ	       Ԁ              Q	 ?   ?   Ѐ<                  E                             [R	       Ԁ              R	 ?   ?   Ѐ<                  E           ,                 g	 L   L                                
 
-       g	 L   L          0                    
+       g	 L   L                              
 
-       i	 L   L          `                    
+       i	 L   L                              
 
-       i	       Ԁ              j	 L   L   <                p                     
+       i	       Ԁ              j	 L   L   <                                     
      
-       j	       Ԁ              jk	 L   L   <                @                     
+       j	       Ԁ              jk	 L   L   <                                     
      
-       'l	       Ԁ              Vm	       <                                E      @  
+       'l	       Ԁ              Vm	       <                               E      @  
 
  
- l                                                                                                             fm	       Ԁ              ;n	       <                P              E      @  
+ l                                                                                                             fm	       Ԁ              ;n	       <                              E      @  
 
  
- l                                                                                                             {o	       Ԁ              Zp	       <                              E      @  
+ l                                                                                                             {o	       Ԁ              Zp	       <                              E      @  
 
  
- l                                                                                                                       <                `               E     @  
+ l                                                                                                                       <                               E     @  
 
- 	 l                                                                                                             @        Ԁ                      <                              E     @  
+ 	 l                                                                                                             @        Ԁ                      <                              E     @  
 
- 	 l                                                                                                                     Ԁ              #        <                              E     @  
+ 	 l                                                                                                                     Ԁ              #        <                               E     @  
 
- 	 l                                                                                                             3        Ԁ              j=  F   F               ` *.         $0H`l
- #'&4mesh       m  A   A               ` 3.         $0H`l .4mesh         F   F               ` +.         $0H`l
- .u'4mesh              <                               E     @  
+ 	 l                                                                                                             3        Ԁ              j=  F   F               *.         $0H`l
+ #'&4mesh       m  A   A                3.         $0H`l .4mesh         F   F               +.         $0H`l
+ .u'4mesh              <                                E     @  
 
- 	 l                                                                                                                    Ԁ              p       Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ              p       Ԁ                     <                0              E     @  
 
  
- l                                                                                                                    Ԁ                     <                p              E     @  
+ l                                                                                                                    Ԁ                     <                              E     @  
 
  
- l                                                                                                             G       Ԁ              v       <                                E     @  
+ l                                                                                                             G       Ԁ              v       <                0               E     @  
 
  
- l                                                                                                                    Ԁ              [        <                              E     @  
+ l                                                                                                                    Ԁ              [        <                              E     @  
 
  
- l                                                                                                             K!       Ԁ              *"       <                              E     @  
+ l                                                                                                             K!       Ԁ              *"       <                @              E     @  
 
  
- l                                                                                                              F   F               p J5         $0H`l
- .4.4mesh        A   A               p 5         $0H`l 54mesh        F   F               p Ke6         $0H`l
- 5/4mesh                 <                               E     @  
+ l                                                                                                              F   F                J5         $0H`l
+ .4.4mesh        A   A               @5         $0H`l 54mesh        F   F               PKe6         $0H`l
+ 5/4mesh                 <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                              E     @  
+ 	 l                                                                                                                      Ԁ                      <                `              E     @  
 
- 	 l                                                                                                             '        Ԁ                      <                              E     @  
+ 	 l                                                                                                             '        Ԁ                      <                p              E     @  
 
- 	 l                                                                                                                     Ԁ              j=  F   F                jF=         $0H`l
- e654mesh       m  A   A                v=         $0H`l F=4mesh         F   F                k>         $0H`l
- F=64mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ              j=  F   F                jF=         $0H`l
+ e654mesh       m  A   A               Pv=         $0H`l F=4mesh         F   F               k>         $0H`l
+ F=64mesh              <                               E     @  
 
- 	 l                                                                                                             K       Ԁ              p       Ԁ                     <                              E     @  
+ 	 l                                                                                                             K       Ԁ              p       Ԁ                     <                              E     @  
 
  
- l                                                                                                                    Ԁ                     <                              E     @  
+ l                                                                                                                    Ԁ                     <                0              E     @  
 
  
- l                                                                                                             G       Ԁ              v       <                                E     @  
+ l                                                                                                             G       Ԁ              v       <                `               E     @  
 
  
- l                                                                                                                    Ԁ                      <                              E     @  
+ l                                                                                                                    Ԁ                      <                @              E     @  
 
  
- l                                                                                                             !       Ԁ              !       <                               E     @  
+ l                                                                                                             !       Ԁ              !       <                              E     @  
 
  
- l                                                                                                              F   F                D         $0H`l
- >v=4mesh        A   A                1E         $0H`l D4mesh        F   F                E         $0H`l
+ l                                                                                                              F   F               PD         $0H`l
+ >v=4mesh        A   A               p1E         $0H`l D4mesh        F   F               E         $0H`l
  DX>4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap
--- ns-3.19/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap	2014-06-17 10:34:00.465636453 -0700
+++ ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap	2014-06-17 10:33:13.823996502 -0700
@@ -1,78 +1,78 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                  J     $0H`l3          9 7          W@  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          vA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B        Ԁ               'C  P   P   Ѐ<                  J    $0H`l3         9 7          7C        Ԁ               D  R   R   Ѐ<                0  J   $0H`l4mesh3         9 7          D        Ԁ               D  P   P   Ѐ<                 J     $0H`l3         9 7          GE        Ԁ               ]  A   A                 ]          $0H`l = 4mesh         F   F                         $0H`l
-  ] 4mesh        1 A   A                1         $0H`l 4mesh       =  F   F                          $0H`l
- 4mesh       m  A   A                 Q         $0H`l 4mesh        F   F               0           $0H`l
- @4mesh       1 A   A               0 qP         $0H`l !4mesh       8  L   L          @                      
+ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          W@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          vA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B        Ԁ               'C  P   P   Ѐ<                0 J    $0H`l3         9 7          7C        Ԁ               D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          D        Ԁ               D  P   P   Ѐ<                 J     $0H`l3         9 7          GE        Ԁ               ]  A   A                 ]          $0H`l = 4mesh         F   F               P          $0H`l
+  ] 4mesh        1 A   A               0 1         $0H`l 4mesh       =  F   F               `          $0H`l
+ 4mesh       m  A   A               @ Q         $0H`l 4mesh        F   F               p           $0H`l
+ @4mesh       1 A   A               P qP         $0H`l !4mesh       8  L   L                                
 
-       c  L   L                                
+       c  L   L          `                     
 
-         ?   ?   Ѐ<                P   E                                        Ԁ                      <                `                E      @  
+         ?   ?   Ѐ<                   E                                        Ԁ                      <                                E      @  
 
- 	 l                                                                                                             :  L   L   <                p                       
+ 	 l                                                                                                             :  L   L   <                                       
      
-       =  F   F               @          $0H`l
- P4mesh       r?        Ԁ              8@  L   L                               
+       =  F   F                         $0H`l
+ P4mesh       r?        Ԁ              8@  L   L                               
 
-       c@  L   L          0                     
+       c@  L   L          p                     
 
-       m  A   A               @          $0H`l 4mesh       # L   L                               
+       m  A   A                         $0H`l 4mesh       # L   L                               
 
-        L   L          @                     
+        L   L                               
 
-       < L   L                               
+       < L   L                               
 
-       < L   L          P                     
+       < L   L                               
 
-       &$ L   L                               
+       &$ L   L                               
 
-       Q$ L   L          `                     
+       Q$ L   L                               
 
-        % E   E   Ѐ            p   D%                                    #& ?   ?   Ѐ<                   E             ,                 3&       Ԁ              & L   L   <                                       
+        % E   E   Ѐ               D%                                    #& ?   ?   Ѐ<                  E             ,                 3&       Ԁ              & L   L   <                                       
      
-       b'       Ԁ              ( L   L   <                                      
+       b'       Ԁ              ( L   L   <                                      
      
-       ) E   E   Ѐ               D%                                  F   F               P 
+       ) E   E   Ѐ            0  D%                                  F   F               @
 c&         $0H`l
- 4mesh       1 A   A               P &         $0H`l c&4mesh       J	 ?   ?   Ѐ<                   E                               N	       Ԁ              O	       <                               E     @  
+ 4mesh       1 A   A                &         $0H`l c&4mesh       J	 ?   ?   Ѐ<                P  E                               N	       Ԁ              O	       <                `              E     @  
 
  
- l                                                                                                             O	       Ԁ              P	 E   E   Ѐ              D%              ,                  P	 ?   ?   Ѐ<                   E                                Q	       Ԁ              R	 ?   ?   Ѐ<                   E                             6g	 L   L                                
+ l                                                                                                             O	       Ԁ              P	 E   E   Ѐ            p  D%              ,                  P	 ?   ?   Ѐ<                   E                                Q	       Ԁ              R	 ?   ?   Ѐ<                  E                             6g	 L   L                                
 
-       bh	 L   L          0                    
+       bh	 L   L                              
 
-       	k	       Ԁ              k	 L   L   <                @                     
+       	k	       Ԁ              k	 L   L   <                                     
      
-       k	       Ԁ              Ql	       <                                E      @  
+       k	       Ԁ              Ql	       <                               E      @  
 
  
- l                                                                                                             m	       Ԁ              ?o	       <                P              E      @  
+ l                                                                                                             m	       Ԁ              ?o	       <                              E      @  
 
  
- l                                                                                                                     <                `               E     @  
+ l                                                                                                                     <                               E     @  
 
- 	 l                                                                                                             _        Ԁ              =  F   F               ` *.         $0H`l
- #'&4mesh       m  A   A               ` 3.         $0H`l .4mesh              Ԁ              
-       <                p              E     @  
+ 	 l                                                                                                             _        Ԁ              =  F   F               *.         $0H`l
+ #'&4mesh       m  A   A                3.         $0H`l .4mesh              Ԁ              
+       <                              E     @  
 
  
- l                                                                                                                    Ԁ              q       <                                E     @  
+ l                                                                                                                    Ԁ              q       <                0               E     @  
 
  
- l                                                                                                                    Ԁ              !       <                              E     @  
+ l                                                                                                                    Ԁ              !       <                              E     @  
 
  
- l                                                                                                              F   F               p J5         $0H`l
- .4.4mesh       1 A   A               p 5         $0H`l 54mesh                <                               E     @  
+ l                                                                                                              F   F                J5         $0H`l
+ .4.4mesh       1 A   A               @5         $0H`l 54mesh                <                               E     @  
 
- 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
- e654mesh       m  A   A                v=         $0H`l F=4mesh              Ԁ              
-       <                              E     @  
+ 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
+ e654mesh       m  A   A               Pv=         $0H`l F=4mesh              Ԁ              
+       <                0              E     @  
 
  
- l                                                                                                                    Ԁ              q       <                                E     @  
+ l                                                                                                                    Ԁ              q       <                `               E     @  
 
  
- l                                                                                                                    Ԁ                      <                              E     @  
+ l                                                                                                                    Ԁ                      <                @              E     @  
 
  
- l                                                                                                              F   F                D         $0H`l
- >v=4mesh       1 A   A                1E         $0H`l D4mesh    
\ No newline at end of file
+ l                                                                                                              F   F               PD         $0H`l
+ >v=4mesh       1 A   A               p1E         $0H`l D4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap ns-3.20/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap	2014-06-17 10:34:00.466636445 -0700
+++ ns-3.20/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap	2014-06-17 10:33:13.824996494 -0700
@@ -1 +1 @@
-ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                  J     $0H`l3          9 7          o        Ԁ               N  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          ^        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          l       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A                         $0H`l O4mesh        j A   A                j         $0H`l 4mesh    
\ No newline at end of file
+ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                 J     $0H`l3          9 7          o        Ԁ               N  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ^        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          l       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh        j A   A               0 j         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap ns-3.20/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap
--- ns-3.19/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap	2014-06-17 10:34:00.466636445 -0700
+++ ns-3.20/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap	2014-06-17 10:33:13.824996494 -0700
@@ -1 +1 @@
-ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                  J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7                  Ԁ               0 P   P   Ѐ<                 J     $0H`l3         9 7          @       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A                         $0H`l O4mesh         A   A                j         $0H`l 4mesh    
\ No newline at end of file
+ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               0 P   P   Ѐ<                 J     $0H`l3         9 7          @       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh         A   A               0 j         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/flame/flame-regression-test-0-1.pcap ns-3.20/src/mesh/test/flame/flame-regression-test-0-1.pcap
--- ns-3.19/src/mesh/test/flame/flame-regression-test-0-1.pcap	2014-06-17 10:34:00.468636430 -0700
+++ ns-3.20/src/mesh/test/flame/flame-regression-test-0-1.pcap	2014-06-17 10:33:13.826996479 -0700
@@ -1,85 +1,85 @@
-ò            i        X   X                    @@               
+ò            i        X   X                    @@               
 
-       .  X   X   <                          @@                     
+       /  X   X   <                          @@                     
      
-               Ԁ              J  X   X                   @@               
+               Ԁ              K  X   X                   @@               
 
-         X   X   <                         @@                    
+         X   X   <                         @@                    
      
-               Ԁ                l   l   <                          @@             E  0    @  
+               Ԁ                l   l   <                          @@             E  0    @  
 
- 	                              (        Ԁ                <   <                    @@                   <   <          0         @@                @5  X   X          0         @@                
+ 	                              )        Ԁ                <   <                    @@                   <   <          0         @@                A5  X   X          0         @@                
 
-       6  X   X          @         @@               
+       6  X   X          @         @@               
 
-       7        Ԁ              L9  X   X   <                P         @@                    
+       7        Ԁ              M9  X   X   <                P         @@                    
      
-       \9        Ԁ              9  l   l   <                @         @@              E  0    @  
+       ]9        Ԁ              9  l   l   <                @         @@              E  0    @  
 
- 	                              :        Ԁ              k;  l   l   <                `         @@             E  0    @  
+ 	                              :        Ԁ              l;  l   l   <                `         @@             E  0    @  
 
- 	                                     Ԁ              W l   l   <                p         @@             E  0   @  
+ 	                                     Ԁ              X l   l   <                p         @@             E  0   @  
 
- 	                              g       Ԁ               l   l   <                P         @@              E  0   @  
+ 	                              h       Ԁ               l   l   <                P         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              $       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              %       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              ^ l   l   <                `         @@              E  0   @  
+ 	                                     Ԁ              _ l   l   <                `         @@              E  0   @  
 
- 	                              C       Ԁ              g l   l   <                         @@             E  0   @  
+ 	                              D       Ԁ              h l   l   <                         @@             E  0   @  
 
- 	                              Ĕ       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                p         @@              E  0   @  
+ 	                                     Ԁ               l   l   <                p         @@              E  0   @  
 
- 	                                     Ԁ              d       Ԁ              p l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              e       Ԁ              q l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@              E  0   @  
+ 	                                     Ԁ               l   l   <                         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                               l   l                        @@             E  0   @  
+ 	                               l   l                        @@             E  0   @  
 
- 	                              Ƣ <   <                   @@   	              k l   l   <                         @@   
+ 	                              Ǣ <   <                   @@   	              l l   l   <                         @@   
            E  0   @  
 
- 	                              P       Ԁ              G l   l   <                         @@  
+ 	                              Q       Ԁ              H l   l   <                         @@  
            E  0   @  
 
- 	                              (	       Ԁ              w)	 l   l   <                        @@  	           E  0   @  
+ 	                              (	       Ԁ              x)	 l   l   <                        @@  	           E  0   @  
 
- 	                              )	       Ԁ              )	 l   l   <                         @@              E  0   @  
+ 	                              )	       Ԁ              )	 l   l   <                         @@              E  0   @  
 
- 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
+ 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
 
- 	                              D
-       Ԁ              
+ 	                              E
+       Ԁ              
  l   l   <                0        @@  
            E  0   @  
 
- 	                              '
-       Ԁ              ~
+ 	                              (
+       Ԁ              
  l   l   <                         @@              E  0   @  
 
- 	                              
+ 	                              
  l   l   <                         @@              E  0   @  
 
- 	                              O
+ 	                              P
  l   l   <                         @@              E  0   @  
 
- 	                              ߸
+ 	                              
  l   l   <                         @@              E  0   @  
 
- 	                              Ĺ
-       Ԁ              
+ 	                              Ź
+       Ԁ              
  l   l   <                @        @@             E  0   @  
 
- 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
+ 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
 
- 	                           	   6       Ԁ           	   7 l   l   <                         @@              E  0   @  
+ 	                           	   6       Ԁ           	   7 l   l   <                         @@              E  0   @  
 
- 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
+ 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
 
  	                           
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/flame/flame-regression-test-2-1.pcap ns-3.20/src/mesh/test/flame/flame-regression-test-2-1.pcap
--- ns-3.19/src/mesh/test/flame/flame-regression-test-2-1.pcap	2014-06-17 10:34:00.469636422 -0700
+++ ns-3.20/src/mesh/test/flame/flame-regression-test-2-1.pcap	2014-06-17 10:33:13.827996471 -0700
@@ -1,72 +1,72 @@
 ò            i        X   X                    @@                
 
-         X   X                    @@               
+         X   X                    @@               
 
-               Ԁ                X   X   <                         @@                    
+               Ԁ                X   X   <                         @@                    
      
-               Ԁ                l   l   <                         @@              E  0    @  
+               Ԁ                l   l   <                         @@              E  0    @  
 
- 	                                      Ԁ                l   l   <                          @@             E  0    @  
+ 	                                      Ԁ                l   l   <                          @@             E  0    @  
 
- 	                                <   <          0         @@                $  <   <                    @@                6  X   X          @         @@               
+ 	                                <   <          0         @@                %  <   <                    @@                6  X   X          @         @@               
 
-       6  X   X   <                0         @@                     
+       6  X   X   <                0         @@                     
      
-       7        Ԁ              7  X   X          @         @@               
+       7        Ԁ              7  X   X          @         @@               
 
-       L9  X   X   <                P         @@                    
+       M9  X   X   <                P         @@                    
      
-       :        Ԁ              k;  l   l   <                `         @@             E  0    @  
+       :        Ԁ              l;  l   l   <                `         @@             E  0    @  
 
- 	                              {;        Ԁ               l   l   <                P         @@              E  0   @  
+ 	                              |;        Ԁ               l   l   <                P         @@              E  0   @  
 
- 	                                     Ԁ                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              @ l   l   <                `         @@              E  0   @  
+ 	                                     Ԁ              @ l   l   <                `         @@              E  0   @  
 
- 	                              $       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              %       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              C       Ԁ              g l   l   <                         @@             E  0   @  
+ 	                              D       Ԁ              h l   l   <                         @@             E  0   @  
 
- 	                              w       Ԁ               l   l   <                p         @@              E  0   @  
+ 	                              x       Ԁ               l   l   <                p         @@              E  0   @  
 
- 	                              Ĕ       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              4 l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              5 l   l   <                         @@             E  0   @  
 
- 	                              D       Ԁ               l   l   <                         @@              E  0   @  
+ 	                              E       Ԁ               l   l   <                         @@              E  0   @  
 
- 	                              d       Ԁ              7 l   l   <                         @@             E  0   @  
+ 	                              e       Ԁ              8 l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ                l   l                        @@              E  0   @  
+ 	                                     Ԁ                l   l                        @@              E  0   @  
 
- 	                               l   l                        @@             E  0   @  
+ 	                               l   l                        @@             E  0   @  
 
- 	                              P       Ԁ              G l   l   <                         @@  
+ 	                              Q       Ԁ              H l   l   <                         @@  
            E  0   @  
 
- 	                              W       Ԁ              '	 l   l   <                         @@   	           E  0   @  
+ 	                              X       Ԁ              '	 l   l   <                         @@   	           E  0   @  
 
- 	                              (	       Ԁ              w)	 l   l   <                        @@  	           E  0   @  
+ 	                              (	       Ԁ              x)	 l   l   <                        @@  	           E  0   @  
 
- 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
+ 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
 
- 	                              ,	       Ԁ              `
+ 	                              ,	       Ԁ              `
  l   l   <                         @@   
            E  0   @  
 
- 	                              D
-       Ԁ              Ĺ
-       Ԁ              
+ 	                              E
+       Ԁ              Ź
+       Ԁ              
  l   l   <                @        @@             E  0   @  
 
- 	                              
+ 	                              
        Ԁ           	    5 l   l   <                         @@              E  0   @  
 
- 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
+ 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
 
- 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
+ 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
 
- 	                           	   8       Ԁ           
\ No newline at end of file
+ 	                           	   8       Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/mesh/test/flame/flame-test-suite.cc ns-3.20/src/mesh/test/flame/flame-test-suite.cc
--- ns-3.19/src/mesh/test/flame/flame-test-suite.cc	2014-06-17 10:34:00.470636414 -0700
+++ ns-3.20/src/mesh/test/flame/flame-test-suite.cc	2014-06-17 10:33:13.828996463 -0700
@@ -24,8 +24,8 @@
 #include "ns3/flame-header.h"
 #include "ns3/flame-rtable.h"
 
-namespace ns3 {
-namespace flame {
+using namespace ns3;
+using namespace flame;
 
 /// Built-in self test for FlameHeader
 struct FlameHeaderTest : public TestCase
@@ -147,6 +147,3 @@
 }
 
 static FlameTestSuite g_flameTestSuite;
-
-}
-}
diff -Naur ns-3.19/src/mesh/test/mesh-information-element-vector-test-suite.cc ns-3.20/src/mesh/test/mesh-information-element-vector-test-suite.cc
--- ns-3.19/src/mesh/test/mesh-information-element-vector-test-suite.cc	2014-06-17 10:34:00.471636407 -0700
+++ ns-3.20/src/mesh/test/mesh-information-element-vector-test-suite.cc	2014-06-17 10:33:13.829996455 -0700
@@ -32,7 +32,7 @@
 #include "ns3/ie-dot11s-preq.h"
 #include "ns3/ie-dot11s-rann.h"
 
-namespace ns3 {
+using namespace ns3;
 
 // Unit tests
 //-----------------------------------------------------------------------------
@@ -156,4 +156,3 @@
 
 static MeshTestSuite g_meshTestSuite;
 
-} // namespace ns3
diff -Naur ns-3.19/src/mesh/waf ns-3.20/src/mesh/waf
--- ns-3.19/src/mesh/waf	2014-06-17 10:34:00.471636407 -0700
+++ ns-3.20/src/mesh/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/mobility/bindings/modulegen__gcc_ILP32.py ns-3.20/src/mobility/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/mobility/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.475636376 -0700
+++ ns-3.20/src/mobility/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.832996432 -0700
@@ -72,6 +72,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -90,6 +92,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -264,17 +268,17 @@
     module.add_class('GaussMarkovMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## hierarchical-mobility-model.h (module 'mobility'): ns3::HierarchicalMobilityModel [class]
     module.add_class('HierarchicalMobilityModel', parent=root_module['ns3::MobilityModel'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -298,12 +302,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -345,6 +349,7 @@
     register_Ns3Rectangle_methods(root_module, root_module['ns3::Rectangle'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1529,6 +1534,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1770,62 +1783,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1834,6 +1803,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1874,6 +1845,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -2246,13 +2219,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2279,6 +2254,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/mobility/bindings/modulegen__gcc_LP64.py ns-3.20/src/mobility/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/mobility/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.478636352 -0700
+++ ns-3.20/src/mobility/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.836996402 -0700
@@ -72,6 +72,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -90,6 +92,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -264,17 +268,17 @@
     module.add_class('GaussMarkovMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## hierarchical-mobility-model.h (module 'mobility'): ns3::HierarchicalMobilityModel [class]
     module.add_class('HierarchicalMobilityModel', parent=root_module['ns3::MobilityModel'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -298,12 +302,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -345,6 +349,7 @@
     register_Ns3Rectangle_methods(root_module, root_module['ns3::Rectangle'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1529,6 +1534,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1770,62 +1783,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1834,6 +1803,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1874,6 +1845,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -2246,13 +2219,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2279,6 +2254,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/mobility/helper/mobility-helper.cc ns-3.20/src/mobility/helper/mobility-helper.cc
--- ns-3.19/src/mobility/helper/mobility-helper.cc	2014-06-17 10:34:00.483636314 -0700
+++ ns-3.20/src/mobility/helper/mobility-helper.cc	2014-06-17 10:33:13.841996363 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("MobilityHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("MobilityHelper");
 
 MobilityHelper::MobilityHelper ()
 {
diff -Naur ns-3.19/src/mobility/helper/ns2-mobility-helper.cc ns-3.20/src/mobility/helper/ns2-mobility-helper.cc
--- ns-3.19/src/mobility/helper/ns2-mobility-helper.cc	2014-06-17 10:34:00.484636306 -0700
+++ ns-3.20/src/mobility/helper/ns2-mobility-helper.cc	2014-06-17 10:33:13.842996355 -0700
@@ -507,7 +507,7 @@
       ret.erase (0, 1);    // Removes blank spaces at the begining of the line
     }
 
-  while (ret.size () > 0 && isblank (ret[ret.size () - 1]))
+  while (ret.size () > 0 && (isblank (ret[ret.size () - 1]) || (ret[ret.size () - 1] == ';')))
     {
       ret.erase (ret.size () - 1, 1); // Removes blank spaces from at end of line
     }
diff -Naur ns-3.19/src/mobility/model/constant-acceleration-mobility-model.cc ns-3.20/src/mobility/model/constant-acceleration-mobility-model.cc
--- ns-3.19/src/mobility/model/constant-acceleration-mobility-model.cc	2014-06-17 10:34:00.485636299 -0700
+++ ns-3.20/src/mobility/model/constant-acceleration-mobility-model.cc	2014-06-17 10:33:13.843996348 -0700
@@ -20,8 +20,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantAccelerationMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantAccelerationMobilityModel);
 
 TypeId ConstantAccelerationMobilityModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/mobility/model/constant-position-mobility-model.cc ns-3.20/src/mobility/model/constant-position-mobility-model.cc
--- ns-3.19/src/mobility/model/constant-position-mobility-model.cc	2014-06-17 10:34:00.486636291 -0700
+++ ns-3.20/src/mobility/model/constant-position-mobility-model.cc	2014-06-17 10:33:13.844996340 -0700
@@ -21,8 +21,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantPositionMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantPositionMobilityModel);
 
 TypeId
 ConstantPositionMobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/constant-velocity-mobility-model.cc ns-3.20/src/mobility/model/constant-velocity-mobility-model.cc
--- ns-3.19/src/mobility/model/constant-velocity-mobility-model.cc	2014-06-17 10:34:00.487636283 -0700
+++ ns-3.20/src/mobility/model/constant-velocity-mobility-model.cc	2014-06-17 10:33:13.845996332 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantVelocityMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantVelocityMobilityModel);
 
 TypeId ConstantVelocityMobilityModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/mobility/model/gauss-markov-mobility-model.cc ns-3.20/src/mobility/model/gauss-markov-mobility-model.cc
--- ns-3.19/src/mobility/model/gauss-markov-mobility-model.cc	2014-06-17 10:34:00.488636275 -0700
+++ ns-3.20/src/mobility/model/gauss-markov-mobility-model.cc	2014-06-17 10:33:13.846996324 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (GaussMarkovMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GaussMarkovMobilityModel);
 
 TypeId
 GaussMarkovMobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/hierarchical-mobility-model.cc ns-3.20/src/mobility/model/hierarchical-mobility-model.cc
--- ns-3.19/src/mobility/model/hierarchical-mobility-model.cc	2014-06-17 10:34:00.489636268 -0700
+++ ns-3.20/src/mobility/model/hierarchical-mobility-model.cc	2014-06-17 10:33:13.847996317 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (HierarchicalMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HierarchicalMobilityModel);
 
 TypeId 
 HierarchicalMobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/mobility-model.cc ns-3.20/src/mobility/model/mobility-model.cc
--- ns-3.19/src/mobility/model/mobility-model.cc	2014-06-17 10:34:00.489636268 -0700
+++ ns-3.20/src/mobility/model/mobility-model.cc	2014-06-17 10:33:13.847996317 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MobilityModel);
 
 TypeId 
 MobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/position-allocator.cc ns-3.20/src/mobility/model/position-allocator.cc
--- ns-3.19/src/mobility/model/position-allocator.cc	2014-06-17 10:34:00.490636260 -0700
+++ ns-3.20/src/mobility/model/position-allocator.cc	2014-06-17 10:33:13.848996309 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PositionAllocator);
 
 TypeId 
 PositionAllocator::GetTypeId (void)
@@ -49,8 +48,7 @@
 {
 }
 
-NS_OBJECT_ENSURE_REGISTERED (ListPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ListPositionAllocator);
 
 TypeId
 ListPositionAllocator::GetTypeId (void)
@@ -87,8 +85,7 @@
   return 0;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (GridPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GridPositionAllocator);
 
 TypeId 
 GridPositionAllocator::GetTypeId (void)
@@ -216,8 +213,7 @@
   return 0;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RandomRectanglePositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomRectanglePositionAllocator);
 
 TypeId
 RandomRectanglePositionAllocator::GetTypeId (void)
@@ -273,8 +269,7 @@
   return 2;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RandomBoxPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomBoxPositionAllocator);
 
 TypeId
 RandomBoxPositionAllocator::GetTypeId (void)
@@ -342,8 +337,7 @@
   return 3;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (RandomDiscPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomDiscPositionAllocator);
 
 TypeId
 RandomDiscPositionAllocator::GetTypeId (void)
@@ -424,8 +418,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (UniformDiscPositionAllocator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UniformDiscPositionAllocator);
 
 TypeId
 UniformDiscPositionAllocator::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/random-direction-2d-mobility-model.cc ns-3.20/src/mobility/model/random-direction-2d-mobility-model.cc
--- ns-3.19/src/mobility/model/random-direction-2d-mobility-model.cc	2014-06-17 10:34:00.491636252 -0700
+++ ns-3.20/src/mobility/model/random-direction-2d-mobility-model.cc	2014-06-17 10:33:13.849996301 -0700
@@ -31,8 +31,7 @@
 
 const double RandomDirection2dMobilityModel::PI = 3.14159265358979323846;
 
-NS_OBJECT_ENSURE_REGISTERED (RandomDirection2dMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomDirection2dMobilityModel);
 
 
 TypeId
diff -Naur ns-3.19/src/mobility/model/random-walk-2d-mobility-model.cc ns-3.20/src/mobility/model/random-walk-2d-mobility-model.cc
--- ns-3.19/src/mobility/model/random-walk-2d-mobility-model.cc	2014-06-17 10:34:00.492636245 -0700
+++ ns-3.20/src/mobility/model/random-walk-2d-mobility-model.cc	2014-06-17 10:33:13.850996293 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RandomWalk2dMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomWalk2dMobilityModel);
 
 TypeId
 RandomWalk2dMobilityModel::GetTypeId (void)
@@ -42,7 +41,7 @@
     .AddConstructor<RandomWalk2dMobilityModel> ()
     .AddAttribute ("Bounds",
                    "Bounds of the area to cruise.",
-                   RectangleValue (Rectangle (0.0, 0.0, 100.0, 100.0)),
+                   RectangleValue (Rectangle (0.0, 100.0, 0.0, 100.0)),
                    MakeRectangleAccessor (&RandomWalk2dMobilityModel::m_bounds),
                    MakeRectangleChecker ())
     .AddAttribute ("Time",
diff -Naur ns-3.19/src/mobility/model/random-waypoint-mobility-model.cc ns-3.20/src/mobility/model/random-waypoint-mobility-model.cc
--- ns-3.19/src/mobility/model/random-waypoint-mobility-model.cc	2014-06-17 10:34:00.493636237 -0700
+++ ns-3.20/src/mobility/model/random-waypoint-mobility-model.cc	2014-06-17 10:33:13.851996286 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RandomWaypointMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomWaypointMobilityModel);
 
 TypeId
 RandomWaypointMobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/steady-state-random-waypoint-mobility-model.cc ns-3.20/src/mobility/model/steady-state-random-waypoint-mobility-model.cc
--- ns-3.19/src/mobility/model/steady-state-random-waypoint-mobility-model.cc	2014-06-17 10:34:00.494636229 -0700
+++ ns-3.20/src/mobility/model/steady-state-random-waypoint-mobility-model.cc	2014-06-17 10:33:13.852996278 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SteadyStateRandomWaypointMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SteadyStateRandomWaypointMobilityModel);
 
 TypeId
 SteadyStateRandomWaypointMobilityModel::GetTypeId (void)
diff -Naur ns-3.19/src/mobility/model/waypoint-mobility-model.cc ns-3.20/src/mobility/model/waypoint-mobility-model.cc
--- ns-3.19/src/mobility/model/waypoint-mobility-model.cc	2014-06-17 10:34:00.495636221 -0700
+++ ns-3.20/src/mobility/model/waypoint-mobility-model.cc	2014-06-17 10:33:13.853996270 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WaypointMobilityModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WaypointMobilityModel);
 
 
 TypeId
diff -Naur ns-3.19/src/mobility/model/waypoint-mobility-model.h ns-3.20/src/mobility/model/waypoint-mobility-model.h
--- ns-3.19/src/mobility/model/waypoint-mobility-model.h	2014-06-17 10:34:00.495636221 -0700
+++ ns-3.20/src/mobility/model/waypoint-mobility-model.h	2014-06-17 10:33:13.853996270 -0700
@@ -26,6 +26,8 @@
 #include "ns3/vector.h"
 #include "waypoint.h"
 
+class WaypointMobilityModelNotifyTest;
+
 namespace ns3 {
 
 /**
@@ -123,7 +125,7 @@
   void EndMobility (void);
 
 private:
-  friend class WaypointMobilityModelNotifyTest; // To allow Update() calls and access to m_current
+  friend class ::WaypointMobilityModelNotifyTest; // To allow Update() calls and access to m_current
 
   void Update (void) const;
   virtual void DoDispose (void);
diff -Naur ns-3.19/src/mobility/test/ns2-mobility-helper-test-suite.cc ns-3.20/src/mobility/test/ns2-mobility-helper-test-suite.cc
--- ns-3.19/src/mobility/test/ns2-mobility-helper-test-suite.cc	2014-06-17 10:34:00.497636206 -0700
+++ ns-3.20/src/mobility/test/ns2-mobility-helper-test-suite.cc	2014-06-17 10:33:13.855996255 -0700
@@ -51,7 +51,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("ns2-mobility-helper-test-suite");
 
-namespace ns3 {
+using namespace ns3;
 
 // -----------------------------------------------------------------------------
 // Testing
@@ -522,6 +522,3 @@
 
   }
 } g_ns2TransmobilityHelperTestSuite;
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/mobility/test/steady-state-random-waypoint-mobility-model-test.cc ns-3.20/src/mobility/test/steady-state-random-waypoint-mobility-model-test.cc
--- ns-3.19/src/mobility/test/steady-state-random-waypoint-mobility-model-test.cc	2014-06-17 10:34:00.498636198 -0700
+++ ns-3.20/src/mobility/test/steady-state-random-waypoint-mobility-model-test.cc	2014-06-17 10:33:13.856996247 -0700
@@ -26,7 +26,7 @@
 #include "ns3/steady-state-random-waypoint-mobility-model.h"
 #include "ns3/rng-seed-manager.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class SteadyStateRandomWaypointTest : public TestCase
 {
@@ -144,5 +144,3 @@
     AddTestCase (new SteadyStateRandomWaypointTest, TestCase::QUICK);
   }
 } g_steadyStateRandomWaypointTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/mobility/test/waypoint-mobility-model-test.cc ns-3.20/src/mobility/test/waypoint-mobility-model-test.cc
--- ns-3.19/src/mobility/test/waypoint-mobility-model-test.cc	2014-06-17 10:34:00.498636198 -0700
+++ ns-3.20/src/mobility/test/waypoint-mobility-model-test.cc	2014-06-17 10:33:13.856996247 -0700
@@ -24,7 +24,7 @@
 #include "ns3/waypoint-mobility-model.h"
 #include "ns3/test.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class WaypointMobilityModelNotifyTest : public TestCase
 {
@@ -155,6 +155,3 @@
     AddTestCase (new WaypointMobilityModelNotifyTest (false), TestCase::QUICK);
   }
 } g_waypointMobilityModelTestSuite;
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/mobility/waf ns-3.20/src/mobility/waf
--- ns-3.19/src/mobility/waf	2014-06-17 10:34:00.498636198 -0700
+++ ns-3.20/src/mobility/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/mpi/bindings/modulegen__gcc_ILP32.py ns-3.20/src/mpi/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/mpi/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.501636175 -0700
+++ ns-3.20/src/mpi/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.859996224 -0700
@@ -74,6 +74,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -86,6 +88,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -168,12 +172,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -219,6 +223,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -434,6 +439,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -446,6 +455,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1151,6 +1164,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1348,62 +1369,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1412,6 +1389,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1452,6 +1431,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -1672,13 +1653,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1705,6 +1688,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -2330,10 +2318,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/mpi/bindings/modulegen__gcc_LP64.py ns-3.20/src/mpi/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/mpi/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.503636160 -0700
+++ ns-3.20/src/mpi/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.861996209 -0700
@@ -74,6 +74,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -86,6 +88,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -168,12 +172,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -219,6 +223,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -434,6 +439,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -446,6 +455,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1151,6 +1164,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1348,62 +1369,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1412,6 +1389,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1452,6 +1431,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -1672,13 +1653,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1705,6 +1688,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -2330,10 +2318,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/mpi/examples/waf ns-3.20/src/mpi/examples/waf
--- ns-3.19/src/mpi/examples/waf	2014-06-17 10:34:00.506636137 -0700
+++ ns-3.20/src/mpi/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/mpi/model/distributed-simulator-impl.cc ns-3.20/src/mpi/model/distributed-simulator-impl.cc
--- ns-3.19/src/mpi/model/distributed-simulator-impl.cc	2014-06-17 10:34:00.507636129 -0700
+++ ns-3.20/src/mpi/model/distributed-simulator-impl.cc	2014-06-17 10:33:13.865996178 -0700
@@ -41,8 +41,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DistributedSimulatorImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DistributedSimulatorImpl);
 
 LbtsMessage::~LbtsMessage ()
 {
diff -Naur ns-3.19/src/mpi/model/null-message-mpi-interface.cc ns-3.20/src/mpi/model/null-message-mpi-interface.cc
--- ns-3.19/src/mpi/model/null-message-mpi-interface.cc	2014-06-17 10:34:00.510636106 -0700
+++ ns-3.20/src/mpi/model/null-message-mpi-interface.cc	2014-06-17 10:33:13.868996155 -0700
@@ -49,8 +49,9 @@
  * maximum MPI message size for easy
  * buffer creation
  */
+#ifdef NS3_MPI
 const uint32_t NULL_MESSAGE_MAX_MPI_MSG_SIZE = 2000;
-
+#endif
 
 NullMessageSentBuffer::NullMessageSentBuffer ()
 {
@@ -338,7 +339,7 @@
           Time rxTime (time);
 
           // rxtime == 0 means this is a Null Message
-          if (rxTime > 0)
+          if (rxTime > Time (0))
             {
               count -= sizeof (time) + sizeof (guaranteeUpdate) + sizeof (node) + sizeof (dev);
 
diff -Naur ns-3.19/src/mpi/model/null-message-mpi-interface.h ns-3.20/src/mpi/model/null-message-mpi-interface.h
--- ns-3.19/src/mpi/model/null-message-mpi-interface.h	2014-06-17 10:34:00.510636106 -0700
+++ ns-3.20/src/mpi/model/null-message-mpi-interface.h	2014-06-17 10:33:13.868996155 -0700
@@ -138,7 +138,6 @@
    * uint32_t node id of destination
    * unit32_t dev id on destination
    * uint8_t[] serialized packet
-   * \endinternal
    */
   virtual void SendPacket (Ptr<Packet> p, const Time &rxTime, uint32_t node, uint32_t dev);
   /**
@@ -164,7 +163,6 @@
    * uint64_t guarantee time
    * uint32_t 0 must be zero for Null Message
    * uint32_t 0 must be zero for Null Message
-   * \endinternal
    */
   static void SendNullMessage (const Time& guaranteeUpdate, Ptr<RemoteChannelBundle> bundle);
   /**
diff -Naur ns-3.19/src/mpi/model/null-message-simulator-impl.cc ns-3.20/src/mpi/model/null-message-simulator-impl.cc
--- ns-3.19/src/mpi/model/null-message-simulator-impl.cc	2014-06-17 10:34:00.511636098 -0700
+++ ns-3.20/src/mpi/model/null-message-simulator-impl.cc	2014-06-17 10:33:13.868996155 -0700
@@ -355,7 +355,7 @@
   NS_LOG_FUNCTION (this);
 
   m_safeTime = RemoteChannelBundleManager::GetSafeTime ();
-  NS_ASSERT (m_safeTime >= m_currentTs);
+  NS_ASSERT (m_safeTime >= Time (m_currentTs));
 }
 
 Time
diff -Naur ns-3.19/src/mpi/waf ns-3.20/src/mpi/waf
--- ns-3.19/src/mpi/waf	2014-06-17 10:34:00.513636082 -0700
+++ ns-3.20/src/mpi/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/animation.rst ns-3.20/src/netanim/doc/animation.rst
--- ns-3.19/src/netanim/doc/animation.rst	2014-06-17 10:34:00.523636005 -0700
+++ ns-3.20/src/netanim/doc/animation.rst	2014-06-17 10:33:13.879996070 -0700
@@ -17,20 +17,13 @@
 NetAnim is a standalone, Qt4-based software executable that uses a trace file generated during 
 an |ns3| simulation to display the topology and animate the packet flow between nodes.
 
-.. figure:: figures/Dumbbell.*
+.. figure:: figures/NetAnim_3_105.*
    :align: center
    :width: 500px
    :height: 400px
 
    An example of packet animation on wired-links
 
-.. figure:: figures/Wireless.*
-   :align: center
-   :width: 480px
-   :height: 400px
-
-   An example of packet animation on wireless-links
-
 In addition, NetAnim also provides useful features such as tables to display meta-data of packets like the image below
 
 .. figure:: figures/PacketStatistics.*
@@ -39,7 +32,7 @@
 
    An example of tables for packet meta-data with protocol filters
 
-and a way to visualize the trajectory of a mobile node
+A way to visualize the trajectory of a mobile node
 
 .. figure:: figures/Trajectory.*
    :align: center
@@ -47,6 +40,28 @@
 
    An example of the trajectory of a mobile node
 
+A way to display the routing-tables of multiple nodes at various points in time
+
+.. figure:: figures/RoutingTables.*
+   :align: center
+   :width: 500px
+
+A way to display counters associated with multiple nodes as a chart or a table
+
+.. figure:: figures/NodeCountersChart.*
+   :align: center
+   :width: 500px
+
+.. figure:: figures/NodeCountersTable.*
+   :align: center
+   :width: 500px
+
+A way to view the timeline of packet transmit and receive events
+
+.. figure:: figures/PacketTimeline.*
+   :align: center
+   :width: 500px
+
 Methodology
 ===========
 The class ns3::AnimationInterface is responsible for the creation the trace XML file.
@@ -200,147 +215,38 @@
 CAUTION: Enabling this feature will result in larger XML trace files.
 Please do NOT enable this feature when using Wimax links.
 
-Step 2: Loading the XML in NetAnim
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-1. Assuming NetAnim was built, use the command "./NetAnim" to launch NetAnim. Please review the section "Building NetAnim" if NetAnim is not available.
-2. When NetAnim is opened, click on the File open button at the top-left corner, select the XML file generated during Step 1.
-3. Hit the green play button to begin animation.
-
-Here is a video illustrating this
-http://www.youtube.com/watch?v=tz_hUuNwFDs
-
-Essential settings of NetAnim
-=============================
-
-Persist combobox
-~~~~~~~~~~~~~~~~
-.. figure:: figures/Persist.*
-   :width: 150px
-
-   The persist combobox
-
-When packets are transmitted and received very quickly, they can be almost invisible. The persist time setting
-allows the user to control the duration for which a packet should be visible on the animation canvas. 
-
-Update-interval slider
-~~~~~~~~~~~~~~~~~~~~~~
-.. figure:: figures/UpdateRateInterval.*
-   :width: 150px
-
-   The update-interval slider
-
-The update-interval slider controls the rate at which NetAnim refreshes the canvas screen. For instance, 
-for the setting above, NetAnim, updates the position of nodes and packets only once in 250 ms.
-
-
-Parts of the XML
-================
-The XML trace files has the following main sections
-
-1. Topology
-
-   - Nodes
-   - Links
-2. packets (packets over wired-links)
-3. wpackets (packets over wireless-links)
-
-XML tags
-~~~~~~~~
-.. highlight:: xml
-
-Nodes are identified by their unique Node id. The XML begins with the "information" element describing the rest of the elements
-
-<anim> Element
-##############
-
-This is the XML root element. All other elements fall within this element.
-  Attributes are::
-
-    lp = Logical Processor Id (Used for distributed simulations only)
-
-<topology> Element
-##################
-
-This elements contains the Node and Link elements.It describes, the co-ordinates of the canvas used for animation.
-   Attributes are::
-
-     minX = minimum X coordinate of the animation canvas
-     minY = minimum Y coordinate of the animation canvas
-     maxX = maximum X coordinate of the animation canvas
-     maxY = maximum Y coordinate of the animation canvas
-
-Example::
-
-  <topology minX = "-6.42025" minY = "-6.48444" maxX = "186.187" maxY = "188.049">
-
-<node> Element
-##############
-
-This element describes each Node's Id and X,Y co-ordinate (position).
-  Attributes are::
-
-   id = Node Id
-   locX = X coordinate
-   locY = Y coordinate
-
-Example::
-
-  <node id = "8" locX = "107.599" locY = "96.9366" />
-
-<link> Element
-##############
-
-This element describes wired links between two nodes.
- Attributes are::
-
-   fromId = From Node Id (first node id)
-   toId   = To Node Id (second node id)
- 
-Example::
-
-  <link fromId="0" toId="1"/>
-
-<p> Element
-###########
-
-This element describes a packet over wired links being transmitted at some node and received at another. 
+::
 
-The reception details are described in its associated rx element
- Attributes are::
+  // Step 6
+  anim.UpdateNodeDescription (5, "Access-point");
 
-   fId = Node Id transmitting the packet
-   fbTx = First bit transmit time of the packet
-   lbTx = Last bit transmit time of the packet
-   toId = Node Id receiving the packet
-   fbRx = First bit Reception Time of the packet
-   lbRx = Last bit Reception Time of the packet
+With the above statement, AnimationInterface assigns the text "Access-point" to node 5.
 
-Example::
+::
 
-  <p fId="1" fbTx="1" lbTx="1.000067199" tId="0" fbRx="1.002" lbRx="1.002067199"/>
+  // Step 7
+  anim.UpdateNodeSize (6, 1.5, 1.5);
 
-A packet over wired-links from Node 1 was received at Node 0. The first bit of the packet was transmitted at  the 1st second, the last bit was transmitted at the 1.000067199th second of the simulation Node 0 received the first bit of the packet at the 1.002th second and the last bit of the packet at the 1.002067199th second of the simulation
-NOTE: A packet with fromId == toId is a dummy packet used internally by the AnimationInterface. Please ignore this packet
+With the above statement, AnimationInterface sets the node size to scale by 1.5. NetAnim automatically scales the graphics view to fit the oboundaries of the topology. This means that NetAnim, can abnormally scale a node's size too high or too low. Using AnimationInterface::UpdateNodeSize allows you to overwrite the default scaling in NetAnim and use your own custom scale.
 
-<wp> Element
-############
+:: 
 
-This element describes a packet over wireless links being transmitted at some node and received at another. 
+  // Step 8
+  anim.UpdateNodeCounter (89, 7, 3.4);
 
-The reception details are described in its associated rx element.
- Attributes are::
+With the above statement, AnimationInterface sets the counter with Id == 89, associated with Node 7 with the value 3.4.
+The counter with Id 89 is obtained using AnimationInterface::AddNodeCounter. An example usage for this is in src/netanim/examples/resources_demo.cc.
 
-   fromId = Node Id transmitting the packet
-   fbTx = First bit transmit time of the packet
-   lbTx = Last bit transmit time of the packet
-   range = Range of the transmission
 
-Example::
+Step 2: Loading the XML in NetAnim
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  <wp fId = "20" fbTx = "0.003" lbTx = "0.003254" range = "59.68176982" tId="32" fbRx="0.003000198" lbRx="0.003254198"/>
+1. Assuming NetAnim was built, use the command "./NetAnim" to launch NetAnim. Please review the section "Building NetAnim" if NetAnim is not available.
+2. When NetAnim is opened, click on the File open button at the top-left corner, select the XML file generated during Step 1.
+3. Hit the green play button to begin animation.
 
-A packet over wireless-links from Node 20 was received at Node 32. The first bit of the packet was transmitted at  the 0.003th second, the last bit was transmitted at the 0.003254 second of the simulation Node 0 received the first bit of the packet at the 0.003000198 second and the last bit of the packet at the 0.003254198 second of the simulation
+Here is a video illustrating this
+http://www.youtube.com/watch?v=tz_hUuNwFDs
 
 Wiki
 ====
diff -Naur ns-3.19/src/netanim/doc/figures/Dumbbell.pdf ns-3.20/src/netanim/doc/figures/Dumbbell.pdf
--- ns-3.19/src/netanim/doc/figures/Dumbbell.pdf	2014-06-17 10:34:00.524635997 -0700
+++ ns-3.20/src/netanim/doc/figures/Dumbbell.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,301 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*210P A˥h^_a 
-endstream
-endobj
-4 0 obj
-   38
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 400 400 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 500
-   /Height 500
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xx[ـo۔VZ뺮nֵ]׵k2ca4Ŏ3CL13;ffm2Ȗ-8i$Jcn'O҅(@ @ @ @ @ @ @ @ @ Y;$jBJMM+..o0+++*.֭@V55
-sX,^Ų$CCԦVQhjj.,-ihiYﳁ*UYY%u{||ckS@WYq~fN^mk#i#Uiu\UlbLq>& ˩TPyhdMm݃c3lCn>v.5#o|'\6!oj8?'|VMk<y}H{*ڦ4'%9&\sFLѨrm$#ȶXy+Ijͪ	duQ(I@ zOjzrS<O403376t	Mls=vpν71<7<T\Q@8+咅Gػ10ɖCƀbv~X͞'Fh2%ǪeB@m&G)J8lDۉ
-!lۺuw}#Im#S侖̨ ӣ20ϼس(_. "6 Nn;6MbU0}komG[\wsJZtrAоWFԓy}#NTpQHMu55><svbjffnf-=gR˨cj2[6+o'~>C}XScsit*9c#gL472
-LcKYfNTp9Ei9ex%k'U*-RdyC~s"h	&:NxƴLrBFKa]rYf}Џ}~GtV4K*tU25qrTo.BB4Wbnp9}fQp@Kn.l"54}l^Q4*&BcR"fOykc,Z!n>{SlKzǞ{7>[\W.L};&ٸەR5`	aTFOYV0Jt;Qەsms\1Dyłw_owTĂ5jGk*>kx|EF%*޵?cx~ܞ[o|^$W!5xZm!3jv{E2P[k9etĳl`^T@Vvrە
-pa1S~4k-WKyS)z7Cgŗ0sQGs͛)4jtwF)}3%,-끾~')od~s{C&N~I]}%`ə\.4GXXXՍ1a޾n'*W]0?kolhW:vp5=>VyjoZG:o)P{kB@URvgyMf]S{］YS,]lkv#:DnW)M8Sjp[X,o@ۉesC3lM-c Rǚ9f}&*]δ5<f1ʒ<RCEl޾>mCKygݏfUO-'{(tGS/M98FNr0l@ۉʲY3GI._+*2
-E|tuF$L1yIRwSE؜49P5ř)sܾptQC(d=<ytQSq~vƖE-cx_ki>wBCGR̎<R9̓+aa؀@13=UcftDf*$( 73C&&Ccm<䀱oLzbݡL.QE
-߾.6VG?}_?;YDQ9"TOlǥJ)k7#go׿yNx*'YEۉ%SG8Z1_UgosϾw-sB{1甩Gl$W)Β꣝<o[˴_0=ޱabyh<fJ8Ӑ}`@FFrs+j{(<ĶQn'*y;cv2<46
-pby ǜk+˯kHJhTes**|b$^Ք_-i1aξN=H(DTa1BX}OȊN8R!	|X
-7,De*ct'IH,c`158("d7˄|"/jCG
-xIQƺ)XtH,dUNۉ^[g@.O[J:'9+ ^r| Hrt@}nH"+nHMt;Q1nlx!:NT		t;DGۉ
-t;!nt;Qn'$n'*#D@Ct@}=6@vBwn'D@Ct@v@vBvNH!:NT		t;DGۉ
-t;!nt;Qn'$zrp xUyOF @}YvNT		t;DGۉ
-t;!nt;Qn'$n'*#D@Ct@	`@vB';A
-vNH!:NT		t;DGۉ
-t;!nt;Qn'$n'*#D@Ct@=x@vBvNH!:NT		t;DGۉ
-t;!nt;Qn'$n'*Dnn'DvvD@v@vBvNH!:NT		t;DGۉ
-t;!nt;Qn'$n'*#D11	t;Qn'$n'*#D@Ct@v@vBvNHv8@vB'@vNH!:NT		t;DGۉ
-t;!nt;Qn'$n'*#DCD@=i` P@vBvNH!:NT		t;DGۉ
-t;!nt;Qn'$n'*Dc 	t;Qn'$p{t4t;n'*#D@Ct@v@vBvNH!:NT		t;DGۉ
-t;!яۉt;Qn'$zr t;n'*#D@Ct@v@vBvNH!:NT		t;DGۉ
-t;!aR*	@vB~sh4q(2(
-?5?pn'*vADP
-1<~uW:(u$Ѐ))hj*ZP66(CxCus;n8\.D @@B0fJ%#KO@ <q47Ew@?}] ٹurBP
-\<J\Aq;Y dВ?Y۶h~>:1J$؋a3@_ewu~~_O?}-?aHׇރn'*eX/X(\>>7:88At ܖN}eq ?<lA~}5;1t;QYdX/8=y
-HoCo+!: ~M@˱X~~d2քH8ۉZDR̠X{5
-?ӟij
-t5QPCz}}Y {S4-e02NTxk"{D
-??籮UXt}e֘z7Ao]^ߡh[V$DejCC	#:~zwߡ==Xd]WkaB_|t/ٳدB5u;(9|>)r$NRr~Xt }!Go??+De>;\Ҿ\/E&Vw]n_Pll`c#n> hU*&DeM.p-[n:+h]Y7}@avuA+ezMNބ@@5u;Țd4W+/~fgctn_
-6b#VFPX~}zzd5n'*kEl߳Ϯ2ᑥee}7dSQQJ%3+?:Db	O66Y,}v6۽K9ݲCC
-:2c+] 5R-+xwɓ@/NTz_]v6
-Ar=`I>	r]W ܎p-g#"B~PIۙLl?Óv1iin+ H<<?qE+Ad^o|[=`vnpP//,*i!H6گ&s]hP6y Pg AA:DzuFF}%	t;QYSsؔ+"KvjMJӗt}4𤦢&ԽA\$VVFjvnJ|<(C,5j\*]Zc ot
-ԠvaiW*cmkL6֦Kd#5?B ۉʚ]BЃU4EmX]s -W_a)7D?nsnGݩd2k+ٮU42LAX[=BNTz0&ǆ~;@m(]ָb :7;Ru}e\)(T=x~஭[-xU%Ru桇4@@	G$ ^$ft,ozYqSm2WH{}%ln	׏NT ?n6 ;]ٶyc;6:jzVU6BG?j`$EŁn'*H[Z4?t]! kY۰޽XLu;hhVc&)mymْڽ[MDeܮRiluAwϞnMA=Yv^^\Wgۯ233fd`/`{/~;vy{?߄@hBaXۉ:]9:AcMw޹Y ?|[d99XGK@ \X'3ؠ'6SOi֭Żvy9Ra0ZۉZzGsU99l*믃Gq о
-[El(?<6.
-C̰\b>Bxq<"00""D")	:@ہv@LMMEGEyzhl&Y{`+bN 9(An'저Nln]}=fjJ#pYBR.!b!n'*kvmή<2B!6+\XV&7	t,e2R)'(r?<<<&&ftt;t;QY{ =sLOO
-JC(o<a0yyy~~~UUU<x;t;QYK"@Ҟf,UFL2qABw<//NE} %vaa!;;׷d&}Ft;QYcKҎD׏)ݾZ;	a{{{hhs&''	&@vn[/<<<Z+uCݾZ;	j[AU*T"\䲙LJkan'*kv鲷5>>so-L"
-KBTP6a2q{,ZKB%88855x^ۺcuÃ}Bb*Yb٦+{De-ݾxIF-s}5e%EE%%%\BkџۇnwH^&Rׅ ]|;}Q;ʁbAtH$ [Q8EqfGn{wܵgQΉfU}uTA~277͹^)i~YD9] \t;QY㡑akk[[[+oUdߓvڿsw+e4:'nn_Uvbb")))88]*	ށQTG;<v%\A>66궫P@5Y.Mwv474{X޵WBbm@.Ś,:R	P+dro>l.?B5p;>}J*|%%jO鮌u)l&
-8
-]ԝL&'$$;A_ydG_٧NrěA5p;PBqpp }sF%fMצF8Nq`Ҏ푑?uqJo3SSjWHp|YZyDEnDObjY{1.Lڵ?ik'G2.Wf>dp+}Z\V./̯t;QѫcZxi%BlMYEC3O~#t> ==|Gǉ_ӓ`VPx2ǁ2!I*t;QѷۅB!ZZZ@7[S@cp0W?~XUvQ0[ +OI-VDEn	<sL^ݒR|cNC	T	K _MMEz.AԷ!3nP)4LTu($kvq`!Swv?,՝:uP cV}1'0<4Ǒrt>жɠ#hnM_>7 :!%]rx5&"JߡۉlhhB(ԡZ'}69-M6>A@ eRјlG_<ur6aU<6)T{ff	tSXۉʮD"ijjpYҬVG["B(t1zbmh@FyOݕ?^H\*j9{ãյY斖gbIDzVۉ
-	F;{g\._ҬQ<^]#?e$ktfG_|wO>6Z6ىif'ܒۆA;zrL&kooI{ff&@Et eY @kjC~s;0SO(uja.P*dפG͋[@,#99ٹGI;@P
-BA^XJzkK]#͖~t:q+Q$adXu{ptuu-,, l ] xhe%};fu-[gEP."fS1:_el@qRSS%F*?
-ޘo})u߶DoR&kNmgPz*:&*iGۉ˪].}]n7x^V~9z}KHjϤO9΢Xf2O"58Nvvccc#ˆ*?..O݆ݻщ	,u]ZIu6+Htjn'*vB144533} "pЂ{]Jݟ{.|YR^]\li0=o>t;QY-
-H
-
-B;yJ@яB_	(2J"vvAl 7I?אv.*o[B,ౘl`}Jt;QYED"S(bk{]!46zm#զ>C\47%~gE0/MTblcYkssŝR!ЧJk)bt;QYEx{{2@)x]@8ʅ켪nG\O݇P|	~l11ҔؒrSt^mrB)&W>3ۉʪ߃L&mۭO&b#N243u:_ǗnKӟIQe@A 7F33W^F+ZUJku%J@K***+Lp4=r/BM$y;d5u/o_QQ\XXxiV\&rqY+CĔSL}ZXizr-vh jh>dtZ5
-:Җr不[r~e^ ֩7
-xTT&MڱJ).g&FGɓɑs!1Rz'gKSϘ@xba{vt_ a@TrpS1CĪkQQ˛e@[t;^"|~MM{NNH7+uv)ަs1Q)9%~	dD*<kw3Eٍp]чáWvo->ۣLr;+@k	WjR"pbkDɸ8__:\O:cel|䀡WOut9f5.+$<jkN[9}7@n1nfi1D*O3|86=w<&
-Iӥ33$iI5j\YtTMs_3n'*vPAcc9.kQ9Mٱ61IE%!ޮs34=?Yo}zЏcn
-4*]WhO6
-|qsx&<ۋvK/~zz.Bc#t8SkkK&n'*v<iNIII{{{;Sh*9U(d<xyRkiS<c6hϷf1,natw{P>ۤa?UԨDNM%%ؒ~E{`{ND}|Мtth˭gϢ}ousfngi|˘j(v5op7r`DGoi
----~~~t:}`Txl*rѩYrUz˅nƢ3Whkѿvo/o}7bilRWƻj=fD!hd$u+?%cH?ck 	ƻ7 GK!#hP4	%f\L<cvL`viEuFrmdL1:kn*vR977wy//Mb|O}qbt_HXXjAe[W]~bSDJUV_3jy;wix=6{#aĠ}}Xn>P_<JW'݇mYddmA*l;;EGD`_\%}7vNHfk];{}wTJI(PEDVG6QҎj*>NcPgSUi|ccӷ!rA!Gma!~kX Hn_n_|66ֵZ{c#6gӂ3UJ㏣QQv{X#"U$xE˯'Q&fU6n[rNT~<;;ǧV&mtk#K!(1a'LsKkj#|܍ND&p3dk񩙻E@}D͕R266isvݎo{Gͬkz|p@u+VQ(4x!
-T`23O&>qf[ǖ	NT~ہ4z{{CBBbbb6Qm+?;EU fc<Or>Ζ]b=]?xЯrW. =L ҡYv;[U7RoູbVد<+xMIU7-˩{W˗S'DVw$lCi*t:cACS>ݓ,ŚdDGOtz~~wyy8&\qιYT"da9(.Ώy[Y:f| AN"!J y^UhQ'SS/xaQtxx[Cz޽X7rZ)cϒkR->tޣUlT&Xh/6$\iLDǹ]*EDDLLl"Jr+_yCe>̂2f;Ҝ{zmA6]~K8z|bCWXFw-3'Bvt\^ $=cǿ"v{Q/>}ѹd@,ǶPKmwoO,j`IbvrnǇ>X//ղ^RhSקQe\PmUlȼ@,9kuN	dANҾ<װz/v\[;.&nNxoQf9#60ؐJjxꮒ.vT4wHZ2*`r۶|n'*7vdM+6MΊ622޶Wv%TDyl.i'-EQ[= rf?`C,0`RկK+Ƈ¦59/{E+OݷlA_z	noqP+eTRCT_\mߌH6SytJ%uEKe
-ܬہlvyy3gyFۛ˪
-b0}mZFg|Fx k+W"uAV:2RF{cUWQ}}lUy}SwCCʦѥ]Ɵm*uv˨sBg~<lA	:mjtbA LAu\.4TU>icÃ>l\Cy[cC=_c}h.@rKdN7p\-u늽I <QE	[&%9;R)/cIZLj>nomQXV^y.ġm5D\觰e*=@ݎ7ȀD';;y"%=3Ԟc~s\=Upz;oq;UW]Ar;P틌cZoV"nn:ki:R*mtB'3<3` o:xXæs᩻ZƧwTfZ2vnv\}#3R\~;
-/蠋j-1NTnAAA9As5ֆ244js9<f.$E(#4T(SsESJiC
-^@JqSv魻] ңW6vzY¸shaRόZ%2kK%EFEEDƜv=F.[Ezۄvܕ/##dyρʕ
-L*\0`ES`!!1WRD{Tv<]kӫ+iN\>	[z."HDk'"H"dk!FGx;خHO{}YVJթ[|}vE2ZvONN&%%<O Zt,e<<8PSu>5 <cb8C,׎TF֮r=%Z  D"H+&ؼ¶v ,	sJ+5"H2azy;ūrpK41]?'XwPxhcA[wڵ[Mk1c]BՏݪ@,p̙4:'h^RZ*dv֦Ǆ9;888?~xI\y2X$+DZi)T!PLq'Uuq4QRCCup;ԩB4TFU!vo<k'*zHo
-Qw>mxIlKE-e77<Sp}L0mQcTKX([	tt;xsss)))>>>빜/>T.2h䱉I*kQS;+ؚܷlm,OAEWH*ttS |8f0]݇wNnG/d^{~.j_KFgCnxQjaa/a#c;R7ߠUUXkv0\QTY2J]F+SmpʯkkzKq!7.n J][ZdI.i/N;Wҳv(S%l@__ DhȌhU>gI51!pwӟJo=Aܴxj㏣!!K=d =;@XXw=\]jDR
-ߞw9;JL\_/?Vȥb	JJ.(13oihϧ..@]8FKMM=sLCCt]{!R)tR~issCĖ9\.
-9 o܎14r51swHhb2v57XZ~|ch=l51m]	E{}IUU(o!C5x``2ӟj3=܉chTR +4D($t;Qr7!!afff})RgQ t0qrdLb
-dKQ+0O!HqD"A{~;Kb'lilGvPeCk?tTPMQD#&^|1TGFFo-n>|)֗z4,[ԨU
-pgK]}K( HvrC`0Ο?Y[[4mT)".|oFS4*0ozj6?rh)k+j>YU>_
-_BA(tss<vl%<q}Z
-6cc~Yg+$_j<Ғ݈`oo	*)<uPww\Jt~y]rrD,_h%Oin'*7t;NNNN׶K&.7=j^JnJkh.<jt`csl)Jʞ,HNj#QEJ]jtzSSSttKPPPMy9Rnm_5+e҅LIQA7`wt`=JJݱhO?9P<oxx8##+77wllL$]Y?j3xꎯ_Yv.Mî;RnoԻ Og*t;QA1c2YYY/^8X9&x68v102Z?BΌ=liin8A<YΞ	6Ďd29??\]ZZ V2@2b71Y'vJ!*46jN_Re
-]^r;4>y㚢"KM*VUU	<H*:::l6xj78)'#ǎi5RFtS*B,X
-%r%l~"'yPpoM`nB6	 pxbU'00dk\آNG??x&ob3CC=E:dϰD*PI|@(UTVUp8x'''iA5@RCc12tx@K@dݭneg488*ȥRōLJ;g/_Jz{_J;kKյy􊷕HdL&;66XGoԃU)|Sy]T;D_}UWJ$kB.kw|+D,(cG;3P(I<-csi,ſXή%%eL,J̟1)leUaفo1udf~dq\{y}TxlOrwr wrr111iod0Xbˀ@hpS.% (W_K;|z?HnDff
-]cN\l&P,){(mG((Jq-ep{wb>22[[`e䛐C"	lc|^]<t裊K!iYgl}`GgEpvehG}KIqmֶή1Uw꭭㍍ KNLlPB::&jk?(- jj:Μ	
-n[X {{'ǱSZݮ]16<dn5r	JH*/p0HN\m-46;ge{b+Ȋ@P(S;LD@G~Id;㘦ϫۯ69$g5njj]Ul \4K 7IrA5M&SxCA$lghII}hhoRRnkD0Go/=<|}7"	6՟ZQocK@L~ui*322<V_??Io)<V<䚚?>ڝ32s:F﫻p7Od^Yy}J[40<CMRKkI+xp]Ԗ<''?[[Z k1yxPPA9t^H.%7Zwcdv=|qppCW #rE7}\"wͥ,.e"]R;:h4&'Gl]jdoxc*##iK^/k6Iҩ#|<<̏|ŗ;vQL'8?cCiҺ'TODMKK_HHHTw7)H8G'a[vmtCT-0(N>-6Ӯa>NAQ#\711%--kpptaA^D$%6w^,UšȑB-RJeDddT{{Ŗ؄=[<luJ?I;65opA+վy9WPSm??rʑbSXWdRkbb\#| ?órDe|T.W95A_~?79W7JP<'Mx'O䉹@^;@! 	DGG˩o`X~Xe2Ū::h~h;E"xJJѣGO>]]]`0r!T}}؏>4Q;;L^ZGVX_tuڹPAeպb88<ⱱA=цB&fNt4VVtOy&G;'B.х
-Z!gWvFYd*PnG+**lmmMLLGGGB&Fdv\ -..<uT\\0x˃np,o'ti=Uj77;n1stYDbv[^v%IiiWAAr/X*eBhKxn'\ҋۧښھqB SՒނh3c{}gljwg-Q\1&a.켽Acff~-B<W	/kkk釽?H6Qv_c;8xusæ^JU2l>'^s첺9-^/t;QR(萐^T|T
-;Vy'$,6A=TSFr/*hKJ|obfQ_~d`V6MoȪ_k/'FZZ7Ö<hNOO2𠳲d26I\5884"?RVxѫ](Z%x;ᓞMu`ߞ{NٺV8[\r>>>t:}u!,ZU
-!NL030GOҡYî].JA S>^5	Rw\*
-@&IK.rN" 333A5dҹKbd%%чCB]IEqcMLsR(Zf*AB^	J='y+(ֲv?Dg/Q)\*f/2GISӔdÇ-BӋK.؟>J^+ni95vrgggcbb@=guvo0	j}&LWxڅb`]~r2a 6TRvKB$G5-8Nww7H<==\F-gI#3L=wJhȋ端Yn0_;Rljj*-- 3a2xcB;whkҲsXjP2L[aE[kkggL*,7%9#ʕҖDn&/FV0}qvulꪌ;iz229\ۯ<yjZ.&m#QLnӅP=ѝ:66ܿ;jp&~N5eʵ;1ܮ{O9z9n]VS+kaXP{yyFFFo!༤Rnoy짟FCCIIymI~	.{896aL{%M$۱=8Amw-6>#/nQUc>ߺs϶='LO9aj5MUMEʫv>P b+//wvXvWo|cMbML0mQO+	vB[m%Mz[~58AmHH3g7r:8lg6c·۾\^1Z#2
->1MwtKJNu1Ik8ۉʕnOSSRT=<&{pNkH<ijr-$CbEXY)RJl_/ar0N9מh~):;ה62CO+ =]vnqB1_u jp333A`ݘChB?li=?6<{T5rw.&RwŶ|𩤂*G|#ݡۉʲy<1JJJ	Oss-2,J̢veGH!Oϐǧib;K$2ONN{'kS}̏F_fRJlNeCRoB.8TRڕrvT@ww޽{CCC;X7ާQgg'/g:04R%V=WT^c39W?A㊥ؔˋCes¶6;wnzz{KCTrDeAS)$EH"Y`[^Uhv`u>[PRt>3;+/36О3iEBZ;8p	xҭ܊UE1۝fwWJyCYVi6)%C[#p{h(pnWʥir]yook*Pv/ NP222,,,
-ֻneD"ln0<-BIę,8Ox9jX2837O%2Jurۉʲ۩ԅT//`Λʗ2lCjEn,+k Qb6ԘZIc&˃Bϟ=lzs;ԆPo7KndWm=FII%wtdLB{/ownW,qx;;DOC??><\2ŖҼwVTT{|tuuq\[sW
-[mRDFGGe@ĠVfշS"Tl)
-N,h1y2l*M:t;Q>22011ƏٺR*\v'09ȡmٝ-
-jhIFtw{jO\yj ;eʖ*'j<l˩T*mE2|?ǟx齯2*Y\uxv\Bm(ύ
-w>uvvFGG;::2T\f6QC;пRzBRgY=Qkτ2nۉ
-dWWW/..GW"`7z;tt<yˣnCTr^vk:ngr'CΧezEi'Dަ* l7fi(kc6nGC9m7¦t0$d-ݮ gP+,כTgggçH$P83IǖV>	)7R&O'|om;n^<AC.J7-(uv$xU߾20s9|oR>:m6NH4xq*DE3C@ywL666feeennF5@-{:jq2C*<gݻ( snX+kצJBD*phqv}}Zͺ]si,@chhAgxXk]w-hE`ٻJ)psc_xQ8]$U.xSNT@ya$XYٗ/ /^2JKD"_ 	b>ydQ$qmk|оL@$akfW\ZK#CBBo
-.6VU(y#m-kܩx/7#v
-]'篐&H5UmmU&^hp&ݎ^Ѭ,{{{''ⴾ0jh>R xm;m|LwuN]6ξZǩ,v1w
-7]n'*<==CAEd7,ˉ:h53|mp:+=n9]C罎?{_u=f;6|ɟ&MIi!L2-e133V2؛--9>YKٝs=砶oQ7'e{j[97-! ^S鬬,}}0X bO$xP:Q\^jvAUCׯ~'de{J=O:sF]9%4h»KkD"<88yLWT4&ݾݰcZNǒZ0WϦu%9[hE6vN-y!ǥSȳSS*OZ/ /(pv-~'+Ț'4?vȑխbR<,;angjlBrLԩ ߠ޹E8G8RE!gxGN?t)Ӡґ)<n2Uiv66v.aɥ=$_QXWhhC^^ |.+v}NTI	%k׊׭n.(-_ݣ
-X &
-l:4[YT16G,eI^3p'C!5;Q`imn`yS6IGvvi[όI*JI&Vfg5h}%blmmuvvzA%Ϥtԗy_L,SկQYX04*)Gq`f.]266iwߕ<$gVeeBWϿ鳤i*0.8\9㢧ƹ3ǵm}%5ʒCC˨ԩ9Ynq3	G>ZBgpX<csT.EX;OTJ<_(^XcOOOttnZZ,Kl:	S0
-v*!vWqWFBNss3jiiy{{WUU<4@ww}(|755/۪-pxWe߾MS%([0b]]ӬWW籘DCIKʮ%>G~sOq:G/De[&9,)fgg*~{ۗ >00 Ujj|lxXL}$K&1sZYTRRWWmyF3:=3=5m;8?LvR1TWwP["4xnj<P["r~ g}5ZffP3@$,cuDJ477OII4`LnePq@?LMM9I@@@CCVDp#WSSSkA̟oLrJnm.	K+Oq	K 3yw		c)؋qD.766+FK'gsBxGi`bU[GaAZm{ئ$`=<<ޗeteb9v^uww_x433D"	@D xBCC_bFk
-r$3)Ě;ζy:[pgq&H`NB7)[W2б\t>kT=s.F_9b p	mY!چA1C$`cZʥq]zfgg0pȮ.lݍ
-v
-vQ}IOO733J#""N?}}}gΜ[XX#z/::'H=ɡfVA)m-YbCR+7<8?4x7ccc8ihh}-l$alL"XY|C]Ã-3\Bw%GCatC9<u^!0N`\i9ڳaN#p;`T ,L$'&&,iೀa``LV"OEy9[Yyy9jdT4Z=sJ*>fλm:$H;0][[𩩩Ʌs;o>3*Rq+ÍEAF.ٵV&ZVj.Xkk'4γU|9VY(&''===:mnnRׯ[,{{?܎7744MBBQ+ +++/ '%B.u(LL=SđƚK޶v^d!`L&cۮkjjK/xĦbocM	XB$Nz驹Ǥw]ӹp@M~P|]zooKHMMN/*8#OgmA`uh՗lՏ(qMj"L	pgѥ 7߈ۖù ;;;\D"IUo"79oZxb>_i:<Ԛ`viy#c0g=== ګ_xLF!H7n'%%~N0w455鞒rMV PKZłΎج֚T'm[Km6 Zr8k{a/bb:Ze -{2t<c;&2RSZД3yͥikkQ#&LNN绸 /}|COO\΃#-CJ;	ÝF*g)=sVQ? 0 &
-fyئ[s.ܴf0@/mJ	F.aiu.͠QLqKVjkkÊLMMݦˤh܎; ؖ+++777`ak̤P(r1m034f`b4YCЯG4"RKGl|-Ʊt:=//ظv}KnBBk$FO!{RHݗu/0+؁SH$bhh*[w}X,HVV]]]gpftwwwKTbCv0Wc{֞9:Rqn_DАٱ1`\T:-_T
-Ϟ&]S[zJKE50:7C`~w\l XLfS #&c2̉ojjSWWwrrZzY
-83-,,E8W?÷fMƹ}3P%%%ڹhG幝9&Ǘx>'$Ex7+Hp7u{}G=gvydIO>	:	@P8/,~LMM555Ј^V>@ t䱞P?ԆA*i2ܾhaX[[yceNbJ{{&\ˣzrcT.r+#vg9y$d5"S333@+++6<<ǃ?$i䘌<Jxxx74492;"??_S0t8>0;E N-09|u[~W5+//`0$BwEkLuXwAjdXGDTPTbreK<#9L$a0MaryW8RI^__յxvv/ssB83,,˗/ONN.wrr
-bIΧ$XoY{%DġS;[`ȈD"0	sss`wXx7G[9xԷgil!0*I2qu+qttr=$$<GH?8ۇpnOOO1788JisJJ=/G7?ڟ?{˖&8jcMMIII<ip$q(5NW&md𢥹咮Y*#[\rHo__0l---`?p,~=0d_;00z{{mmmLa||D]7;ܕh䘼Hpn_ #>77ASSshhLF3`~jBQeR,`~LĈb޽87Ȣ	BnnpX ld29!!RA$R	sdH(\Z8'`Tu&Qk25|33dP_{{g_?&CSc˦@cY\.w4!'dWTTY[[755)0@r8?pgL~+`S|=2ZGgcÂ*oe8^_xp{gg絓8?^q|~~􂊲ƹϞ=k`\Dv];Y=.kk<<\/--`޲&rjqHls-9aIdii399Iا bwssB.c"ZE9,82bPF7Ĺ}B$577`Zn8mO9z'յjf,X`
-:65ߢ='zՙҲvx(d; 'NPҽ!>>̚eOpgmNҴ􏹜T9qù}N(++ׅ݀hEiQS*&f/%Saf~hq1u(6oÖ28	^ {0miiaX6H$FDDxxx)-}]4;c`y;`LLL)$[E	\Oh8DBѯBx];8$7>+`2qXYX&nŹN!@ 䘚D	L
-zٯxI۳mMt- &ꍍXFֵHۡKEk)`2
-Z^۶;vdV?/]b_Y}% s%@@Y]]]p/-9GFFi1,=ǜoL3)T8:a겱477wQ[$]pA42=za6mW^/	}0wevqn_3$CCC첲:NP1PI#cpn_]H0D\_X@kkQ''y+.Pfg33x}hB}}}0/sEPPP@@@{{;VXmx\ŖkPs~ oa97r;빹n;[>..hW
-.K8V8+$WwpNVQQZVV633sMTj^^o=.<H{Kc,!qn_U sT JJJn|Cہ|`О;l#3JJhZJ$^!v+8@;V ++4&&OVy===!!!o0JgOՄ9յOD">ULĭFII^?֭X#< ?4-ZUzXQ}cx}pEEwee%K*$  #''H0&+5ޏg<!
-222eX$m*9t}u(er}f9|@vw@qW8dȰXVVV)))ccc;ax,_gub!K&)R6Ϭqn_5 8::<22rV_~p3ghɟWKe^_χ{BWpn_"fff:::mmmw*VLOO._PP E,9,xw]FC?}w%kc2fgN233v>q~K%2V_}yQoorqܾkg4<<3bJ;""BOOP=H ab0Xw1&>bChX%5(}<Ղ	///''u;²i4|g׋Da\TEMOGa;>~8/l&&&===@n7LNN /--bSckvaa}вˡ/Mƈ+i",pfg7k6%N$998풧]dF`)0GGl:;=ls6bL&9;;WUUσߢFD1!.M!;[D_s:~:zPg@gkkڪ+أ<swL3ho/ۇic5k$7o<FGwbqWss8/;0/r@'$$bm­;"v6IG	c=vFvą ۓJ'.OMv^6WSpZEY9ڞa]D:+آLYYEbb"u1`Ez+*P33O'~QSS6rpo*ywEE}}=JX$	<'xGf&[ڻ5L2<1Me8{մtIKS5(qn_[[[eu*n5CSпf66%n0z4Nzzz_ggg`E!S`O?abedhX3X4Gs?n?CTVs<yj;efIșq<X`j[[iX-Ǻ:_xݸ''))Q	`>.W5mt:74?e2l
-l+wrr266lkk[XXx尘,6ǘfhw{~Q>xI-+̱qx0/@7ݭdSM"9YeldjUMA@ƶ7W<l L F\.J ^}MflTbdDONx<0A0d`3#R<ϒ=}̬KDB̣Ho~P4d;Xoii	ήhjD#Ou774w4%'yy(y}u6/>c)idN<>=?֛zPE:id30#
-	gLM-K}c]౎ꗆab?؁]Sk&9sMNTWSۧ}p Y,Hz22x4%&@.)ۉSv?V:->t|+ahCC>0^1<MMM111uIu5141
-ttͪO7P>GkoxVg/|ٗ!OÇO
-jR70baXK]W=r/>,ѡ^4763KkUQ}}fOPkkIq Ac pzBBN]N(ہJK~/?	#xZZ&.p,0zJxyW~5QS5>gSWv׏<Go8i֖f7n\wɧt>SsNٹDćF\*'"ff7o><֭_l߾Ctt&E+%u˦@
-?́ĲB$`ZpgQ0X50S
-v)q%7޶l-bPX`[opu!PԮ&g_߱ΎvFO8晴m[;to["krX $ Hڵz<rξ~%g;+kUG(:%5LR"uТ"5b f׮Mܲ'vUU%Z{8#ￏjiA^!6]abvғ, _G!빹ewq;"`.u'lňEᣍUu O=>SsO_Pr2W8];׻i3[[A	AOzL#4#Hڵ=}NiZ[XihizVуއY,K/k)	A\$pgoA}ٓޒ (WXqoEж6>mh5 \sl}P2˱n	g<q[e曨9I+7l1;::5 Wħwdj:[;g?DeO*}l֬Cߤ> bIAҰv֧w167>(R0-xP[E!ˇ帝 b ږ5o>k=-ذA"/H9yyԐy
- $`(7~1LΜuEIv2-[form>
-#0އCaho߄i_vv\bOՋ/ZlpAB/DA:eށGިwhPWoM[pU<_0vY&`FҞ
-@QG\[Z5"j~:8un({#'vlwP??XGHcς'v;v$^|6,
-D"f{B9s"rf],,S
-뻇
-2SN6m_ALA$Ax7Lo _fgYgΎg\LQpr:L	? ^y1'cB,d!Di2a2 _aNMd$Qk8+ ං6lOuP֭̍0܌
-퍍)ca껢/
-XģvdGçZ_q,G[='׌ G_}f5 %R R7vUc!@~iA6o^x2UGQ1MN/o#Pxr pfeDcȚ~d{ߐҭ>@?%"^'ܮx{*<v0ÒBp`;S)K)a~gp'pigaAqXĥk*({R ťMĻi)ZY{9[|A4A$VȆ9)2 YQqDmYG_x×˝'<焲~DvVxW1`d__ndu1d'"υ ;#"TÇ:gdf|x}bCrcڏ¹ ,%vxE96/n/(Y=n7`>]c<iYǙ#ͧ^]qAz$ADAYwr69;<Ar0lC߰+/ʏ<}R*⌠` 'k\zMl(3؂̮]15>EI|[MqnW;='Lxt./n˓/n޽0ǽXr<pmimSafF{k3Ҳk:ci`q@֜D)Û?HfC,% 'un}O`h\biZHrpJP08y[ O _" -W(#WH+ݸCJ&1ls2awhX!*4[F1ܞ+@yn kA~cӦmj<<jp(RZڿﰡ}`z^qeUUeEyYVVm'V>h5TK#iO"ɛdb<W#}OLCqڟO?w+,++ITRQwN+~WۻOj֮w
-d}, 2>Z2TCE#{O}|jJKkn74`rrJSS+ryMyK 4 }Knk!xv.\AŎu^zQw	!S;k;0?57w8|76mG;d)Y""ukHW^Nk݆NZYY:ŧ?笑Mz q+ɪH'IS#Id5+<m\p54~zqqҬ3ܾnWŸ}P*}c:W^q?uhogkmmena&{g+3v=Gg+;;'Mȋ_FC&GLti;uEF
-p_M}F݈gθo׹+'H-2Zd%$o/ry䆽s	m?>\Cpܟ{p]t{ ܞ*`#q7rYoA&nvl<g8p_WW{c}uQnv\Tawu7UԷv􍌎NDEӑm*[H#p|WxyBˑwr#Վ f6 '3CJ;/&'vbZy!!^C7"Ggϑy"4!Fo\n''nQ`Z[{VV6m7:fl,&hab*l-UiTE6ŏ[ED8P(y<Je{j,TϞpVRyǮ}f85[c-d٥5:<P\]sH'ބGG)np^9t꘮ytf i<55NmtpȻ`@2Bv"k"O!kMuDZ[E\m?
-D#Q(̫c) 7mdDth˖[НXn5ǆ_Z\J;9/(<sJM&tR|Lwܝlͭl<}ߎ\LiRȢ	ߟ
-~}<UdxDre:ҵ	A kX&G#}~TIG5 4OrX6_l-B@8#i!~3bijGĪ1ɢ;Q's wLen،pGÇѮ.RWUgҒ;n|t[4Z͐ p}Ia~nn>)UDG$MrϓG']щ$7O~zhAH?OmdGgod#*Y{[}>Uڜ>!S`:7Y>pO_X,uXH靍l [j ҈hX"2Q47w~a¹^u.LOw	WP;;XgL_JMKGEě`ZB)SJ<yxo'[FLqOX$he:q̡y֢[p C F$ٴIjt}#y!9ꀼ4l\d=&;bPppK?X(LruwKW[d^rvmZ)SSRķ{~cC\jGv
-MA##.xf[wSN< PDezDt5Z{xI(p+xtMWQ8RX0SFml`矗e3In
-Y؎ԟ@#j!!7k
-C?`u"]TJG$Jy.ͣ{	w5p!+#@ `}o98+ ͡7|PeeGe~t:ONop;诿EXN`5dXmAoY{{eIAxfXOZS.!YY&O(a"6e"Y[$0~Ƒј <r?=߼Qʖ7f;!!SZ⢫<<{ 5;>:2s}L&xO7VAH(!MmB\++7{{s󐐐V*
-v [F쁋wH`XOHR=V' T;ܷ<q+n\㰺lmLt7Q׳r-nm(vs)mhn~çT<HDH
-w	Oo'e+u*DVquHyʟw$i^f{dM7GAK04BŹ>K	N~E'Xo"tOG+twtv6bpqq%H<X`
- t(wo	{yÁV7RPO=vљzwg7?vSnQ++.W
-!ҧ,t(mFzZ<mmMT뺦St2Z+J
-cvj
-n8ՅY&ב]֜WMҲky]7aG]`d+05ygўz"iNt'`ML$mmb6NLLDEEuww7qpnWd*<}V7`ڦ&b{#$Sz~ɧG6m];K ɸa3oz"@Էv546vNyz||0қmS7%bϦ3<Lc_`w_"e_V/}b$}81Ǘ^y	_`=4,obl' pn;;Q[[Xx`xY;5kqׯh3GP$LDZ] P(F777UUU//ڹ38+|>TYg]m<Outf2Wz/llJBN:m#o#aib _z	&I~l{-+fZHWNE"͇b}[{q@BVby5uѱyy<#H(.zrJ	,YZ^n/  C32z~|Pv74ӿk$L{9/, DЎ|! g^
- S'~}No=6'&D"{RRiiiCCCL&S68+X-w0X􀨺:X0FVN_bbS7kgGff
-z4̢^RPE'4Q8BXgVEw਒y`DhPr0/K=+:W()aYN=[@kڷRCY!Is._vwp
-KaEYx<lvs6` &&ࠀp0L`YXHYYyy4MWj\.D*,,X__l {L#ܮH``x@}jj`J9$o[+v)&'g\Fj`"YS2Ώ33r*v7	##, wx?u68(>	++#hj&Ws14uc#4UcmzŔ0 <7((ϯC@JҨF`I`%<!"\,ow7>]FFFH7&Tj{{{TT}VV8+` A0X]]p=ַnN#C#b.>8/Ћ7Ttk?ьZҧˣMm	\Pt#(*6*$!md)r
-D_̷f5?,
-
-L&,8;l[<!\l 2D KKKadyvvyxx8`{99sq?4\>223Ы|J0<P"*]OO?9XC`E"wnwlB_->5J"NY++uG̷ڳnYϏ۲?'Иa)m`` 8[[p;sJ;;;	HH>?77 ۻ@qnhls@,	ش99%5ӳ#fzzj&nd-8ȨKٙa~FΙ%]d6/ @(cx<-&|9\'-0WXĂl	7EEE3332}%`pcccmllY,֍d$W
-	tzOOOJJ]pptaa<eFÁei..8C s#QNvFfѹ59w~ٴDc3{^,'Kw*]L&q}ܦMp5~>7a0 &kll~玌s
-Fvvvaaa7eee=<Bfggo	¹Dsy`/>mf4)T)<>:9=ҮQfLjE[ ͍v$ŅGF'U00t:\紶8̺upkrUD(: ړo7+Q(/^WWUYteFuww\2275JKK#2z~bٸst"ga|l0<11ؚg_?<Eϋq>'i&O,q餢}>.F]PO _u.>fTdR,G,G]\\s[h__%v ,p{DDVL=liikaa
-8I~+S@2fG	T.v hǀċ.D:u:>JɳDB6=O?y掓٢E~e.	n!&.\*<099,Eb}||6.Í.X좊)pÉP[[f	HeQ#=ݝCS@:Ȇ
-&H)).((<NYM++(yK]V8۽\]%b.m47*0.k*҉M!U\<~N;<+)P7:,;~:H =r(tzH4`˦!\!}ׯY7FTTl['\_UUN_^svO<i\:Fūz>xJ111N3C1V6,sONRz{I$l___ZZ}rrrww7J}tc#m$Ds=B.5O0%hq;|dMViݥU2*?t(BYo/pᰉ5lb35P:K㈮nJ {j˦@o:K,np8uuu@Ǝbt]qXȝ;|NZEsfQUCB<ZFvff&(((Nl9a:~o7͐m`KRY\.wzzMMM,L`pHx3uagQ74W;sFY=RMhJ>)vv1JL;mod3:Ze.0fsuiZ:W6WdDxzƥ$W^N;Z`@2dNY,Vw~:86o^LL`4,x'&%%yyyhk]$,fjiO?~cʬ"[K *mnn`0psKA6NۧCҽKbv###bbbbA<wڹԎCG̃kNj;ULKa4nYcm>f}|V3eQnV>ye%%ť=-U6ZGC1nGY"c
-|bt	xk׭~	e;!v544"!xgUk1-N|֦3%7ˤ[kK)c<pH$溺lhhP%ӕ)~gz'@[]e=ʞ0տۿLv7.Ӄn'tMYFE+|.s~vjrzx\q@#tWD\ʈwnEY	a~f:yݓ!Y.޽(E`Rw˦ݾSRR<==)e/sHȧMv[kױle +sw{?q(^QQ	PXG77\}T?x+ng <<P88铥^hdVϲTRgUln }bvQ]-d-tWd(۸F$$zFLnnB*NOMS	@SuQFNsGhoCnJ{H.sҊ(OWUJ) Qزi.tr>ՅUzꚞ=~%,]]-6v??|v;7Rcoxmq7+Nz{vlP8W///Q
-G"'ݚѫx.deeښuuuab`:-qǈɹ
-?S'LfI..KvNPǺ̏vH+/+3\Y'	H?_~nZqyyfBª _NyЅ5mk*on!QeM5?Ht׮: 펏KrξL&gffw:n*?qжL@ 3	i.?u|.NC1v.7//O__ $9N"ƀ ---{{*0EVw<S{Ku;b~96iߏ;Q3"sҸ]g6g[v\OGC}Ǘ;vQT>6F">Uꬣr☩udTHaK]MM##ccQ.ǌM.Ƅ9&Ms>(f#'i%[6-)x'AkH^K})cҾIPJG"80nnnpTn P jhh<89XH'K|q /GҡJc_t"2KHW8P,|2IMmS>g>X:2]ȚOp9zdkA]<xRU%7mmu$2yfkl&ە%:ϣl\H/jwlz[|ܽ'.N%uӶn%7Fyog.fm6`~jj</kkkT*iCcώue?~ebQ<칶3)ۉw`ZO&u5VT?pĻuh=Y
-|
-,:LЙs&?ȑSfTRmnizE$<&:K^ Y\PxenŸ}tݻcEzy.ޥ.+сUpl*!F匞JLl4S>]< |؀pDwyAY6Oyr;*_`U$	>N͐UJ:~%v~+!{x,%p_pX,2Rlc50C]ru-ϢΎ4f$%dt{4Ե[jk_r0}MMC΢/v*8|0vHڲM`B.Uie0 222"rǴ9}	*F2c]9nWW @¹!Q^ڧ}u,RQS/ɅScx V722`ŋ=$sm55Uevj*~	4ݻt}&Phk[6N~ ROXֆVgu?|m۶aXҞi爖~>rT'0phj/Oe	~ɍE3	$WEz?<uF6v :ܔt/Y }||Q7KyJ{kI< ƽxWlۯ򋯾3]\m
-lLUUںNKrVP*|b{׹>|H,VW&KD|k`y vHnO
-RS72s
-6p*N9|kY=!<W fiS#e]yu5nLNN>swO>)ٶnD--E{m~|;88`=8X+L"rfFS}}|.W2GD0Ԕ?RUQIͫλv>$+++SSӄ1DC"p͸CyK*&Xn.&9suǚoO;}e!,ea:sΗJb~w@# k㽢\dq>0V
-cFF-I?+kw/WmKljjZ㝹۱tP:eazjzfj~8qhhF1,6LKC"㣸e@@@mmVAr%ΦSfgfT'-}*>q !+A&5g'>l[=΂~ 'ˣ<4J+.꩟>Z74mFɢ@丸%i]]R	te/&6N!yȋo&ɧuXa #k`u@W\$V_x˗GGG~ɐ
-;4l+E~W7ɞ֦ GUKU4/t[X{e7D<v1iοťʂL&}~iHWW׺:vͱ跭:((躅{v2B lmmGEEutt=>==W+ܙ$'ࢺt?=e):~ĝispT7nh/p)L d[YY	􌖖 _x1x`]AŹ}|||0`_;>555̱JV"gevV_o2 bJࢭbTT_%nymc9@J+"snݒ{{{es\pHBΌskllsFO܎	x@&擒^b
-¹}t7>jϡG&lH,1滊S{gu	M+7_ۧtoN̶̖̲YZ1V+i,ΎȎl,?qlI=3x+Jf1<!{5kH̊D)8+\}Ƙ!CCCY,Α'&CCC(NHHHvZs}}}[[=Sv|௩			hOxm'$
-}HlӲ=tخpgjd'f.Ċ_@VYsΖPkky嵕W,,}sFe7G;>ڢ$0UM )))^\DNHkhhд/-{{G9۷9NZ޽
-
-
-thE.v xu"7CrYXwj_MS>=A=aiyiĢᎫeɐILLz{{-,,o5;;KsE&A222:\7lzGrdee%8KKKxkr	Z}zؾr+Ϟs\%e鮸vCmN<lv;"}z'WHS!}bbbۡ)HWommmajM;Nrss![]`NWWOUU<bnD۵+pS]i.g3WDgLj*lf_817Vw%!ė(Ho˭YYY.XoHH4?4Цd0j:e;^ uss# v	֑tY//`eSa;IwQr-4w#W+4W/	6[YbsDzol!T__OLddd]]8u-ߒK.NA@xsvpp(..?_)mlvCC	=,,]#ۙymkk$wsfI}KbT,h 4j`H{xx /S8GeW^^^6t1bN$44grrUlzkH"xfggCfdd3h<SS&vB23UcsЌ+Y!69\jǀ@wvvƒK+**ȎD=_RtرWRN
-6"STVVDbߴC^yՐ2P莎VR(}blWV8њv˺F\ΉLMkom9{S֖/8Df.p/볳...<=_gx_pAЂ4KvH*<rt[(p8!}&eee4ȽS"]&b~$oRZ0䭭IWYS9ֶvnI+ޖ0Ș+L\u݁777`{QQ+t`544]riGlGohr:88TUU/v2F!illXWq>1ݓL`vr_|rXz~B16OT{~14<:>Z)͇!7!zLLLss7r^^^|]R Id$A䄅2E5^}+nmmT"|uu5|\Ǣ퓓CC-#sk$fǬSJ{&Y\ɚ~JJ/HMMurr[PcǎBݵg$</33>+wR(۷8<wwwp)"Flcu9mpB\WFG@ն!p qːJpt[v]oq9NppN148u2
-lmAS[[gkk `F4jW
-+S-CK|[7gjj`*zzz\.R3gdddVf"
-Pss܊U];kMH
-7b4ž:<MZ`'=j~~H.9T]RwwtN$Sv/>>-   8/H>C&fll!Od{{{OllˀQM<#~zzZ			
-V4f ~|z'YU\SfWTTxzz:88 ;;;9?<.rcb;DJjjn``lO pQMV	R|WWW\\تZH=ZQ:`Q]8Y|s-/u
-ox}S_چyyy(?c.hP$''CaR=b;] mj.XZb;䀳JJJ?X(=x.LWU4wOM2Vb\q^ 9jN)""\__녑#4Tmmm5q:b;]&1}2}K@`2tZ}|`{x]	\/HF0p08sW\F.:"Ӟ	֦'NWA*,,pmmrsslt`ddݽxjj
-R-OY__d49l
-!D1킪BgpX,LCl Y,~ee`` "D9PUUinnV;Z[ `ZZZ{{{>UlhOχz666mvܿ}``&+++++6$D"Gmmm!a!m0IA:b1&v\>66v1;;Z|[7
-"j>??! vjlర0h%Ix0YYYQqm(gؘ)\	.((L1 
-KJJlllbbjAAgYY5O\i[__fQvFvҐ%OOOHKKCc\-sx!CBB&''9NWmϗub0u7\ ݻH$Ǟmm	Db<{D/^񩬬d2҆4r*-b;]TPUUUee3$Pmdq ., )4HBvеEp?=  `llLNWmg;dA__ll,yܞCB'..l]lGDv\Hrr1Tv"A{ٹX
-1[WW'<566tuuMMMV94l{u6foo65n&<SAڈtl't hfd$8;Y[[hM=ɧT*wqqߛ}n:.ݡ{NWk666:Ɵ&Lhheeeyxxx{{C3X|x>::d˽FigUp'!zzzȹzb;]uq$V??<#ق`/"gLfuuu`` yGgg'3Daaپ 4 eeeFO966 oBv}K2Hff&4<2NW} D yh3V@nC^^^F QP(LJJrqq,((4EpP>>>ڦڑ`M<crr|dP?`1t!M]FYhh˗ږj=		YfDlvd;?!!!  xvۻh@7225,,
-`(]Q;=w/;<FVVV&=RzzwSS[ǈtՎlkkk! &; +xQ@>33sdd"xw&>Ddҝ ^"X8xLk4f;DWWσхF%qk0	*oQ-vflH^:O CHHHgg'</&H(Bߡ(g0'*vN>J"Ӄxp0,.jngff 111Ĥ[^Ps	J;}Qt,TVVB3oM7pmH$"W"JJJoJ	
- 37wt ᑑxAK
-eDlW`W*UϞ~__Ox?yë		vd??BL&3~-dt-4^dd$a__䚡*y"Xr
-xwwnϓBv 0xU 3[sx@ ,U0t轱} Bvwc_2׾o~=SSou\PQQlkkj9	.P(t-"45M7mn.366xoc@pP4 S5~<9ލ{e;z<oߏcuoXDwJ2<<T(//1::1>>n߈tխq}``t{ݷ\w3$#8'x~3(GkT$"4gN>B?7p{yg^{m#3SBZu[Sr KW^uuu?-[vlD+WA(꿆Saaa/_nll\b2J]^_O)gЈ۞ٮPdBx!w#쳉+žMII!75a"; BBBmbpӎ#W]V@(?_IEϐ{y{{ee ]DO''8À2IӾ'%<KÔٷ'?}=7[`[æ"CN"TVViDn؎#Ş%%% CG#UZ
-)//ｶVyDa뻲t?K$cuخTOgO>+}ǰݷ婧׮"m~~>44H.ڕֺug0t
- rVdJWss/~#WoZlgfǺSa-ۓvgH.=Z0`X*9c}|..k<b|"ihhp8`qvj/l'gmxxxv+kJM>a)֏a½+`cي]f]aXVa1	1O>47'fK`X^^^}}}stb;]I4jclL/\ðE-vqF7ccov/OO<q3va-YZ.o=ƻU%rgV;;̕#18b;}Goh쀶wUUT*g%!lyAՓO0mׂHt/8)gخV;vSa0,
-àqa6a2~KlA%u6'..յxL;N_`< , Dgff	K/m<K8U@PG<Sߏxr7
-X;v1<0EՇa|-7xJl$"WZYYi髽>l//Z@>s	B?MvhGEگ# pc8CTLwb;<1,ü0yh5<"zشFB XZZvvv-!U{d;9痐ـ@@Loi=99COyh?]]2tvؔ}{{;k%KnŰeO<&:Ur###ʴm]V/,,ddd ޛFm|{J
-EZkʷїlW~wwd;9=FRol/`LJlp]Piaaf;"Uvra]kkk@@@r24*JJ"F^u-zwf_p3{B9	vfabؾp}:\0Bӎ#W{g;MII!Oʦ&N-oB[@	[ǖ:c{*|+Ca2q{{?VSFoVUbS)Jlp ɓFhqvv>>>iiiΥT[!Νù\#Wlpu܅7&6=NM%mC~8nɴdXFuRtmߴLLLaf~xRzfP2}}v=].'A8@t=~".Q<|0x!Lf,vvٮ}ɺ@ 랕F X^yfk*oZ_z	1v\7lwqہ̋ĹT?ٮ[|^y
-2(*vrrXXX0Zl"Uwv[B1>>oSکRItpۀP fQǢT\'lײ=mkߛhi!W3?௾X7AWjjj裏i;`U|>+//O(ҁ|>~
-1']c/civ1%ϮwG%?-ڳVVVLvN֝>gfpJG!vLH v4ӎvhMMAAĝo:_	bY3]mL*Alᔖu/)){ٟ &iw&<	%p^^aFv؞;Mnt#fĳᇉI"OwwH݈ir/^7;c;{˗ip"1|{ -(]??b07ƘD9{zn&r.=c/K8LC_XXHם;f;NLԬgvUb11
-  D@ O"H-( c۝=2z'6"(,$:399xGbTCw#Ҵx<p;'N0~ӎ#WwvҺEFFѡ[5
-`< @do[Z⎎D'P*eʝFlyg0]w/._	i>Lp;tݰZw6^WWGqZ1Ex(ѻn˵t`{rr杳^Fcm'$$=ztzz$!Uwvrǌn??8r};	% hJF~lH+
-0O71[Bl`N 45NN,EӞ
-`O;)v.َoZv`{bb"ͦu7AQN))Yl*"E.tRxxD"1NWQvL&el݃ۻlFlL{NNΩSLhvCHQijjrqqIOO_]]EݰSSvgoc]R*d+jͺumvgg琐>ol5骻g;ibcc===@JlHGFRAJF~c]V oߝr;:suBgNuj\ʍ9l.ց5t%lǵֽ177BݨPKżٱ޾DNM*`ii	=-Mlg(͈0tO53"M託W``m/Bl(d;˗/@uWJVz2b}+F<%_WJWF[B\~z!E&ESv`[ZZ^ٮ\cO}_2xCPB8ǨN.DzEmmNWQv|Ӻ{9TVF|y>6,Wo+͉ٓާ|rcGNIZ(E薞#ۥ->vs+*+z{#5QƂ}}}M.*jٮV Ρq
-R$/91/::ʖ5
-AWes\][q;g2Br;8 6? 3B
-
-HF*ɶ*ϯppp(--5JۅNWQvH$*++P?BX,=K+ݲڴlW
-f$xYXa@4|3JJrl7Ǜ>W3Fm;}bb"<<grrT+mb;]E!IAxCC=kɩp/Kl풥T_NHTXa5MH)g-O{_z鍏,m#b:GgJc	KMMcAAc
-uuu*	Ζ|p';f47Wu#bJ]33uR̙k	poxG$[J'ҴOMMőLhv!U`;xQOOOr_yJtEnVp)+̺>9[ZZllҵ
-)w51:Vz,yNyTA ClM59)4v}Hz$E](\*8YayyyvvvRD9G2D7ˏ>r]!T$̺QM9]WrRP(e298̉b/>sFX
-ܬɧR;;RtgE*UήNL|n,*T4##\.ښ)66n~	j+5HYt<)>ibT@޵ϭRV2B77XY9FEOqTfWf3챡T^>uRYgֻ0^;.ػ&Xss*TӞ٦1c<00gmZY<36̭ΰK\ڧVM.Od~_j}/Xoyςs*G }(c{cc]``B] Lo>JODSuSFBJ`Pg#g3)˻ߢtwOWTt'99egWvvN>wS CzdQO.)mivuMYZz2\Z{[^pIkk(u<aw万GGl(@w̾}b{SSSBBꪈ뾈Y`o7|Vac|M\<3 >>ullj*MaCC̾YdQGOsttsl՟hjfii_Uո3,ow.ONԦ[?kosމUӋ>`sVV2G֬E*iq9<2:.jSh7R_mll;lܭ
-v,uY$Z'i4닋<%i`e2yWWMjj
-ߘsz
-sҋ[<RƙNY=*uPRE)ۛ99E++\
-$FPTZl|>ǅR?R=1$G_D*bL5RE*%J;;;oVSIWm΁KU۳Z>_G6#d>uh^|9ֶ^,Rn"n5ͻZ%|._(+trO6	%'*+,.maخQ)`WWOoO$pY-9ٹyUm+R Jn!]SSju7Bl}dzf1ѩM%D*;s3sַ/KM&X%rY3}ݟs_H"aNx<ܳήnM]CVeS.JloshM}`;/aK~Hgx_?Pm{ώ:r^Q9cqK/3y.%UԽ6GK	*q=vѣ<m_:20WxW_~_Wlܪj[?].v^Msxcǎ=zSgkǦ;_?w̺!PPJi'Qї"Ο?u>#
-Ƈlw~/O??Y`'ǇFN{70rI}C3rQQoEEX,6t(b;]E}'?)'އ^y.}tf-;2*"4",̑7?;v.<R)?o÷z|'13PvgaԀ{H'lu<y9*YLvR:7PYW\g~_9?VfggSCmIvκFq(XGKdQQQ3NWlgOt8\«ZέWٳɹم9FKJЅ?7|QXWD̉ҊX?7㫦x\LА_oYx(g{}}ץӗLld,1NI)78
-Q
-N/JU׆5t3qW{R`;9ZRR5BlnOR0kyKZUﲶ+5ty	C~W%;8m:+V';;^1)K>x6M}ZYٜ<|ⳣ^1\]i~]XВx(2*)>	K1Q%Ul_ce,F2<8/:::44thh6Dln`F.)x1$gjE֬kT2pyq$K˜.ґLgx8»G=JgV%ī*1ou~|(!/Ͻsl0?wOy'Jx唙gB2	s9etVWṄQ+Vꊒ͏[q]K
-MgHr+**9m	b;]u=_SVUKBZ!aOWZzzFtL7Nm YupGqӤ8y]&`eD|ܳ{壜BS<ƴ_xȁ?=I]RIƛ
-NƶMq6 oRPS3Qm<j9^b}hYˠiViS*eBl}M%%ۙ
-Lm[*դgu$Y/sꟑ(zv\n+?y]hH;qy].8/8LLL(ҩ(g{mm>=`"_6九>i=>L;9ɑ~yZ!\e2+s, R/
-AI%uub;_Auu5ܕC׈J!U](y۟6-n筑me`"V]tمଚ9|/ѮXb\Ͻ{:aD '_RHf-W>8q* (	\3{宲3'<s"B!+T2Xkف*G9jr%)hā`#%1pITbbbPPPWWL;N_m]]N>u{TмD5S0\DPuK)uJ)J"5
-Jwi93/КkLZU	"}7yKܤE9kjjmlBlN[;ND8u>,f<;98"V%8x68gND, j՚f.Wzc]$׃iZZZY"U[lwrPE6%"d#8^r!ߴ9puOX(C>QPv2y%]~qfN[;:d2C_=m;F^v=}mxikQhQڽ(s?zDtnDsj9YQrO/6OVΦ_fRBl韛=zĥʮeLCZ)liz0'3+=9ѓg²f3}U)A.#,Ѻj9Plvx;6MkV)EEY9yٱaz筋ayu^^/_>KF+1/;(1YO9핐:,1m?=Z5P+sC9^NvK[3jp2*G;t+ s)U)!Riss3=--maa~Cl6پ8Se20'oKHb<].<qؑffቭ#B1o$᜕oLˌ`])eĹ8yO4א]hJq4?efv#s?
-P(l&^TT875ZZ[R54RTM㾩uLęe,>w&Zkf$'V$
-JNՅML&Pϯ-Mvj񑮎ޚj8Zq51%%JYPP)s5q6֗D4;<×*7_ZԔ%%%%e5pR3**b!B^
-J|M&])Tjmfڊ}}:Y-hc}+,]+?2CJ;.ո\ŸPH	dd̤%.btmHH91rP$91aQ9eC[@B65	H*'I ^hee%55{ccJ5" ̂ɼC}b횭md.,ַ4qnAkK{DFJE"Յ99xn.^V׷ȞLOihh6gBlvel8Sd{ysOϴHK6_rN//냄"2+;zH4H7<*2Vlv(. Ĳ5G(*T&}DZ',<^W{/H>ذQvEE:9%LOcg/
-ڕ;H;Q)x"D~#aڵ-jbJbMkD*."w%-:!Pޥ#_#MPp	2>>'%}~?$D76zgϞW.^]k!Uw{ߚ{IO?¿ko	OOwIlԲ< CBǿ-1lhoࡇy$W֌J%-#7%MJzzz!00Wܷ4gh<@$3̢crBn_RblX#-B011Dixb;]e ,zR57KӦH:0T3Gtΐ}H{^aeelhUb_"Z`bX8M<+ rqӽ+,o~s1	#}?b
-ٛ(g{y9j.#g6BA1\0?qKKbğ^ٮRƏ`׫1r0LMկNᣣ ~j=1}v4[ǰqǰ _ןxOO';NW	^\YqMi[ЦlӟGQ25<Ȅ	 {ht	wvf"ð+fa%i'?$o0It^6]c,y&8EtvKK`{	k>&FPn$<x}=1kFBlv2&Hms쁁fS6n~--DfnD9KK,-|)_i/tBD`f&Χat^la֝m;ij? }7:fFX?zb0/<?C!0g2}%T
-+ۅBb~=H>-auҗXzMUvh6NM#Uڑ}iC֖XD#!Uze;;:NZ<ǰS܂>>DwAt&v
-g087[Zq@c^x<>2b+Rt^پv|-&7opCٷwr@jE9KJZX>nv)cXi}p$Wvb;i1Cb7РFl߃t`{EE/6U@LO..7Qc_#]4b;]Ws/Ӛv-K>D9ۯ\1}Spn1qtXjPKE2	{,5*
-oV7M.`{\1Enۯ ++e.s wإ<(/*]&+*N2׿)D9ۋ/]j2mK0?mWB,hl$i$vJkFG-nfA#g6vi/EEE.TW7& `ydpMC?	1;6Ff#b;]=lbw{iW:8'=r[LPs.OM'"~=FI,*}o#x/.FR(ܺE(4eӃ=KX=> q➅cb;]oՄFWB$82KGVg;T^($}ek_l
-7I[^NlCJ;kNWlMc#~ Y2Gۛ(g{~~>M(6C/wbW#i 2z ++xVHկ(Lr噛[յD&v\
-|64!y6CĞ~SS;qb;]oیx"x̂o/¾/ZwDkt  33QJ'Nq:|(o?G9dy{.v l73K<CKY!IF,D%;E9sss/\IH$xg'IS713#\}o/1OClv|[ IYￏ?NlV*ݑ(g{NNVl'{e2bf#4${zc^rNWdfA@fA*ABAZD'{/dD9۳퍍]b1ؾ%r+(@{fp2۷DBR	,H1	swYY[65u#LtَY[47#Mtb;-E-effjރ@3!Ul "Ltb;-E-!.X"o)MA
-m(b;]el<HmlMqZ/^Bl.R&f&'g"Ƥ2ik4*L*sW9<DV@uJ)U._ QFj:--ܺQIKW|mϟ6q-n)M+*ffM25^^]7͗*ֵP)셉>P1+@aMkk"VeՁ֫nÃ7;mZAlLlq:%'y6,mMu;_^b~[vcզteZTK7hW9s}ٗO\I}}muyqe7G0XClLʵ`>)M)뺊:[tkK~7R*v۶6vJC/;t#*|.ODH!eF--Nd2*hr,0備WnP(RRR--m++ǎڸ%4/85 U&vhB]:O];̥Rg=|3Rr<%%.`_]l.;qrED6YYt鲝JS޲vB*Pb;5lONNr@l'pf*/|z&WT!UldII֎턠](^*M{!*aF׬iBli)j$))>oyg>9d;K.KU#R)vljeJRnk~Ms5I<KV$~+UH e;BU4,1*wM\3LkD-%Ib"ݥ}ƺZ&
-<}SVe`k͛<RT>$#	}]#}EI~X4pk*Zse'ϙYV
-MOsQD;;v=LKGffH_hL**eF%c4sv5jO$sRO|ǿ~sZqDiRwWb8!!}K⥩ւxf<hf8L)]8ܘqG9q-J(G(祺_8~#'ΜsN)hb#ߩD"Q||[G"5]Sˤ^Kd*mןkv{BlLvJT(rORk6;~Е֗eP(wppDlNo߮V 	!Uv[Z`b;NW!R:`{gg0" ̈́NW!RԲ9;{uu!Mtb;-E-۹\nLL+b;NW!RԲDGǸtw Ltb;-E-WWW}'v
-ˑQ== 4b;]NKQv6N?!Ul_ZZ|9;@3!Ul_\\	Fl*vZZ3~~!}}c 4b;]NKQp0v	Ble\HHX@@x8" ̈́NW!RԲ}vv6$$4((~Bli)j>==900@3!Ul
-
-
-	Fl*vZZONNL"Ltb;-E-c&v
-cccCCS 4b;]NKQv044@3!UlJFl*vZZĤ Ltb;-E-}FFfh&v
-}}}މs 4b;]NKQnwwϔcfBli)j[<7^[S8j#f2}t@/.wCWG	9K<==BX;'t**FO>"?YRrNЊ*777{xx444oCAB3m|.CWj.^VVux/}K{vM}E޾v:n0nخT*9Z셅&ұn_kz !!!Mwv$$$$$S@H
-endstream
-endobj
-7 0 obj
-   60522
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000061210 00000 n 
-0000000151 00000 n 
-0000000015 00000 n 
-0000000130 00000 n 
-0000000451 00000 n 
-0000000251 00000 n 
-0000061186 00000 n 
-0000061275 00000 n 
-0000061402 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-61454
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/Dumbbell.png ns-3.20/src/netanim/doc/figures/Dumbbell.png
--- ns-3.19/src/netanim/doc/figures/Dumbbell.png	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/netanim/doc/figures/Dumbbell.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,235 +0,0 @@
-PNG
-
-   IHDR       DH   bKGD       IDATxs[W'}#pMݲӹTVUOUTWEOLtC<L	<:S1=ё5]UYNLI}&.NpA v(ٖ%zpB%p8 R]} B;!T!
-wBBR(	!
-QBHp'*DN!UB;!T!
-wBBR1_)==x0rvcyUpbQ(|U)UUՍFI蓭eX⽄:2rΝgΜq(AOB,$IojSJLl5Ѵ},pnO[0--x iҷOM)&6'l$ps{G[*JR-Q[,FAJp76R;ɤA,sBI`8Ya{afv.D?47cib~ceL*6ut7m&/j{)@Sc7FwmMc 8约ׇn~ɥ۱Tn?]`(8^IL$!I,K@UB׹$I_94A:WU{otwV]1>Fgl[_~x
-p5Xqei|p/95ܕld	@[]^'[1+~uNRpuV_a#^=!/׵Tbye)*vb}}hj>yͣ1iuZPNw.ߛ?W5A+4+sdsYC.w7|˗]M΋rk\_l$C5-'^#if6[l,|PF;lrmfz2!ռGy|t%薍l_%$y)Z爐Y[#mY[\o( 
-4Cd$QcI`a[ֺƀnlN %U&cLoN7W;/ܻs(h~w
-jFave5-6at*) Jtr#3AM6m.ӈ|*-NpL%I%_\J䃑"3s;ãWm>d{qZIƳ:Y!LJ*抰p(jAIL6ӹ\T~kNTl$dver%:yIBy;Z~AR+񳏯	Z\S\>$(ILfTXTi4WV:LdJIQU5约c`c"ZRJA!/G?x1:V ]/fgVfvRB/Aʹk*<11bAQ44+B20ˢh3&0	"D!1f1M%ǣÓ)<w$ d܇ׯY947ycAD098dQpY\IVdBQ5Sd1ɻ/eU#7ҥ\;P(ZbSjfi|lti:T+'dqMV.󷶖cl	pgLvt1Wt%\:-&Þ+BRsr;,&lxbd<81aTY^Z~b4N4_[m5Sxy>s%jX,UQtMQ
-yU)uWW6xj꜖u`rSwV#gPXLŻW\V$[gs]u_o[ݹ9VKw&"V\t\V(21]I/MNgU)OƦ:èŗ_qtږWs.|cW,AVVfomOog?k,X/a΃gG1kZ94?=}UO˥73;iiuP6~WcYp'jl1siYkB=gN.,N?%aԜwVOsDLV k"G#g_]$RkqdmgMۛzߍ5;uEZ{@DxDF`n;{"g6)DuնZ6xgj?g<s::V ΕaFd54il0d!W*p&f_8b).F	'%aF]fLz HvOM'RRt@l$JA5e6u*l4e Q6Sތ_r:4kl%s% %aLE5Ycd0Id03쨉3BvCKATWjb-krDo(Fݖ vG7*d64:uLdLùB)Le(̱B^c`h4WjBHp'*DN!UB;!T!
-wBB{
-wGB*^wbL	!P[B;!T!
-wBBR(	!
-QBHksфHB!T!jBHp'*DN!UB;!T;͘!pgBH!T!
-wBBR(	!
-QBHp'*pIRIr'*DN!UB;!T!
-wBB
-wZ9B*^Ý&
-BmBBR(	!
-QBHp'*DN!UBО½<ɝ3LR!r'*DN!UB;!T!
-wBBw0C!aNBH%!T!
-wBBR(	!
-QBHWDHB{wh;!TjBHp'*DN!UB;!T;!rclB!2R(	!
-QBHp'*DN!UBmM!U%*DmBBR(	!
-QBHp'*DN!Uh_3CBH^lCUϣXc0a2AhV?!?B"8׋qXý67ck~?~Cy[UE&XH$NslzN'DFv½\SX[(nR)(
- 2\.	tw#L,U( 8nR)J  ˰"Ѹ!G>9q2Ǳ^oV͔|G>?/_b|++^oQD 	9L&0)ߟC 
-LLwBӾ\ְL}v/p	E|	_0>\lkkXX@:B)ٟ}bzܓ7VUloct fX,hj,%2nlE˿`h_if~XA]DaqxW>58G6I?[LB_R!LwO06dP@4'\T!Msb33|SSf}JqT
-ø|O$ 4ܺtzOTc,-AQ(ߟ;;0Ẏ-`d$<<Cadn!_f嗘@>O#y8^}ߣR	()H-u9VWq674w 05G4ۈF[@Uanľ5BUÑv)c1Xɿ	֐>$Ҩ*w<4!p#6'^9r@ddRiJ%,.bk{F E<B2nO^o{ٹ>
-$]ב @Jc< $klo..F>*
-~L>O	S
-$q'Ut`L Oh1;(h `=_P[(0 QfycǞ2-" ϸJ#8iyvi	80	ld+!Et~wr>p0>Ȫ+p la$ (<~)p8byJHE$BpK
-,A$]|wLǊW[.!`@SGY;,{zM~ܟ Bhn~Z@@,Ԡ&<bB*,pQ}Xj੫>JnG T ˨CW'.1 hz2ANAB'pӃP\@
-@z2NF0sh*wQχD"Ok r.p8с~xt6v 
-,x6.2áyOՊ.>pwV ; 7؈cAwB`@[ΜAsn4fy  5SNwSCg(FwCIFuNSiB׋3g07RROI^.y>pM厇F8{K?a$I>ɓ;&A}ٳ>_Fy+M&x-F#%srh*w vOb[X^F E]@Mb2-K͑ӧz|Aál/,XJvM3(/$e200_
-'O0;N	xP_1 C. 6ԄB<j.za#IT\Tsbf[z]`c*66ɀ ۽;q=ɓhl&'13DC[YUǗ[D 	y:hHf77M--ӘAk+ЀZX,N+c"A"lv)^omX_*/,,A,$I8|>jmm?}2ZZpf^XbʂQL3f3ݞ;cL(Zƥh4Dv;<drffFvF#G#Q9ā$n$I`0D`0p8x'1岽X,FэTT?c1t:M&榾	9Lvvv&''A+c,D"F!OR*kkkDjp*Ƙhhh0LKKKXwB9ٙ$t#"q}Fc(YYYF555sR*
-EE՘ (
-t-Jι(uuuHG;sT,)GKn,ɒ,}'cLU__V6c69׋XF;Nuxj5&ϏkzJ!4=ϫg1&&wMُ}|2Lp8GQ'14şxntqq4u$VMMMᖖ=]+/t}4 F[ϩ7i3"}ar-gk7.޻#M5FHg9$8\nddDQ(	l 322Wx,S-}EU݂^
-g3LPnnnx.WC=f&z<3MOLLm%,?vͫZ6|kzRپ_&I뭯㋋>cj^	6~T[â\r@ p 7DZUȵRfi0t6m~Ul'
-۪v:EANj1ìY҂;wBvt vR&41jۛj&f+מT$WWWW(Ǘ&'3|g;_yglBos[$!Մs^(dWWW 8.׵\v*e&cl4˗;3uaoZ3sGTιiX޽{H`0\:1`j1ogKsj1]5v{[}[I&,|Qw{ݳ5NE\Ura7ETB033oAZZO<Uh{9r9d43Xb+U]}o=}5h&; 濼0ST]ؘomm\ɧF}5vLսu[[\Τs9'ڭA,'6Sp]Y?}6:):ݵ UJWW l*6>=PM QF@TIyWtuaj
-l2qcmG5#^[hrKKvhi;FQT6y"qϡlt5\I),XhYt'p+004DJlg[W"Ey MZV<skQ@O*Tl_\\\[[;~xMM $SCCT2a~
-=ntussŘʥb{o)=łdrDXgy/hJ쉞&Dg+Pd29>>nZ[[m6ہLțuwhuc&10w4MRUq_cd˚{LEQxsy屷DX"IQGB!Y"	huCnVCxFw7 n7.n溺T,[]S?}Ss+ R8Tjjj`09¨ܟr~FFM&\o$\bdp9{wՔ֝>$s^*\{{{mm-}ʝwBb|7n dtciXR
-LA7y><ae>!?Plt:A8
-a10` U:.]
-o>Blq\"@a_ǁT$UU7@
-)~?E{;f d027Q(spA2F'\9yln#蠞;(sy&.Jn@o=c4kk8;$ovf̯n4C>Tr>33
-F>"'V.}>& d{oX,1A`sԱVLDR.뚦:=yEt:=;;=Os뚪j^o^Vqx<*>;cxL8wji=U9kj!N&r4MؘMMMr-S8j1IbTPӴYd G$YLWbd&ZsiaR2hZi{kulxzh1B^1\n~~>L~Q+l\jc~|k׮];6K2hT	LM!ce=Nχ1huu^qjnyy9V˅[.ZIhSDs])D'}WqMhE/N؍}ܫ7$	 NBc#;|##(u#&c穳ic?_^M*r}[s4ΒWˣI2Dy,b;R*KRʧs3ξ~§Kw߅(v1    IDATA͆.?$4DklIx߱x8=P5Iyhv{KKjݽpuMg٢n0ߎosno?~l+5>9wE8kaj(Z=] ŋկrA~fZzkufth1O9qD19۽k]qTrٞh<
-B \WsۛSc3]rv)j}G'Ʈ|ye;]U5sON7T\; A0;?GWG؃7}<TeZ!/(0MFCuUbi577g4v;*Jͅ[/GY].P;%%u}ccWf+DA-uJfN#EMovF ,>PG/ɭ\2za$Ja{sn&2*I^BQ___WWWdt%IGN?Ve6NnS*Bec[fSi(Nck
-2nxp8`6C˳_q$vfgq"pU
-v;dYuKǖgo]6-M!S[Vz'$Y#Hl'tM8+j!jh[sU].}>a3*/.bewvDǯ.䜣X15U$(!p:a69]$	uux]\U Hq<}NgyAXL^r"1-575zʝ5hqW"xeIbquuu}}=666JvsNb+)ra\%0Wh7ѡ[4cvPLoRPwwީq׏m&1;+Wp׭QݎnΝCg'}+yw:qA,U`lWu7n_5t5ٞlLyzؑMh1QN^"]S⢢(HTRy!0zwxb6^Lކְbyl}9mK+h.M*J2
-уv&)o A'1_+~[,, m㘞q(lEB/p&	 HxmL8rboR<(o~럾Fǘ-ޛjFMRJJ hnns97'|c9x~3oX.M,W]ѷ*)'9@	K:Ο$>?i?Sc@?ro~^f? p8*yيrӃ+Wvo!OLUBz;SsͭzT~fC+7E+w۷TUmiiz/Rq,hJ:`:|&n޺89ciBv){u@!9r9,.㏡(GSDW`<ux~5T~?~2cCP_>8Οp:!Kn<f5fY|<zk&&Tz0QW*bnjj2|Os5/ƀR面hnl>bWkK^QgF.%uji [qKJX\g?PA.[.s9ܿ05d/+0?qr;T}|q.C:8`yZ;ۂ.i}fF⪯+Fz\\.XSS8^J_^ed20A)(hkkiٕLt=lK@	 @(*
-QwowʜU!9)Dׯch^!t	KK&c0|  8G,
-MCyw\WgG/W=qfQSU5EQj6_s΋bR-´L5M>;61|0;{.˽?F:qWQ`}}1ܹSfDc\nat, p_7g^_/_ZjPq6J=H%zLX4M/D+gfϯ'Ud7Lnl e){>l{&q\»P<h(
-17T`$45Q~Cױ/7 $BOڱz,q%EQx6L<WLQrD*c/=)ٍefc}S*|qw|q#Kgt
-  =3uqc\qᾷ[ffv6?9Y,.bmmob{:۷16LI`=l1tc\WLbs~f&v̴Riw
-<Hu=,//Rp8\!˄1ho;_߾6rTFtD4+^soczVgeof(H$04bBmWwT2v<4GYl XX؀@QNn$ҹ\6_qkr<WP+"LX45͕ cd|فZʽ;sEObl'xϬwJTP尴|.u<rJ6'~U*
-66x^]n~pxwL*15;`7t7ۊ#t+>&7yvgW
-;9*dV8M9c$KAdڮe\At:jle$VT݈lB>{^tT:  0=ba{cje9S*q:;@eo}K#c]6Qɦ=vo_u7ˠfsh|e	r1p!b|t0rw~ν;N6)rJs6iS):P PN '{T( Q`	XzH:!#z{qu$u`v [ݭ~-ۧWsEsAִ\f7%Ksҵ;÷~('fPX^^N$zcιkJIQJ$nvζdt3=q\fA7z*(0>GAyKK}p@^rL&TıcXYA*;qtub(1[CflcqiXo|yYs`K3&(亮$bss[J!K3\P(lf'$wWoosc0'聸10`Qpl(Cw@eUL9pb  $yxx^*v{mܼjniZ!p#n.dJEZzZZ"{S^DkT*-//566Kݾsp]uLrׅݻ3"fMuWTHF$ )^(`x @;phi 	Vk5  v$h| Y NQlɓ
-2r0:;.b-`|%7ᑰtg̮5X-O7;E^c}ٿ
-Bd29ojjҊs)v*KfY$ZJ'6+I.n/K[fǗdQ$qêŒٙƀy|LaTh*/o60qǁ`@)AWCA@M~bzzwQ7q~X,Lm#?9m4Ĕ#=w/ոjribU9/JPeumu]ɭύƒ},SmYT3EkrsI=\(aN¤gv ^=
-Bw~=hm0@@+`|p85 EG|v8ǋ6Ep2j5ȹ[]eYZ\ue78Db~~^&FsMC>s-̊Z&p'`͒Z0ă؃x@{at̻7a9W5mX	Y2f@JЀAVՏr$4 si[[bXX'˫=0M
-nby`x>fDQV;zn9*RUuyyyuu766tIld
-[K$_ӧzLbyk'WT&&AX[{[(<md7mn\ܜ5iA8	4 ÁB~a2}oє!|8yo#upGfO{̙IҥKkkk'Nhhh0SCĩSxkkN}෷eyKe3O0%pK-Hooo)_h9 MS
-/noǏթXg7SM%{aˏeMOOFcS05ed^
-GYF$߇];<tbA_y++z
-bFw\UyT&pݢ(VrOQ>ON8 <ǷbdtڎxU%>s]Mv2O/jRUuii)_s Za3m{4t^`zjec1]鵈P62Tf
-bM}@owe3 k[L&gffםNgɓ݂vBO$	0>'O՚?A("O~2'?FV_7ސ{uHgtttjjx'ו|].:˗\;;<~NeZvcrhUP*>4H*Tl/JOuO>;zdm)ud{,jNakb|yvYΆh̲ۧ}mmm|||zzX,ՅBv]9gn(
-OX~ڦ?9~k\:	lKN{;~K:.^"R)h&c&k1xL@$q8^wddΝ;[[[HrUtn4'N`jjwhݹÏ5j2m8e{M{.>>yG-T`UU[^^^^^|fs]&_'L7}5AYJũSlⲘv_l6|w@躞JfggGGGɓ'~hdJ\d3CbA{;Z[-\CcOkp]犢J*h	]=015\4 f3xmtujG.ghhhlllnnw9rj
-n;8v.UTb$1>s+w523&v4ntw6U)ZJdTTUSTR;s2|*x|/f]8 uxn$>O&7dt>dT6Zʩ%  Ul6{/&&.BIqXlp"ϣTC`4dB}=/𓟠0^!~3zv뺮z6[R&SBxo#c`baMl'Q,Bt"G}:hD#8hm=ϳK⭭>W{=WZ[SSXLR>?ϿJ	s*I๭廟v*g4W!.&d%YQd D`rXUD"[ Ip#dE]Kh4:7f4M&w"Q^qLވe,nov!DHDJxFHDSO<;u+Jik+1;;3?P(--}mmG02oo
-ai	R)J0v&P!y>_E	U^D08m()Dlpad$AZ4XSBkkk{{Eq͋Ea՝N0C08uuNFY-3ZQQәDScѣ]^tM*}4iQdsMmhMӿ1Xx:^sh9p%Zx+_}<>?V֟'>u響ZFk2w|4J(D"`bhBs3jCdLY6'&+BӾo<;c(Lm?$Uuvg B!l3pܿlltjjXrph4	zx<	a|\XZJ%*ZΜ1\/$5'fۢ&fI(s>n UUy>M*Wyވ y<6u=_xlM~ƞ߭gvWj}Σ>Q3ƹcM>K_<zmbZ;x?RNM]缷ȑ#>`Ùn(冻$O5M8KC,Vn7fVS㩫/޽Q(9?D,(VXgΰ!(X"!ܿoX[Cg'v0fv g׷wkq{eg#mM4%EQm6b~.y.W6n7=#l6[)3GCNZs]WbP &Y,eKlzdkٌwɨyTjԷZCuᰛ7CkJVVݻ;55Ν;e;^Xl{ &ZEZGׯ_ti~~>u\$UDI}},b1l~ݹ>_?-kndփٙЉw}v$o뺰|9u.|]|躾u8MMM]<1Zڎ-.Esjn{;@cgrԙFjk?]֚n1{|uP"3h7opEQ_|E:>yɓ'jd{ڬGb榦&v?3g444r0("ɓ{u`pwUsLȕϥБNnkY(rh4dáX,SrkJn}aw`tPs	WLK/N׺m.leNְ$}"| -,,ܺukvvpkG	rŮ\UUcsEn|۷ooootww{<cp8ۋ>,,0=۷wE0+ĽO>wXLz;CBt"6Gt\v?rιP3RD*˺=iGo($FD"T
-(T*sNRIW 	hI*pN۵a҈eQ\    IDATq`r˥G
-{r<2ͅ1QӠnNL߹y`SJqnص/M+mESW}kgkI%ȇp8<;;;==ŜNg[[[uuZ~5t7Cu?A$A$E)U6r7nD"6. 6ى1b(c` 'OdEűNB:N6k@_?̲f(ARG4QuX,VSScZ}(ϱDt}#-Q)UH&|Avßwi݉:M+XNfiĲEDbM{RdBTbyd%Fq8GB.	*FYX,v8qEEŋ\F{zz<\.?rc
-b1Ә  HG&s`B,#/GԝR_\Z]~<7*Mjm"_ʅ3_jzI'X)+(j^JCw&8jQ/~npxHqòl"X[[3LovCCR)B.FvIdTNYpD2\1Zo1LE_߽uVAF(J&Z۷o_zu~~kkkSs[rhn7zz05T
-vvp:N  (ZeқKK0Rck۹cf>LɁ-ֲl,c,F+++fPsB|{ea
-+UV#,XQcfz4]7-EƦ3'[lJQFHDћ7orn&^J~[r܇}NkE!8]8L7?P%~ܥ|3JvٳFqxxŋKKK/pߏx|o**`4$	|f^
-5n#HhBR1óOu9PhyyY$nZ,ʢX+d%2㟯oj]}5Ak:5HJh_ 1{?w200際M&Ӂ؟|28t}[Oq78?:Lzڢ:GԸ4{ν.֋s>q//yiͦhjݻw}>_2looojjrL<A@,׋.LN"bk7o	AJ p|h`r4(5f:+!+,ί3^.e̫˲;;;Nj
-yC<c)pZuu3d"Z-")	UڄqWObD&&&i{{{mmJzEqljk=V[Ν;.	V8.͞B>t I3J\9f22'-ˏ;r]644tڵݶ6!Hb#e	:;qT
-{A)%"uUc?_jfS2SùNP_ec2AZg_gs"+T*ȼ\ӱkJ6[.IS3-W)|^199Y(zzzvg B&] 9A.sdQvxT$V<CJ
--/˿ ŋ.]ZZZJ&ᙈ$d2TWsOҝ籽kװ!#sع[-1fMhsmf3nTW^FSt}ކ2ǭ,A,a}HTgRt&_8<$lPgcR{ڹzut58>8zohb#'AyOR˗.]/	O>裊aJ^@fii~znnzn9I,J	"9Jhp}ntΕ_Mf^L|EQuuu7344488N>ѡyzzp6AdH18IP*AbG',cl'_;UЪt\"I$y]IRKKKy^m75<[*eٿIn$6qu,SXfJ+1X86G_]`->ŉcnzb?P,ckX}w:;;HG6]/su֟VURؓ9R$Ãc̘?jӅBz#IR*:NHj`ggU(4M?{y	ى㰵W	AJo}p4EsDoq9N^!?44TzBDk"|[[[fn;s\!Xsd>CDW?ogbɨ^aWLJZilHSj'PYjkZ	E<ؼe\nee͛>b455544FHt$1x%g9^dhhG&dGвh61	Лotk`xXWL06MTt@ L&#H}}he@Q0ӃB{ݻ )7 |1b&11W7Outg8TkM*Z\\*
-n[*LO6|>8>tݵPLu5镡6SEgeQtQ\ԙJYFeNLLb1uرjRylf}in==&Wl}Y!Պ;PB@P1+\#>|=$I궶6<00p޽7o
-NS&	?­BFbnXkkGw7N hBn7ov"8KdrEq/=xAo2Nj=ygѭ{^?O7K3*:
- [
-Ok[M"Ibǋɓ'O<i2#_H,Mwngwە͝v]#>z'ygb%hJMFQf{w***._|ƍp8|qaXQL&:D"(oᇰXƫP3~3?>J^*g#>y!Jl6[Y5tOX-%#(ҙNVe;{֪&lID&	 <->~N,f( u6})L&~__߭[?JDrp|**2`d#W{Z{#[bG@[Q/IlL%7o"ʧv$$ILV[[T*'&&/^b2M<A@.GCڰp66ñ96\wuf}Wޖ*Q%fI+# y.R)rd2ُV@gNR)ND6[LQ6XuҪ7ܝTy/RF  /fkYG[}\.D(?!%pT5[&$-iN*>!ѣiyndK|S?C$
-<hGFF;::<Jt*^il8yEӸy?V!$R>퟾{ҭSI$s-
-#	26`jt@5J\":51zkpyuTZ7Yp:	tϞ\*<32VKM6TKlR;w|>RkX!22RGI-z?| (Z2X5u"K2ʮ'lj6[ Hdj`Y]]D"B/`6Zar9Z[҂5@Pr9yokI(MfֶgmKk]*D<*nB8抹x2kmR~g{cbt:jޑ{wwM=g[L*itKGkA2NLL'I{JT#:-ux=Sۑ8XU/ɗZ	 -O|PvX"XA IRT۷o
-Qv-J_"c8}($9whD2g)RX[\61;'uJRLŅVyQ,VZZ-M?mfR>ܾ{k1!?;mr+w>vlnmNwW-yP2m#ARw5.v|###333bԩS?] Rh[Ե%D1#zHR
-)	 hFL3C$IL.x<h4Q]]j_R=\,6X]/д @4Лe<R1)ëw.}q{6fkm|.̠8
-ue=B2,..J%V'[*
-BPȳl5fizvqN4w4!H1oqqqqdddaa;}0zO Hﳣs̞GϲNNN^r%
-555k>x$4`Yfz85usc`P%=AM\*<5B!*lٰ*#sMI-rucseeekkvt:X$Sr訷GwjHD
-o]~2Mksc6^.;e߬sf8qΝknnh\P}HPx^ibbBȲvvvz<Z_o|%A@@SAbqbDEEN{p|)89Vkk;uL+:ܶ?َ,Rrqht~~ JJ5mܾ=AOux+V3KaQHe0[#5[{<kSkۑHeWtMD"2::FckkkCC˒;}58$WVZ6óǎϲ>(y᰷޻wS<4[+V*,	3錤YjL3J)ϱ,2e}>_eengvb<< H34iw7x*KKM.BF$GHr%(R+NK|.~T}!߻wohh(uuuyz=9Td2YCC`P###w
-i^\.i $ӧNFdF*&\!fD*˱ϱ\>]Y_ތֵ4*ꨇB=/..rW_ߠV9el.IVVintWΚJ\c)-n$ՌR44֊wD3"I==='O4/O0zB zܹs.k```ii)	_m%EQvc||^TňJmՙ_e\ܿ,F֖eR4*EP,WWW^yQ>ϲb^R$J[]]Yj
-ʽA,XNyFiR~XN NNNB!vĉʧQ>(s\ Je]]J\&áP(sXAHǏONNϻ;)ә<knnw|bʴ'byinqeqQ]W^r2Ob\NV㏳ fSk3+b("F<5浱ehr"$ƓowW$4ICU.ŎL&LOO jiiZ/w%hV˼0`ۭRFD(쬮h4b#(VWW544(
-a +m-g37:>>FӠSK/m{*ut,JnwbxqV!_wl*F1+FcsUeU݁Z[5C>L偁oۻjjjt:ݑ {Mx?DP6
-`0ONN^xVUX!B.?fZ--dʒe&3U82fϗ^J$9}N}{lj]^ZY7LXf{nl>tu4yOlڭI;'xggY6ݼyƍ4Mwttttt<ZrU_bRP(VZxIǳ$Izފz!v)<$D<jSr}QH16YE¯ff-{3f|5NIFId*N/z.53vK#'	`o|:d2I|ih4vww[^w{{ƍnZ__/
-zvPرX,J"!DY	A:,It-Mn]GXLfeeewwY<mufinufzKl<P%"I
-R&GNB{0|z|P)
-be߾k4ZANR۷rBI</^.--UWWABԨؐ۫9c6jIyp
-ZmUU|0l/sV4\NB"4N*-V"缾/w:>>>660̩SlX\ُGP8h!DBd2h4Vu````` ={V<dthovuuno#DJcg;)Zwۛ\F1M׃|>}>1K<ˁ1M9YrوTW]s_;|}RibxXMӋ~RSSٳgt83TBFWVutt7MOOϛo)FwAvxxxeeB%)YwPFfp467WYb,G_x8.|?dNI6Y଼XcMUT+q4JAaH$rڵ~RvD|A)71=BR(F(:}tssD"yMMMëfyygMel˳DT(b9쿿
-5w}!@~RlώwI獏<Ս^ZhdD:F){0y4ܼy3zv!_.v<ʔS XJHd4e2h\\\rN{{l>t^P#|UUU2؃d2^:\6\)WKZ6(T*^L}3	mS]YmooTR!	2Y4<A$Wpi(ݭ>qF.sP¸}@ܷETZի_}U<v8bpf$-KUUjKN?B̕ґmֻR,~JGGb^ԛg[k3Cc뜺VWX[1Ξ3m^RJz)a\CCCü:E<(T?aYNgϞx??>\-&avvvuuUupWEqB6Dj|"r?Ǘ;Kiw5RR\.a&y~?&bl6gMMM:u?t:"\P$Hg?YMMͷ~??#dZ]].\)NPbjLi'YtExekkksss6#$D`f0;\h0l(.J4&THd#NW*B7nW("J)    IDATW%L!\R68rݻwC%P(555kkk.K,pܖop6'w=fe
-D6\+<Pܙ/f|7s
-M grLPj(۷14Dz.YUU%L
-?_/7'h.rMŋCP[[d:Hd-K(
-!Ha"](.XbT(|j,kjjNVKEZАB2*ZVVJh]B1ߏ/f[[<xm9]9,4 6ٿxir뵵X,v1&H~*
-D"llJw}Bd~qLH>-T_1쬰ҩNk]_QUr4L̐?W*aws|VWH(GO>h`K9,shXSYY駟׿կ~U[[+H~bH$r:ekk+hZ۲%w}o_|ŊJ\mc%8qW	WVVfgg\.ף4	^)rF|0<J,B!\#$iDBTT43~ܘV,>/qwKw[i6/92Rd2yĉ(AMQ4ERA~Ϭ,b1ܺ__Ö$	ji){~nW*r|dddzz:;v^RaC&áwvvFyPɃ+M7R*q[^^x<B@q-\waA@$ł@,.P}*<Ij6}}}hby*<'I`0qo5>A O֊P>_,sDy>N$7xCr!<7E,*IB@UN".\@w7C2/;eYD"Qeed|˗#HWWÊO
-v///ommB!FP%ADBciyX(,AKLy׾lnn...:/	|~?Ž(
-:{x=TWa@HKOYٲ
-ŉ'GƩSGM|a4nn7 M_0*uN5C4EE>wk۟#χ+Wp"T D#twhÔ}W IR&UTTD"699..0ܾr`0T(Oy6vc1n8~nwشDٺ<</Dfsuu~L
-H01˗q&HeѠ7P[eW|]DvU*0uqq1h1	ff-..lr,˖ףћ4eȗ\.777O:~8"
-&&p*  X==x-Ri9Q6Ϗ}EI^m6ggg^
-:;;V~.AJryQ*͠llM.-mD*mEyd2=5Eܹ)b/U(P_g[hoN*Wqih4L۷o{,+0Vf~٬hx+st&ς[F6/Ҧ3d>{-s8nv"14w 
-P{a0ￏPQ찿tSp!B\7L*a;T*666<B`cxط$&&|Rg_,!%b{{{qqQP	Q?|xBc*/EL4JN
-TTϣ&DrU< E"*\n4:;;N珺ØfdR)Lb}fZͥX8Pbzww;S(Z,'bq~~>555=m
-Ø7M,/!tDԄ7ӨFGy(e^$%eh4:n|||ff&<yNV?PyԯkZ˵Xd!l4VS%镹TP-ⲑJ('7TyJpx~~^(8db}7ne`s<)rI&tB&L/<'u/a4j;::fg}zY8` bj54+kƧhHŶwvs8=]p`%$n_v}~'B±fOvx-BPCCfaK#+vzH&/P9oFh{{٬s/K>k\$\.Ngٮ^z޽d2Y[[T*]Ƴ4a%V(3lDsE+ϞE7fVZȏ\koh׳{W&6'Vx*htnnN,n/	`t	}}D.*Eqf3MΜ!\.H{eM(eYV0<<<==vvv,˾h>\>	.Gd`sw;T]ӤcJi:i3;5:ZoB\]i|l+?179lݏ<ϗJp8x2owE"yܼo"RŞlX\Νvظ@T
-8$	b^O[8*Rfyllpr)J$Jbͦv#͌J<O$KsdFg$جڹU֔烟|cT1l~'J rŰ .#σ$0H@QDb~~$jZ}{
-ab_[*b a`0	|WbOV +)=qA	#D4a!{IyXnnk4x޽ٍz݉DYZQt&&֨kUQO&d*xCm/)biAyJ b|{}Մ^Re9kĲG0\	fdMp8#
-|_}Ilm= N|.fcZ͗U
-E md2`6NuG0eXXv;&vQ T*a<Vv=`*-*iRFkup.#vӅ\U&F#Y_i$}7|QU_ \@ 7n`j
-[[D,%̄Bh4mO&1:F_fg|ﴥ＃sЀLL9~xX[ pD"hPWQUE_hY005ELL E>w(0
-TVbyΡ;$
-P(xd}-.{)97M3tW"nS;)W\n~ABsb׋BK]jZz%S\I|n<
-`Y!,IkVM[Orbweܾ)f	doG!8]X^F*BaaA"ǃ%=hGq,{?+#A!R~UD8\ǎA}N:0VmiiѩeR+tFN.6A{פŕN$RVU$@HԦso+Iv6r?kdq"R{O  Ox|nwB2͇t7+W3 Jj>L[?RA|)t, _"ļI͵:}zQ74FFF8b
-J%$P(!G _*yR(3R_34JW7"O#Rdl<^ݎVm/5e#4 4 quL, ]Novb{S6]'閔pr9,,/"=K,xޟryĮ/շI ܌>ٳpTBh_-."S)|HP,B&ɓP(^c;-Q?uL0Q]U+w77YZUK$R^e^#M"\3hHG}T9< =  h-dW)8jRr޽(B1e2!(s@hޑ~~ImtN	f3>|!Ӳq?qg_k?`{$q48ݞ1yAӡ(~46fBqRʤ>oo?{̣i5Z$mF,,5Ƹ\r綁P! Ā)=lFm*bFR(<Sx,{>`YFEsKQS'r9x44@('NܞXO #]`` }}0a2=K|1܁ߏ|$s5`qn	y1<3w#9M
-uW"\(&ƔVJ`XjA8Fy l R'a!"=>>U".gIܺٽyH߅r,D3 ޞEwy	A.NoIH@elDp2R	 n^18p cwccX\DMMYt9X^N$*s詪5ƷrR^J8W^FU oR( "W${"]fjclirTW=t%ܹHc%hnno$p>$4% pj%jjq,}hmJ2@
-Us%V?Kqc3BO-|[[LB;K|}b~w=צkNrQL.mzcYS@h L0
-F9	!`1~h^WEhLV}7O5r,ۍCE|^@F8TA@ߏz AP Y(b-<VVM?816'q>2&$*Bq?Fb8gIbk/φ+,b퉩w{d # 0T,Kp[Ez\@q|-LI5ǻ;;Z+EW'jTС²{͍*A@noſYv aj:G
--"MAl3Cӱff=z
-_-syX_~╕@R[uApIkrla~nԘ]o|Uo_ꝍ3:`=ƶK 2 D!/jhl=:bbi#Q8LJ%D"xH@5~^DU2,nΒ%{ @ٓNczASQ( A2	}531T<Dm 	<ګ籶^ -ӡRߘ.Sw
-18%iJTc % i
-iZ<zXwDQb[SH%Jl4X*2dl{{'}oAeYC%VVJ-^G[8s"(|c41pH'!?9N|<^JX"χ'dԀPւs,,9X ÕK%B<,Цb<FCwWm&byJ<BBxb>t~f5LTH1ɠ"Q*dBթ])=|7KgB++?m/Z&r8z,xpZCr㉭ Axx"ŲHRTyF8д2[x:Jb"?θ=2O<q,[*J,[b	\M,tfeX*p$ÈD4q`P&*NL>f`5<ITp* 	TlRbTH7֦VRSMI#ufA~nPˁJ$&ÿ
-[^wt'eIr{ sgcgE'FouK4`cUN'|g<Ǳ|X,T<6quυsu.~x犙T4ge
-Z)ehP8_[.YCCO#_kQD3JUeuư<qe7_iD!=|X]}fp?sb4z{~ۍH:.
-)?ʧ籲W?#P<΀<R)3 M(! H<.*+a<s03 W}w6v%
-U-޹;:hzOMPheOQ4CA|akw[8M6NB!(½iܬS4o\3vt:<	\`=zNפY  `@Um"ydlV+qj>cn(
-2z|qg?T!Ė&\
-X,CKlb7&YJ75JCIJDNPk׫Ig;$)A,̉λJ!^(Iر"ц0j0[X]aT+o9ڈDp<5ŀ:;b\"@=j0ďrO$AE$E3OCFs3)Sp@|ڐ1b1t:Gb#ITp%<H|fkmv|b·Ѻ*RB嶪u^˥".vITr@15E^eIYP A$AT)>iCtZ\&A-3$VVLFM vw 琿5`VpHr x <_~LP*C VZ푌dٰtZ	ך=Υv7n_yhPbZG _HGnߘ;nFBpm*[[s=q.
-EicİCQx"RF8]FY.d'YBHPQflm=% y	PL@'p .Wb`8UJJbz/N^D"x<xtM?4(/zqh܌Uln(
-f3N@mQ<D<+$pEׅMn̐/	F^	f+eCn:~jWK"]㘛ի"BPR"Y&\[)&h@j֊ZR*x2 vwQ8Z@+,{fsk{h&<S`Y$t:}-cbn ѠǏp# |KCӣC-T2)j*꫼oWVFƬ(%CnNf-7V4ہakCCvX]E*A@̰f*(|Ý Hԁ{tCֆ'`2<A0p8z{7    IDATq#4?j*TݭaᑑP(
-*7(=KT*>A\X@]*Em-Μ}w8{0Q(= (ŹshjzWGTYtcxy`0BtVZ%̍2J۽\<Vvth+jdx,R),,gｚۺ}ϱs H*ZdY>}+t~u﹵lYYfI 0  0iJ e$0\c09RDHrZ5٫՘@Ib<G LO켏4 > + 6@X>TJerz:NžN'>MrD͛	33_HN'ܸ΁\~gw>Et6Pо3GpL'}f0_}ׯ;ldEr\iTTۧ,M]vN!-Rۨ A.SSpܾؾ?Zށl;*8U?B 7o{;5^s
-c|,f^W  +td^o?I-񉉉{r0|#\LE/ÖMSZ;\5" $|KZZ _9EJ~?ܼ	|'[1Vʇ>'kN*}hUfG~8Q.YX!E"¦b2x g
-i!a¹sGpWWR!7 7Kn܀~/iG9p:w_i!D	`(DH|O>0"0L׮]Zw
-}>ZC4GE	$0,.B,<z vxqE}}hpPB4j5Bp\N[,9qz$A]L-u+\`$2	EJBJ5Dr@,{Vβ7p6DbDӠVC0WիA"aJ)Xsͦ(ٟ]β@ R	~?\n70|D$'0`v*ՠO@.8֊ɤiZPB!DD덍~$HH|vf3|=DP,BD"P(WE@,0 PۍN8p;Ymׁa@n`/k6c'lShF>#_?ۆYݺe7jM6IVQi"ܨD vUfCu~8fk6'DΟJ((\P>h4,@.t7dڿYo:Ac"
-\YD^OZ,&œNϮlln@ AIRT*Z=???33944zJ%͟|LzA.	X]-VӬVpi߲w%|>  $Dn7|>$P*A	B!TрL"Ѿ
-BooEn~x)Z{W}{߿ҭOܻGUmO1"Hvl&F@NbIޟyR \׮ L#4Yr4P/]:PA>R*Av[|:쿛͠ lmA &RV+Jé[^R( l	Hd4R`xI<uV6=s`i~B :?Y4(Ղ\o;ޗ<A"`l"ɧto@fekuoOՂW,nHv\ޅC^XK
-X]Z*Dޑsg:M;X/yrn݂di$AA~]Aj\x<&V(Zh,$3!A~fEt8d`0H$(B5Fy(βz<^ZM< ?{:ra'8@(訯!ZzR HB[_Z?J5U(wXwKMDjJ(Ayqx&&`}iX.?| gς
-ә,ft:-nT*?$?9~yb'H,--y^Xlo.X,+|^2DR2]d[8V*n$\2뱋*{թujLkc~x<rb3Mr $?р\]Ba?wJB  ׯիV"S!T.S0͂nv<@nl+++x\J$U@VE"L&F<4n_H$BiF1:qb JWwZBq;7X|(㻹Gils>Y&?
-pQB&[0>T*p8v"|;N'dOC1?@ r9(BP"b~a(J&y<Rj#H"۫@R:ڸ}/OKdK-ĽoǁػgO9cp\ڨ$&W8r_ao;w @ >{A~&T*ejZV[z:(lT*Jj50?shd2^F"_|e.7022b4tKxۼ%Fmgcs;[jW*jo%hQi7օj]!Ghí[p$Ŏ @ܸ~n7HϯpAT*EӴPT~^BéT*z<H[HQ\.| FRSSSBahhd2̛;ۨ;5TQEsl;6*jɈ2\&m?>KB:|>?|7;`4T/wll@BE.͛0<WZd2bQכfMg!Uي-n8L*n)WŸnٜdVWWJP( 6jba{{g%y:h?"Jeooet\rPh4>y-BZR~5O@is:m626{'SCȐ_@wSQbk[Tc)3Jb_~,,VX|פ"c/Z1GWC.|ܻKK @7uA~$VWWWIl*z!Wֽ͎Hi}x9J2nllDQөh 2{"wŢ.I
-fY,h4066cZ1 Fi;>ǑVKzBi裛plk
-k_}}gv^b
-z5[/KBzR,2ЕsZ|\iqIp#%:O8!{/arsXh˗M8{v_h4ֲ٬VZbMY[{.m~ͷJ'@ sss+++QX}(2ˁ?4gUUT*ɓ߯RhQ -W')Vrչ;ZR):9qdQveޠ[}?5-B8Fvy6R7>,Hl+"(1p@ʥX4|Su
-HSW0R)jh4oV4]ՅZ<3<Ga BL&3;;rd2ͨKK:p<V$I
-B^/H4_/f^@Z,˪YyѥJoOȤG8[jT7ѩيPl5jT7E!Dֲtl	<AE&<U7]"JU&#X_Ǐo޽S;ӫΞ߇Wt?rC]3L6U6v@3&ޖt჉	8a(sssKKKkkk^W պzedK+H\()e2Y$áPH.Q8Sb$=n(@b+VTwq#K@G[^].weJ!I|I5jR$RTHJ
-+0\ئTT)+ɱf2SlZ)Nϩ.)FeXX-d¥K04f~ b"`Yjj7RTFDF^_ۮjo<oA:.d2i*HrR.Qi@ 0Ν!T*u|>c2"#XEX,2#TU2^k*_N^d!@U,F"ko,f(C}[/oeŕLj	MPiR۫
-,nVAɁX;twվA \Qs[ǡTz:dCpx?wJ:=fscccccCTSVe%KB$IFaQesX	JgϞu8I$
-	o0ZD"O<yAPxn߱\[I
-BbQ\(b#ut,y A[;XCyLٹtYVNCk_|/kٖ0z쭯.fHݱf -{޽i-b1(bل|
-'x';M׮ogςao@Jd2Y}>^?,5˒"	!IpF0L`o15n=~pn+J4666::H$^+A
-Jhf&jN=P_gu!׽㈭^Tejv|mĦҝ_}\Nm?^^^ν?<gI4:#s|\z"l!밺9("Eفeaf';Ri/No܀)͏l6Jd2dVN4AP$IDte>`p8DΞ=k4~ŋ  MF,+JN7;;׿5J]|jYÅ$o|p[VȨ&Amހ2!JԎRA[]FβΪArtv|<b퍝Pi$p`]Z,.]`R)(;ZP([p6d2P?5r}eGx|F\N$ZvG~ H#׉kevʶ8D4
-rC*6p4C`8p^կ ø\.\VgffP8V*~( z{F	+KG~)C
-ϻ6|Jp{vDp!m֪Z	DH@$r2!VKuZ@(DlH,] 2"r P@O[T*|=pp˗axܪ׽,nnn&I\Prs뻩65s8osD"\>>6ZlFVŌj_` zٳgzD<{nX䳬
-B-g.EJ
-}Ճ&T!HZ4x%ǡƎ,GVZfĂcwE8Y+7VV(nթT*\nm{=f!8ˬm
-4	@QP Z^8 Ih O?>_9
-!TVSN(awH!uc% HZ`/>{tMTĔ	5!Aʼq(@ R&''ܹ522b۟Znz~nfQ%ɣS-=XA@IR  8AK"UI	#B<ۗ[Ŧ_>=.7	}?
-zkw?OW77ʔon^d"ԪǦ<Z'W>Pϯ(G!jva4}SO##;~rPbtry2Pl?w)?]nTt>QvHnG$I(Ni}c0jYǏ?~8}}}R~#?Yjr\4ǔ9!(wFRO$&ñljfc]R	[ĝ&y8?s?yų6BH+#`'ufgw@l߻0tT
-^ou _x<^(Ȅ$*еO	m)S9<0cSqAVphzzRh00bR2j~vq;k4Re=0[y_kӉG[t\iqRz )>Z	Fe300)|k(;_W7tpNb>Q))  (ZAE"⧯jZryqqqlllmmd2;e8w^iMP(,--byDڭ$%ڂTZRt$b883"b?Xד$M&ޠ  jqP(9s&rEaAIj""DGn2AP:
-+bZWo59HFqziw7mY//u}<"Zc)3{^ܜD"|]|`x\C6j4TjkkM E2P"GI"s,$i6==|f=y B`0H$N755\.eM|[bB$8(>BނIL\^ʧk-5>La3WmDHePaygcx/~y=1u
-!w`}uuujj*0s>^OpN'V=/!=}Je PFqllk9sbߐs.A\O>68?H4QVJ劜<tza\/bbbtwp$!LvheٵT*e4v!t/4Ml62GA$0bp§~r&&&>쳙meposq2B@P4MH,HDNUO,ĒaZ"zU#Hs7>UE.DJ633Hŋ\.\P\iv+Jid2Ϸ033c۵Z@Je(YX,߮L&Dt,mv6V%[rF V6`5q<JȮEBkebLdh'%=Ii4Baeeenn.)p8ZM_'L&l6my@`ټ^o,K
-:1x+.t\X ,..nooA<9w8:Spbdb,:sB&<k3vGNGfBykclS?oRJ% A)>xrWVףh,jpRZ5    IDATkZGN<9QT~iii~~pCQF׋b|~ł}~gvS!ql!2Gl&J/u3hy9răo
-Z{Ԍ\>7cArdmM$333DB,zPx>B(FQp8g
-6r-,,R	^Tb`0::ѣ3gI |82Hq3O&'>J0r+/eWӥpȑJ|.}f&{¡z喖"HPZGVx~i<ςwF8vT*Ց#0&I,ꩩ|>
-t:6NNO8`KLWaQ
-KcZMVx_lY>M#~ݥR)NGD"At(lRrrxBnZ&;IMRQ(feelv``fd2^4hsXtQ̝  (ZRgU5PS)4U-7@	w6HL*`Wl:hXT`i	/5̔.n;s!(F޽d6e2Q).t8
-BamP(he=Y^kjXQR 5}ΙϤ*ZvK(fJ1s! 7 \㱰GL&χgt#vχaDr,^br:|/V̝ )6
-kjնPŅ'+B2kb!qbi,>88ӣ:w`Y\py%Ȼ</;޻w/c{k$
-0JRLLL̔JAǷe Bvadw$#QH	Ӊ{bqd9cIK,KILsˎsssrvnJuD/8;Gy^	0n;{^f?+G#
-
-\**J`d21~15F%ap^1[)MMķ*i4{2*
-eB*YPئWLerJ.Hb\h4ܼyd2+(h4zމ#p(J
-<>>痼ְqn6vXQ68<ۛX	<mQɅ
-)#՚U$djJ!cAfY("ȓ'Oløkz>t~G%!J^LW*G9~@Q%JH$Hr^FSVf>pQߞެ=)1⊞+WzMJƈI 3RCIQEdo5d29::hX,X4Dva\^^dCxڄir"H*٤rD"Nh"ݻw/\p8_9Nu9&=ÇM=}=>x@6oAU/$Ii?k\X,Z>sL8IEB8+J=h4PH*BgFx:IrL7s	 /(Lt:
-ZB
-/8נU\}0Y\r.S+c#hZ===NSTl6Kf3El695yOj%PRTH$[(HP휰;[Y{MXVY-2"xyZB,˖JT*599J
-H04ÜlbNMMdLo}ET|bXTjЃ~@U*.jhlvddnd2(ʘ{%xi½x;UX]ٍ-aXޞV.vcafsmm-ϻ<@v=t.WzJ,JED"lJROOOGd2y?}6cvG:Hn"HDiB֛\fRH? 2d2966sfaa?7==-0
-QTN3Z_^^6"$@V%VU(333_}+WV+e=
-RwV+
-X,a"F$bd3űh4@ +`tHhd2Mƻ<u:=EQCT)cjrㅅ	O⩡+29<#R hMQ$IOl<`ݨj@ptv.Cr7J:nee.[P!iZ=00馦fggwvvV[,$B)E$D"199U*չsB^?h Vksss~~t:R(j:͞xS(cccwfgϞu:RN7]iD^H9311C\xu0/svnI]XXVОw^x vTd2] XV<i|||ff&_zuxxXRuCڍ/M3Ν...$9222<<lZi]Ifsss@(uDXM&GTvThROVK;wlnnb{CNۘ=㶷ƆNbFP\bXRxZ/)l69h*2xw~&ƍV;d}}}`P!_MWBVHdffVA<dWlnn.--L&yR%<|T*J\.L&{=8߯h<x{Y+cjU*d2yX,f4ϝ;z=r>J˗C4(V5i@tft.˽^BSSS=m|VX!scccݫjPhdd47w,EFvyБɤ^7L&I\PЁCP(42X N9&]<	+
-jD"1>>N/^8<<| Ktk|!
-!^߱OOBZT*Nt:Bl"ӣT*U*X>|M|$###xlc[v @reLretBzL&L:\H~ҫz!8D#
-m6T*5DT*mmmVۙNsJd",B0Xv8Jmmm9[Pp8Fz&tr!$IPQTsssˣb1[VD»/;@S;Çl
-8$)|8ھ"
-q[VuV=v񠱓^+ iBT*Vf8Wq鹟A?7|>?===>>^VCPƆX,]Ӎ`ō5<$I2c6RJ#ۭ>^7.`βlRC6ɤ@ 8{hDݕĝVxi˅xN9jvrd2iO\' IRPnDZŦ|?W5ĿM~2MLج#f>Fh4!ۭR:GMBFcuuuccl6b<vWVVִZmAQX,=zgYwvvr\OOV:SpԴsWr܉8N<NOO@___oooWgTvvv8q.KVN1@^w:l6H8aNzQIx.X,h4sss=./{^bNcZa_uAjIPb1Xnݍ㣣KKK`PZn,f2L&v;"vnU㶠. *j^{q6xYWXFUh4$A$NnYQqPAN&T ^6рDbj6]XX-J===Á@@"t!²h4sla0\.x<:.7D&MMM,k6ϱA
-
-	AF#8`0JpP
-$&LM"d2oܵZX3g pЙ eo6R)JΦiP8<<<005q/t:jv{םyap}uu5tkF]\\|	q:r.j[[0?Ӱ]pB!P*$ķX\mT
-*ab0`q^n 	4\.FK`zXt凎*JDVzm9fH4N'lZK7!APbd28==dp5
-R: ^tFGuV^
-￿oߡG0 ՂB??	=l*ว$	<rB| 6"8==BD87ӮD"R\.>9x:$YYYI&?s	BF#q/x>BTp.|9Y?\Br9فeuɺײ!|-lm>7q8>	$ׯ b*w,V*~?sRPe2$.QT'7$IDe/jr?aseF)b(
-T*p b|̗s(/&RpܽOIynrnPԂH4PCPoo95MX8qRNǥt#y㫫kkk2ڇi^0BKӣ`i}[:1Afs-,ܿV+XrA*_09	+,; h6\Je===p`-8R(pf9A(2.+qŢT*'IR.~R[ZƆ ¬plowLuyꫯeasaa"46fh*UEf]S$ɁLi@kD"#
-tlHeVU&jezfnHlU f +g,Rp]꼿5Y_A<(
-/E p`z_\S(z^Zh$l6t:f8t5EY,ݾL&+I] h4vIi4Z	B Jd+yh6aGk=^ep+X\x
-  @ MI 1 U.6]Ir:B1BFRvN ;Xu+LsvAPIk5{|^ p``rl&&^dڵ0F8^B2	PXxd2{OH&trauߓ^  Mjd2YVOzE֖0!t	 0
-
-@	{ف9^Sh+,uqT*;! 0p`@
-0p  bm_:FQHkysP(NS$Rl6{ʜwh|X_U<`6@"^?M{8mr<`	p,b,--n<P(Z%%Fq+:TZ-(X$@`x	.!ՠ\~;BlB	P  (胴5>e{RD"P PT9ݨRMdrkku , \   yHӅ1xa2IP  ՏH? X][[6/@g2D"q04@@b/00 f*Evcێ玠:w 9  xE\rypR4p8Vy(JV;N$V{In @,^ @h$OXIӟE B/P $ s;B0hlcq|~jjv;N,woHHd6zf*b_ޠE4`4'
-@cpTTzjHb0A~/y^Oh4"n?t24MkZÁbWtHh ,!|Q9ƽUHl$xm S#>|n4oy:-la}}=H睢@T_ܹ{]i.I$@ W0@(Sh4h.v 48.> I[Μm7M`\b(y=2XݷX,>x`
-b[ZvcccuueٮϬ0x0<fk%},5JV˴U
-IVÅ02ry[Wjmc1] ˲X,]xQӝ2S	A@;jwҋ:h,8wAn7"@?ܼ	Ri{aC\^D|9bZ4B\.߾}fmiͦT*z{cd]pՓ$BuۡIL~: @K H緭RH
-'ի`0β;$`}aaqKI](tNszzzyyjd4F#\,As-QnK}v̡>}4|5D"?GK ^~?\}O=BT*ݹsh40[AdvX__|]"()0?[[Zޫ@ F#?V_ٵߎ:G3ADv'Ó'A$DVCOV `Y6JMMMt,=Gjl6u:	@"<9(MHJ%N'de5qA$jz!Lr9@(,p8h?DQo\.?|PPvn$IBp8x"BwѾC($40׃
-|PZ6='ujP ڗ]{^˲x͛7yKλdlxh42a?b0N}}P(@ ~,A;ڹ^@ Z-TqF<ςR411!
-ϝ;'|O烝w˕H$VVV~l>U-8׃F/x$i1mV˼AEҐ)V< [fd&&&.^h4y
-yV+BľS=<&&@pK^p}ff^_t/jZv\ Ŋiyx_`e766<y288h't:NO`%rF;û<$U*8niiiggG Oz]<rB˲lk ))y@ t:h;)@n[,d2d
-[^)BkZ$%)4Vh- (P()<a3n1{Rnc#+$Q    IDAT LctraX}yyygg>8<< c]|eݮVüqlR*sBjB""	[-m%c<)T{BAU'R'AU
-yhkUw6gF=%kktrXfhn{^~6)C,;NѸ
-rTWZLǞLNLM':ץRhV[ܟZ&;޸1I6c\V)V槢;niwworc!Ƿy0SVt`pwwweeRaw^"JC [3Eծgn=~Rmyx-j!Fȕ3?Ls@ej:hNBe\.z}=S0NS///Tz^R њ=@vM! BJ:Xڒz<9WNFbC!Vz{['TN"ahN)Dd2/^j;dm<<EQz><|0L&\oe] 5xHEvi|K(Vͭ3P ؓ+k|eQqo;jLla%]":ehZ[[[XL&~T8Tzrb>o=wB[ )`dJNRH0jigkdɥRRoP빭BTih\:wt솋)Z&mL}/n}]d9:!TVWWW٬7,=SI!nllR:VBI l[f$@H$IBFԐd\"HDiɵ3֓?/_/o'sNֺhV"J~4^D
-v; $ ܑI
-NPFkՐ#/,|,.2Ih DBRl6L&vۻn㻹1vlw886&EQF1LNNR)N'wPɀ !@@  @qfǵ yVu_&&q\:DIj(Yˉ l+'A:.lW MZ-e[,SeC#v3KNhy&q86[HZHQ5{wՕ	{rST*@,/x)SµtuLtLLTLoQ?t:˔7ІR)r_r2RO8Ct<^{=Zlidۦ]Rɔ?OSXeYA49F^+}9d2$ɕV~,ðrael/@=@6[VR$
-S}}K)KjO2J7E3KRͧRz1;kM3.n}e=ŭ?aV|b ԫtryq`͹gx/(,fKκ)g}=4Bj4baR(T&Vwk,L&7_-IV7Y+ܘMELx}KUN[R?:Ryqe>3	Y]OsO+<3SBjLn:~|8vnL0m60@e=	!l6\nnSOVZH$BkJslZM/t|21sf_-7~w9:v4?Ͷb,3C~:3uEN=FJLbGONw{e0ZP(lȲ9<;{oI]7uus8ھ7#E4csݶv:cFgf1d=re+KcD,w2?5\&WpѨߩʧz3ժbs{vclk,˴,Z7p]!dEE^Ŏ5pY5Mޮ%ߗk^:>.ֽqΨTа,y
-[A',Ӳ3%}1UU⽱x<v͉q/+AY[TW`xQk{i'$q9{vMUw<6mshRKŻŚ$!˹tPg1I`8PzIPOb`oW1.6js~_<ed2Y׏;
-xy_/.Wk! 8W4/Q;?^5;:0)f[Osk8˲;8F\UjcC~Eǀ1.|ǿ)dۯ/63w!ffe귗?Ǖ8<5~FϨWWnǿ~6**`\'Nӷv>vV5ʻ&t!!DX]]MR~?HPrYԷ2Y\u[䘲ɟ79tu'^_xXپyY\ve9_Ud!LC_n͕3{3Yurط,O_:ʧ_]CѨ*mJ.Wvzj"3]?6zdԪgoޘz]MVRL&k A@Tjl>YsˤR0{0;:za\vD'k?i4|Ph^ZfE߹ک~}FN?J};<}*eW77Uko	W.]>:Хޫu4{t~Tח.]_{|vzE1-5KպFLkkkn;Srq3tkXpBoMC}S>IgξSc-Vn4ԧ}|	<^~R?oՍR	8{8ykkUmz`<1:2zřkb&`ɪ=YkRސe~aUXO%X'Vr\,'&&(mJ>&;GbN
-w<q5_[nyc\{zG&c`53wo§QzoWf^kknAXzR+7:mrmQ,ʵtl0Յ#<z&AJ1<7=53B84Cjt]d2Tk#")X| 1<>9XFRXMNߺuNZq.C{W˷nLMW8nFy3]Ygsf1CvaUQ&%E\c1T_& XQ̯Nݸjx;%,Y\___UwoSR)G"JOHG1˩;׿[.(#ѐ[8Fa=yO<zwig=^ڍ葑&qgQgZF@i褐`Ъ I0MB Fiuq5e`pTe5|U7RZMk߻b>Q+m_YY4Sp'Cҍ5W@cW8 &VVyhkbB +7Y)v+e*\Pz1us&JQp?PڛsgLĶ
-2-Sp"KAYɧo_R&_{%8tx./GꁞnmʑL&|"QUu	|cz ׉ް_%0$?~^H޼}g/R0-^o$=ms{}^oJּ2u\,Zj.4{CjhMT*.ifEksS7$#>ĶdW :ǜR~wWRB,B4l2$)H|>(B0+S7jωсhI1!Sh 204=r3Le2꥕[S+{`lJv\MOӭ^ΕPJz#y77&'Zja~,G!{ukqј5#L^.:$I
-jCsZi{6b/T$rk4z֒pa6jr!8B֐ sa5Kʪc>nL6GcAGk9e4˛ueKP&D"t=w_};:zW#i{'5*nski4r7YX6kP<s;rey__倫tQͧV7	zjA,=N޼15fntNty532{ϋwQ*W6K9Eܚ ׊w92/}VC㯟9Zraaabb"H9l?HHο3s$lξS'N'mrI.i|Cp=|=<of8wF9txkWi=j4+++L+l;4°{3;Vs՚i@VSYo6\J/l6,}#=Mj,,^Hݾvnf5u]ďN33sssݪJ_d]+2cCр,ؼ~C9{wh+/?yRvwzFFv,KKKiB!7@:#y.a"m5f7sݽ:j;}fStΙz#[qvwїO;bي!d?><91T蝅h4qBl`wo	Ȋ"gƹkw˪'4|v\#CN&)|߿[Z	Àò @ P\YYY[[B{\p?yS?W+	(,1f4u.9=~_wЩ2IqGBi8}'ߊi&k"Kܲx<~Νp(Ht Ρ(P/vo5*k-Wݱӡ`q-cHr{M+
-X]*0SD""l4L~Ȅ"ƹ{sO}MB2&)Mz	9w\drnff4RU5N'ݎhY{jGfߪP|qێ۷YwDMcass
- 10`&Msuu5{{;}SB>9BpYGbvoWU1`BhE"ə]^/1<!!1A}ۥItԔh4/ŋu(h Qz4ͶC1$nWT!#8^cYxqT`&b *|>|8z7mw7ڝXVξ#_G6bH-.&%06ַUH#ݛޥԭ[3,8G2yT*p==PJH20|!X]ŋp2J%<,ĜWcry9'<2E@#&2~V05B4NoEyU~n$0B|>k[y~V@@Uv#4?CZUv:>@r%^(tGG -+k\ƹspzi)6XZoA>UxTYaÐ2\/2c__˗l6`* vlZHj%nk'	rSS|ד Vy.5Hu?jB:@i|%K&a8~,4ᇘF=4yvfZ=?cH15dr0!`@5X`nWb}d(Wu: 	C@<Zq2YY{m:;oܾBa4RR[y,.b}	yYY mv wMyu|%VWaﺶ;33&i$[UNG.@6kg2X[CNJV520ݲpM{9N햅z
- v`p?pb**uĄt]2ģ\,Mw]s{~({Hj(Ub 30D,d(s'A5ln>e <g{]t|s*\xH7VY*4l;y\@y2 cVw]-;co=d`:#u!{CCY<rJ=goɥAQiZbxx}
-*!.l 70	pq*]
-N9v\#>;wjB@; YF$o)ﺧvp:wL}@Q.(!FUߏp_vr!Qpumչᥐ 	8O~܃##)
-qtu	jG]s>9rEAWFFE !~?&&<um9@)sum͹w| n;D5D8L-	ycp+}I ^y n{ǗOLॗ
-2q$}! 48{wcl6e:`hoIxON8G03g䂐qPｇnkړs88~z{)v1u~{cp8KHh5;/:e@ O;.ABv1gPxdGb|8v*N]ܝw߅p:2_Bl0N/7ر̋ǪgϢ^oz11lq_id흶BvztW630!Ǖ+X^F߅ݎ!>sp4QZJ2?}}|?谭qΝ;|_~iV~(vȾՊ @8aafL@ GW1:
-<BҊ(081ܸlvkd*|>!TsHkcBlvkT nP>JB:c4 #F0N')
-Gv;l6x<*
-Di!O5j$	CӶFVk%Y<nC2ֽX9MyVn,jOb!N~T1^x\3E{EW23Eȳ7W .S0ԛraPi\D'gbYl4nW[J4Fh\ќ.B޷	!eJم_糩W/S~(Wwɑש1!L]Oݙ[XN/=6]m :C@Xkw.-UuN!?e6+}~O.wyp :aVkWKw̓#C!rmmf`:0Jn+f+]'ϿfaVF2<#!,S7M4ZQ5nYVð^ԋi({(n<Ļ~x&Lݔ6/F3M?n*L`<uƹ"P~^vf(.^m*jɜ	y6\r"`oRqUsFx8&dT-=!eZ}\,?^?p+B~49gL0v8FX\Ds0FZXd.o4Hů6J&)Bve!e
-UGhw~go^lzu+  IDAT`Pp'mNˀ{$.+:qȑR^>fմh6=jvG$)N3j`LCqD$Fȳi^[e	a	aYiY²c֏aZ%8xvA_awu]֍eNgg fIҹf^dV1M:U&b>JeZӛ
-<QpQ[;11F{lc\c}mU7sd!Xf3<uŋ]^*ۖҕb;ozWif_?|SӨlf;'NZ3*|J1Iv㯼VBM:uoRB	'pLvLXe	!,30vD1aqښELc`?:q5*p	y6\֢ѳfmqI$΀~Q[eoN4C!ĩZgZk$sv;n[[2¨rA6MBH'r=![%TG!]0F I	!9-C;!t'gBB:Γeќ;!tveh}*!te8-'n)9B!2%
-!t6e(s'NV;eYhΝBBrN-	!?-|B.hkZzBHgi+$wBmNpJ	!2wB wKhΝB:I[8(BHyBp7MӲ,IN!D~Mݮ$I4~0l6E,3C1hriLS%Oeq|>dPI>CHq\Bqȡ"IO>9sB((2;|]+*1I⒴}8dw0Ƅx?7 t]o41u}Oq-c#jZdbfY,:cl[ z`By1Bv^sp'?{ ȿ    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/FastForward.pdf ns-3.20/src/netanim/doc/figures/FastForward.pdf
--- ns-3.19/src/netanim/doc/figures/FastForward.pdf	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/netanim/doc/figures/FastForward.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,91 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*22ѳP0 B#0˥h^_a >
-endstream
-endobj
-4 0 obj
-   42
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 24.799999 24 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 31
-   /Height 30
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xYO[o,Z%q+Wjb?Ƙ&BJhZ CmiK疶ey'yϷ/_uA~ߵ޿~ggg'''GGG{{{;;;ۛ뫫+++KKKsss333SSS㣣=>>}	2kkk vqqd`gggAvrr䱱1GFFRa	+LXLdh&2i&r0_!]ゑtCCCxvs/{Z䁁H$x"@; `6LF#P(Y)_d侾>x
-8~`2ǧ# 1cXoo/<nlld2af4q{	Y*ILԉjh4?PHya5[HFÄ0SRԄ9ǇX[yv]'oߎz2,
-^Ld?t:&rA9"?RS")Zrs#&SxNNh`}>aAT8(--ſQzrΝ7oKĭ[~1t\Nlii)..\TbԲL6ꂍǏ,D¤: nl6Jaa!r3,p첻wv{˄XZAdfCCC~~>R$ mW<z$R|%]s3`-l#85+ZxpT<~X^Y{>u[kQ$G%=Ng';j?J=+ˣPӗQyAAX|Oӧ ~~߿#>o8KtWUUaNFxU?{&qâ?N]Ya@?Z0ӫ%j^@{ZuЗ/ e2~m_GחPbfz{Z`|y3 R~qxss3u(zdUq
-ܿ?%n?M%h\\j_ǅ'ݮ|&۵Z->a"o"{n\T6p2bNH.JټD9?|2O[@`{07-~
-endstream
-endobj
-7 0 obj
-   1150
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000001844 00000 n 
-0000000155 00000 n 
-0000000015 00000 n 
-0000000134 00000 n 
-0000000460 00000 n 
-0000000255 00000 n 
-0000001821 00000 n 
-0000001909 00000 n 
-0000002036 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-2088
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/FastForward.png ns-3.20/src/netanim/doc/figures/FastForward.png
--- ns-3.19/src/netanim/doc/figures/FastForward.png	2014-06-17 10:34:00.525635990 -0700
+++ ns-3.20/src/netanim/doc/figures/FastForward.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,38 +0,0 @@
-PNG
-
-   IHDR         [R  iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       IDATHVoI~;3z/t!w@")
-U"!A@E
-@
- H JgOCC$B
-sl%\{ޝ3g}{o޼
- ιf|08ZF04MeO$"  B~( 	 J!҉w!DF&emaH)^ 1,&{1Ƙ%z5	 STwzy^EviǌyWٳ֩Sn4{&(4E ]kkOO={O90		4yl]Z6ݹ_E]ᜋ\.gYV	@otl{-s<zx$> mk*z޽/?^*Ç
-*`cccڶ״r'NT߼kòzvCC򰚄yjuxx1԰mT
-jW3g}Vj'Ջ "o&>	.>΢8xњ߿_+ Ԫo l./R쟚rz=[/!  2 v`A<3~]\yKw<c  ]N`FpfygnR8z)%] @`	! @Lۭ`\+_Fh;&EH^0-v-ҥRmz:yht&RHәIki<y]GGҩ^}n{޽$I}ɓ;$HT_yض]B.0j=c4 ˲:KFmccM3cS }8#?屶(#E:g"(=ciڿ%U|%يSdH)    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/NetAnim_3_105.pdf ns-3.20/src/netanim/doc/figures/NetAnim_3_105.pdf
--- ns-3.19/src/netanim/doc/figures/NetAnim_3_105.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NetAnim_3_105.pdf	2014-06-17 10:33:13.881996054 -0700
@@ -0,0 +1,728 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 1395 767]
+/CropBox [0 0 1395 767]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+1395 0 0 767 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+32
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1395
+/Height 767
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x	XTW7mOttm;:7oc'1&vIki11h\pB\YDA@eq}})(
+(dDSʒ(XTֹ{[bbb"##cbbUNxu"Bit>:'	WO隫Duiȗ)|iS~)=ϩ"/+^/Os~ЊbTMDikgEiZ2DhD]7>Gh?GhmĄĄx?1.6SIqND%SK)4?:%&:E('O|
+
+'O<S~)*sکVfC]|NJg>_HrR2_UYE(LzfԳ5+.FCh?Gh?^={Qٽ{zOܷo7(믿Y|"_d::(pft޽{ՅUSzEJK5Fy4N#VA)_Vo_'|i6шAh?Gh?^;  ▙?|>fBBBYY;2      @VVٗ_~w\vڵc###%̼֜`      ˗/ܹرc'NP~377711ٳg=^D233cbbݝ     `9rٳ?ڊ'N߿/0h{"UЛVoooCwg      mwשּׁllllmmq+~KA;ByduKІ:uxǎ4:\16N,۫}ɉ2hcNyϜ5LnPkPnT6      f۾},,,lmmU.GX5tlλUB-e8E^k˫\pٳGꫯtb!㎁nF@69rܺq0vDVx3a$%^ŝ!c:nT.ptt4tw     ٶSN`p	.;v{8hq]9\r*Gݹs.:s?J丷];iRJS}.:arrrtY6tZ/w j۴ݖA      9sŋKe+܋+T?9A|bPPpx\B
+DSV֜̆Ilq[I]1Z#z#Iz˕>*,lP>nH-ΝqVi]M&_lC	L<K;벟rEvC.kҩ.oq+]:%mڧ&yn[9T.lMPe=䔒mJl6G[;]=]4~ᕛ\bKY>;UOWnF       <xٳNٮT
+[4kJc+.GE(Ӯ9V?VT\jn,,:*8 ::3U0CK-[a]T~Moj	JYpeH-a8]PETW_++cǎEw񷪱ZMUuU_Q)ίѹܔr+v*R,i'e9ZuXsFFN5u=YVuvw :˔P8yC\V}(Cnkgx[\o6odؽXUOSj{S~&-rs>e&ԶŖN)yX      X&,*h,_d[GL?.8o}6TKSާ([kkzٻ%*gΟ?2(\a.{E6U	NeJ0	Ul/s6vO;DzS]k3?gcK`ᑎyn+gC(=߉>y@#e͏777m53"s=hڴ4+	WviͲHy;<ǟ6!M;!|}!'ќWe~@Onx`o&m]e}zzz?~  ,Z   %/ͽ{ݗFь
+UAz\RٗxO6<j.ܴgF*sҵXxW#\U5Z*V-ϟ755ݵkW.Zʫֺ3ps6v7f9rܛlfk758R%{N,
+uaww+frRRpwk᭚Te#KPgۡ"͔g[E&M9tݨ޽  0  	7h*˗xyղkjn\zC 819YܽTʹrZbR9|}(=y({`MҀ"VyRB&,rk	(:<W(S
+qt#u!^X˭0L-/S$\q`27^8h![mq M\psۚ뛚3#2ZBZTjoo>~3  a   #GXYYxu,iepQv6WX*D͹ϦB%TH(GPD}yTV'{&>`+.
+]/]gDWh[lllݻw4hW^fF14EXߦ~Bi؛65)~44Ys+h)5eX8bTRE\쾛YKe~ |@@pn
+U0D˕sMMXgΙmm,VX$yٳgݝ    `XY5ARS%x|$,HXDuWW͹l#5GoXtVctlJ~;O~5\;}ιL`ڱk5b{@&7IT+br~ϵ8Bg
+h]N&[;F`Iexkw[׶)vue,rY	֮kUfn(ڄWSu(>`kkk  `   ѣGi<6W{nޥ&{?pC\QEW7U%je&Mt/]:|SOY:orwՍ꒻%&LX^tӊFfff{qbqnX*{~T`_3`2T&(䊦h>c`az+*WeҤ&?w-Biݝ     `i,,KΗ\. W~eCn]K'Sf`з@ 0tÇ,      ,B&&&4+W<ږ.<yo1{&#      3gXYY]rիm|	,$%%
+zY[[b      Ϗ4i3]vFVVV{ۺ]麯ݝd      -77ɉW^|||\]]=3&99:Ovv3      ̶FHtm{{{kkk;;󜍍S`湸fff;                                                                                                                                            L       `ԁ   I@  EXh_]00`N1|ݰx38삹{`QZ `f\rE	3L6DP-="_ tlm  IXh &_/:6  ܤ,4/D'N0tA;Oi&_/v>MmFO|Zˈ充]vmMS
+k\,4Bt:h/noyxxhy:a{ *G=i󁤤$t:P*)i[ERiLLTP	nE u`,DLXC7s[:::;w4P7/ލ8wFZkξzjqq)RC7>I$CTP	!nK EDD\󺗦-wM*߇V(*fbCrЇ@I;&_JtCWmle&&&zyy_J ~ WR,ϚZݰnR<<<fʧ%?ͥ<cvt 3#66DfӽkuuccW^Zti^^mݍWdٟ}f"(5δWVTTߥ;Dy>A^?m)Lm3
+iL(T/NȟDc^f	|3sNs)	z4*Ԟ^AI)Ԥfg4HW/eHZлqА_dh-5_\:YZZ_u:ςyUk#=	4Ng1KhSѢ &AX߮/O;ܾs;w|;jίG}wUҥK?~_yuiȒ_,?/3C*(koъ0(]n;92GR{fDm(P)LXC<qu-_Ky]'>>ڵk4\C9]Yc`AOc.5YS.vwTUU҄BHOO7tyӒ? EF[[[
+6Sh.1t蓝4*6uٴц-g^UEAAnnAQ+0}B~D[yps=GB/]9}15_Ç8P3mcxn|WraaJ355Tu.MX4|R%/}KOvnOecJ2n<}|Brʧ<#T
+}Zrx{{d2ՑD΂O]Dl^NHD*a]ⶎl5%Qt){%i#GEP6}<R[͂Bp
+C]@I;>P)s2_QN4<s̏͟f!jZ^ו{yboTN?DVRR2a<e B	ʱF|ʤfMkj5a'{`֭4Q^^Oz;(x;#!i8m|֢^揇Ѵ:Yv5g`pkHm,MƫtbGv!+'fiso.o:[5W|k^@i}n\,?a]HΔZZCyGT҆s$#Ъ(9!v˟U#O4J_>enԁ[jvoZX7^n7f+o(N/;gϞ/R1URu|UzEu.\4~;Kz-yԏ\|K\p'J+8^Жx?)ku#ְㅪgDKn5?с$q-v]o.nb7DӚ[HuiBO2L$ZOI{rhl܆^wPXX8/ꊃog~/|HQyB]51
+תj߶mӧO&By(''<H|qQ.~nJeee&3T05h?|m|֢^#Ҹٖ-[ɓ'DKy&8XOYSk/x1G
+Xílى]HQhqܳxJoO&{۵s
+
+ڰaC@@YS/)Y˭=&Vp2X,љ4vyF+{1݋}ۄhSzZĿR$OLO?!ojjRuY#-K~9n6.@Z6FXޯ,45f4KSdy~}\=82Iee姟~_R}?t7Mg-ڭTdiʒK^_eKCX7ɞU&[V=ʡ`qV{myomZawlVW]S?lwMϕvem>8dYuEUFk桱6?xm͎n׭V3rKT:%Ŭש>3XeUl:hoBoKA!zFV::Bߴk[UPfCBEV5ŗEMoO+t[n!ٳtm	yɴ7D!U?^uOiCf!O$gE}?a4i}cS>qȳ=d,2U'8|Bב!V5dCYeɮ;mt%;]IQ+++'''cc㴴4:Y}<C9= 0OS'f5j0<#0w&TQxC|;Fdwő1ϻrPL{6s>@kQr___a4M)[1dX{5[Yn>%k>35q bS&``kq%ZmzU*޶O֬y5kvy`E^꬐8գ͡w68-~Cw16ae"6opo3+	+a+,j#m\./l[afGW*|qX_C59ͫjm8nm\umzBm:P97n|o>z/^Vp(HXSSQ,zw}r­ O>d}XXXYyuѽL:cTeTdi>,ҒNh(zl]JDsܗ~aQTyo/8rGoq&wr*˄i",_rd;wV/7ɯ]mvV	h(_&e{bɳ͗seqgW/W fY$euJ,!ati0tibA7a8&U({%`@aVtm>:D,(q?1+1p* 4Ofvpr;e%~4aVw>U
+\>喟zЎױCK:6Y5U44!zfjUjEa]HJ7Ǖ	>8JyTfl;_גOU=~Q%C/nI>&UaI\fnE%;|?ao?d渋[ZZҋȑ#J=<6'`1ur=j1)j`auwUy睗^z&{･K?L&X\,a,}G%{F+8Q;Z2G9hX;0\3Í$̜[mNL$Ggpaq%cpsd#HSsUi .N(+2 +P;_z9|ؤw\縷[{\},>
+4~*@opFv~=͞_qɾڞWG1Ρ98nFE$ww2	ة
+iE(55VOvƞ7P[U?.}2֋bk%)5%9e~^O;$	eI%`+U߆\׵7SUTTXZav>P{A:DҀ+H;&"y%6t|HALMo@Myɚєa,ÝOAgh/ryqIn[TT`]OK}ێzz<jކt:Y˞tugRh3icu׬8\B-߫O~[}2T&v3W"3
+eb]凖ti	X__@C>fsRPZQ},LBZxr9w&'ܞ[\|9wWS%zd ;!\Byɻ{|[GIz)
+&ATOCW${A_ ܢ8@'E=z8C9:$'h|X[(4XcbM0[쭯8NrLF+f<3Z2Gz:Ԓ{Ot>09S,/'Xk:5[J(e"]6ټZuPsh$]U˗z&Ѹ>75gQ姰_&"aӑl}՚6YwFDr4.|{?J59dȄ܌q[q^"gxq+Co]>J8+S4ː˦3"%zm< Zڿ6~,4$4dޭˋ)LVgW
+\lY4HeY\/ž4}Ҹ%K}/,~`W޺]^Q>'eI14Z{/ӛ[},D;pcy!y_8?9P]Zȉwe?ټOX!b::I$,
+!*ncIV[h8.뿙ZB7@M[)5>z( Uцho᠃d66vr{5ԙx'No^},fe?KCVsź{e:soCOϷ4&\=;7eޱe˜SJ},Ż	<&}!յGKt>p-evpwo+BK/7QO\zyx}q~\u
+
+|}}+B6C9 ͛7SWz,zaYMS9K%''g˖-X*522B	N*=P+G+jD<|Ґ?-Qц^;w}aJgjSLt[}c\eQB:^[1>96|Hw`CMJݨL1GCt:wё(<mdD
+Y`TMw6IAͦ{5U]AeGUG[S{pgKS.ϭ8_X!>m۶Wp6
+\K%HChGSvzm< eZ}>j3mku/Rz}Ɲh8(S^"ufḢT^eQ%\%//;+Lw8,eh(J=ʭ )+Z-I۹esY۹MNVs=Si?.-~!n:Փř>_X̎ߊP:YGt6W~BϾ풄v*->)goo\ȾA[Y٥-G*hqICWoJl1BfN.U<%NhMZUN'mOb2@Ǉν}?kKKLU8ܦ9_:Uǽ~Wº5;~8u$:z:Z$B|]?لˎU/{eGBKOQuSU2T=);;Ǫf)Sx{;8'3R~)-/w={l
+Mdv0m7xh7IR\of##?IQ;Z0Gz	,P---',P1aSg'xfQǸ|eמNs ћhh?CGˎ'_K%XyYUן
+z7YEᾅ6:+&<	0e/p9F~};ŵ*
+Ħ"AޕUUGU^=,pU	l8nJYX+=TO.V}n.ԁVff`.=&'@P)ɐE?Odp$Ӵy%xnZ[һK~
+[?
+NqD\l=&x(&Y=b	XYa벡
+QBG:fE\ߍ7#8Q$:Wx`*ٯ=YGOD9$v%*]FnY"A;#%.Y'#pLNTf!wR>5܊ܩ;G-:Wv3yvWuSs[㦷Y.SwMfR*΄E2Zz9ɞMbɹMgٝ\~}q^qK-3' L~3UIk6gwdff>l
+%49r'qۣ(̌[FǑ#NcFPhCϞ=;a`LqmWFmg;q9a瞵s w=;zq[	e_7Kc\V$piȑ#鯱D
+.ƊvM*ϲ%aT|YYeQѻr,Be8n&ƙg7GiUbx;.pazm< Z,ً6rK{\Nr>kduE[v?Jaxsϑ_^a+WT-))uo8LPW_r/.,D-)1TCNy-!N^dݼyݳmo-}&ҠhhxwzTC']-qQ*tR!S%y4rV8ohϰuw*mZq8Uն3؞ڔ띘TӋ_Ev+HKKpB^^;::B4PN?s08Ý?im6}`Ļ4:-Zkekd;9WK<Ʊy7N|1IGK`:-[/MX~4k{j+YVY^{J)j}UB,kEݽ{ulr1jzQAu`d"NNN,-c|Bm+nɿn}'߸{+I!o/4R2'UݙV547fƎnE"55uR_o*?3T*pqqiy5[J4PNo*Lz	,n?	eӨ}Ӓ?ژ E3g<|,\3fmf<9"@5{QPPЈ˼;#.! z,H-P|-{Hai[$-2tM[nЃ@Ik7$	5_I]^JMja4M)Ns)4teSD"ѕ+WhjGqww*QKӧ]~[pp0dCCC\c'>>Q%FW,Es ^aWCs]'  0LXC|u%-_Ky(+;Y7233kkkI/MS
+\cjz	,z7i	OkQں,#VgggHi.1tөS=z9kt"U66m	 ,H­[o}X<<h20kz?h3icG yyy~~~666c~)RCWsOE"Q||N8qaKӔB4=~o#}/YZ*?F7|y>-乹U=/ď^)R1k;OwB-Fզ&Іhyw 0u`A<g1h]yYYYlͤ5t-\:533iJtk
+onF9/MS
+j zܟ4YԖ2n%68*	^pp0O*yRQC7>yyyuwwwLM1t[$ݾ}"@IkD"Qvvvff&|SSS/MS
+jfl~
+Zt`aб;777:*|Zinn.#]]])a)**566kjSihCݖ 0	BB
+``|ܧZNa^ *
+ha1a{݄i<|ZJn߾)ix 777<<ܹsU*O@e3Xԁ<  4FtͯQT@C[&+++---%%%yMS
+j3";;;==](&CTm<m[ &GX Ac4-O'0z/@0|б  &u`!g!ڻw >`)/u]0a 5B6   $zD@z7  L:       0IRhooommmiiijjjllw^}}}]]]mmBeee2X*J$BwE"QnnnNNNvv*4     ,t ,      
+>|ѣǏЬNz0,      hJ      B`@%      Z!       X B     V, hD`     @+ P"       Z(ՙ$r     8! rBiAڵ˗'&X[/2     XlX B9eeWlO^^[Rׯ/X     E -Z
+QSSz_ÇSkex     `@`@7oL}ƍOyE/     HZ`W. Bݏ:!uE.X/_?--X     `v4}vVVŰxQNH]Q؂R矛ge9K
+
+ﾛ#      ǮAn'I_jmt:uE,^x5%K}}3.Yw:X     `v^%1Y$U*,]/q\ǭr%+
+uEz,Ȋ_?Nq#s^{,     "1;{{qk+2xǇQr[ǭsRR*7\ BR_b7ް޾}?̿z
+     ƭA/ba.]4]qӁ-%W?N
+,j5tӂ!Q׵cΥ\&so-Ss_xyd2     `_q^ǭN׷/Ԟ_I,(&{&o?hT%~gG90PiJ\#߿2taÆѳ+%PY^?I;9/<<X     Ee|9c~hbxwyŽeݑB	J{I M(JLz[Bߣ<(a4=b.u7gbQVQQ     ,6X3-hɪГY&^{.5י~9=}+!Ąڙ7LXͷlbddD4gQ'8433˫0))Z..r     XFhXR^^٩Ǐ{zz֞&٦7O?8t[Nnʨ?qoFǳ7Wiw"4#r`QCd<֜EuMVVV"      f`N4IIIIF!U%@%ZGkM}lR놞~FM׫\Rz	(?2%Vgěf4A.qy	+"      /%''kX1Fls:Anø傐]>B݆BU.YukXrgy FNH]      }QzzzGh4	˥40ʚF&J劦y2F%rȑwygXs      yBRRX0p``hm۶-[_֜     ~! wu,      ׬h `Pgspp("      2k*J0pأRWD`     @_f'BC0*-QNH]:$      z1; *J'uB!X      Ћ	,Hח
+0~	+RD` f_קQ>|R޿O-ve[{GK{47|
+?QfZũ*
+4   N`t...v Bݏ:!uE, ({{lҢee\YZ,*R|ea!..feeʊ
+ZPe::(ShGUR.gTYTi.eEcANV>   `N`-vlQ'= hxӘ4}AԗꔍوGl؊huNVIFm-RY'UR,f`a]]l)    |D``cf66TW.Q9e{u Rc#iEElӊ٦ձ+.h]W   X B1#46/&*+@u)8hR$vyLƢ(B   01 P" Kh_@uJ|h>]0s-"X+zRg'T   ` P" 0=~HcdlV.66Oڟ<aPAޡMӃO20Aux]QYB1Ԍ,p>     Z(򚠄jgmkE, Çʦ&6
+?m	z=cAX?jkY4JJ=
+ٷ-D?R
+zqFPN~ك&)͢leerZVV*3KkwM
+CK   ' PX(,"9:Cc=Z9БlAtw7Hu?'l~>DS4=wG2b&v>0߉ũ
+Y
+ J55lO(*B6Q(X(~/ՠZm2   ,, h'Pw&vL2wLߺϝ[6nB`Dl+`%Kgc?T2(	>t@=g7%*F~76JJbKhÓ',CCkBm҂2   ,|, h'R|)C򶽗X`2y[@``А4ا1^X0ahnfCoVEE,^AOHgFf`e::XA`[GhkkY4{OUPԆ:h   0sf-@ëHooo G7BB'|mX+ϯ7֌~=|.()aTW٧3}!h[QEjkYw5cA˶Xv   ,X۷hhf-ŋuBꊺʓn%}n_ǒbŚ˻m, L *R6QԨ /5ω߆=%F)vnMI{Co$   LӵT4+:44ZXO0`QW9BTe~0/#~~[nɏ<rIrbsx# SF#OrI#4Rl]3^NAo/tPR   cvZUr[u<QCN3Sq'9zܒ8q)إwSDj Eֶ6퓎 P.vaU
+_4 y6]OB{]c#dAC_KbC    0N`~t$U;OD޻8;-%`fQf`fdeQdZm?첰
+pH?oPU,-F`@Glp*Aeu5TN6~ڀNi#60b8C;]0+3[   ƫ@ǭvZ鉣Эࠍ8,. 2583_9}镬$hHG'{#P&L+hWέiKmm> Dm   c4KJΡg;7 0-AAA6l=^uuu9	rTI؍;, hÆ	6Q{'>}a7֋slL+hA㍍)   AX]XbMVrot?MZɭo:<G̥B%ߚ%$  0ti)߽{!
+ 7Cwk^x-XQo)   sʬBzGu~{ŹuY+=
+:ss-[_333Y	+\`,39s2X uw}vu麔hv\peR7|#ߤe   f-㞞G}qGdCϚ^^M0]iY	)qF2,˅B`1`A(.fױ(RǑ#9
+͟mk5|D]B]J@'  0Y,P	Q:KnsYpcgcU03RWT*sruX=b1JPy38.Elėw`   0Y,ИFgmc0l1	+t`$/;$`QLܬG4xI$"_0_|ݽA"au   ЗX r87W,Sz	#Gy_cccYX(..NMuX=-t<|ȮL(,oMbducӧ%%A~  # =m۶lBiZslRi\X{IFMM	z
+1jLכutu}?=1  ـ,<޽kdd4r`!_,T==ʪ*6vkliX݄`]NЩ_Y_   QXU4Y@atꊳXaARVT/>L1ep~ЃvbeiN0Pw#   3eT>`&,"ԱG'R'ܿ%%,D0b1D:лjk' Gfpݓq^'}Ozk=t2cڳξxg'BC0*-QNH]:$0QK74}@L	HvDoLٓ'8	f(:*r$<74fMp,Ѧ<\y<Ѫ<Zx,ɥ4[RQ ._Qz{{7O"	N:uOƦggAOc/?QeeqW-|2cX{Is=9YizcBPP}_`}:!uE,p&=O>I]2S.C
+*.f	?Ax0zoWW/M(?Ӑ|aމJKeqNY5VlcyKiUyI E7(Y|6[\$~K/OoO]2
+[se)	Ba$-(#('8jp\nCodqYQQfn.߻wCwNTc]}\!ibafQj$#O-R{Jhr5$!s^0;IR555] Bݏ:!uE,b_zlL6qo#u(`_HST^#`~Q&J(NpM:WhbʊJie)egBegZ2bn*;20Y4g_aqWooSgT^(IL	~gǪnK<~ӛ/{1<Ũ#c_y!4#y=OZ*~#7{~/-"9'yd%Ji+~&heMP}%}}ݕT7n~u7n<<O_|1"慰B"^|وoƟ=p2DW[9	IEI¦{o`t...v Bݏ:!uE,08%/Ҿ}Ylw}ah'k * Hׄ{/TV"&<,,u3WVcR"	egE͍uSX ;tg߆+\ݖ^v7nFC#؀7<x61X(n;ton?rb=q)T~[B,<y򤸢fRoou5}gWwB_fjRjϰUQM
+,۸'lq>P3([w_AAP[XJEXc4]  $~	u*  s u"$8qbҥ9Fɡ}+Rϟ]]߆{7 jۇRnn!K\:E~BpbL?02SJ˧ӹA&'O0E=p3ЈX!v(C;%Y hmiwO^V?詼RAkjZ:n`됛OB=Yj!PN67477U+jlږ&j0A", GJ`~hiiiddMGzSS)8l|董xUh<U]ͮ=hm`G APN>QWo`~E]Uynӽ*0ieUIB'Ah6y̫5LG?ZZZt`C&XWW=hyJUΟ?;|oݼu}_;vz߁o>p	',Ξ>kmemogO/9]:zש{x&@`im)@Zrhnƥ80׵4E{V%UVX`HAQmuav7_:'
+,-XzN4S30a{" 0O)XAկ^+,_}÷>?t?>y褕!C"ҲSSRwCLp;n`.ް R`Nd
+
+̟)
+#vspP֖я&BxHU|`o檗Vvo7_6?l~yN<ՁLXjkm΅vjg]wR=	oHz~Yh 0`i1՗ f+@]qHXA}A_irZlks3c!sc7l#+y#|D`	&Ǯ|F7Jx}[\<棖vS	nH/VS/288(IFSn`& {Xw>qj=xj/T#0q`tX\c}oWiko|윐ZD`檩S2q2']-хs  T)|_9MfSvBd~DJOKp3Co:LޯXhm)*p33|jdJVagkXjEMH\xwX ,\5I~ʓlm,؊FX	\Ku^ʇ]c Vx:[+ɼծm-b6Vяz~kp7<	]q?=sP{,%,|7ˎn邸l=F V44̺~	~G7#i?{oƕ?wy<Igz{3ӿL␙;vN$vcǎAFf8c6db  	@$$@Xd9UB!m8ѩꨪTޥƉ;aq궫
+Զ[Gc?;r,"!,$f|W*
+ᾰPL8r|x
+MDPd1!d˺T[+P^d a3/,d8J#~(̍ ws*tY_@ >k=C;9vfVm@[͋RG9J>P$#-FuZJ*d6;4F!'P(&aAwO]sJPd1!-ڢEܙ-iCb'pGX<w6;kBZmuw7ac|X_jC_M@xveIjҌ0EYCPig;ݩK#ˋ5,RbډG[鼼~|A*č{*x̓xfZV0ϱw|gKQ(`zz
+YuYqwD^F|3fB!BTXLLұk\qUn䉈O?824"N!:xAA v!0eMYf$eѦ;])fQڢ(%%Q* J3wS'Ψj#E'D%'Mq=iEiwh6rA>vT9wgk?Y~7J
+~U2ws[PUd1m	<ӛ<P֠UM%ً	1FB[P aݬ#,fჟD<dcCcjCo3^nCn:`T
+fg= CQWT{bO|w(2SUk5g])Pm-T3/H~ؑ4K04ǩQ4uQ䥞y	eLkc_@}-X$}4"UZ!:mCBAuU|s:GFP(dbv:#:	+zaa$mM|b8Τ1'<P@-ПOǿS諒ѷ#f"a8_{1駎qZninb<UIaԔE,:L,CC
+bౘ5WcƸYa2XX ,IP%1v=P!8%-B/|[A~Acy	)`=ɶ
+5->bF_,#66$og߬zCڋ\FBcASqmW~b~Ben5\a@og/cc[NRf/.O\ar4qE<@Wwϡ<o~WOo~܈;"a8/|w?|}o'c&G'g$gdgdVYVSz_L>*7@ \B`d "A	bfۊ:Est#q2ݞ[`M3ܝ ,I(ISR)sd LYN*0C1i~p}dW%IbOK>|0Glm
+=]+?ݛ]پoDU!6Uj؍|~ѫl
+-9{&/`/pglbّIa܁Cqq2Gf_{3<Y&cS2S=V
+>z/rd]Ï?uｐHt9z?#~*p/gCpe>{~k	@Xx kϢ1ڳYրEx1l	"dϮ=OpGLJ>x}Uռ[Wr.5-ju՟<27`А tr0zB%!zM¤ؾz=0اy	;8[oyAl{mUT'$#/%Ei#G[_J${ĦَQ3M@bU\UQOsQUbރaWjحlvC5vo0 n"Ggn5PcPa{[>°@=kZ,}С36|;k5tKssCmp~u`Rv].>bCp!88񅅺VþW_MϲۢD䎔7#aB\L_Oo48x`kGtw' <yꋘ}y+7o"s#E@<P:,.:`6C@l/\vѽe(a5ɋ қnNXeI  ൴Tr4@e.jKXzLAԚ'N:2՞8+L/G^;2Q`/T*0c:I6
+ N3ڴvسgϑع4:==崏C'|4	%OvÎl'`<`q7MLG&}8{r]",=#-%%E׳>9	xO'&NrO	_XPnWȺ*
+Ej|Qs>r96Bр[v388޺ynM2t:H2YiGEEEG{GJRʍ7@<PX견N:ts|HS$?QَDswʂ(/ E A	Rv&g퉦I`!	6D87TGQ%#rb4|zk-u{ĦaaTk4$,lJXp>@XL̑ѵU
+򺉏Wbs̔gH%3g+ς+WJ8+kU`xRzWa)L/`0IS0`oё6K+)r̒bTv8g	Qg=< N聬SRvmڧ_s٭b1*7vTW?̫W575T^ױ]/(hV=xDמXf3t7`Ԕhl+p0X,[|²|Ço~qĖ#s:hҊpֈNJ+NLe Dd8mm[?iOkSTDKh'q`2Bn#ubi a
+S,gFFGGwcؕ6a{={lr{&. /fg1,_qg	O$@I8F;s읢+HIU*m#<R'lR[;%ނ
+	Qx[HX@l7zj85/hjlG#T:00YD'{zr/.Cb~;q6>X؞	][pKMTjm2/Ao~`E`q*Bj!02bZdL>^֩G	0 UCl9u%Yp}K޲&Z&!̢`% ȁyU&r.Z77>=Ήmo`Ǐ5FU*> 3a@|Wʢ$mV:_qQCɎKցi a/3΢˵(fVA
+X稡ypyΑkhve7
+&7iqq*,JY&NzuJ>gpgdw?s)u2
+
+Xm2Xsb(TB}e-49?x//}j!@SS wVPлvwus$,<nzj
+
+&LuW5vJOF#4\>~df4	, ۣPXC>	|Hp.܊Dxpu GJN[h9a»41mcvR^EejO|aC/ײcujF6RňT34u1ͧ'Zv$-t"fqI2OmJOQ	^BͿfG>_	[Iaalh5"QLCS2S2{{eZQ}Lb1TYÊz7	tgN	&&_>a%VN[a58
+z"&r	?g̯ڹsgggmuGL0ہa>0 }`+C |9Ooj BOs8d@.epeo-,L>sĖP"ngʈk"q4?qVlJũ4f3u>JLiOl!YRyg^Ny؝k>r눲.ޅL"d{7-NC&7n0HXxDaa5x,Ql$"O[ <	
+===
+s3/:HX@l!6aA,OLLmmN'8pn}	K/B&'*D?8Q(Sg4§&d/0ZvpɠWM`*bz3w;g}Cl	1v䄴î%	eNbU(yI^PF8CiѦX-+v>FU$f
+ԓfJ5+i/xO7+NƜw*uZa)JJtrZA&(AZ|ՆQ=_X*Eѣ<X*L&?OLLxz>R~[vSr{?vP]U]V*+SX2XBkkk{q<^χ<֡CUU}}}uHXO)B ؃pUfd$@wpz5tt@~~f'\KhB/XO+џ5$$aW>vRUiϴ'u,H(	e;$HlMka:h3
+9>mlMxؑ(JvNw&j*:Ŕ.걏<|xL}m4[euHXpCX\[GmsRBcIsl y-_\od!a 
+BX"˻ԖJ`nnN$pgvv#sGN"
+0Je5XЇpG 0#3#J(SLaC<2l(s,Qs])tSgP}AaFOO&v$xʅqڢ40"H2kS1"g:{h'x奇4[+,4wݢJea3֬m%5V	ZVk=}Hq:#C%ՍBQO){nawUwxt:wlfr;m2\\\H$Pȸ_:MIHH=}o955
+(al ;;aC`̠GL)gϠV#-l6W93|r4VPkWWTELi%Il{)VY)5QCh-+nt*<z3ČRVpEItԑdI	S'Zs<DB|-תTu61
+%
+p[Xhi	IXl6#aܸMvFX 	Gc:22B8?<q~_D&&W}Oi1O`ǹNG922cs(\b}(%	po,/(:wHJs{gt$A	ғEq y`q(X/^Qx4D84/,HbBo:X|Qjygk#w+k")mɉ]	@l$,l-HXp 	HX@<ssRy"f0?(/<u[py}W{oݽ{CCCr_s>?aa~&J[ۨP1i0l}UM`j
+jPt
+DhuN	*#f:Ǹ}4Lڑs@M_1ya 5yZQE%,kHɓw?XE a_L,R9e]hg
+w2B)4wo+'qtb+,Z\		NYI6X옰7"`N}S*5p_UUUmmm2|WxPh6gd//~w=[,4#WF.1fA&9Z-JT-S]VuyIL;W~j|WD,!G+a}cd˙i^lG#&[	~z:BDcqE%I b*B|zN2#L7v>W>\}>$ HXZ
+F~,!eq ,(¬`,(H>sOoqĩ"&DAk:^XV3b`
+jXwzfᓃ:炃-.XZ[.~~_>{ͻQNYYm$a,@	d)34\'8JpE^?KJOrk#IޙswLG(.ZQCWE(#$Um[fF1kUL$)a#X#Y2'JLk>_~}WƸk'B"L>[-`|jt.Ԕ#aj~Ɯ`,8-c_s|swjʅʄwFfHX@x!Xaw)0hX N?<$IHKőx[33	/bh	^0#ծ%U" C!Kt )=1Ȉo9gV3k#V(;O0	RBI3I3IxH2u&=$R AtGxY7TףjlK08cI_ſ[?@ͼo)zV'JXLNOyp&*]AhAu!$0$+,B)TvJ&C<p5OVGQ2vSZ
+\-,.C[ am0{\<<V/,?`xxTZڇ[gv&}i`U$_V	X X`*d2:`~z{]^{,F]s/{!бOO&y	z鑆hP^Xqc6
+ZiЯcŎ(Hcx뙙3*fTz0Y]}؜?-(¿-¦a$,7	SyK{/ aB0J4t
+h	hхR	+I5
+gp9>^r!UP`VPqM!ge!!,nx_IHk $, 
+	zJF}ӭqD
+_|YǨx8(m6=l_
+ZLi ~pCI'_XI'-Ph)Im`tÙHT3#0iod^<}0ۙ<UT`Vx+y=ԑd%ZɣxhA6 ;ͧGÎI^Q3:$}sROHiv#ԣPPx++_DA-0ZV PWfqɳ
+&r a,p]BrxxBp(TXǢ`XpTX;1Pvf&mJ`d[{)k< kAnd&'epqe~mL#qfd|oDFƀ?'>r`߁E4]Inc'Pa$u
+a=?ěũX53Z̀FcͧZF^Lt&u&#q0zFώײb5upڨV8,JU1o7SiO,,,htk*;T\[p+>	kn?{_);p݊@7S0`	Ca\X/FΪN0	0Gr(A.^cB݆^8}~.J*KvСwSq]z`6[FF#D}Pqd~"[*P= GS|(I2nI*Q}e 3iI JnOkc 7	1:V,P]4huѠS7vf^bM3wr*#ĥ'4MqIeW)	F#VPxHXX?d{m~Wxn-(COM>M",VǁX``r"1aM&٨aPiB*|YX0ӠBg:x,sCVe[ a.u"zX '8&y3g&|	SSV2eF#L8@80z"qz@qt[Je\$qɊXa>f̜0yIBPĩsɶq.UhmӣN8Е@ubm%#5Sd W/xz[dW_7wJ2]  TrZ^pbGF:gW[w>A+	^$, ۏE$`yX%!_c240<rANH>!td204ŪF[(4l$ǂYA{CF>"W"!6 	BP:D+woJX;BTT,as_NNb1l:]>pp\Ep+.*AT*p4|=¡Lu&qjF`m.j3>mlK0	)Pg 7I%Q0e=q:h*i.fhK&?t;XXXwu}E'UVTx˿-'ik#``SS==Wߣ~RP݂"8{ԏ@(,
+< "4G^xF`ͱ[9a+c
+\ B!DX[oRQލA MT	MMJ2}}}900 z>""6
+ml;8^ pBSܦD*Nui"XOtbF]+9'SDi$=;@x8=0fmxI*DcHCP}.ZÄ1ZVx˙)T|Os`ӻFIm>co.(|p.,tNبT{z
+0;[T+6eNW9>Gg,&AL>ة1t`uF7r/u`΃~NI
+[b~>WNʅO>eVcZpx<pi oADs sso+W<3&|J+	A#A.ZO a|eRET
+[@-H;yCmv.H(sԩ$C
+o%!X1#0B1n?={(A>\Z0(L+t{]{G`
+\nxyůnC'evC*ioJk:Ql,,,t՝̃9[E0>hl紻PS`#a	 lg!S?ٳe8eeew
+
+>Wѫï^f?$mI}$uJB8#jhk+>IV% Ӄҙ"1NީwҶk??ّ>ݑ JPz)=YLfP$K> JLheh;ToG:Gu^h ]ʡΔʪwWIz?g}b8NO 7KaaSpÛwY⒠;DY?,LUZ:Z;'1U-AŴ aaKxa!))aL&B\\!,BTT!,H$BX8u!,<y	,4&J2){rr*++oynܸ駟d2}ءyzIDx)g8S!'ڤV;4OnY"l1NOhƔ*FR+ZrUϔMAK֯yyݬ=-uJrzBg6."70ppWXˬ$ꪻzE kG4CUS~&,<`ܰ"]{ff+V#̧vddrl	b% 3=m"#6Wop@<8~[_I{
+"w2H kPz=B 1 c8s$E@c񳳳3fv|4Ӹj08=1fǇƇf&ua}Nᡱ6b񃊆QKG.,bOOɟWls09)Ro75
+Z;7RnGW)kƤT;), 5Լ!a%$yz-Pַ,!-3$VaR?\N6 s"p2D cCwG'#:Ő^mԴڱqq}BǓF7|ީ06c6`{|!ac.1N`KHKsj
+J
+	[*+r?+&Jrk&㦻fyaa2CUdAHX𭆄$, |1*0-AA7fm0kDw7Vm[;p) yJ7G  xz+;fmU_NEf+EsrwfL)79_q9x49r^{ s
+iEUbmvhHX@ .m	hLy_x\G߆Y`g㉈~dlDĕ!GsW4*,as̱]سwo<(xdWv	޽'d.Obaχ`<MGpv*n^hyG\tDeTӀOÏ|p@x@*:h+RW=Ւ&Dy,νd~sf3PEYI'y0yUZ[^ސVt:	G/lZn~ $	i=F!TSS>߫-EC]aC>+,ð}Gv,0,>w$&P˝ϾIBX_&vV7TXm=Ɔq𭦏f\xWHfy?>`$du؟ƔKU:_vn&!BEզb+6%,pddddhhtfppPT*L+Hb1P(hooxmmm---\.f#aNUH<	WfB cT9>%XI`]DpA~-A h+lR6
+1,.:	>{aA
+cܪςG`qηsc}l?%dxeèo"00*ofTpđZ13*ϊ"X1*pib#G+/؍4N?M	q000` H:*x<Qlp!a_a+O-0pI<,8	/?K`2AmK-  wAfiawp]_Nf{t
+^Ui\;tp(;,iǗ}tq94|`0!TjĪoaXPf@_ҪL\;.>'X˺T7;+,Doauz{#mJXH$NRH$wT 8***>|EU/*倥%S5o*4H0OXX0OڂӒ+H[@la$
+9\4fiI$#u
+f-;cA!aglW<1-,"$\y{*,0: |\\Yzȃ̍A!Xhzq̓(lWȹBV/86ojp7n.ɜ:*T
+N(Q\\cleze3S.3Bqr7jD#m°? W^yB-q!ܜ	:KaAY|ןu02]&\-zjk|^U|065{Mx0T!z9XUD6c\INkau-Z>.,ngwaخީ%yp#KZv|[E+jeAx,($@	B}*^kPr-Xh*.xr)afzCFWDF %N۷o#a0SU(ž*DG[Zc6[
+<A A$b2
+' "#uojFLOL@Ԡ"<N4.,mHMhڄpWF
+$RuY5j8BqtCv!
+@1ɠ #Nx.Hsa|
+n6F٨C:a~b{I4R
+*l4kfp($`w.៘6\8%BXXSM=S<{2OqOyg7Lptr0P nCZ~/ژ/ϬL^5SQNܳՀ'[_i_3σ]@sɸl>B<ǬJtkiH6HLhE~73O&ЕxlxGq۔d2	hp
+\`U|IxIZo}TU?(	v
+ePpȲD2u4!ށlˡ27IoaKA\,͇tT6N0Ej3{rXLn9\h4)v}ABaeuqqqBO^xzz=+CƤ[2I!+\~Vʗ	d*aT٢ɱ;bHBX.~AUXw>Ό2iw<
+!e-Rܛw}PXY𺗉l$ؓֈ{/i	83\ΕWIbgrW96^[F펦xw?~wЋS/w"1q	k;y8)7	54_%mSNooow֦gI
+"Pd2kkkKKK+$,D8gpH$W)͖|][쬵_;D}E
+F#4ƕJ⢧7e+ b"[  LP\&L,n3Jpo5YAXPh6;@Add1$ e
+˖Q/ot?4_^ 1.ۭ!a|_A\4
+QpeME*4mpI!,GIj6(A
+ƚX9(iK9\DUXo>SX͔fsC%NaåUaacaL$ZNlرڣLicrLe@1V]drm|158@ӨA@>8+)aAR(pl6innnjj(zR.]B lp?4IG@8fٿʴAmD#>"Ln(hNzhTXIsx@DP\Z.Bz9`X0-{D5R0R*_
+M\{0Mff\eHR|x\q\4^`,aѲ(G)!Q50{:!.R~|(ZHUp9f3CHTSaKg­ ~+,is%,}­[6+csssFFÇ}'N0MOϟG@<%tZM>TYr,}}SOYW}c!|4
+p] WW$9;#GC8ttD9x5.@%[ۃP@,}>8Z)BHJwI'rW|7tRWG&n>jJMkgrKTW9?X0@W(	֐µkA(B;o/y###drfffMMMmmmP^^^VVv?	<G5t~*,olC{[es	`ldQg$#jXoV"vG&o8 f##>n\90p cnACL}B0h4)<:?+m`Gd[^	JhatWI0BL|&|$|* h0<#k֏Z>Ub0LUXg>F3XyD<ϵ!|!aa煅/Zp\~_~7>|1t锔ׯۼ)++~ii7$,47XXdpӾ8a9rdЍf#mGB |"J7iIfyhʡ1X -U,hա~!YRh9`}f+XW'4'Q&fJ֨|l6i`yueL&)fJ==; :t9	&: q0IA"H&_[s,@aŢ5	`:Р|dpQ1;.º|fH&賀DԎ
+(F5oh.^H98D
+p^8pw_wyѣᱱIIIe/BR _zL&#awvG_4@21Ad_[ojX*+Wzt%L,X`aW2(DI =18Caf8M.gܪ2Z4<#:	W3`Őf+'A%kP0BP%
+LftW psW}ath_T}3rm8̚YTUXw>4^"0ppMoǽvRX#V6%,?(`_^{{>NHHHOO/))!VZZ
+޻wݻT*ʕ+HX]10ݾ^5~i	Kwu9	`0,Jvg2tyC_.r{}qqHĊ@l@ bW<pl2ݍF5 A>W`4/Snͪ'ѠL
++4
+<K}<l߲cǪ2sqņK!alJXP(%%%ĹPΔ7okG9qDTTLNKK	I&)ݹs/G^'33!m-,6xO炗3:
+*?G*]a	 U`f9,;D "eRrsH(|A
+˒&o"T2V6%,$%%ݻwϡ|ѣG۷W_ӟt>22[??<Sq8T*Ν;o>q|IзyGi[@l3O##P-\{"*=m6{w
+ۄ
+9:Vbi|"
+v:^&F6[Jx[.-ad.Jt16%,9sr/޽{_yC۷G?QDDO<޽8 ˻xcǐsֺ/,^JwbZUemp"YOEZZlC4bGA
+6}xVX0f^iWV w#$!ʘ:@%q9xQ"wb;w8@T|vo+[{}ccc2*G?t钃g!a F@$t=*2]>\#G`rNp{1EC4]R
+YYYgqʕfՅBL0k"P
+Ugb
+%ìVaA!C)5ak
+JBeq#8n͈ZBrXxL=,ٙoݠ`hIDZgj2)"kV)a!99cʲӏ;MX/	fa(· BNCO@<|4nR_}@ %xž|loEqt4XiRz,D"\.`M|`J4t)bڄM^.JXKɢ;C\:^rWaR]"d59CZL`20(k0)x͓\BJςPȠ+Z*WbSʥs!x M_mlJXHOOw}j*:veeei4ZIIIqq6
+
+
+QFbAU7ȺS]p-h*u"\3 kA>
+rW @ovP͵vBD.`!f)ʹT5@Ǣ w*7-J5ta0gU\
+hƌ{2`KS~(A1J|oO0h1P<eN7k[Da-o )aܹsś1'<k7^t)**
+	\nv*wJ"q/b%"@330ʉDٵZ"w@>
+rW Ua066f*dffNp@C@/XAVa!߄U,UqB/17ĪHIoSW0YljaqSF2cy3b M	.\hU!@ee%Nc?O?__
+/_CO ~OHm>zB5ߵ45yzl(_LM@D?M
+.eHP4/,HUA<., 	<ϭ4CxAw'p``ò1fXl6jTPGו]ϢaR.N0h,* \fYXp\7 8lJXxQ
+N:&I$[ TTTӂ-d2"!ZU"Ggj
+(-(@j5̻)	Qh+ Ua'aҥKgϞ]tӷx ~,YDÐ,ȅ|A3+\ ,tTAп .љL^YXU]an4l2`AI2];``R0_$34+.#Є|S-HXv6%,dggo/p^<e6C_qOo{̇-!KtwY9O8:
+0bxb'ArW@&W={V4mS
+Yvx@DhB`ET)[B9a+c9`(DSZIٙZDo0s8Iv6uu(D@<:rrr˷JXꫯRSS̀[kɓ}F=`wcp<B |010#(·pw*<^", z{{rLD0;vjFX̠[YliRBnl2ֲ̮xD6%,|7t:8qPzH(///++ᔖڂ6իW?c$,x3ﺕJoATܽkя5"0dr̀˂D3Ю܈ v+R<Ď)a555MMMt R8l!mHH8-N6m077733	^vQnU}a&vb_F v^1JOo&!6:B냢!|@vW@@" ٔp=&pl6!/aB-`iD@Dqq- ͛9na$|>NV$Yvwgikn#;},AяH#\!|@vW@A" ٔPRRd2IH`;i˴`sZpȴ ,\t		^L89؈[[ bCn߶</VRA&:]9hX68gh'`YvRXq#5ԼmJX 27X0&ݻ999HXB-kǮ2*$;+X= .T:OH+@^N+ U줰06c6`{|mJX'
+_5a`->qb
+zLa}ۖvO!	8;pB;]ݴR	R$,VCallLtᡡ!pTAB!e2T*bX$P(|>	^8ncQc6>-?LT}5^(@
+ss	z@?:NA^K`+ UKDaAdXdK9[N:W.wgq^araZ9+HX5J dX56	>AE]9E*"Nl4$, lJ`2jj!7lA#2r!AssH-y%KZD8ښ^z&%[@8ECx-讀T!a>^sls2sl:ǝc.69yMWr [.,?a۰!2FתNl4$, ldNBؘ7mt:跼3ha"8BR\0r# /yoA
+X2T'JN-CC8! tW@Wwj:6aa<ϝŹC]7XMŁ
+Bh˃YBXE?:ܿag1ٓT<2Ү6g6\_z=/^\+
+P9T`$F4, (+ؒ_^nD Qv|6}}N9ط/;B]
+F`
+wm`89
+sGKϾI܏a{;2ʹ>'24-u=;&&Z%,p/PltKMC²c(,wR3MB(AO]j#Gyzv2;r_}"Ja4:@8(4w*x!),ưl$ԩ@gX[uYULlrNQV~'DYt.`sWaAZXL;ţ1+έvfS򛆄})9{~In(t+U*˓OBW
+"v:ms`bUX~}>b C/MRqg	lul6.,(4ު4.gbkgu:a}v7K>:L8񮽽:bl;a$: NmߴGa!!!d2!,BLL!,DEED"SNɓ'Nk8 '0X<QCư 2}YdrxzOc2'ⷠR96>ECx宀T%p\?JpMY[Gj
+Ίh~cdb:t{vvLXppf FKMC]k:N=aEݶ0YA,rg7<LW*;H=({w*x3.,M<Ox^h <hհs9$WǃejSvX]r(wv%&^mqs!+,\YrM;R~Ӑ,.B_ߵAS`/D!V 4'Z}2+]
+r#DA kό%RT,">`D:Ϟ5}fF-\\*@pRjc%n.1;U"CH6~DVL>	td"Wrx:,"t!a!ڊγy!P RF~515߰/,?o(6ĶBԉ
+* ##A@+ U	Laa&m=< s6IkĽz4[Čsr"c^ɱhl",@׋mxND5mN;!a!`V|,ͣp1`ܜc8aa9[u%olO=05
+|J-CCD_IoP4	w*(,l<rAVة;բ>r|͵iTj_ Ԁ򃆄ĕ[(|6%'&^å1$5*%xYnD1Dvlsף&
+(R|$,V۔(0=ssQ_hvcDç0,W #,-7@kxDɵm_
+@!<H + U@o5$, ahwzfM>wTP4cRM~K{zS`|5y54)z0J%AV(~ﮀT	Ր\FFF@'8k/Bd}}}D,k Ύvrl6vEx6g~Np5|)aaT&a(QX+w}}0 W
+z"SH=O_<;~ﮀTc'`7M	q000` H:*x<Qlp!aaՇn0ۤ^pLAÂs`9)1/\
+.IވpLqo<JӤәvvg;<fg;)o<;PҶJge:*)D$E!/ 7qƍH,HA	-K!2ɒ_dcX[<H,_$G:zڏrK=|&Ȇ+PSXhS,t=88kTx<FTSR
+klla!ܿbڀ cDݸ$%)H ΋eHO/:T  G$5bmv BPvP
+
+kTfI
+FNRhkkCla!\89(lZ@,H:v/XXn(s'c8!b`@P=ŝ;BXj32Rh( 7LNNB6D)b
+G-)4XʔI%W˹Ǩ*S#OYخFw#&BЭE]JXihmvZFWreEիW%'i\*+҈iKr
+:tIZg:ggZwwE@,m4x{:*  tF}G$
+׮.r+ !I@U(h(,DlO4JM'w۩.$ouptuRFj|N\K&S)}+%ɿSD-'ܫY`Xn߾ͫ'pW1))	 B:C544|g ,BJ!`(I"VYUwPX_| b'LK Q|L >95şkȆ'jW UӊG!)JۭRU}^,㎏GXa&fb1#;£EԔ&p2g*nV$,L4=!<cRRH&>p.rÇx(LLAq$wd(S$L?tv2_
+O6 H33BǱ40N) g@6D(V
+E8)EIeX]j81!EXղRn\+IIB\<fwտLI2GuId	^\ 82=G5n44Jn^GԭCah'ݫY`0]&)$-
+ׯ8u>/;b(pzltRssŋzAX8s9uɗ>e.,a|r(JeAV6̫rN@$B!Y@q.\ˀ< (
+*V^_b{ǤPq[(wtfڤα7pr*Y'=S6bcT*ck=SXpdL̯HN)E'ܫYpqt dVeDZowv4W\|Q+?}ɍT=ŋ&?a!DDa\E-`VgK3<DᔓS?C4 @(W oI4+td@6D(J
+Eh3Y(6DhB/}V0.'i%g7XvXyJ/8D~ad
+f$`Ó,*A"}'ܫYpthpdõkگ{vz[j!tK7_>vҥTIǎկ~BAϗ>67'tpKb&YX]gʕai;t8pBȈб Itw]&'
+0n72!@@U(&+,"@N]XsԞE񯥭&
+6͸峕h,ǂ̸`Hd+UJ5q,ޫYp5÷1r^w[&sSӥxzFϟ;wٳ~oBNj6ܺ7CLveYJY>j6/tx @xň12£޿UȆ-gW U(WR߶tۜs,Xx2Q `IBi1h4z3}:)YGXJUփ
+%2c7{9+M&S;K[[[ҟ%:b>o>	ft'ѯӉO/-ΥI
+
+l$ܩm[\NÝ?#nEM@
+O9qbMO  EWRf~?O@T@6DN)2
+Ň	[xr.E
+L&N=^ IfAjrѰmhU)ֱqDJS$% 0(dj^u)*)#ĽDÊs)mUX,{_1,MMδGͻiCwymgh<{`8sӧzC^}Ur$~0[[NʵUTDe~]%7'o<4o ?hM:3mwdC"+PSX~6!nk5^Yi:ڼn6.a}½ȞOI;h'bSjFX'O)5'y%V$,(JYБruk͗jjjox˝FWn:iLJ
+uuuN裏^|ErGW}`ΆhVjܢ6:(KQ:	( EWz{y8]'\9
+*+bH4`,}2{Aₑ|5Ty<<+W"a7<sLZCHEӥ}uL&/\|ZFE`Po?r*֞:uɓBL9z%z%$Ͱ3%Fo3B
+ $Z$F?!<ىS9 
+*1 ,K	XrzWHYIGf2~o0tӪmh~ĉg ,ܽ+tpK޶>+lDR6ۍJ;iQo4;30Tffiث<
+tZs	,!rA@U(n@X(,@X
++N:efTՅ7;ܹsF7o|l0~ӧOڍi| BXj-tdK!ѕKitF'1s$I5I-טX@0 2GNΝNGgPH lR4vP
+z.ͱ3-ұߺ_޻gϞ7ӧOr1MXPՐ
+x[L.UPln7&\5gR=)Qθ!o1g$  O{GBm>[y5]î ȧ60`0V$,9s&BKKKss/_YocEh7?/m?ם]ޑZ8p 7άfl	/WIjDOV\zyY	 @;t㢫IGGȆ"aW UA$SXMX@bc("a>SX*-#8z>'gu#rcZƃ ,d<c1"gbPʔ޻͊l*t @\D2;96\d"<- x a}јK@oygeYϮ	ojjj^{5K_ON vZi;&h䚨[KQYmkr_pi4;'t @,GlŘ:	y !B@U ,Z%0V$,TWW;wbpMMM/lш!N.,sÙ3g8m+	
+,25+!-&^%RVWQ6aM!)\;"  0##BG4slcpZ@6DV(t
+b ,_X8pٳh]JXx7AX"h咹Ew2B!\Q5QA7*i-[Ԗ_ٶMX0V~?聾EȆX#nW UA0WSKm[+W4sw[j^^:ںo<kݵ]Epmm޴}:i赵F#ͤ1ƽ}Ǿ__mq<
+6j un޾u?5azr)aa![ܻkAlAr.X$%h9XT*XMч iLLĞҊ*_-k
+*BFmٝ~ea[UB+o_[+Kjh3Dhl+?oTۖ@k5E60@נmoMstJa[YlSg^߰hv)7>潚)YiEXhjR{teCͲ>l}d⎅,HIk=niiia![\<w^B}"jR)M[[FQ=ul/`u D	(!W&S b-]T"061x ߧ(#),lWږkTIr.y7j{I#X&\6yi+~u{b햡1mWI؏4Z[m4hXWBmiiVGגVd>D0rMabk>'Otҕ+WpD$Cpŋ9m3- CP[[j@X
+<̦xꓓ ɅwƂvtTօ^`_ E=тiA@6Ī)\
+bF@aa|rj||\sFڸ}k EXuUl/N}'$&mQڄ/ys;S[Cg~Xes+.|q|ql9w'
++MXkeڶIq
+m+ZCEX`mGqjm91%:q(k/ׂ^.0k^	F,!A``}U4NhUSX8sbiooz*'/piu-$s"lQWWwر?v\F	# -FU`ϔJ⤈)d =\f` }L!VG@U9:;yUt>|y]VGMGɭlMxg0{kY- \z,S<J*ıa81_]'Z}Ore+,L-P<F֚l		'4&rsJV*
+TJMȗ	.*ł2؈`Xڮ\I
+\ddi!BpAZW˚$@@Kk ]/M:)Än@R_t7HDX0Vf4	ʪ8lQvP k,;q2MU=}{CVX9VX6ZG|^jo`hYw5q֊?61?k	31-?q}p%6KZIbPJ67HKs8QhUaagMZovWd3)J-K>]8gaܸc!5!9O5k2r&'$%1+Q1a,وdӟ2;v( ActWX$  b]T!@X}'EUx;
+e؏h..,H[ um,lͦB;QT\30婇l{}a\+ > _'+,t{&N		Ő54fFj	+ls(&,lCpŋсEaO>aa]k7=-t愀*.*=NPPTdre,C y?L!VJ!@U 8hj2),|vcY{a!tcuK{Uα`lƓC)f3emώ[})e&v`uj Z=&!1l:t,< ,LpI!K`>)i諎ƒ/vӒ!/3(A5+{GAj,P(4>>ܹ3:::22A^v\]]]t:ǭ[:::v7_~5Hw7Ou2
+~?ve*:#c%QhƯ+K-h2V a#?@+
+* IHg|w?9[/s7VBqq]㳁vIr"0Ԏ$n?&{h5:X`<dulޡa)Xm?u&fmt.B|aae{v[&w"7%R|#pOⴈmЄjM@:,[uEI"4[ϡ2rĶHՅQW.WfQnu
+H"$v)m[+VtnQFQJkm_w N _	iQ  dC,+ B}ox[l6I!M:{,lF,5ɹmKwBVoEOe [C\ĵi[1~%! ?5T:lWqC4Ś[4@\WޞaZh٘ޅ:3H'8翤WsoIPib~mtV D=Zt>1%V%wz1A׿|б aܹx<Bo{appȆX&gW UHaݫn).;6>9MowL<{|c=._o+BØe߱w,04ޞkQK7y;DLOǷ*M,tz}6;0T hW@j谶|hEI$jݨT=ۤ*]R`8O	
+V @:.q*gZHL5ޝ:8 @62),
+@&0vTV}+cܶD:5wOt]9-4L aAl3=z{y<"N^3Z~XT^Dɭ[] ̬+:4>90+0 b!Ha@U xaF1PͽYsYduZj@ږBPl<|wig^xx^%QV"Fb2R;cTQB!gW .)x	4t !H@U D2V!,曜w^NXP(kq+	/2',rNX/~	;waay=
+r^Qp!dF<*ַhtO Ee@Zǁǅ/x
+Ȯ @X(),ȏ cnR!WWl\5Q}UlJ?PR3SLIFQ*kpW "
+^$	ȆxbW Ux<ЦZ3g6F'0]7$B{(E=:Ql\Ǚga]:V  N\o(xMen7!P
+* O$Я@bC(@X(DnNouE'8
+Z5e6e0:&w,(a6̟	
+ @	Z<x4B!6R@6l(
+r a a!+PpøC<}҅ex N$1&lRF?D<vwpAя_:P  u#K
+)&h"bi	 
+* DB̯U*J8J/LiBc5zOD	xxhН:uGw7sޢy֥\IX4eRgyin:L  	QQg&&+*@lLȷ+ ,1
+ؖƑp[sYڂS]JI˕!3+KJ׊hR(JI&yڬ@C`@X(,Wnf/5vtK x@*>qg
+"5vP!Fa!Rsacղvnhq,DZ&(o3LP%dZigqNM)%UY φ_hL`Bcn#[xAndzK@$8Q{vh+b!R!ܮ RD+,HթوZBI3AJ]ϗmĭaL`U	rU/ξ6lT(Մ+}/QHX]'! aLV:KBBteH  H28KOHPBII+ 
+Js$`n-QeznEjJnWUgMVs$,DNlѠY&{4&NLhqMUƠX5c
+ 'Q)@.:94[ p@yx\r
+dC$!ٮ :),Q<1&m'
+ՍUv,;5+*%*"ֱ#JMXĮ?5VڪJn3Q'[]]&UHB
+.|U+`uyHR}+\X'j_S^.t @ӸB: * !ۮ j),Di
+FhhίQ.CpZ 'VY.`F+XoT#5~F"ĹܯYZU@X(4!k<9I\#6rEwz{z4lP=W³m .23#t)dAA޺v#qvP ZaAIsJٚ'6'ha&ba?m4҃v5EIˑ!Qk)ZYX~Gul]ߪQ'\q@X pAfuqaAK@	4VQpid a!K'}rpȆ ֮ FD+,oe\Pi<X4hWZpv 6zvA[u,VI-F#N#NL*`4Xe}l$ȓ'SP92Ẉ`p:P  d"9yx<5Cd@U ֎(\j@n2^Pǘ'neiv5dD	NMF^̯aXpLl1;)NYlǃyH(CeՂihM N  fZfدE@	G!l2
+* YA∃EZj4oy 9.HXJ1DKx\y#K v|(L.J8Wf,WRS_U 4ÇCh7рerrW(@
+@ aX ,EyͷxMov57vx뇓V
+y'4iTr\Ҙu5rL*3?ϔ2/t @##9twcU6{ 9e~~^@U Y!==c岫T_l4rd!/Xxn-nVshnczwm0 Xz{Ť׋ l
+* -ar9~ߟLlׯ?aa-dvIC.JXZ%Q7n{EUjOdE8|{p T6
+dfa^E!H+ d|
+hS	#[J_oB/<{wo:xW9~(>ȩ :R8#\`3UG?'S]-t @33ش@3fCeW UBS08ЦX`dEX;?x㕗^VY߾r֭ \2r hUׅ+$(=S2ǃ" `*9{)\7A8QeCeW U , aa=g$땕Wi7AXX.p"Lε?Q3)LfZ]JI8"ĂVJo5*)J1|l  VLtqӪώU69vP!Za!۾okWqBk	Z.{{]:YΝp­cǬ?[&*L($td	FFpmI@`b~%qS(ut/  aH`3>d@#lr
+* 9EQ^sRyOðNXhR	6aʕ:x+;vt>ӓn*xҗssu"2>: x< W1j+YXBQeNnopOH í	A6 EZD2!vP\#Ja!T>̨c(Qʅun;5kaiL8	)88x7swBn{]V
+l%()hE)kTcLM;1&1T:D  N\8!h| ׈!
+@`
+ێNv5֕[G.ӶMCGTh^
+Meq{C1<L;FmVv!']q(>Z_iM&|d+wi{EdRXWAXX)h۞!Eǽ{BG H!7⓮Ti&FκdfOxn9tH@ At;wp495bȆ  D(,Vxhױ,t<h&gL4MMMη|-ՍkvISTXhUR%5_'6}&ydKXeY	",8>BpVJ_31hfv#]ηD^vc3#zZn- :.!8	f##hi*td@)l
+* yC H-ܮ}@E$',T,1+2tK<؇U8اуZ",vKIaa\BT{~	6[ǫ/\n׿î.V
+o&:>#XDP&lV^2DmR^.+t @ JNWǞ&Y43=5 p޽"Άܮ OD(,I"w`s`+,5@c
+҆VE΁ɵXnypWoVUW[W
+1^o$ZvNN
+K,FPI ɵ6%V'h\BQ.ϙ#G hi%A"a~~-2Bp
+@p`e`zQ!qyp/BӁY]WN	',,8%PBy|>כVcUDr !;0+(JnǻAč
+TGأֲkW.k !lgf3}}G5BX
+@+mjc(5D*"a!4ѷn|]%j/d\X SXse&&Y:$;L a@~~Б%hA,TdeZwb:)(~ t  40p+⢭XWay(!+ (4BxɁ=%T=]05?0nLުD<$DcAaa2]]B0@X 	6D Q`ةA?q{mF{D;&t  (6;+t,PÇBG䋢̆Ю  bu|]cOH0;=y2WX@#04p9|1@X I3Br|>}ņߤuGP
+Nq*07o2O?2  fI)!ODEeChW U18`Pd^>{~ā1"Ś[z&#
+ 
+Q.viwr):k<8,B(
+PX2ZB1>NhiuFg e֭c>\ @PY{I`x8Z<ȹ⢘!+ 5@X a(A4f/@Ԫ;:PXh=hj1_*xQ}"6^/:2 M6 vP ȧ60`0@X gh##tX,@AӗQT6MڳyyC R&3bb8!+ B>_k16BP@h1|hb##<ˁ LK)ʈ 3.;!B	 6@BY = P+ Y-Dx0
+X;Q$0Ju5g ^:p'̢@qS+ GHE3s&Bk
+XJXih؊Dߟ^1	U8XQgEi8!BFQW^a~ xWA.a+.
+="vP XJRZVV&J6d2ZvF4Jq
+Z&Q@[x" ,9ARJ*
+0BFQJQexh4?b Ǿf͐SlhTy+ vmv&Q7nt/cE4T.t|GX%%L̮m F)ioL|	0:1M<ؿ`mc}"l=?LoDO
+ :\0\ ,D݊R7z
+\1k8s@i`Z}"q8HFH rs4"!&=$DnsQĂKf|%I @t:2 h6D>
+* "Na&zl6*9ZW*L~fAX`{|Tr&lmkLnUnA>SXp%D %PrcAz䐹hX<!V4%X%k؃sQxn"S"@!fW U q
+el5UYJX=Le[ &*6y#SX0+$"p2@X JYZL7Pә.~=hr/ '4=1Qpy+ 86bmaӂ)&,oHuʨt4<6CB5'd~EH7*(tl;w2
+! rzCdf^B25Qp+ 5eԩALs$),Hq	DN4&*009X$`|y-
+V6OBM7'vr@۵TܨnIL;7\(t w)kvБy!cW U(),Lci[MZKv%%U#QU0ØxFa3[I/SXx4EbF*$	@X UV`!aLvJb@Q
+]i;4p\^\=(q_d@VV
+@ NalqFCLǘv~:ǲDi$֠Y`v1)Q)?ȎEߜaaEdo[NBDE[RR%؈Qj?o&tp _9eY7
+@!Faay"`0WpyoSQdGX6in߼t-Gaa{ziApO \򣳧V40s!@~!Ħ2铄 FdCڮ PXPX,%, +"{f 1kB aaܹ92?ܼID'PTDe%9MF2*nZkjH("
+ y}PXDfPk
+@BaBVȖwgzC]ݙS~RϾaax>GM0X1%TiY!7)r
+Obrv?:N #qbd,9 S
+@!BaBVȢ?ѷիPca82DB$BʴtaAQ[(R*_:sБ@q8m &'b~~-͆ȩ]T@ɧ60`0
+a	rc]')/Ow,ff!) 	䔈[/I63+462?2oN τBB'2a 6HΆȝ]TpɧƁ6łP#DIQԧ4"Ʃir
+f@ΉN.}g !M'ywu1j(\͆ȝ]Ta	E.pTff۷\(aw~im: ^Ow/fCȮ PYXj:cBgLLו+-u{[j^ ¬ɨ=@omw%F_8;?>2N
+Z
+^XH^X`rN/vpBEL@pD_n%1ypͅz#+ H;Af`@谀C`6D
+* EP6v)13YUB+o_.TI8aaְJI9k@ZAhvoAd\XxMOB,[J1$|+ &Ddh4~ݻ ڼ iO̆ȅ]T80'v[[j}mIaA]Jm	&,GkX[)M5(%+մ6K+Kؤjd{ , on"*4DZ9.X*#wgeۅ
+ rO(Dkk|<ݟ0?ܼHEi+ +K)Jh=Ë#G`a[|W.([Y9BR+TWlP(x46*lS֕vivj%/ aAXKD+G
+, U+_Bӧ r!ex	 !nW U(&D*,Lu{aD UXmdum9vԦXX`%5t{v,G]`9lUя
+^5:Ž_:,t)%[0y`DcD3!(̬hg
+ny	'nTP73@}[x'	9Y+ jt<@Dr.mJƱݸa?A(XNk8akhF2Br8,'X=wvU;k-֪XQ;6cAmj;baKF Na-"E3CH@vmLA0<sЁ@!dO@ayl@U Q
+j1ێ
+)q((BIacQD%Xo.6>;00GKq\kܺBȎ:0iBIf:"]"/dSSLOaB@B6Dv
+* E!z/7lEG.v,ī%ZLaݳo];Ȼ0j>MVlrˢ:nGLMڄ^RHlq@X7hSٙ>a?PX0o!t KMC[E3ABB6D
+* ŊqEI|)3GufXst׶JT]\KDau;1uX6"]-akmmoam}׎_`|El|&j(7OǣP ,{xdzر  Kb7Ý;O3BG jN!hW U(b',Hu{c*If7l5b3 DclU`K&,La!^R2j{irbsirDr3Ek.5e)쳳Vd^ĉۨ$ʴ_OQk>=H$- +$x	V"l6D
+* ōedѱޱn?l`yr`|6w=xcu{ɮX΂$  >.՘$Ы}BߤH՞4"3n't 3зA0e7<i@-
+@¾֐MXa!Ȃܹ322&Q388800^/Aw===nr/۷o;[nݼyfݸqin&M'* [qDNr?C熧f2w⢎0"+vP 1 ϘUG:F2*n7Qfqz:@X,80 |k3^- pZIQ! d"22-tX@
+H a\. QR
+NUqƵkфWÇ<-!Hh0B$@Fr;! Cxm"_>zi@v
+xȧ60`0V$,\~}	}Hhnoookk3ͧO@lKB1 ۵Tܨ7he PPC ?bvP QOaữaqM1X`6N'$pJB2!<#'&\zʕ+A+ǎ'%DfII `R?v{0 d$&} yΆX]T@lPXFƍLު\'
+Vl6Lڊ`jF0_Q M8Wq8҅@<3bvP Rrs|f{칅sJm{.{bssUTRxaauТq;z5-K]	o-C'YX8v:
+21^`3l#$}JBKKK3KSSd:uԯk+zrrݻ)g~v3O=K @1bUpБHhxX g6Z
+* P)S9˹󈙛za{=<|x~0<~~JxaAǓ~K{cwY8-FE-HXiiiYXe ;N6tԠçϖ .^ǎۿȅN\1%dۨ$D|?.+ E!kfڽ{+tXp'b-vP Rrd"
+Ia!,37BߍpAsotG),pb1}+vt<ձPi91Ѓ( ^Il<«G;woBpX1fV4<c޾i-p9#`8rBLg&&VPY$a RMJT퉲M"2L&+JZt'TU	( d.sFFH`s޽|"+ f*S#j3t41~wd,rA\X<əýizLf||appCj~}x̌g&'=l6q;03eKI->u'zq
+w_aXP^^~dltc}^1.\e}CнϜ9si^h^z%1&nfzZ2 OR%Ҵd2&8})"
+ @z~C!m
+!V
+@(j
+)\a!07j}jTa׃3-y'~ˣ6EP~k#1/{5BÛ{v6N~6x1qv*g{P6'3u_TEoMQgc "aa޽z>YҥKM}n?g
+2@eF}b|)zB]]]mmS</YX5ևIpM BЪ27>G9EQ֨W Dy
+ܾ;
+%+  -,tr^
+qm'y
+/3ãIm|Rp?w7lVSa\c?ˣ&>>HӟY|80NT+L.$,:Qc©S,.]jNO0]037Cs,\w5"*<y?Viuc1:,h	I!r
+X6?|{̇
+  d	C~Mtwc-9͆X]T `
+]X`w{-}OKjŅфyVhR?ʦB(rE
+@ˇU}Yn˾B0Z6}aSR3HoK;wSqEO>cauM\g6/d	G}/YXaFG<xS!M,IYJU=w@q@)#63lU@U  "*o)09ζL%.VWϽ9`J=^NjHI"8avrߨKI}aRIu 9XW-V@ni:c^aMF>{g0
+>f43a651P醆6/ΞEw|zW^X{vj`yXSU2yVUU_HU@107ܺ%tl;E3DN!VaW U c\);VN~{'+K{h0^ChP{]#^Ҧ^g(<2MK݆6IaAöT@>1=?O|l:S3W[i=P`o?o{OQOEA	|hm Rqt+6^4ܵ~ۚ3|¡C^u1L$h&dVhbj
+
++ ي
+Q;{#e>X@ 8X^tZ4Cw ,9ʆX]T Hpҟ)g"&X˦{뽇4{edrn<(~}m:/?E[ym9\cέPL?O~ج
+\ƫ'RLlCfx2qB胶!7
+<wb%Dp9/^xyYV[8Rlo."a{7 nV 
+yU=ϗvK.!VjW U (Taʃwvps链Tƒ}U!xfKXXV0*O|'e1+>SnZpy#_ɣG{b2Kb8,pTC\ co !g<" l@U LVX(ұjaƪږ+Wpκ̉@\dLi%Dp±cǪE+,aKm==W&aw|q  AzE{E3"
+ 5@Xȿ`0,իWڸ#"BKss3n@2"b'NE+,D8"̒\q(J?|2&sSxvt 8͆X]T X
+
+kaW^rJ̉"R4©S>,ZaF͛ҝܾ-+sB k m=c'񁄪d+bvP 1SX@b0H+.^G<z^@Ř_V8 `LO3.1`O(hT A{dC,Ӯ  <|
+ykhS,xE0V$,P(4>>ܹ3:::22A^An===.}8Nq֭~
+x׊yfvup0O?Ͱ (<x^:% BlWiW U 5@X a@,n3 S~: X-}!-ogC,Ǯ  ,B*vvcurnUmkX-5;v+v%^!#@0kݵtzGeK`Q;M98-?pnj8m.Ӷ-*z|>=^J}w?B00ܽhW!!虝eO' V	Uv3cF8?5*Xc6r
+* 2)TaaԶTXBɪj]yrZYJT{qKK=`Ze,%]#Jj.KLvF_P6fJ+X6r%)gYa!;ŧrǱ 'D޶ VAwszzKʣȈQϏtu]MB ֘D
+ |
+UXm6P+m˹;_cU]nD-Sȣ(h2_+]ѰJm8vl|v5U:^3Qc[OQt|rWUB	ArΝ4zz{{{zznBAt/7ovttl7n\vWPẊE? :k1aX,Xݻ;v~sg>ހ |pxE3u{LhtFӰa<s߼#==kV8czzz7^u6
+* (\aa#Emܾm97m¨b{bvo\EkEmom5aͽiO1ՠ':{HKUc?dP˹^ikq!d5/,ZЖ06H'M	adLW.&wT{X{˔6l|/5١'
++!,P{*>rؤvlߑ{6{|+PYa58wNc]"+1Q?ըvy
+63*p%Q&Baf]\vE\1fZtVD<URGWaOSR熇_Y,19hr?_iz~dd\ր0h&|
+ZwELv׾v?SO~?*
+_u6
+* J)\am?؇v=Dכ*,+A:n:w1vr롆:5ބPhںgeuU-JTI4z]fbP;nQ5]%85y-8;[wgFҊjv}i*_88.ԃYv*6njYj%6%cDVUclrBC-:BCΣ}+4sz|mPՉ
+:~kL'7PHB2ڐMȊ=88kTx<FTSR
+kll!;8(b-HxCr 3ĵHdgϝLsmmsFFGGsof/\9{vm>b- 䑑һ'=lc?c~?_ZzhW}:կ6<}00!oW U VAA0ZNlj +,pY#niڏ6vl.&cc&*}Kv[*ɸ%z1T58cC>pmRr4FQ{Ʋ',L+8a}7;ǦfVWh́Հ]á)8re{]r"x9SZ%;w)=	j\c{Лvpº֔X`ȺzgRDVOV$,tttx^^Booo7KRU5*pB[[:fs}}[+P)"y)˿˷-	
+"P\3Pd?{׻`~ddC91yܵkuu3.!3>3==xo<3M_'O=u_mdg|jM4W3зݴ
+O1vP `un?YgŅ%ь n~-&wmAUPo.ڈ[Nx5M5DZQwlNhlI/䲄vKMhom%oQW/mTDH(LMDmI&;ZF'l3ܓ%,>~
+NؗxJHANQ*O6`U}^	iE}4"h\&tp555<yRBGGLfl։F74fs{0s6m( ?GfNzXl޽<eCX,Kl6Ψ0?[[;0/^ZMhq R4_4>"agM>{_=o[~;$CL41vP `DNZ+m?_lF9xqh~~vxn067@ 4K:pAazpa+ř>VK|%knKޓOɸzU[IbBZ;l^QĬծm.~</Ӿ.H:JǱ+פ86&+x,V~/Jz#~V$,X,۷o	EUhLJ
+iz:a.P}؄9Hf8zMbӧO꫇48><*'YTW[3~UW^y(.h?c7Gfϵ>r83fΜ93Ѐ8>zhgM~V!+z;3N[]to3]mKmE]R[U!QP"*q ԀB@jD	H B@@NI<]nvD8.&BYF
+>]]붖O2LrT UM[ӓ뿲V]
+̃P=`Ĕ7t-%n 呠J)CT`{UTTYuHa0Tנ*XH``.e=G)M8rȔ%ڊ*ԲU9b:}Fwkahզښjw-LX6^24WÃ<PSBPBkmJIIڣBy&rIPCQ	˷7k	Px-PŶ
+%FQG.av97˖cs^aA&:	a~3[7APZڧ}Tɕvȑ&,Oo0kלO|˖/^iW^5_?߭߰nFƟ6e˖۶n޽ի>~^p=8da7vu%'[_mml=z}gRRTڃ{{4ΨhL=Z[	ς0%#==0n-+C9YIIa(aiu.`aC+`Uy@&-G" *?rݻdV.o	Yן<!iGPFxa21VC۶ k_wwRذdl{Zuj/,֞Mb3z)G ,4߀&y}eBclêp޷<Upj2$ȑ<$ Y5`S9XdGa!
+(h/$ڷ}&d>Ai^a!55.)Q![8ZuJi:-R,%49A_{u+*ϗNΖH$jBGQ^98wڱgϞ?n|wy_{okYfʥwl+4<4	1	yygDEEuۇmj8v?H9ttDooύ]ry\nyDDt_	T1=m0Aò>Evn٬2|Se I!k0`kLf̙):#sLetb.<8UX^yh*Q_wyik57˯6ώ`k7(ެ#Y@uIVWXײI]V;`vS^4t1G}vOBMk渵Q	Dpʘ>vB>WڡW\>-lzKveܜlL{&,/h1-G
+?n^5cs~չfh7}X#GFĦe|EK%$u߯ۻw/0n3.A܎!3'tt&%YKK{._JMJ{@?HIA	a;w<!0S.{م	===ugmK??c̡$䷐DF͙sE;:,XSYxNqL~Avٓ3Y'O>sꔢPQ*.|VZeeVXxHۈqi?Sa!""dvCQQѹs)CN!%̌'Nl۶m	.w_D]XxgϜܬ^ڻAlV~z,,`LA;|g2ҡkDDg~~y=z"#;$|_VIrpdEdR'%\P?f8$i MRi-Z\"܈?+_HCs<zag?Wށu)K>	+\~Gd¸ܬlŕK;MMXU`&W@ZjdC呒B1^>.).) ^
+`GY-[L5al&'+1a58xk6w>SS^n'%`LoڨVnTUQsFGxxJߣuDEw"f qY0noV(i
+WMުԌ($,
+tzJe[`2OV)XXxp:,Mi(6ڕn</6鈆E8'cKRMo5>87	t/"f_\uoG,Hql->`&?XX\mJXdEpp-Uo?~Seoܯ+AUפ$ %%رc\.w	՛Yyq36+?>*֘YXpeRv68}TȰKX~f<Q<<Nd0{晃Lf$NzBΌY7L~NhTNB %yLS}}Z)ξ7|v~Ty:9"tfUUg<Ɉƹ"/66ªvG^Z810qm"Q	w ]!{*cWƞ8+>%<)-==K*:!dZZZjjjrrrRRD"9|u릚 "(˰º/pV
+gzjj:2޾raӧ툋]&gEnIPI8xʕ^3_g3UZby-+V.X(?ARVdپ)ix&swȴi[OM\d`ahokK<8pQs#"@#tEpjS_M[;OEZ2.2̍lz:ۯn
+KV_cJ!e<Oև`{zx<^jj=䁌z8r$h6,Xꍜr ۆ
+h|Z K
+믧D8ZЋuLVX~U෫±oKKۅBkaaݻfo~-Fx<s.d=sS,1SÂKVC$;w<T̙پ1tFKb0rQf0ԝJ8`$hTAoo1dF!Tj2	aaၹ^uu]~Vd7lGai7b5{ #o*2:?/fꁅ¨M6%''H^> )\
+RRHIIIBH$իWO5aYXpɽ+,|*hz;:+*:cc;bbŹ-4ƆryrH1:3*ZPs]Yqҥ^p`0ǴϰtrjA5GJWggJ°#W`lBo8'J=N',
+dI&bOޘd%hu!2{s#_5Sv6[_Ô#_%Caq
+30[?&$$zY!777++Wv*-T8Sѹ91ǳd#"2AKHbcccbbBCCW\9=@XXv50F7ܾm--feŽ'ŇDE%/[VWVSwwzۈ`0]{VFKΝ),66<33fdE.c a0I!TvC4ZL9&f,i
+!CMa2C ctzNx_u׾ޗBxBl	Ok|hcxN\cջW'X/ǆF6^gճ3b(a|Mk(/GBNNN+d++X[J6hA?iN¾}@rytvyaaPX8xhg-vt66^9uj|=7nHʈonj_drC09s1M2EU́:*:,ʳg369*8:'2d,__JMDK1m`bF&-$)m>>L&FE+98\#ϋnΨ_JLÓHX~NDӢ7pq^M+x2x:Ҹ Ӕg"n?]HӜH+;.;L0p), ŋtpB}}=JXؼysbbBuW_Wl䔇lŠ)AEσ@ )wlv۷o{b~:7'nZk׮6\~`lx\XpYH@	HFަ7Oڕb\_#BS(;)}T	:tQHR3 ZoZp/N32vh_*l+3/ZcGVUβFOD4<asN#s"o6|-3)i)ԷgU4L=Ʒb`m-6V|k{3i p ~ \X<Dj\*|,2>G Y[ӺYKa|Ať---._ZXF˪q\kd: >0*aa֭Ɏ	2IOD*G:vFttrЎȡ\Ib=m# 666,,l
+&o47Laa8
+mݺ㣏;V0nW^Te痁׻w>w{ztL1HK[[Lۘ4TMQU͚1B	DQF
+J袐ZPB=Fɥ!g^;~Fm՚{-=֞ޞ^]^oRYx{N#I;-]`]`[f+lֺVm`3ZmUk{FŦaVXH
+$b! ,)MܕYBf_9*J7I.Œ5`ٜmae%T,8è;w8	dƜ{F@FFư8v)(,ܼ9\+*v6_~;W}߮b_	aIN:8r<V䭷Xﾻ`~ɲe)*	fTX뤾 Dm- t`\@?O=KDNEIID|<MDѣġC޽OlNXq㭷V4f㏟{䑶UtAZp֭:mD}}рhlllBLf(m{\aEtww pƎ[
+;> jb؛KNmܘ<{v;!BΌ)L!mG_b$:=JMR̡
+dUcaȥRjZD-Qe-'PdMXmViZ*zz{w,	ͼw)MϊXfe-+Ai]yR|okEyj;{/=I`<UX0Z۟VB3ay5t+f[sf_Vn;3(,5BRB_~	rX7a/;y/=ҫ_e7~ŷܵ-)񒧞?=܋^e=`Hܾ'55^ ?ĹsT#LhK$D\4###G.!!T߶$~"V"ˉ%K?&, }x-׈xEy' ?/?1ooG7#~ f$~'f&bg'^~x7x}bB&-#>8o%֯'^҂w-^Dy)`>ٲe%[#qψZQSSsq5q*DeeQ(//h4jĥKJ'{[2XMrǫ0r<`50frgtzS<EykDk3g|}->>q1{ƌD&3Bـ*8Qb+)g<JQG
+1Zr3Y}nhųQPx6ѩ=gk7_h|yqjӫQD`o5͋l$)Ls%IӼ!/GhvӼtpY`0#`
+|	z)ŕ b$*"蝫ЃQ @҄QalFE lV ᩽`
+ȝyy,
+!ܙ@w`"Ѐw;*a%T40aH5:&S{x*۱0Jd'G 5GpJXMOO'85N#wmjw/\l?|Y~M9hV_ؘtR[HLLLHH .;ՄBwONMIMKMI[Xv|}Ś_~cG=w]pdvg0FpJ47c~LmqDG%P*Bi)B&#Ӊ"1ǉB($ ?{bbNbVbv-]bGjoB;X/@<,?CO@IPĴi/IB#	 Npapusf_} > 7n|ÇG06~ؔMA*3g9+ٹS|BfuxlhRnHe{YW.@"!  v7|? zѣ}Gf650BpYx'yҨ=i 5L&)4"Hh48#SHbB
+/{,#B~/{2B!'׮dhdD#'ӷvx{R(J~ᤃC6͘dB(ӧ?}:xDJXXx`ۃO~QTapa?~-YᩈDbEf_h|xû	5'aQ3|4=6ӇLVa#-X6/)zCߍY"J!Z G[Ize d@'A%C))p#DZO
+mM`` FUKow\L)!сeh(TJJhŰ[ St*!Ta.!6
+@%0"VXbJ%>t"6XXc%9v4d#dc¼o>6m4Մǧ*ľe4yl2|yyyҴQH7k_~7d}1^'?ࣿueBMBNｬx+D~]*OMA6\.C|%r%gҥ'~H;;O̟O<4S/1kMw̙?|/gGuoo;X'{x%׈߆,{_>Y?0z%`~ptm |޴4HϞ.@+@Y&tHhl$ZZBKp lG${r-4M& ǭpJðV
+8q´ w#Yk)NU".^wu6`j*`y'RN!MSH`B^YN!rJj+Sm49(RյS/ʊ|DLQhkM[?}^
+%NOOP(ۧOOt-!	itAm6]*54oo>B- (gݧ.)n7FiSh|17=q̹$XSrZg/ItU[RfLVa`Ҋ\$ ~|]~<['0Yf%)FؼU%Hm	fnDV"B$}2ڠ4`w``)_qjjȅ,rTl6)E']XAO(ט&J$P}winXQ	B;	q1U?VlN%9ع811IX8rH``jk[}!Μ>nq;`+,,/c<GŖ-/[韶xygӯ~M؜[ٳ>o{EP+s}:'lLxPaسطjB!q8@$'Curs^QP@A%B䝿8Gt`f}=a2AOv~	<3lJ#ݾR6b'U8ჭ9fy ?rڶIk¾YhѠJ倥KE
+0T¶l&׷|$X۱cŋUӳ1SrJiiW[(cbwMr>+$:Z,\Rb7l/O>дi>¦OOP@ihoӦR(Tי4hiJ{t޴iAӦTj2Ae§OP4aM=Pw3-;.嘑!:|vKΜo>7yhhya`{6MX`6=yaVD
+wh}&*ݝ٩iX`Fd,&vft*9E:2*}{4JRa sP(e%g`Z	AC1&,잯6goC!
+.C2ǂI+ŘCp,H5v,PxQ	Ǐdpғ̌)"---%%%99L@ֆ8vخ],,tuc`/	n3TD𺦦ԥK_`oׯ~=wO_zo?g&;׃l4A3|^T*5:1^'RkYx2e'gVʙ}6B*"8#%a"wʂA)K$ 2'm$l-ˢ%b0kA@ݙ'(44ŋEEE=WbՂ\pqy0o8q_c0NLNTVBtR}|ҘL8JɘL$H,䊐dA!9ȵ 7ɌR(||x;}|S(0#(Cu*mPPbt5&3NMVsLe32Μ,6u 7ǟxrns@Ӧw=J,O5>uzoKsgOkGWNk<`&TX@a	A`*'aҾ̋H(+0nP{ujns m,
+DcwMV4>{;X:CX`9 [3|
+QX04=
+=E]bZMzTފɨSNӁL )d
+G BBBSy"f3A7L&,;''7(hҥ˗,YgK;w჈_4G65CHԘ)fBJn[-f2j2JMh:JTŨ]Zb)8A-r>_2d`qf<ɀz=USRX@7f('2(|@xt.'#DmӲ"Sb+R,bĿ`~ e3b4""B(!F188X⌂kϺEuwjsVZX@oo!R5d2S4+ݍtt~*q؃NnF`EY_VFY_GUf̈e2lCPQQ\pn"nmz%ۯQ]k ;seh{˭F9J8	&)'Dn?`Kjovtuvte11I CO*	3
+X\	e[PLVQ7x
+^R5־W2I nM
+--
+cC5#6X2 mb`wfmϱ`9|MpܗE'9R=V`%,wczxq$~)bhT((`U+OݪufpUdI',$''?Ȱu!A-dgg\ _Ӊ'?Մ&gaܣj4(,8 |E[j [II	מK;>X|ŊΜQxΐ--׫?\6LP"Vҫif#L_Z1>XArլif4`>)GX
+h+YH@pk8~B!e
+|gX(%a	*!{fwi}_\1f/h
+wbٷoŋHO?6^Ld`D2lpLM.]"<}%C`	MDB dhR$UP(z{Rtz"{jƌH:?t{"f̈7SXX%>CB+MǛX/{csKb:gGCy"Ӽ-s \
+Q-`HUhBLT[牚>'kdĄB͵۵ۭw{t؄Yr
+.7*,@S | L$S^~"e-QWҖ@6v_GltshTyS~b	plv]$zجljpx
+94.vp#Z__hLv oV=e:)Y|F8xM* ;~RNoq&(plϝ;WXXHJ
+d{I *؝p&,474ku/va!7'733LVv%0cTj*A'fcccKKK}/'E|xٲ.\bS}qA	^|m"Ml hQxz+xdDAIϖ;--V[bTC 8iTj;rVRiT0_$IZlSNP8t6,,Ū#EP^Wf/&<ݬBWPsxYe0~ >
+fHR	~~b8>>Leeeu
+%`ƗR³^3.**\PDoo2g#sg̐2tgv
+e~-NOa0`Hs:㽅GyAdGIqA{տc		'7ֲ(yIR͇ooLxx)bNȥ\aus#G5>%̋0;R7/vj_570şb{#qsmC&Ng\~^hMnl1V^͏\
+[pB]]%%%`.GJ6-NΑ ClK
+e8F%,Xp6&"))	Bp	--Gkp:tyy9Nwt\d9wUU$TVVHsEKR:ƹJǗiGSJc^00&AJ5iuJCmr[jAKc$ў/WJ8,[(fbsF!
+hD^'B82%3Ex@ A#QP`P9X/L'sȑ/LP0wy63zX\V(rpٔ$ӧ0"m{w0E#ß18>aWoʔʕ,zD+qw`z?yaJe-+ZVZn:MҵN:tYKv&mtbI`#x0<ﰴ8QQsxN^|jSwMsMspJ-'o!`&\XrJ׃.###|8/aTBvv68(,=zt	f3ї䠟qʱ HG`vr),\uz}}=&KF2>ʗpkv7<Ql%n s2lyMy,;VTjPI$Jb@Жw5 FP}A'2lJP$y4}yѢ|֨C=_ JoZqX.`sξ}.]gr-jH$sHLLLBBBCCx0;`6,0	uK[[fh菿v0* 'ș1Þcef̈R㱰VdД|WTyGr;va;+O*5ײA޺.m`e^eKXqw܉*kѴŗTvHu'krkֳs7:/ܲ4VmQXh͖ݵSw,,L.\
+rZ 5
+Ԅk@FXxڋa%Wd+{p=Y"X.\(..jB[LSk=σKa˳y	Y4(!ToK/nNh<fJϣbՋ"0`_P	7'c
+SzJ:FI-%b)H3n)3De2T"(J%2k#i`DpaHp̲hprZt:8] 1%ԀI@ ,XoNfl0'dffرc`V38bOPK[\ &=
+$FO,tL8T˝1#FPQ\IC[MMf2h:=NߊRDf22XXp`Jzc%Vli7u yǹwCaۅGڢ+rK"ڑȹ!<[yFWz,؅ږޛm;VեMF#~$,,L.Hz>83MQX&?9QVOq=}4'rHbitFFʶ{3ɐ)hlvfa+&+M_5rrkĳ<?#4~? }fha1
+0!U m폥
+eva6L~2#G-,l2:T[BBB>d㣏v>]{0?x,stv b/PnoN d<nۧ	d1i*5F 6 ԶlP^ {>>!Tj4dXXpsgm;ѮT|jLvwUݯrm{Ha!\ub.BZePV]DT6j:/dK?oas &0#̨cݷS$,'?%,EoLqǎ#Ղ>
+'rH8^,~y?[T}5ra?z+!Q1<^-f<춘FS3XF"e#M6o:ga\8ġKexF޵kz2zaK[SO͘7cFo%iLѢ)x`i4BBmCN}T*XFD0&3Lg2	IQBB!`S(`_{(:=)XXpu7ndf
+:b_֢#%m>hR`	R:.].4ʛ]g+2e|Cm-~7XX\`a-`aaUBow oځ/X &PDKKK	",@5V4gMf'sX_+
+f-@ݻ!1`\2I8c255zV^538xϣR K?z{"ׂ-ӦR4n
+ec$#79}A.zM6FQ\ @Px>>((Mc}}QaQ8}kxO~u<'|vs^öBs~NΘ؊΄rKeRc+'NgŦfj.z3a0), 7&B82WU;ͱ (/>N}bQyaatwwqǧKNJJJbbbcc?f1^@8UgL{kk!>*Ӂ/a02Pn`Ki4f̛1#)L=ta˪ e0B)(+EEXX#Z+HIF?qxhiXvt҅?_:
+fČڋnaaaczUPYIܽÑ'X"H?>I`_+VZݻw5b"c}0#@/"{`L&ӱ*^HF*[n==pZ]G7`0pZM89~MMcǑ8B[EE-3ػW`޼9>}
+|3׃{E\o:dFJޘ琛1XLfJe?ɤIc),fJ1iݜ[$Sw5%C7qk@`j:qT?LcǑ$o̼rf'o<445uhwë/U=z6f1بjka4#9ڱeW>*5J=Hю)c>>qLfyN^wAC{iO3i^ǺH//nwd4e{SDXj	nuucǡ<	&:2?466*>2$aaٲ^ЁIVಲ23s{\7:Du&YӦEQt^*uc	TۧOMPQ(?y{J:$B}T~**&f0#Չb2TjL_\9¦B`aL<+,7wՆ^{|s*$zٶ*k9.]^弮N&nsW_}_aa%:7kڑBqIF8t(~s_orrrff\`3u>@9b4C_PdooҺO`0(uI䍧OXz`)
+@R7A&hB FRwS(|
+e	wӧ!bzW@u)!xPXhh*CG*,4W\3"r)//i5%oHn'JVݥ`PŀBr֖K
+$n/	:[D$H590dv7aPUr<M9Yo@	<?fM`B*W6,D
+ɬj]<+,ذo<SO>k~@ ׯ⎌uB`z=0cq͚T 9̃0l!:RW7XػWӦ7OHe1Tj*CE!j3fBd#/>eD6&Q	F&d2tz8JPz{hJ,,`0)g=UW\
+#JH}gZ3z+b)vPK:[{2U5v0y7w?s`g}`yhV"pMpI
+kzu*^%)Q~]|>.**ŷPLmP0L]Q!]5M7ZRŻ.>I%K>Ĝ'x
+'y˗cavmiƎkn%|by28s20;zl8]Stww"8;(HǇ}vo+RGI/$>FhR:=`0!L&9t0y1*"x<8'U!!)ma jIu8%&׀L`0@͆}raUtȇ
+-V
+9'$G5kc}^%[UՏ //L5ʚz$,(Qhk)JJntXPٸBM-I(,,^pY
+-O?nݻCsvatk׮'|]^_t;ljU!0ѠLF+-u`/ZFc-gd]6$>?%'RI>>>>)J2jiT~oӧ'h(
+`0#µTͣ{y([~2?fjWG/
+Csh9;S/[#³? 
+mmF=rx@]uР^9暐5gv&[#f-tk@`\y#}26wz,,^?=ּ9[sn^)XDCaB7P&]B?w>99D-T&%%/RϟHaas_XF1tw.9wVU[1\ZСSe,\?972PXxX6P ^Fz83P(XX`0b䝵g]m8c!0&,MH&azlYzC(AZUW+UJuu"J_mz!`[~tN(v9PXh	:6շvnFKjگ-`IFYeunAɵY0aUj477+s`}yZXX]>o[-ѧbaf`pfI$| B:>cǎ<p0003
+g!IkH ˝;AwomiuZٳ%'NH7o>dO=;Mf2(#hR-F#3Paӧ||#b0N2'I483mS`;v5tVXXC^m7\-f2(Ł_U$h݁5y`DC!PԆ 2NZ0c+QUohhJ'+wEY0c2}>kdV׷*{y}yTHVE0.7xH͍K,]_dXh06ɉKࣨ1]z5:::&&F<4|~fTTz<mfRWG7ĵk_>H:,55UcbNoݚgɿ}̙R#F1}|T)($w"h>>	J=2sfUq10CD@+\cmۆ-a^v'EvFXc[Υ*K"n\l!tKڞr*2-΁E0kBG3{QP: JZ^W/'uܛ1L!%-.\s,f9W޿?-so>ظӃ`{Tu7m(,K[KK/ݛo}'<eW^xｬ%KN^aÙ;TĔfdL>3La19˯q}NZMLmcgWUyaS7K&u뚪jhyPXXxih΢sys~jsD0zc<H1 X[2./QﱼN&e!߷>`Hycg;Ʀ	tc08}:(,4YdonXX&Y5n|/VG
+QSS#7ona@Nukb}BٳZq rvZ=3 J =mw\ڂ
+5к-1Xp`0r`kȓ,[<n6[7.r5}zݢOW4y#8֮]{s=BE`MMDMǀy" ӃW=2F寲X鹿Xpk$Sho_'"	x`0}!O
+Qaae񜐴%A۝vx***P]:@zxTmmDeǀy(,$f$8h*<?/ 7})~X"r0kl Š䑝~,\Lr!ǖfS&& 9EۄA+LNVd$hcNgf,b9P?mi;-%eeiRU'jGn߆nP܇0n7"TMC!>PTTs81*	:GeH7ğD$'{zAGOJ>YdE' GiD?Y`@lF+@ЦgT&}LJ>R*zG,X`s<N/PFL`r-J;itZXB#GYDH#-X2!Ip0ǉPeT7`L(CXlPXg} F0P2vmys`#JX[[[]],l?M`BGa|o6o&}Ӄp¢&_A@^y蜠;@.cٜ0XYK+X Da#\)@R."P1YI譤S`QY@lBKt67
+G&Ofx
+]	,0C!Ɣ	`pk&G`[CXX7[nre_mXfbV[E#XjIc#HwAĘrJu<Qs6Y`S E#dXݪrJ.RhuLl\7 mO5ls/X"&?/7E`459O`Ҿ{`0YӟAPdJT*Sh-Y	R5Yd{^aaW;o/B%4XXpAk+LZ}mAM͘0)J?#f!~8|p"f
+:-@Y7X<?HXuB./;3%V'T//;ZB*M:F{V+fRe ,9yw4XCX'ǒ7a6.W:wj4PXt.`pRE'cFsϞÌT:Lv`PQDOcCͷk9cVAR˰,,
+0,49lcbtvxTYOuu0VK9F!&,xyp(L2?tA&OX2{_yK/l+d*,V^)By*`{rˁCFXܒ-q!,>0ةj1(a0ƀEC|Acsߞ61țN"J4ak7klEZZ(aQpLIadkVHLU%B)rZkFO^&*W˰ ,,XXz-m$ێاɘPVlv wcCR'uCύ0bVA_10ہ L'!XOFr=)?gK@^.pjB>JQydہ%rA/ڍ!W@Aس밓ݻ0bcK8(9b2ߴl2VQӛ|f1Q0kҬׁ5z$1;aW/7-fxLIa6Tî5 
+z[poU6n뒵Šq}-{'i2&[<ݎI#BS7$m `3F<\<[QÀ񣇝[L(h;,==P
+8ׯzL&9BXG!
+ qϋ-4eSPS=z9ȧ0*sJnV`2`Q!Y萷jR[Xìuo`	܂Çmٲe͛6m':vmjNg+jqxblx̤f8N;kٜ>Pj۟Noh֊H kO[NdˎbN
+pe7=pXXxPr%2+i[s`Bs}" P='XXpnz}MM͵kt:]uuuUUUeeeEE\rQ_?mBx]q%==ƭʜQMz+86;@ vO`0\iuz 2V4`ۑVJpa)XXp'*tFI'q3Rpk ,,x
+=dm-0&[Cϲe7xzsy VX *X*b3T(+ḟ#VT$RP!ye0*OV,2"c&x,,&moFs,XXX`aS`m5r9Xsr=1~&=~pHX˵O|he>FWAa1xű%_E.XXp+V)7yxzX-z)E-3[dl3jBn@PI7vQOw'mUwt3lO.t(BRHR-C-6fqyXZCJ	K0[El1$IB@j$	H,/"nIlKd[?HW^b{ߞkJ>wqOoTRG5)z=:wH^d'iaIqwWb+Ȗ9LUZȵ>T+v"T8oXȷ8>$,gF `Y6TW%Zhjx߅_0GOH=x<L\simJʺ>7aMLlEwiIehJ^ZQw2ϘX61̉X>GfJ6>mQv/'g/[Ul@EQq vp6@6= ^!IV 3S219[ȵtKlf!X dKKIn?6D}}͚~!od]~ BZ XPw4RiĄo7r2a/͏1ZP*yE$pS|  B.J=xuo\Y#^}	G|6 Ġ1W*0r#cRԲ'Ut  !XPi`AA2CPq|\zTE\(y8+WM#bnL5
+Yc  2XA1d7p8ġ!ό*yFJ8b1Pn>꣞p$b  2Xxh|ˉ~ӽJ&,]{Jf zmme5$a   N X@aC,R0 ^8Q$c.x)ѫy7lxs  j<k߾rk	럢U+wV3oƪx뱼U;fq߆`AY83}xMZ HwrwYYf*W]|I/y  CBo5^6~4r,{OeƼɳȧk{jm%;?!y[G]YJ>@W`0d1<=ad	E@łA.b^m  \cCO5kO7ޙ9tUU]rxapޚYD?X4LgG{{{Tp8L z{+ XH&;?<laYg{>ARTf%lv'nL,  -ğ3<)u,T]TOFYTr"3Z%Fˀ􉍕[yawnVz²R#-+^,[f=WD&0T\'}+nxtOS v'v޵mcJޭGSgtx;S}."bg}e˖+W>l{K/`AVN7vue 	[\Lz*a{?k(72Kҍۨmm'Ypg6y  C[keڸ<AXYY먓7lȦ>j2?P|6!q+`~?쩀"g%,{JiUٚ%΢,vƠ+DR-dV=,LxSM?덏~-<y%7}`6Y*͠\G*m}Y)L;V^jhh/gzc!XԔXqhm:8Tdgq|qn	>GE~$ /6s0`wQDMMbF+q  pE[*_fz`f:Rפ`j6Y'elAx4Zq~ofpc쫵[^cl5|{drA)X8oey`$dXVV|]M&tTTN'vgu'lkisEVVw[*:+ޜ=lUKR?WJUVIϠ;wMxZ-[,Y# X'KPfbho5͇,%P@1PTn BKgq3Ϭ2XXkTvAu'+b˺n*X0ݾDwkaɺTww>*$>x}m곤r
+{FiĀ/'l[{gvsz߻>ǶV{2'#,<{IxZ=҃G}!ɷEDaӟ*} ;:>l6qlL3 .tVcH%0YNCpE
+"nXWVIU9{{;Vf	Ok?Wn{-zKu[lUB)`s`>;xbr3zYe[jZJ٦=tV-M;ܾ-2#vyew+swy߶m\TT{ZIB8^z5YVb<Vec6Es3+.8  g<}1/>7x',TQ6@u6Qep9Agt?ow{\o*
+q6Pܲh3ёkLoVwGVUr
+O"9رO0֏]C~
+9[,uh+wחuήX°{pz/[qͺQ~6`57n/eXh>ji%_O8`!ZNЎJp ]񥗔>A#l97	ݤ  C@HMO>io0RQ*(H|jT&'Ty|]=lU;UY:7jvDj*F*]ׯ?xBV=,ˊ}vF{謺1ЗzkeC7d^ ve ]mLdk+>0TkӈnW"ٜ
+йu.s?m+j..(Ųolz  I<z]uMAp'9cw@c[[{jݳ8Zںb1`Wcxܗꪪnn8G`s	$_S²}d_![z6hkczFEg*/N\ޏ66~g  'X@CScpU;|e/Ӑ-?
+_n.'G~YybEeVddUn9ج st,3.)\H{?E`4O`az+(81M'usϕJЇJsB\.dX9}U0Ar  4t1s/j-8E0V+$XE45J(/|A<x0n	>GE~pN~[qѤ(   N-diV44Z}9Xw)\AEyLY﷿s,%Аč![7y  BJZ@bOA,i>}7~ǋK\=wd7vlnbMף><ЗP%<H^&  0=`!-,TX_Υ+󍳿qI`4xLo`aFɳ^c٩iEliG0(˿ｧy ,,Gt:>5h 6X[Lee&=8}A
+ٻG%lo+	ZZdwPDo//,W^v/;>pxdw?  ;}Ҿ䒬S0}IC
+6Z=ᕧsO&|#3răgStX t՝rh\ ),^E9| 	0844~g  `[Ec|%yhvgHWqJ@o)\xQ5bFGemmbgQW
+AMN_,n|B{zeE.LE9b&AcŶU铈dKz  t,KrhvrAzt
+-P?k>'`!-,/sl԰x!utڔ>ЉgE 5Ns.ZԔR\:1C a`+j~-!=S`lBZ=X w?cz]g#,̨-7>`t{Ch)~K^KOmye|ԶHP0%@:  [:*
+`_e	YfDBZ?X'NgggGGlkkkiiq8͍uuu6^V1?;244`AяիlBA	q͐%Z>Msd(㑙V[j  *0XEW`f>k>$,LL28?oȄ_/-GJ+VpQ |\ iOpp$$[  `$:SZ}lU`>k>'`!-,1s;2򀟩vxb9e6S^VŘR/z=zPrJ  ̚M3Ub0Zݡ4~}d/n=tVѷLEEe)k!XH듩ɦ9VhCn|#AN5~ZBM&S; iF⺺>ٍ&  a q}aNTT.ك2h3j@x	NvC^/@cvHVLQ.0:
+l~B<l4	 :DGyp}3gi`CEh:L>[C"_
+4D҅
+><f8?  ̒nB8Dědw&&>W铀曣C^9Ƃl.ln>d@k+/Sd+괵rz  0KBZ XJ8&hi>)}&|"~ߟlA(d#hOBDtum  *`A],>%$X	}`>q6@9.+bÉZ18L  fi!,)ZjtnpҞ|RO9Ď.RLZ  a44>8p$J8]`'IOvq>ŉ;&)}f  0Gt,)Ϫxq%n`8HQ*
+!Qt	B9d?eI}}	  fnQ79'!A-wp-٣ 
+qTQvDg'[  UBÆ`[2{7K,^r+j7
+BF[ȼ/	f^qKf=IGG>3  ;h:l%Jٔ!+W_B|O,!"-칂Phbw d>G̢j,;1;v-   5BÆ`gmm=kky)޵Bv\a
+l j)<7@L	Sl-O3 `MφăNZ?	?$aFtE}yceK曜 cE7dy @,!X-M}'l"TzЛV Ze*<  46kq45߁gxArYBV6 ]in
+ + y  46%[?\)v[BIo&nZ)X`:lR6 	*HL9&'e*JaO`MjkYO8m6O+N{;6[CSgwtQdȓ*P Tk+GejB!&; ~_鳀`Mhٙx-t Vmxqp/A.1G4's^h ?9yLcl&/  46$=vߍ--X)C]z+bm3DVAdۣcAdBN !(}qzxcc|MHLML2Bh:lT'm"\i2q%K8*#24O!fܔ 
+ȔA9\ olitgwtzC!n^tUzYNr)}fq0iCEb֢Rw[a,uE14dG)ZQSԈA<)+Cw6:iGgp,!XPpXf6t>kxBڌ,AȵOS趖DX>MmI> {<ޝ}#~i7=*?;@Æ`A-::dv^YG&-p7.ʣR_8~͸
+X:tXHֆP ýw{!k{,(e!V(j[	GLZxOf)(Lv;\6]A+(m=ώ 	`2,g܊`AQ@,HccdR	O{UAnUeF^P8omE :t%e* @,!*20 SQvAWn)\<P@v[&۠b((0Zx(,ya !X	CTD*86vAnMedirKZn7XB[X Me$CC(tu꒩?&3cl̺?K
+
+Y"k[ݐ-Z>MazW_/ !tu1͖IYN`YinAV}#(,,JR:45JDىg/ Itq8dƕ51:ϣJЯōD~ Y9en1V8?K:04$+}'xҌ|m	 `A',!XPO۾bd3dTQ߯`-6kEYI^6bUDYabQC>" SW^0K+}f  ,!jT_[r5SPZZE_*yqB|epV nmt%lγM3`A',!XP~3 w4?\/֤[\Aȶrv s&'YՂ gK~hZVa tN X BF
+;l{cvv&^|aBt)Ak ޹a U.haB2	7t6:Ε`7֓r"ˊX"+qbd	B۷ "65] t06NN*}r'֡pbEQ]2,Vb	08(%E	J;&3 mA`Aq@,֓w(kme21zԁQ;w_jZr ҷ)yRzTlC.NۛxPv h,lˎ}.ssUί8҈`A1@,(}fI=DH;_<Lq>w9{YJ)BCz8{NX!; 4/e>iUz6E[;C{2e{ɵ'5`tOp8xd.ۦyVV$y6W }ە>	J]t}}J ,ɚ:3lh,}dۋ^3ڶ^3҃m0↭/Ph|Azmzju=f/bxlymOqg z @ :`Aդe	FF=;n<nZj.ˊ&Gm5=>k6NWV @0|k6NG474қԗM쿍RkkhG.鱽1_,{CG|L=vbZ`aFC!XP;-4H> ڔ>	ɹ犥8/ @vV`7:;ePחF]]*TtZU	*EQ.z*+OSt,4?a6>LGc[I--rJDi+`R<F8}kk׮VoU[,!X N'OZ=8% <O7+fⰖF
+5曝A11z4TS<tvN FUUUO޲euܞ>ըm2Mu~h:l4@v3NwHoo'n>aŗ_yWm+	B1bDc2bٙ	&+ xE]ӽiE_{9x }#:BGt,h;~p~lt^~RqPw
+KB @r|f._] )6z[nԑN;ÖS眺>|А? X@aC}9\w0<Ζ}+T$LО'9MER')	 . Vg$bnQ'ߦ4umviFAIa®]N߂` X@aC^L\glg-Hy,O^F-MMl#Z[žă [oL]ߍ7:h21o:trwX,UUU!d͐vH mcwqjAvR_?^g3B\.rRQBG;>\.l1@QOxΝԅ>u}KKKٳ+ݻw{Fq[o=]3.4};oS_#}vvBÆ`AKZZdnutpzgٳ48(qxPnCQ*, t'12I<t==J ,p8SVZ uG[JG~8eFȑ#+wJ8R'\߄ X@aC%EUJNXfĻ[*L&B0ˌlb+6.<+F"ӺăVLnyy9uʊ3I9p{G"uC3$H_zŏ(,JBe0,i!XٛbaVЋL:kjHY-,!9/KrN`!_O"zMK.; 4FqxxXBK޾a!8bپ}qM15>Ls:?c(!X@XC12ބ
+=4~aE8;x9GߴgYE	dBR\P߶ 񻊪ՓL [  ƏCi}oٲe[nқGl߾b|QUU%Uȑ#ROHܹxD%>X&oD*hkUH00i31}C'+n+
+-l)_GbВ%%v]ؚ>NNsKp鵗U im2b.4uw"4ioo5ǖ#uI-WBoL|0::OFG455NLL X@XC=  ZZ808\IPPm+<;*aQ֓.8@s&FW]z }
+'Lm"$ǦL9KӿF`AhJ~X[@d2\|k7CH,+TAG)=6ucI>n$erUl  z`MVQo6ypk++ȧc,b[vDYPXfT$eY~cM38_"5y*- !X@aCUoҎ|n=)F:tX'ik?> &Zbb*-1mJ)@I˔gVJ  ,Y,hXc#٘Yە>	>EECnkaKK̼ үAS$RbK.  !{|'WIpN硴-[/nͶ$E9R*+<nwn1ys`MW@4  }B :`A	[[#zhFߴsA),sb-G*#W R~B45  	mK8aC!.c9%ّ
+F,y e
+N; -  d!{g	*W#;'L◿SϜ%yݥY	`bۢA:|>v	5͚~ @ :`Avy_57grxby(W-Yp+
+ˬz:+@8h'aEh @,!X&o&F*|7P_ӌ|[-EقP`}nGid+Bc7s҈p>gGfη `tNVq<vLfHu2O5v<GpD.dJ)@fy<l2 [*KSuLl  .V3z[Z7ވdYEqB^~dqDS2cx=y #F]qغ3   CC;9:c^7x	kNł -Rt!rR֣%iwuă[  !CtEv0+eR2@EO:&b>b?dFv*} 4>"ġ!cZR  @,!XdAra1S]b:ɖO"aqoZKb;ABvQ^Vb(,,*5LNr.1&
+r A :`Aoz{ev&Rߘsԥ? W_/$:$	Ye =d5"SӋ@ "UxĆă0D  XH@,z8@==lT"Y=EC	%4]vummJ |y-2ŢO
+!:qr-DplM9T<ć:f<۞'E/q
+J&@uMMb__rΘ  ,,K|6g	Ba7s`t>QO>Ch:d=yL<ޱCצVeE+#O7[
+Y4TW	"f4s>9ʊrR'0(̑#`d X BOμ7oϲ;Ҥ3i_XY}k.?r[?Zp'`16x0*}r  㵙JJŅǃ"X8i,hh<4%Mwvc0?u~dwG|β;kXVaUsv0~c&oR!mT/  jB	ݎ-BÆ`Azzdv&zgguUMW(͋QC :A055SFa hϖ,N46:6PK -4H!ө	5V`!V˲
+TT ^Ci	ө BÆ`Ah[]-sٮOl[7\A-F[.PM81!_ϖq  =`M!FU*Z[+.Z$N69*٪2 EU<vL@)mPou  YR`A&t, inNͦ,[/D|yO!	ГTvo>J\[[ [$Xȱw?Vo<it, 	X|1b>?`=V	-28(K`4G
+"Oa  ,!X 0&&j!^!~bSS䍠 DHzuT*0[4=79)3N0(_   46f&pO'7kì
+kx",_*VoG.<Ф~Zŀ	a,   3BÆ`bl>)-H.-g6<!4nnS l̎R6I^!)}r  t,@</;>>;A#b`@<4OoKrC\PIPhA}$Д>@E^膆~._  f	H@rZ"R5/[n}NEj+zԩ 3akRULͪ46VWY  `M$/0()\JÇϱblA/c-8OUlv 𤽝J.3b2  LH&Ib*_6>~Rl#%q׮^{Ep|f̒A-v#hJ47tvsNގ
+  0gt,1}"jٌ^H.6dK NX.-̉l:iD 6>Ζ?(㝴_  LHex#H,WQA647{!OjO=5ab,`Bvtm--0TW ʣ02J($[*%  `MLٛd9:mgB<Xfغ'#r[#3W= 1<2)}s$lL>mi_4Op)} i?+@!_UWS +`jGYEƲ
+;d~ xWNq.fio̻O*H@s,!XIwO'眴U}OFh5}rMVkYIQ^!+'`<:	vǁ^"Ɣ>km/ł  `tHZk|;RE<8h(sFyUh.2XMG@&&XԤm%%==bcz.WUO%1 F%U@,l!4N9orRlia.ҾsF⋏WڍlCf.JHAP(8gV;;;]hGMx}
+^|R6^c'r
+ĳGVD= 2o`]j$FCɦꝂ1oǾO'^X2ўzqOX=( `t^%n7ۼ^|,[HyXP M"Bk@::J"e0ێO Q揿zEgyv?7.~nF!@,MSK~>*1E[|9'ŀ+hcB^:Gc =SiҢ1b+ dN Aw>stn|d!0'laٍgNMaͻ8>xY})?@*W$esQ\@{`i_k,@ X B s`#u˛No<6t:ϽN񷿝clb[`\.*,   C$HoONn5GF( s}yx(
+=%O~2N,iJ A `t~Z	zzMNz-OGs~[H7iO1?+%a9  X @ :`N7dʸIu~^P#Wsr>]tWtnƪ^VZ!eJ@2I@,!XhogӤ_-FRoY_/.Z$F xK+x<lg/\j_a@,!Xyqw{ck<NOO	xeuJ"@\왫LIH.AOF @,<Q/ATq
+x62{:7p_zIwKhT_Q24ŧ=[@,!Xnp?M^]aV.~3Jzsb6c@n6QR<A4wɯ ~ X @ :`"bDNH FwЏIc	?>!yeicEi'EXlJphB0X*bgm[hT%> &UTLCi3TG~{  h:l AH~m[zOxClnjt'}@[KАhiEn! C@,!XJlR_D,[&}7{ -.I=OP(x<lE\pjƂ3,@F!X@aC i'm4IdwxY:8vi]R{{'ٹ
+N <].>SNg S,!XLi\lN_wL<>8/mm+
+
+XF]I{@PH g(q}-/mؚ>C[mx}}RQ!t,@Hق}|i8w7ʿ+f28[(}*&mh+*wif,~5oxz֞+l1MoYLmӳJY^{$־a-=x<ܺa߱0@2h:l s
+ci8pLUϏO9Uؘtn\4I6g/>4/
+m߾Aɖ6I{3^ZH[WDt4LeU'mBÆ`2*L&BZ-[C4B"dV	獍Zs24ĶB^JWMad4i* :rI*㘧U*ZuA{#*6!X@aC 6͚cGU)覭KaMMZe3KֈT@hoP奥G4}i&w]|Z}E!X@aC @'BOw0ȲU\qpgC!zBJ#kΟSf>i TQN&'7l@M+Rǵ|Ϟ=<|0HA,!X!e2Q@mu5'l(D?>=&'a@EtT
+>'Qcf$H TFo0o~)H;n۶rQ?:&)MP46`FFب+S(nAvt(}r6o4Tq_{;]Zܩf+њ! uu@vA]GalٲHJU_lkkkyyyP3h:l`!l>4jhjJ9jP-zgicc,^ƀ`bBkrGzL8 T;vDF(J̴/K{O*IN~GJ@k,!X&-|o[7/#XQD
+K/u:S.  x7IKnذRrqZ8f޽{oNZґ>`%_!,!XGCz1rMɠ/01קQyyAlmѤiw,Up8 sEE䊠^;CR.++ۼy#nZZZ:'ƼRWl6SOU_h
+4656A,%h@ g%VTdB,Kqb[[C a+ttrMB Pp8m۶
+3.g͛w޽wފ8[lrYDQu׮]J&@S,!X ìdH4mʅ?޺pߎ~	.365CC!zI>vψV@2g󚺺>E 7ݻw@P)j2#-z9sJ8ڵ#[
+,d
+`ё(hXA+3zņ4BlٻZG˭Ⱦ2i v4ھ};u/il20^xbP66^~eωӒ_PRځ`t(e&IrxJNFFFXG>_BgbPtgA FQZ5w׿+#6l wƍ6my0Ç:<A=O|QUUE]S7|s{B X B <HYTAf/?.(V_9~EPylEL]==NYa| y  5
+ሡ!9].WI]
+	fהΈMqq*) ],!X NLST0(|뉸4_-0G!A#/'(88ӟ~ERMm  
+!im(ݥ~v2饞.EÌx/(Ha|M`cu\..tiOvCN(tvk[67'fk+[5 @,!X HEh!;lMooO碀{G~KU0;vٞ*8aH
+h.A&VRJ/R   PC7RQ
+Rxh%krmjjgy]wUUսx12d!ѣ	&&XDh,6zH1E O  CO4JÆfCC7ř.Ț,O+V^#=~>o?=*NNa%Bmj:bOTEJ  F@, |>6,z|W{LO<U+
+(6ϊc_Ԗ߻?o~˥1+աA56`b&'مjbȺdl  J!X B <e
+S@h>75cի^?↜~sonnepa+缯77=U3.z+g@vS
+Q VW_ =}Y 55zd H٤fP  T
+tg1&}}=V=wo}벯Ͻꋯ~~SMyλ}螇ZO=*(?*K]u]Ks͛7oL1,хLy
+')\l,|VĭTn6/3   T
+P^6u=~ؕ^֙YW^pO.uW]wuq~hZz<\{|˻OBL(FsN'Mح@phRﳣ-v@uiHSR^utAVW   Pl}xzjo=qqMi/V`gԝuf߽q3K_iMKmwF8̦lkk
+Y̆Ϯ__f]fz   X B *B#F+**Z~˾uKϽ6U5K.aÕ~<O=2~?օ3:RiXw(YAO!xfBC[`	t9+&e1mk|  C@urcKŋ/K.\듃wwWgO+n>O˻λx|W͊+zoJ#;fc四/+ui7Z[YcǴg]6v;㑪FRm  F@,`4ܓRo-{~}M~7^_i_?׿}o}ۗ_~eNu7n'4g E4Wu~ckXR[t~?n=CYP#+fNBH  @,JI"09Xɥ?n,?_qrd]Sҫ?巾./ywx,{{vOFޤ	e> _]!4tvY҃#GX6Eɒ:mԱL#zz65_o*]HX   ڴ?CC Æ]uW]wzurV?|#_r^+{>&oXz%W|YO>wȐ	6lz𼣃a{u5ֲ̡p)ݼ!rҐǕE|,7/N߂^iDi6~g' HfǓΪ   vt,({W|`Apn^[;,X8{7-w}5?ei~GGCClILӐMMl_[ˆG}Ɔ4Ҭ6zW]MFoJcOH<җ/⋮.h:<̾8
+#,(;LLDg*}   `Mh@[[zsw`a?t#xi7./m+~}ͷܴȹ?	M?9C!<+wgdҡXd>K 
+
+:^*}rh:l@w߇u`?^E^qw~zW_(~I 	RC4԰E  j(,Klܐ0K1J ЀX+vǗ?孿#K.p^+yu NN8̪gL_[tb	 n..̋9֩`QOobYMsm:ݧ!X@aC  {巯<}_lom7e_._zM]uU5l\b9uϮ=\``|>%*aVKfc3 Tn`W-eҋ_n|&5t,H+Xz/_GOt?{w;ٟܝ_JcO='?xzks/Y
+ZV$3i4 młBz`/GVp46R/>|d2ٽGj۶b{RvYןvw{v-`ƍoYڴiIEoBt @S|/h͉ . ֬YSßۻQUUgϞ]n妿|XNNٳ{;xqw, =@,16m 	B ۢÌH`Mh,K*;Nbkk+=
+T􈭭mґ>C?lF9lQCM84c&&> @ND!K
+9KQc X@aC  /r.B hv7Ѯ]G8&n>tڴi6]{ ]@M'r9 *)Xm7i/ea;'@h:l@RtƂѣm|r<ZR@@ljbS)L,.p:Y.{Z# VE=%,!* ЀXt#bȑjg#t)JK!7b;S|,[kl..nO @	n I,!X {vٻwoSS]~vd27Ʃ]6[m&w}`AD؎)C,@iuu3Jdڦ   Ot,Ă~skk
+kjjCW&]J.?;IdlygTGЮQVd#`tбcJ1   ,!X MF	]MMMmյYߟrI./S@cنtyMW1,  i X@aC ,u(&XB)5ÇXfN&"^ -KsV>C   @BJ Q@K/WUUAWl>tfOÇ8@Wlϔ}^]lha(@,^,%˸k5>CCbmp)   X B boUUЕi6>b<x%IG}T2x#GJ7}Fz/ ^ 5E
+>1D}=$   f	ЀX<|p®0[l.MfXtq}FӰ#Ȗ+}   j`th|7ӏbB	 ތ@*2,Mšt+    X B 0`.U a}UGq l郂P(au  | X B BeeerCXXmxnn75619tz<b]hK  |!X B 0BlWؕo]!	$,^~CCNqMY@GΰEB Dʧ!B嗼5B$nrۻ@cY i""R P	o Ѐo h6=l;Kă4bH   ,!X P$XĦr?a?idEGθH{C`y=C>pF۠$ X B T	AѥHdG%n'XHAxm6H)HzJ74܄B,(\*(U 9H
+˧zgO7CHc{g
+ r,!X 駟~e+?СֈGKeeeMɁf3]#CG~d\JXYwfYtWxioU59ɒQ%AG}i#?TO<[~OkzJ `th ]~>C+zw7mdB7olSuؑ7,^}tلTw#nG԰	hAfVccڌmml hFÏmwKv?C/v, C@wm06o޼q6mxVŤ,׿KBOZ6Žwm QSBkJج]K P)Xx)g}E!W N!LtAzDV;&vtP}:]	ĞvֲN,Lm N! gYb0>xݳa#60*X@^qtE/-< C :``!I.{s~d}"?QQaV#/3d`l}Pba @, o!`@~?p724yQO(Ģ ] MM,b\`e)uA @,   y쳬()}nK64aNLf&H%=
+(I
+1  !X@aC 1V'$X~Yv;u:lJmjasqc<=Ym`
+ `t, p%~9ШspmsYWǆ--l=
+-pMYcsަ!VUcN{M!X 46 |#67nvGg2.ny](gjjLCC'>  0= CÆ`s krĽo12ƹ<F՜N6~ddLN.B]YnbN~}1Ugߴwݠ(gwf^̎NVlӮ3Nה6"D0 D!hBI@! 
+4{Ә	;^3kiƿN_-#K=0	TK Y^-vQo3M=y[ܭ*%~<|8Z99;<e3\S|_|$+9$	O~7
+<8P ?0	TK cv;naB/OKshY&5va~܃'e39p ǒ$\vݻt
+
+[*%X1\ӰGjcmӓ7m_~~t`jni8EСGN%'e[7{L人N6ZI/]|n`?a	`k
+u<ꯘZ(Lw㫯ﾣTI?謿2رG']р:tуyGs'M>K:G !B[[oÇ+68w.x1	g>4Qss)G`U c!XP9,х}~>^]{H?8so G>>iOJ#GD{wJGB՝IEb'=/gF>.9h꣆w߱+.\H61Hח.Nrxq$it^2$goHÄ.Mz??aGL*ROygW?,(	TK fN3ԙ,Lp׎;hO?%>G@ggr@7hmM~pG]]+c,6Fp|::ϞMvЙ	5wxuݖ7^uդiV-k4
+`t*%XkZ^qm7cA8¾XbϞ{CA$ps̋</?_Q\E=?/jss^=wsN^RR^W}q\/&Oۼ|/Δ$XP9,Չ-d]ŁA92pݻs	MV~eޣ$o9y2::Ω7/7߅-[=Ǐ9{rzNթϢWg}~>"QsNf6ǜ&$a	`Z++
+'Z0Ǐ'14g<|ROOԹsI_}uS~Qĉ_ڲeK̝444lfsFbؘ1[lY1LH,Vw?~'=ɓ&?hnNro_sXӓ\ 8wbrg&y2XwMNTe	2Cy7c[__|Lܹ3fhϏ9[Lb_7L<, VڞY*-ZZtt܂رSD?pO{b瓳)ΜIv]92pg8>?fz{G2e  uuu1WL*++cՓmڴi͚51knn~a⹙B+, &?iOx;tCt{&C7lmMXޞԾ}fQozx*&DKKrDSS7cM<<.4;D=ܞRz Lh}[1X,Ř,3lWVVL/{zz,Yr	HrH W_%88>"ΝKN:{63g`DB&}66%_[ȕ6*:SB9ks?vo=L0rH  0\kݺu19o󨘀3ŘØ׭\ L0rH  0nERWW}ܹ2&WGѱy%K4/v|h1D"X   V̦6mSM;~UV-,Y4hɒ%UUUk׮}:f[cD@	  Ƨ.Ɯ*]1JqbDK.ݸqcqЖ-[nݺdɒw\B촪%	! \cV,WZ)\LÆ~P1[^?0` `:wڵkz{{O4s]Kv0sr0a! 8[oWR!֭[xXYYhѢo*-,^Òm۶S1%K%%;Kb
+#DsT&9$X  Ϝ9%Jc/YYzA:1~_4󫘪u,3AC%}(p`   +rH   9$X   Ȋ`,   dE@	   "X    Y,C  `ԙJ,   dErX  TK   a	   "XP9,  @V*%X   Ȋ`A   Y,`   +,   dErX  FtwDa	  ݵSͬ.A	TK  WW(1t\?'_r,` ѸPpOEB0܇e&XP9,  BaꜦmspIrY  FLrG*kk*(]fB@	TK  h+*%
+Sz>\,\` Q߶u IoS(Lvv3rW X  `Tޓd8M!@@	  5H@@.	  ӟ,>'`   +rH   9$X   Ȋ`,   dE@	   "X    Y,C  !  @V`   +rH   9$X   Ȋ`,   dE@	   "X    Y©3%X   Ȋ`A   Y,`   +,   dErX  TK   a	   "XP9,  @V*%X   Ȋ`A   Y,`   +,   dErX  TK   a	   "XP9,  @V*%X   ^a`   +rH   9$X   Ȋ`,   dE@	   "X    Y,C  !  @V`   +rH   9$X   Ȋ`,   dE@	   "X    Y,C  !  @Vnf `   7-X`  `D%  0K  	`   #,.	   F$X\,   H #$X   `FpI   0"`  `D%  0K7=X   σ   0nQUUU/˃*   ꯣ׎{(X8y*ٰaCd֭E   `:赇=͛7ر#   0veGPp,p}r鳪}?>5V=8~+kG{7>v5VOYW\W_ݾ}{[[[kkk   ˎ{(X4X?
+Yk?p?k;owų^nVr]JC~pZ;(jMMMfw   ى^;:`h8Xi
+PGSp/k^_ǳOojO
+w'1]O=][ww*.Y   nAÃ#/B}d͑,Di}ޙh:M~8rY{O
+w~y͊b'چ}緶XӞk`O>\|ﴇ7gN+Χ0ݮ݊i'}'C.\k׮r   p{(XD?~SX;wXݽIom]Zkˢ~3VmlOݓW7ܟhQlGd2UuuųfS7;V!Z'%`Ϛ1Ԫ=uO~?~4zUܿe^r^Jϗ¢E   p#BS
+m?.ϞjvJaʿVXҦX(Ly-}JWQxWѺ:ֿ>m]m͵?-+?A?6bq U8n-߾~heO?LڱG\aѢEMMM{   )DgS5MC˲0񚖵
+?әړ<R2kJa5W*m<uBXl|{j^)r?.vVZI%CŎ:+'j<~/Tjf;w,w   踇жjrتƎ҃mIتUrusGj[+&W77Ϝ\<+533]5[nl;z:]̟ߙ4_xm3QN9080W#   L`,-+'
+Xc_jһKm\ewKq_>ײ/767LۿeӾi_ܽqNs۽_i)*nr㕷bǕ+}lܷw4J_?c   0}S74PxtEA,?:_w~𽟭.m<z5{6-]w?;$ٲmŶ%_^38ԓPg]{v_1{0/mj-,   @V)XN45l\~bu۷7\˯Pܸؐr{ta?
+[p}#.onO?zW:c   2MBk5}'}P(|Ŷ<~rWm`Q   Ȣ
+Zn;?5;kVyM~UM/rG;   0kG=,4ߢ/^bŊd'   0Zis]vqMM6-X^7o  J貣׎{(XhEڵ}   赣
+   |KCj   o   /|
+endstream
+endobj
+9 0 obj
+118888
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 58
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x\Yyf~ɃdQ@ R =/	 0<Q|0"ȑ'A	H۔i+"HY+q\r{ggf>w{kݵ;7c*6k?DP'1C>FD"un޺5?l^\r88<խm돞e#h"ݦeRED0-˲&irjť啕STcEiIxApn_ DN f:gp rG4rbBdXPDBxI$Qp	Rahw9b_ۛZNUyQ :)@E340<̠9iAʓd&':ՁPXeC*hDnGpy
+0A*$дAxmkP(HRd(I9Hx$cAkWLZVI/<:A^z_xᅗ_~W^yW^/ GxA,psB"EEAILT,
+T*:"0@8p**"1a^ٜZGwvnZLnO|xs|c£هOϊtQ/O-ݮ͝@ ;8ؿԃ䭅Gcd6ԢCJG:BNs||ҥKO=O?k=<̋/s6muu<h6\.cf,ƽ/~1?;o-,-}F|2i 76M͸\rcUs %8NT>EB(2 iS^/AP-[~k1uχD`*'JA@  ɫW}ѝ;w ̱ׯ߸qb	qBaT><@^o(!I
+&x=;NyHrnP~RáL3uzbyYͦR;~g#à"aG&Śz#ӆZtj*uZF,Ђ%Yˋq2˥R:!xbmi!{FC\ʕ\,T@Te'eJU4:.BO%J!}'làQA	k9@ABO	؞^0D56\RMI3'ә̙F0 {ɤaACwwR"@ep!@=,f5٤n6C7
+^ ;?޹m8gwzr"08;Qq 	S+64ߤ03KFݖɕ_|\&] TXhD<(Me67S"cۨx /MN10+;EW~;n1QzwÅrR*U@r|TOi\*AB^CE3
+uqcB3Pd	!` ˨F	Vq EVe5,p]/K&YB&tBb{75bf  JigӰacQҹ|	_0J*)%%1)I! 1p&f/+7j1:s?2JnBLf3S.+3V&D`Ē)EpgYR5ABZU4d ?z+dHDQXpn a lޔ\^YĘ6Уe8w`ffsol:@T$=;G8qxq1SM|S_؄ppp;nll@i?*ekø. Gz
+^.(b~O{5kժH͔Utf3L;(	@q7mollnT/X `兤涉fļ"ey@{VىZ{w^颜֥Lh4@Bfsa~q
+*(QMH{V*ڳNVQޞfNv^,O[@=I${3bjdٸe:؅D泹+1&Ԛ `ݳZ|Wj.2wZuCW04=JgC]	%PL'&L}n3vakeE)vAaX}}m{wwX,v ",0u{	6< nSAQ$͊n,n1/LǡG;H]+ML)Tr EZ@tVk²z/-{~UrG!}bs	dSB'4R1u Dua*3_eV+*Z\My]exk>y$E`k&~N]q@LbX.Έ 4\ZxDct"IRm9H2	NHzҬbD}^-l,
+zP=#a5KɖlIN#ϔdFȆiTSnejQ+3	`,mn=_z\
+i^04tr+^ٰʫY<8ԣ[^%P,
+r1{ouv:%U5QTRP6(߱xd\hJԙ^1G_M/ʋ/ =J|L$)5vhvaK/YٹL.l @Fm6GgUEcLVwKZ袙ɾC7(luNc0к-ڂxw;3\_''譅Y~rOxGf>Ǳu5" MTI%:
+,Q8*N*'ZPѠc#c`0x>v{zv_ܜ's]qSoQoݍ[|pXBGP.+u?l6+$Qvs5j  ٬F|-ws:ͤ&2lX[G(f_^
+PL*S^־g8RyA0]Y]][)m
+;@퐒<qL&Cr{5w-Eqr%v_n}A	dR*5*2Y]<}Y֦R"UIW̦v	Ғ[ƹUS,6Mb;+d{\F d1,$ͯxH]djXpi4Q;˲[3+3O/p~6Cj
+3}哀Y7<S^Z?|x׿>ode
+9YT&H8$SS޲^CJup|ΡM]<aJf\v}dԔ=GRg3:6T=.IIFp&2
+gi:a(rFcUkc3Pxro]ThO0H	7~ɹu/''Ɲwg6WK&çTTt"lY\{.S󹨮G%WnhUT,v{owא<!<^K3D7&ײ}m[ϰAd\7
+)rb&SR\B>aX
+N=]W@w¡";VxO5o6N>s\6u@O\NH2bnr}:FDpY<sB򋦒e
+5Zmz bb9'*HMMJ{G/o:v/W4{`uZ͛kbsrB֐Kf/2!`ּ>[-)7pÇ\o{glXw:REIʊ7`Wb@=^d{Md(A~<',fBleT	-Rٵ	@ `&{m5&E3Bf5ߋ~WI&K.Ne2}#24"S_|>꿹<Л{bÉ_}!"xzHRLe9Wj\=tBҳ>_j#YEh>] GIkCݡxiz[(ZJIA^"xhkԗRwi#D,tZ\DSOGI6Ig6Bx!OOg24_tG
+Qkr#xЉ]w]>i]<C\MLNwή<L	>^*VÒf[dҫh˹j 5 -fyXC	~ȓZx7apBvPf<`iZ ѶgÐByN*HRXl7It9xaAOYn~8H+9:׶fֆ87JP߹4y,Ѐ^C#t{7~֕@tpTiеOtk̨][\
+΃dRrz
+Q^_@=A?B7 KպrȧR,<?4zЁya yT,ac.COtf~ʽ	yk??ew
+Q	DIt['myʓk_o}8L͕ufm:nv^9G͖<׃4Ez:g^E,iY:Ff>ʞLWnd[Deja2b:b:f2?`k ~}:+@*zyR^O90zN7P7r|8r;?b*=>$,c?2fln?^|%O$B#̭?y?>'w:얯YϑG
+endstream
+endobj
+12 0 obj
+5082
+endobj
+13 0 obj
+endobj
+14 0 obj
+5082
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+5082
+endobj
+17 0 obj
+<<
+/Title (NetAnim_3_105)
+/CreationDate (D:20140209183334)
+/ModDate (D:20140209183334)
+/Producer (ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000302 00000 n 
+0000000386 00000 n 
+0000000404 00000 n 
+0000000442 00000 n 
+0000000463 00000 n 
+0000119534 00000 n 
+0000119556 00000 n 
+0000119583 00000 n 
+0000124806 00000 n 
+0000124827 00000 n 
+0000124843 00000 n 
+0000124864 00000 n 
+0000124886 00000 n 
+0000124907 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+125087
+%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/NetAnim_3_105.png ns-3.20/src/netanim/doc/figures/NetAnim_3_105.png
--- ns-3.19/src/netanim/doc/figures/NetAnim_3_105.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NetAnim_3_105.png	2014-06-17 10:33:13.883996039 -0700
@@ -0,0 +1,719 @@
+PNG
+
+   IHDR  s     y  QiCCPICC Profile  X	Yy8U\yysD\5u	i0BIRX4I	"
+ D2|={s^{{}'EE R-=< x H1QF6A^xo?
+ Xq (
+ HCQm-6	 8- hI$J0 .0: r$l	x!\DMb)D+D
+cI	[/EDx,%K#|A_f27tx?p@@2 !67 Q GVο+eoprPI!VpN`CPAds+X*C zȮv3@ &iSM9!&-Jb>D1ߴ#b ڒ'mjgKHm6f~.ADQ7l'Fo7nI4&ON*y
+%mߌW3ca' 6!o?r\| @ VM$,@""!Ov[ Ri+jZF!U0Z?3Ù,q8?75Q`ǆa?`oϱߒRr
+%ۂ	(BE?<	:c80<@-1@!6ۿ?|Z2꿵c?o)֐A oNMt݌n Bt#}w|;{shGZiFi_[ISaQ	rpUBV
+rB*Jj l< ,8ni hok4	 @_8!	YXJܖ8|`0/ Q mR@3gvAA:'ipP4V	AxFalLY0UAaEADET-D1ClGEH$IBRL$9\B*my#/7YAQ(6?JBQ(oT0*JCGEQnsjh:4Z-Bў 4CkMp9OÊĸ`1ј,9L 3y|XY
+ce[Lbp8$N~P^\<w׏{[xYOS||~ ?ACG#HBcNIIBGSEsfffVV֞66m)mSIU3AGp&	g	5aNNn Yktg7?N_NH =Tqb%A! CC= gFZFqF#]y7212I0030ffZbfeVfg`bb~<͂g`1c	`Ic)aigyǊfe5agMe-e`dñIYe]eeggaWcweg/`>8qccӈ3(g 2/!W WW-sn!n30lq=<x:xxxuyy3xoC9+[o0'0#*/Hl(.d$.tVм0p%^UIZqQhhh輘XXKqZq-3]n%$%$$%%ǤRRRRϤqZadP22!22OeQdrX9mHbayzy#8j7
+
+6
+)
+
+=)++**(oWNQnR"RLjz@QZuVu[mM1M_Ba-6-,Xmc?u4t:7tVNot;==%	}!}_$beSFFFW>+So/3o6005c1s1;g\<ؼ|Bb}KeUv?v>gFƆbdn{vN.Ү[ٟwtvaGʎI]NN>NUNߝO8Hĺ2zV.M+s {4z=]=<v<sK+k[;.]0|nb}||HbҒ_߼ À܀@ `S3!!y!sd9PТ0p߈ۑ,av%5}:zbM)Abclp+{(M~\A܏={n3G$$MJ4Oo[pRrқ}F.Go; z AɄ')J)9)nMii8TΐNI>{HQգGed<T\z|Lcǃ8q$dɡlĜwlO
+f.9(O-L왉6gO毝9h/e\$_dqX8WWԵ2̲
+ǊU|U'Qձ3W]5X#_s6{uC7oԺYS'^WxVF=RP?0{&ݦ[w77e{^ڽĖQZ[ߵ?{AouN.z<XqCFw}zϭ'Onj?|اԿހ@`3g{OLeуcرqW|_KИM[;y6!oJprZey|ΏQs韘?~\KϼW׍oYjmKKG|_]Ϯ=kMmDllD(   @  ?9"#b3L.`@J@%0BҜ%(a^e 22dNa:ykG7 `=nQXTtK9bRr!}T`Z2W:uk猆;LnXdXXN!8qt:sIw=vƽȣܳvgWwۮNnߧAaр~B-ÂD\۽Iъf/a q&	O`U)	+69v4"pfiVױ/'O:fgt2v?3wγLa"ËjKE.{QV,j2_Z{|:[Ɠ<oJF+ӎ{@Aww={Tҭ=ՓDDo>~g
+~>&hy胱_MM,y]{Iye_^N?iX7{}ڧkT_m~QkpYݕ5_ppDF"Ga,*5	Vmp߂N5hz	st0 #IYővcۈgUiqAK}"xu%vJHΗ)- J!E1\QYMUeJ&&Z:@n6/=	/MGٌthH30\dooig`/@tXSsKkŝiSKܛcuY{	Ѡסa/#^F3$e6fϛ (W!Ic~.)i7ua8ᑹ/X'5rO֞r䳜(+t;OWtT1{EiOU$ͮ\M)6sxS~_Cvc;#w*?` s]>N{+T{{s!a:/G=_N(^{r߇is.}QbW5s%	N1qE(5Tjmn(aj6;nKK3M{OKoCbgd"2YV4%cGt&"%wT%"%$Jݒ= '$w_(*Z*)(k+QTT}vB]_}V㌦'|m3y]݅mEz6z?K6(*&uff	Vw66mivDg;UPN0Fb]>xQB5}}_-+_Az!d,y&I	޻d)xR[ئ=	.Z{ڃ,<)it>I:r''sZ];+YB9E%bJI^ieʕUg{Zo݊0|INX-lln?m#	=<OwU:>kz2&M$uş75@I1 nlR9 U gmH	X]?,	5>+p1ESM9A`4]CMއ@? i|bm&"N	W[h44մ(Z/;~B*yvӻ݉c~3ь+Lǐ,R,fBs8d8pprmŏ*.
+Êu* [!*/'Y%eZ!˪{Ԝ545~i:9{<e/n@kQq[f-n[޶~ݺʦ]=+;N)/Uo]>;}CI~Y\φs
+ϊh%J9s*NjOl|g"^j~ɜ)i,09FpNUnQޝ|/gvmTWzsâh}Q㭦'[a]\]7|=z0UDۜ?tN}_.gx¼jo9Y<<; T`d#u0G٠bQEGEۡQ\Wvc1CX:6[]ipwXGhh,z'
+ѳ_ ZY,l[9G'{/:M>*:d!Ka&QrQ8=<iY'^ZlE*O45ij7ҽ^~AaQqӇfS?ml2wwpsnwt);aW7H_|/M}BF"#-w.j$'!49i_{9Sz$O;Z)UxDA`NYglΎ]>v	Gϲ'U-WjjUݨ+jjrlV2~XG.O~45ec<5ĵV&#ӧ>rf-}vr~~{rğ+k6طƟhcGC$
+t!_Ṏ5<ǩBF8U{y
+q%?@ISBAM`')ӍЧՉELlL̹,¬غ/qέ#ʷA_UNZLT\DdԈ̆R!";j4*Z>ud01eggI۞cVn}fGo2WS_=vy:%%}
+L$GvFFDDQc$O:ǁ/SSJ=rdq֥ȉrNK<%?ܻB//V*tpz%ӕjI9y+~1N]{m4;:WV<v!<xo0a(rDѸqW'xTGY9_L~υJ\F{~_v]a+!+}k~k:k~cF5^1LX  zjz	L6 9̛nNՏF٧  iTXtXML:com.adobe.xmp     <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:exif="http://ns.adobe.com/exif/1.0/">
+         <exif:PixelXDimension>1395</exif:PixelXDimension>
+         <exif:PixelYDimension>767</exif:PixelYDimension>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
++n  @ IDATx	|'fsG!Jq:JPoJ>E?umV)E)-uY $ĝnvwGެC3;<3yyޙymvmkkP(QՌ1J];;;xx(ÕJ%[D"F!s%fggcpH~{{{CBxr#k]x xb؅'ryIq19D!Q\.JC
+"y:<.@x[Ioxw-?04 hW؅$tM[l~G<GßL?>+.<?x@zA`-ZSh}y~?7p(?ʌ~qh@p=C	G $Qp~(\-.$~4Gˣ#.<PB2C.~%Σ,8
+?B5  PU\@<CDAfS,jwrx4=Õ#Dlc!?NVpgZ]k)'p]Shte?F 8pS?ObZ&A/~8~-d-_-݂!p(-yx vqKkQAF' %X+pH'hbyCpI`ǣ#"׀]-q8b"
+/#<\gqgb*2r1
+׉pq+A<W]rağ"퉍:`oy Z2"!C#606h"RFOx?o]j;9LS'XxcC [3`yx%@}Mt/~h x.o9"`ل]qa0Ùx+^%D"P>	\v̙3QQQPcm<V˰ojռ.a"@  EB,E"@~;ݻwe"L駟b'nݺ{nHH(D"P5"@ (Ξ=J*a'kRAPnY8І}g4E  D B) Dhwww''' !`\)fI(M65[T֮]{Ν:9"@  F,ņ"@5HOOrttĀV=:WSLN~rȔsLwfL򉤼/MYtОN:("Qɔc<zƣeJ"XK::y6lPS?-{=jW*eLh#F+-WJG  DeyH(˥"@ 0B =p#Χe:^*5nĈ` mL?ٴ׸q?i\#0+=ByB՞SU?jdzS6GXڙNN/H31-<rmעysǼV,В͈E;cַ'D"P	Xh/8|D"PΝM0>A\l|Hkl*>3Cf/ߚBe?]fp0޿ye{`8H'`(yaU'%lSX;XU[jrHmHVf^nH>V)MC  DI9&D"` :%Aڤ.cwk\&=w?jh]z}=mlj4fC5GmݨEQ5CUH+7?r&1Cծ`et:9t=A
+sFXYH:٣}Hb¢랿3V3IQ>+3vI.bl>SUO	$_?ڤϜO	ͧ4բҊaܭ{Mx?Q><Lg14hVPeǬ|O+UqMbW׿!vTYP(c"@ (ȲPJG  07=" ͹yGUWߙqp`w`c^߮wqst.۱dwv-=/}2Cݮst=eƟ68%QVW;OE{suWoC;:ۨCCo<?SxEq`lZؼȕ[q~񓞞o-y9o5;]SN^`Tk	]K:Y-.O?͐҈y\J_؋arn?n.Zܬ?Oɸj7':uԪI7Grbj{ӟ=a쏆Z#|zоS6pйGT{JD`1sfijt"@@%@!nRɈ  D(x5إsל2ݒX;Ԃ+R钼;e*&;_.بS]ʕ;]l\;sKQ.˜3(mDŇs8w}~vꯏ&٫-eSv?Ts쟶∷kǛ?if_Yݶaj7bݚ9/tͫHӳ2vl菫ٮZ+]&5#m;jckzNd6ѠCJ,5qd׏`lƶC02GW'%d.]nK;gf9u?殐=vImm6qs0Pܺ#<D"@[D"@D
+n!!jy6nǠ]ƵOiXNz%tK*zh*WĚ.	 P:{Woe[;J\|]srHQx;#FcE6F*On<DؚѻG_<~v~S>O)Ky~ӂ3zM{015;#1n&]sNd4!k0߲ROo'* R٪NX{@|1*#m_^x:S.l5
+pV!e*Z]
+b\ZL-Gfz*=V$ D'U D"`W
+vn<xS*e:}Z^njm4
+m
+&\g4_n:p'qyu5	N6L]
+nV\Frl=8iG9Sz-Nӝe"rwE\{+3GkuF7f(p\xx#?bqoŘ4&(4
+AI'LUMT#^_;v]`eGvWJc!w%$SaW'geWFΫ3vD-b雉橸2nw{3{\b*;5'2P,`OOOz26I"@IŊ^DD"@$ .~FRҤ<<X-z Ja ji*4~!P@)"%vlbͦZЁ* F70IZUoܼ_HGH~,tm3U!;؊J]IKfX'En⽛ctrȮ^1q/~X祅-d5b,J(J;Ez:c>`pH됒^/ݭ'<Է|6&u=B?_{߳;-_b1gH_[uuɱ6!\[7qK
+BU_ DFKc(OD"@J[
+,7Xkńy"/ @&PhC3cN}Ҥi1M#@o{$g59΢wVݽaWY
+w6}ڹxVג'E$!#6Ȕ>ٕamʱ!c5_uKxjcEto+0vP}'ư܅mBwnxlYzhs`Wk5_#S=q~m&1䰏td壶c"V\:&v-+=V	("@@#`sK+9"@ ,Z/b/V_#2՛U*dծ`{=ͽ~gv"<OOqI/޿npW3cbu,V<Wd\^-Vxr{NzY~Brrrbb9s=R0'7N)KWJjdғ=\q	y0H\5GrU?|FX$NAYaqKh!2%ME,SJ$d
+(A*fCHҕ+W<8W"@ (GȲP*J  LZŋ2$GP1[%T9*,(̛7KA2u^"2i[Νk^*"Bd^;UnYXbY"@e9"@  @vvvXYr:ilrm%Bk0 Pc$D"`Ȳ`uG9'D" T*aV),%+ZQVMT)/EBBY*&4!"@  N,^"@ ((G=sBi,ȰVuBt0qR7oPމ  D Y
+Ύb"@@ x||<0.+nT
+,[0_IIInݺsNݺy  D9cR* DXB {ݸqKR(Ж(] G.GA`D9"@   Y]S  D"@  D!P+"D"@  D"@,zR"@  D"@ (dY("@  D"@@ @QTJ"@  D"@  C,Õ"@  D"@ (ȲP>JI  D"@  DxexV"@  D"@   YG=S)  D"@  D,WJ  D"@  D| Bg*% D"@  D!@JZ  D"@  DdY(L$D"@  D"P<ȲP<\I+ D"@  DA,壞D"@  D"@ Y+i%D"@  D"P>e|3"@  D"@@jD?y  D"@  D"`<BRR9H"@  "///OHLL,p\H  D	Yju3_O2ՒB+"@m*̬R	Ĉ "at+*(*0p(y,ʢ4iRY,,e%X[nզC:!wW@GBK3L(rPh̕KKT5^Ka!TvJsP'2>f=yP FhEtBL+"/rf2P\оDkB"@@q(㖅%KYE͛mmFXKO=ڀ2kumE脘W>_E._
+-0e	@!#­Zgі-[X_Xӱ,:jcc灾}jǺsν{L&ᎎX"WVM[R_&@Vڱ̗Ieܲ0qb{6!J4iRx8{~uS(ZcIWq삀N|_ES +Vڗ5^Edoo_܏%W^eVZaaavvv999>rJZZZzz >>>..e4Xj6OCD	ܽ{ mV]ʼA?_zuGR۷ߗ^z,bRRRl(pqq+ʕ+どB
+^:?EFHr%Gxxxppp322֭O6˗/h"$$D?QXN8Q~}#c ~5k֬TR)ϭ~?~|M<ס6.ǥ"@JcB&*_y;t/}ٲe&L0?'v	ug{gcrIgC1Dm9:7ڽ_t~N`bx*jܸ1^<ѣ5j(gkka"`&Xe1ѣG򐘺D6ŐrrB1Z,x{qͰ,ԩSǠYǽ20Zn7:9ǭjժ0k]<M R5JP+˕֎P8(̵,߿ʌ!qcbcZN0EǏoQ~ukڧ/'3KsRR:bϜ83y5iӶPi*rg_FJxZ=IdUkaqǮ%I]=5iёw̾bZZ=h4-mşҕBTTc
+
+*]9f*xkԺukm,5h FSNZR~@	u k6	(k!4{_~#*4q7\!aD#7K?XŵN 4(	pb*lRԀĉb$<VZ.vrʝ_ QgnPi=ҥKgJkq"$ĥ֘޹ϔeeI5fa҄km8R3Ęr
+Wɓ'8\c!f2ӿ?d=ph(}bSGl.~Y{07gwz]ig8vLUb6tcoVY"w)^Lb>c L~O<E_oP#""3#8ٿvcPH:a57!ڷo/!2=Omm8kjG3o:h_J]aZx]tlvŒ~QLpb*Xh@<|0.8
+Q闼;#PF1ֳB^7t	(HY0d%sXTWS(x@Wp5} >={uٰMh=ava:<>L´cPd.=ݫ{&ƾqOЈFѽJJJ2_$/_n<ĕx2Z6߮l'߾Ez{=y +q1'oB&o3e"/QS;bpBJf5@Bys'/aaVuL"c.\Å% V6qhӶt.^c*#_kWq2,$EWM5TS"ƶՋ,XiaZq櫷TހfLy
+/-M?(d 	yZ(XFڃf"C&Ux6+ĵN_X'ܖ.]+W5gOк|颰|1xRI&jCb*b1x*l7ntss۰a<k
+ Оto8qԕ\W5ѣ6ͦ3qĿWrǕu|yG/X.}ܐM\wU<Zn3re
+/:Gk'DlT'3zg6XN&͛7iX=&[9K_V49cFD!EC X	}.&!uj6eYIRAvr~.j)~Njݻeb	%Ɣ9jg\KCDwcߊb[vlO(2;veYe7=Ɯm5U)s]s?~PaUZNQh6W\Yv/(X3C[~M;3k)=Em8A E,tPN3}o0@;[gﺼECs8JXpF\K$3~=MӼ	ښ-V;Ym `>]oXwhV?:1ۿm۶~1Qȑ#Xv0k.b꿷ULW2Z)g5oZ<+ˏOp%u>vomYLy@uΝX*QF`A112;v/@n1<DpH޽{a.t%1kڰ=fDzJDv{|LM<`h0Gm<K⻍a
+aR}吢Sd/ƣf<G	9CnsʌUf# ,:gkԕ:fX=Mۂ=:߫uȴ_O	MtNH l(u~eSܨ(°m۶۷飣V脋jG2``86vݑ7˔k}4׌Q
+>gStھ2ɣw%@xTWz;ÿڹsh3We}E,8|SAΥ߆Sl.}v؞57qS@шIyDk;7XŅEoSj"\%.3fxl]+~Nd{p;1H*Ym+ĝO[ߧѐ&o<,׆P涾_W>`{g~w/c^i<nlߙ339#2r׻Sd>y7ϛc>X8wL0ѭICZ?`̈U>0G~Zܗ1Gw1xiӜ?J8lODb`5##,t؊tA\ECvp^}sQɯݣ<$Ib.5p)va]!~YslP2Q|%dQ8|*2G>kk!?~7=zia?-F5%&K$y'Q;w5X
+W_}e)i\ZFxW%V%8rƫ1}t63}_{w/.ij}x7c|3۶dlƶ/^=\:0}k&䱻:L_[pOS{{Ov䎵OU,xZ3FAyb y@i&P(0
+C|Zc̿_:jaˋ}9eGt):1OʻBwOKhYKE`1?cZ5߅8czz Z*XwUeD/:q^^VwM뿀*;0D.Vˮ~ثV,Gά-;7oRX~2c穼O>jr&Q;aH/|ŧyQ!eZ9Imo2krRR`B61)G6㺄;W=뿮t~1WcVXy6N'dE~TUug*~yUB5U9*vAO@ 횸4{7iPhΑ\"6w]7wwJ=>yF_$ɉMm槲b
+X4LZF4
+6*ږ׫WWvY'_Q4ƉWݙ2!Y,xK-o6rrEْ;zuX3/;ʙlUڟS;O:Q97(b}uw|aՙV:ʊO1˓[3nH6sMm>e]{7|\cՔ?Nڡ?k.,78kެ+ۿ۵^/XhKWwgOס=]J~Lvfd0V[E]lZjF8xс6y6(A8S,v@16(v4j]SK|۵._t *1jǩUo[56VڵAO'k,/i]|Dm}w[Qg]bS3ʪ;Nu~WU?5iIoرa{;5X:j?h8?߲A,^#Ug}#}v<rӶKvȳ}vkƱUojRؖ_W^kݱ+=4oxFB0Ӳ I-طoD!ό 9/^4UGjZg#L$k׮7"h"3oO3cUn4ٶޟ'O2yG**x1fDSbA!Wl݆{'$3vX\eeADUJ!g-?s⭗}w!z4Lx*ֻͻ<ګ.{VĶ4Yw~i@-ԧ}nT01|=Ggez;>m?=2pb"Tw6KxCHMsi^yT?H=ų/g+YfYWXsW{M@O Ke>xu+&WOgZJR6/޿Kod%eު+Ѫd9>c>TRci2d)q֪s'f4}A
+!B ϲː~گqo%;'g'5ĘrE:K̝;W[o/>3fBtݎadpJ
+[UږmXoG5{;sJX`gX W7rv}7n^w8-@PI#mUҞU=k7Sxc{dZTN͎ߣվvޝǛ3_g0fU	ԕ-0K[iܺ.>Vj8<&"mZ4f.=ǘoSSurüZHkZګBDǦj޶]w28k[iD9v{m"`+}jmT.ԊU\wvGzWJ<݈hDdU݅:2ᚎ%fixIUE=mD>ы-0ZQ<dWw6#g7:YAWiQG\[[A@9̉<(&{G؛GoN.u>ս*fB^~Ж+$5IH}[g
+lR>v$cANMRW%f1V| OĠW"G +ޮ6ok(Mʣ>R:IpR}ðl?1~B!m6{yLsĺ^X狷; UQQ<:펡wkv6
+Gb*btܪtrA߯5Vj;5;.X7qNpuzQm6pٝ) u9ݬ1ܽ{CX(U׬r[tvc[f^bSfEC"k
+dr-G"g)p~X!ivD%zM[F87eaHZ/~ztM[2E4#@8QҽvZ}8lʫa7$.|Sދo#QfծLMiG9R(p
+)60@^50!-VQSbs]X&;؅=3[>|4Tt(B,s]Ԙ/nO,̿Yz6}_@$/Z-gAip(Vܘ׶ASt
+{gPz6j&:YE8LX<Kj9,(O0}#siJ?	Hy&?	1n[$·vN5մ{7BHeؿoe| 07>6^БI:T<VrH`6\N44+b%HղN4{hvCzM϶_cAQ[!m,yGSQDٹφ@z{:koĎw~^0|BqҔ6\h;Kx)3tCM~K3CFm:W^3R)$fnB01U
+!?SOD+!sϠ|zJ
+H	9V`M
+|"gSSS&4١(M)hΕ$K֫/#Q?|O0,O`|g"֏aPOd␾Bsb-RMs57;ak$ZQ+ޞR⟾*7~ynckvkj݆y¢
+9p<\G-D*>w5rZo咙/|G{MLF sFj:֑O_ՍHxlH9_K/Q}*|uB*@8Ӗ͋ruv7*18H^KYshc^v@B.-αy*c{!#͝UYW?g~!lu>:rynߓΘr>7S|Jż^MA͋@RDYLH+$ɹGa$;mT͛߰Ѵy]iUUV=Z߃-LYLW0%&̿ŀW{\zb$WBfQr\tzuX4k|M^=F㧣^kqV7؈SO#hKs,]_ha^]K1Jlz]^{Nq}ď.\^ءju}7CۻTr:vJ]Nn'{jF[|QbEZ0&:Z8}tlX8v
+kZĭj3B	8S,vڀP;8Ϭۿy{gד7QoM;<I5s3kcNi?V~{GJzEEOolmF>jpSo	r-wTpphү;οRϣ<zz8?}hԈx1x^z˙j0y|u8bXP{!y0P̳J杖)yO*,zz1;E	 
+.F+ /HQ0(shO&B_]ܣġ:uڵD0(O'{xH]FXse͛o޸q#..`BKfC=NKSh$9}&@U{4֯s<.ضCF\!|<rH1_ebt$U @IV~qu>et|zm>ƂZʽبoQgn^eAMm4%-GMaXSZZ[Uv?DZs3vQ4 cՒc[~R J'֣~Վdn7riSSEpf`yv×FmQ6x]TT"c׋[<uvl1p0~~ӭow ^Qݗ8r9[P٠@eg7?V2_,|nT01u?LCINvrϵMqO5].ݸ*:8ֲjzqhI,HuܯAآG}4`hBm*=fm.|>*	׾F=?׎ndTX±0c!qGw`'Wz)$Gkt6̋1=sW;eB`ח@Ī6v$D/lSɓ]yZ'Y1+1Ǒ3<wETkTg!􌵁qj<NAУCԧ1n`J 1kcg~-NcCvqqAR'pO~CBBLD5n`sE6kQ:ڕyo`Xߠ1_D:ӃX\jj
+/`5:?l1cuZۜNT c=ܹtӜOIa+Cx0,)j[vK/3p
+_c`^{޺ucr&h<4!F@" Ak"?ò{Ʈuq,]8.i3gei{4Cwje|O_YTX+/ա)+zX S=B]U :gghԡ4;][>ٷpkG^#qʈ'T_Y>S!:m0PP\~7od|?sxkܸ1&GCCŌՎ]),	HaWrMs>Z(	V
+ZU|w*yJouY/lڌf>}q֧M'~@dWEFޜgHg였W`"`s]~CM⋒=t?\L;
+U45GML՘s!c6ܴic=VUr=!Cc`]bq9\〿yj=*R.r)rM`t#av@=\D%Kbn~n߲ǉ
+{wJXd"%)
+i&f2{~eGY
+Yo!WóGI###JjI9.y\"Lbb!.Zt]vfw`Zl5	' 8
+.ZʹH!sni7-$!g.'j	]6^
+QBDԫWdK/kG/#1~Hi;$U*P(	BsU\cb3ư7e	#Ǯs56%D+^Y1|VGܲe˔)S|lf{=\1믿۷	׻	h켞~3|^B
+s_$XNFjJvj(%j||/MLqf]tmlKWR!wvwO)q(RSr!H\+`heFp.'!%+UrLPElݜ%YBfJIUS6Ϙ]Cߙqk0E%	(+
+Lk/bG*m{dM[?|t={efSF%Fʩݔf3jl
+槒ڧl<qK2f+us,ߢƼ*z
+"[S=tg+8zV%O/qd蛒
+Yb>UXMg+₂
+\DikxǃBf><'혋GæjfVk`OK  U&GQ0f{ASpiWUB`Z'pm؊bEsU4|$k Yy`|C6
+-KE]2a+˿ts  @ IDAT!z
+quX%J·jl݄'9rƏhi)^,tү_[~l#D?P̸嵓΂H~EUS1N<;#ˤa6-HPde$kl[J%H	:RB&gY&"FDD8Ąj|=]\Iay!j*mzt1?^{|a:EUne8&Hki0DY:TBU$KOC*uiۘuAXd֭lğb58Xv vUzؖFNe!E@:Pkc.;vW^Rpp=Όwk?>:?壝+1T{xPg)b|]g1:/.f#Q㟢<D	YplIlW?Ҋkfcg˳$Ѽbc*),RY-YPGY2\`aĈ8={0X~q!
+Fazuc, X[[gL%H D(KFca]~gl޼y*/$/QibVjӦ(wYe{!?&@	:2bR蔑v@#P,[Sߒe6nWԆneո`ik(~KY)"^LR0Vb~U:{VQ5
+VgĬB3>vc~BF/
+'@ʕ=19us<
+vHGv̛PK)­Z'L3Sv*pM___g>|8.2p_/VF࣪(6ҕfE@A1VZ;bCq2R++]W^f+Ϳ"PG!I=11_|E;0+/*0\-m<<YW6iD	X9FB{YGC*<@08Zfa(ta\I?^L`;P<!jt\񘄕tk֬eŗgXħUV>&9(cǎݹs',,0(. ϒ@eeֳ!
+ܳISMVZ%+MzϠP9W>_KZ*O({P"cI&Q0=|a䖅b}7ږw\g4Q@<b˥K0U.K߿k>`Q_UTN9'@ވ Íʚ5kFi/|a/+Ҡߌ[}x?ay{ƁX Sg uBL+"/rf2P\@#o:"JoD
+
+-=U̗0S>Q^;VZ0(/,%
+?*@A/֎UTe@e+RkĈe\x)RX)̒֩εHgLtBL+"/rf2P\oVz3n0`%]Ş*Cp*@04Q^cE.fi/P/([i6ڔ"P,⥶*"@ t:	1|:\Za@BrG@_ZP3`e<:>ZQ`+OY%[g_A4r`,jǶ4SyJ$s@<yRGu:@.Ugn~T;"I"lYg$B  D"eD%R,mX"RD"@@eԩSE"@  D"@  @e߮OJJ&"n=/4o\ƍ)"@  D"P8,B[ڵk'D"@  D"'ݱR&pEB`߶lVVֱcǊ<B	@"@  D"@  #@qXD"@  D"@@,  D"@  D BQL"@  D"@  D,  D"@  D BQL"@  D"@  D,  D"@  D0ײɹpalv)[<5I  D"@  D-|Id-sK1#uϷf66%"@  D"@  Dl̂[JݿRÆ{NGŶm&(6* D"@  D"/-P!uvMygWOWՃ	Cd߹o$@  D"@  Daφi4|WPЁI\	ٳr]ȱi2F  D"@ x=zS 8;;{{{bek[2ek[nǎ7PΜҳd( D"@  DI fȀ͛WTX$FǏo޼lڸ`l̹Waٲk,<\6o^2'D"@  Dŋ-Z0+ȢOʿye?@l^q_24t @-&(O_;lJ)"@  D"@,%:uH9hռmHPόٽnsU0# ievrjķ:?\yRfLAG  D"@  D|F+MYEG{sۻ3`٬xsL%i|XrJw:qBze-ZN"@  D"@ET*	ye9zc<+xL{e|pBn`W>qvVI+{i$#^sLW'hr_|񅱆g,\$d*;3f:^pl
+˝Z71%"@  D"@RsrR{egu궗ξ엣R3*''Η]v}lLR!pO{xzQ)ev-FL)a U
+*m۶o߾5jG>eYʂY!׮Ya2K7tD("@  D"@,!ޖ080q=n{,թv|prN}vOo|ۧk:u٨_$QFqOKHe Ea777|6[r_=>{?HX}2A  D"@ (Ipxld9稅GUc	@̡xze -HOeW3;<2*WnX\lٲ3fE7g,?z2d3f(NL;E:v4оŔC  D"@ (7%'ֺË"):`РAsFv7UV­lJ*d!%!cj&0#I{lZ%>7㏔iJ(L%?)lBLr~(ZL8b6GjfXq frƝK  D"@ Y!&&&33!LuWW1nY:L	
+ _[~S\3;{w_~3Nsevw6kWm9́!%fvnT,9+ԠiKB̆0B  D"@  Ǐ322ė]eAPdgg W0T`຀)lvdۇ~ג>_uPGqb*󸺫!lĈKј.o9iWqCz
+}۹>I!8>!m6^
+ D"@  Dwq%%%SHNN,ПG|$tıreoAUHidJ+u3Ϝ9Í7KP"@  D"@o1`L_r%HѣnBn=+rF`	ӧO0{{I&= J)
+ D"@  D"`oC, E!D"@  D/ 7N4ڵkw툈nxf!h#"@  D"@@#`f2d`PxɲD"@  D'䔐|h=.lQ4S> ul K  D"@ (a7o>&Gɗܬ`ggidY0͇"@  D"@5jժ]vzzz>)="!޺uΝ;u5,Q"@,# JeV.`.nᱵ	!  D"PNT\YR]|9++Y`Oڵ M,Q"@ ʧE8~7Zt|W4L`Ws?D?~2@P%D"@ DNRTQ4e; ȝe4:Jᗝ-X=kѓwq]s+hˀ9?Vx`Jb+z?9"@  DXssVTj&@]T:"` ,2`G蟣OgEL+c܊a:s6FF`b?Ӵ6:J  D"@@Ȳ/" e x#>6BǸ	n5Щ6e((~Jf<
+<`B"@  De"\$L #df
+]hl1sݙН.PV D(8qv~B"@  DȲ`%D 22aCPA'c*A8#<uC0`D(x0_WB$ D"@  l&quWC|2%K"@J L	XJZUS3WL_\X!lf㐸 ~&mĸ:Wx
+UaXwbc'*h G  D"@ eYHLS7%=S,˾0Jh8y	UzG@ x	ք4acE//VZQ Uу.=>Ghf"&Pd_[\!9lE2V`28Iþ@"@  D[[Jvd$3	w.m[JOU9?~a-w*8 0%`- x^ 	B]B:ť3)p^9ߢ; P0w!v@	k4rCt ŕ3RP#oV,>"@  Dk!eRlNv9JZRQIRs<vnX9ZJK$E ]eC=|nM0#r#|B0fpa:_ӑ{`4AIjzP؅}[
+fT#D"@=Ge	9"P}||MtZCGOKO
+ivX=f85ddY0`=޷ㇷbEt+&	nF	iP/_c.t&,-p#Kr|k$~p0[~ngrD"@ 0 
+͛7TI!Ǐ߼yM188شq!˂M;{[*U%,lI\,",1"VN қ0 /W,Cϖ	%XR×HShNL@Z>t[uab@FGkUrd.y  D"O 66/[h܋<qCY]`za Zp999h,0]g]zwjs˾ս[.f~D!Kщ@y%Qy9辢'L|ȉk:r!	V70?׉e0@jL!'c"P!̡0Z "@  VJ-[4{g]ȸ`@:u._lZOcGT0fA\dzN"O VX0` <ϬQ#oB}yq@\#śvu{ ޮ뫥 &8 )~aFnB@țc l&fa=L0.`h3F"@  D<HOOǻb%M:0z7=׭Fv룙mVADhh#oY]ا}RUJ՞xZcm::JH  `{OPeD5&:wnTz5!J+)0/.NcˀYwu	"bcƀMDb;RK  D	hEn_s?Q?,#W>{,FhQ꫷~Иg'e֦EUH$IP(\	kdcPlrD$ [ 
+0+>d`teتUYL"/ƃ [ ~p^P0`XPA;J0]?0zOK"@  jɲX1ڱ7osߵ#D8m۶۷F}ё1aV󳗰$TO/[U"NW[JDB/oĪ~1O`CYE3&̌nN$S$`҅7_	=aN
+>k&@Qp(k$"@   
+_?M`^1[)*+UP-6mܸ1<<\gFt3˲xTSlj«+WTR% /LG1(."!kzj5a?8,ʀzs^M>YW:~ ), mX3q"@  e 
+pzߋ%0bAȞ.}#KD,+VA./[lƌb4s,@˂{$}߱~]h-0 t)љĜ50Uk1""zX'`~2=P61I0O`5  D"P~`вwcbT*T֠{)D*iQE
+!ܲ +6w虦Zc9СwQTm%M' A`TSQr6,"z
+Qi,	) 5$!'{,nc̼yoޔ~"1&fnN|Y4 sM@ xR (8*Pd`ǵ 6X#-qb|AU` ABCP(t,L>}?M-G^E"۔ƘݛW}hVaA4"@ EPP4֨h`"@(@tLMmҏoh 	X@1#BK@LAd	,PaF,ꅁ* E"@7nr[Cw|x.O{`Kh`"°Ig5?36(iE nAc#I2t׻|f!`IӃi" UF`0$gHdg8n pz.=NOP(@,";O'kۉ"iV]m*y]v$aY$rYz~IOޢO"8\={4rO86;hh4@zUXXG<Е!PI@xT!-a~GuYU4"@P(E@NӖG~C=5@pwBYY.NOP19L8#dC .PYDHE ̑#|=G@,#aYS`c,^CP( E"5J+?9g!~t@.TM7)q  b>"&ǌ^x= "'Z"},Bjk]!XC`%!?CFІ`	ڴE"@P#Ey#i_WǏ9s&h/0,S 62Ў+`W࠱	d<܃4Gu\~ހ_dPa %g0;x9#[z E"@P +Q!C{ Fڂ`r@3!XG ~ { u t3O%-(dw0`L!#6w8S!s/C״}GHov]+KA^	l?qM-HZZZ
+@v]iuk|ށ@<77'QR5WWǜ
+RYNd#D`^J~zC5yR(xatCg$	RQHI<ÍhH!`-P6y97!~?>.R('Hԩde!"l ܠWUFCMmSqFvJ+}VX5uFB"
+5qبմ&'.HK<F4|^NP(7VSRR;6qD.t$RCAFx<"d׭Bн@jj.++PAw	-'<α@ƃU|g2^w')@ *	w N#`"uSP~@Ӣ 5-5
+A.%yY	#@Os,.7	mukH_)K] 0vzO[X^ֵTMUfqn#Q)*|JȌcr\~<xF8qE~F.
+?vh@Fo8Uǭcgor])$
+2NOMhy<Jx|M(Bw6Yphj.dff>|3p	Z"0#Ft}~,t;NtW_}u)"$aCjƺ	*A	_PЩ^z'~@ 9XX[` YT~#G5U*˴YLGwy\O+"~.ɈG|~t@$$A:@Sc2@q6=S MI[b D@`AE`4fa/fG$$$->/D
+xşO(֪	
+V+ӪD0Q#6Fu\0>)
+T #X1`qIWk6T17-|`R#W=!r\Xįi6SrxjjF-Ъ%<dwd$a4"{ޮ]񼊹7}ĉC-+J"999??fRfk|(B Sh64	J RXN:ݨl (!64Q0rNv0,JjMcfBgGngݞS䊉OL<^u7mUK%)Q%>Dm*3ƮiAF@o0쫬:Xe2'zXBDʑH8Ʉ2LsqȬGQ:~\s
+X<~sxT
+T5>mx<++KOT@":\z.)H9*xsYHCdɳ2jO\<>
+s=~PzZ;(7|~zz::Ti1@oysPdSםBнQ `ۃۘd2,>Iۿ@0 euby@IHn99ϣ)ڈ  *wCQ!rgv/@w+aZ:c"1 <jkmpsD\" 
+uhxW/3y4 }tO29Ce̗4+|pnWϻv{GK~vt<T,cbiG%' b^?C_h$*e7;xr	Trۣ,6Vz")@hg,DաmkEqڵxNi
+r3oW]o߾:<S _ 
+]$XI#>Bmm.꡻(h`0$*11 &Rzuh 5U6fRdi4q;eD%z.JZ,ݮX|Ð		#~TO5W"Pf!/m !Ç]~^'EԺ)_<֏-
+0i"}"8׉"0Q!@   W.Ŷ? .nmG@phk:-EMܑ$vqi?}ÊΜo5ӊhSbw.췳t"@_(пxNaѰo>SIVr
+2i Xer\ER"ΠX7MPXة;t )@NN0cיFLff2H%Neu	9qXO'$ <+>7yJ'Ӫ}<=<ЯBxR{?:Tѣ MN*z#-D(56;"B4
+SA13Sf؉dݒ;+u )ՠc _NEEkxԈ^rp5)8k Й3mb" Y2_9p$*J3y*eǑjA,\3k|+%؉/6_k9+.KɅu@#@(@y}E6-FcEp}Z8/Sڛc_D,lT$9wBDr95tQFUԴ|`/=[7@`#nvs`vxvBRO ~#?!|D@py*Ϛ6\oO?XuF#76G'IE"08Pfappg ȯ:!@+K$"`80 DKFÛ=b4=8tA|hDP=;np<Fl ZRSD3מ=~Ld	CtbD|`fǓs'e+707e=bPE2C{-Ac49mkn:0ƛcn.u_"O`ƗԈee{5CKp
+ՌG&" kT]q"=)5'Ko씗ݹe]B54vrȦ7oY#8PQ_D5\z8&9j
+K!Y8KLM(^8s֯_-.L.b[W/yydᝄ&ouc;CL6"p
+RQ!1*
+
+>0_K#NjzH"IrqnXfGl^!ƌNMD`fs崻: `:M͑Vpxbe)F5k֬!e٨E`Æ]̂]h!\,g+6``K8$qD8ݚ^TUyDve*E >HNczm,'XF8\AEs( &>@GU2~(
+7G5eyR~AcBx]|ՔYtΰ0D3SJdOڞ]=<S3C!X<S	^HR(@%{"T}mq&QEdѓp&FK7)UbB]sYR2bPUE kxhLdeĒ"08mduBceeV+OH
+ಟcRXC |oN{TFZRbt:":Gy\7?56اq7fbܩQm;RÕՖxHt|mY#/qQ8iZ-?6-;ED$1L;݀ ISS$S--
+Mc^iӃ :_@J 9XR_MD Jr)<Hg$$'+kkb@B`18CjBʈ/؝.n29qPr\3R\opfBCmp
+BX9\plW󚰲47)TvT;X&_}C#0tS<gUy]Mq{N
+|0M^QYt\7ge)%:R %'5K!DRUZ%:]j>?jFOi]q 0``M& CN֤'juN;-=!'WxM&hYA*H/Pdq9 !мT|~rmNu=\G.wH9zXP<1ջQ׀$z`(?wgQxבZ`+ !zt4dJqJ)i0D3o 3pJ!u^2q]0om럟Խ@<OӧJ=|gelߗ~vSΙ4*V:ךټz`g~̘9[/>o5V8BظqJX5ZlABR^s9TvnUfM:[ ݡ8_%ɨ(3|8ȑ#D:A7=E]ZQucSSAJ&jd\v8AnaL#XO @	d1@ȕdLyfWchqdkƚJeaOJ)vdwu{$k.pd=5숋S[Α~}긕7캅WIw/6DA Rrx%9q؏KB{Ͼr[<z	K*y	N2xuzDx= pT")y9?]D~?_Z]`푹mj?AU/]|cB_I4&iv{QݞAFC#@Et#zJoȔ檩147[rR!M_S	5D-~׋xP p
+x5@_4yp`f 5woZ6 ,{^0#!4eN봅4X=TLo:Bܣub妱!p:x`MFXwOmpZ˖[FF[mo]-!^bwß&~I]^Bnyaw̐;=P9;ֵSfnt{w7*7#6&0lre?~xF!߿/~;am wx3$`$e[!|Wȉ.c $*穤_|68f9RHzwF f2:D~FV/E}Xy3F6ٛg7Ç"[LՌz6{<I^ArՒ4iN$rEVN[sh	#F8.Ѩ /|123&p@%wx"8ÍJ 
+2S0ԵMkGuv*ߧH횳.wC迴o8ZV!ڃsF$̎١4&R	,|燝\[kAr{B|!~_έͯlTpgj.q4=A3{Ͼ6mW;UQHٷ[3O.'1M-=_?߾ВW,7Bt'ƞ-O۸Lajm~0m_gY?X|NKo
+8kV|慖m+C</!u,hB_@%9~<|.oU[$p\|LKi<O8NGs\П8D*6w%'WCff<,@" S> rıcˀs)!(Lxvɡa#:CS[g+KU-HNVde
+Wxv7,V`3N)}|#zC@>E<J&Q	E/Fx^93쓧vTמbhKbULm1
+<`%qS5t:""@@SHN>Wx:GIL&S5-6߿W]&]hYg955O?^&cԕm!޼(1qXX&^q?yhukUdxբ6Mi}1ӻglsݟInH*;}E4/<׆$_e29~
+pvN} =JoJ+sz|./]7^>cOr\\z! ^J\+4)Zs	g1FsrX&&%g4dx_  ÇƳ# ! 4QN|wE
+yM&Z	a.21Hw~/`g,"!xS`/pڜ0X|Ӷd]c=! FFאG  9aYupٮ!p02sW|vI]zo1"z8F9\	Ȃaj!Gr1wZp[k t}5>]8/#w룛װ5#\0IS%}y<cSVZu]pيɃ|nR x_ ]æ?{rTvV+)	bԗ;ÅNI)B45%jDy'q8GF#D!WݜrD$x2epJ7øWg Cv\o~˿O`rJGN&O?	MD(/TV#99tM)  @ IDATE+*j}j*;;
+--V.se2T"5+(<_ бH2tbqC4[]VN|`h7<OrFÓWI܍ohm E!2aIuA!YN$@<ؕe_ضxTm+mNLT/4X>-?^:]Uk2g<t	Y(jIbnU}o蝜Xm%W2My?')kh~)#O"ILd!ƍOԷ6xݫ
+nKB s|¦VAoQ8p$@*//\eֽwD	j@^aDՊM죰_,!.Av
+|KKva%#+&XHeW_(S9v 8a)E"2r$'01)õqᨬl7`X))t5"i0ٽz+-|.Ax0*
+Dxw-71p9PyMDz
+G9~cLq&OrcX5 E >0ݐ_(Afc_.Wl)êLV?QoƎ9s_HȢ[V¢a^6,pE7s@a.EV_	N>|ɍ|Y7XXmL+_wSW2|sgȔ)Ny~[3拕'KKʤ:u bZyy={u@~$(ZF14o=u͚z.<yb{
+(48#A8. =+ϳX%v1kY`%2u,h
+$
+D\vC?^T ߍ	q(PQD;̓k6+G"fhaQWgB!)z#`f6.pBϚ!,XC`M
+b	O(A{`8nawzJq^ls[pNSGM E`02']$fj1Jr<<won +06e˕O6;b: 8Y$ʆzbrovE0aҺ60|Z'O?pٽcNC,W&Clem0鿻xιrT!}@WXp><e}e(%7bvjY?^d=z$󠔎9j ߃5Gƃ_ rf3ijb >`D4ĉ@XJBNcI	x)" tFE
+aAj2L&`	@p!E"D>;0fGPb~뱹\Nv;}\Hbxn*5f&71_HHS=, z?qh:'l[Ch){?{ڝK:ؾXY,:bw@;áCiԙ;~vM8lj>i+!+TnV-R)bAg=noJKGd?Y56Qaf#v{/
+ tX!<V(je@Bz
+q B
+tM*e7|=  &8V`F譀S)LP	&C(;x&եMU&.E [F;/~g!Y/`!l5'OH?QًӢq d`F3KGS	NlO2gDtz)ySY7o6'Ǐpa,}gٽfð )F .TƤh45TR˛˥*WuUUYQ`:1QbJ:q"K*=zΟCnnNcCS4J2 jV=<n6> k MVL֡h`)TX<B{J@CA+1D=?-I A뫛Ӹd
+QK(	Q$B<&;"Gz\NE JSo((0 p\>W(Bb
+!>b<^i8R"%#klV<iH#/mt67aȍbFM#o6Zt6;6Rq_MG*4DSH=zDgҁ?@+C}eN5?36(tZjh~-^!LOP7^&J8Tȁp#]~GoÄ3Tw}ʴYpC , ECt$N'_ uja(0Pun& >%))P#
+=a
+,#`44G]((t@ZSD9B6@KJRj`m"|.|q p\>RII	1Y
+u#ylӁw~0iIfsWW5\";KKe_x;D*j;\&Ed0,7lWAC`#2S"|㾣F5%Guq[&@ Wf]eY&=ebGq!"mmTb^}P"),,ܻwYgR`Z*̜q^6XB~ $cn|h:7D_,VѠ^C;m@R!`gX1@[8dV A788}*P:C |B*&j2 -Mv)/><DĆ`!8p(V~FM~h1$"F(ࣈryۉzxOϷBgeH
+EW{>.m70`n!$;xC	f͚ލ7^׻ch06l!#ܡH6.i@ aJYqJS65iR.3ϜmBEel̙];$_HKT:A0.V[ـ,Pmlddf 	TPn[[jCRR>BM@{w9~^gfR3:kM!Q+Jຑ {t!$Zҁ;UR!JE\5GP&(91}ܾ/t"@P(q@0B\D;uzy9#r@,	Q$567Z\!%XX˂@nNKK:>TMeϞRmR{Gh42`]d`4I,Pg60߀LO?52 , bj#)؋[6'YPԞdBz4[\T&H()P0(E]ģ]~xpd7wguQEPb G5Eڄ@8<i]3m=gk_hwAצ&pε?_;C=pIiBc?V-v_}& 汘coyH  /q<f8!-w+477.XE ߒo>@`hNUU5Wo61\_|UP0w)btP6B#F=b"$ yx  6N+DԵdKPXG02DlB~>9qPh06;cB)_ScLLRdkl촴Xy܆<X@@k=h#1B/kwy]z#\.NKUy8j6ȔLPSWO~2@ 6n^Nk
+Cw{"YUn\xw\ށVGE	}ŜKJ=aӯ/m%Y,t'E P25;dpi'+l2r0I&YˇҖ9笟ޕ5JiSwSO~\OGzp4B>!R>!*)(Pc`>@ huuAW}H	ߘ=ivyrfu6*	D$i\n"{F<$/@+
+	[npW,kR(=xJX:=9z2sI_U6M .1s@OL5:a%%S:mjĂF<	E="V@VQ"7/\RR4'4YONX{2:-CBCw>𲇳FpN+`/%#F0BH§^0fahf!"˖FՔ)//ȑ#6or N?xc&ɡ y;}BXθq/t1t&"88[ t<
+ht 43/M45lt66\TSUTeRLRZLd$YJ2#eT*m"BVvOPg74RS71Hݶ6|9P]'OFZ$X̄#|A=LYdծІX4̾<m?8W	ykUnLEOش%XAzdm)#W&O>KȖ_f2=qN,u^@ \%,X3!	 fQ)Lfe1L
+G_ Uӳ>g[yp)dԲ2`:51
+/XÏҘ0D<LHp#CBhKx
+pܤ4Q@ uOyaMQ^QVA|!m1::K΂h&bq9.,0Za=@tfU6%2;F.Lf;<8f2t D+ϑ6X2O񂉅h5.~"y9w?a))Y|[Rܹ.PzֵMci
+dfi۳,@@j/]@5L͸uHSqĹ릾u[ZAv֐ǳ!DAT_mpzUPX@(y+ý <;5|a,8@9`	vjv;7*M&P(JOR3''gһj>ZRHb--%旓CD륊.HX2P6a:땡A"n`1|8ȳ}b)3!Nڗ3 Yi*n3;6@y2 ^A%=D=1!n>d$8DG8Z	DYcxesa) Hj/'44mjc
+8"	):z֘Խuz>\b^4ɭlgmgװof/+%!fku~ɬ\{e6̜xd{hys-!HƬ0ULo߿Ғyq]Ѻu{v*AD52Ld1`vrzcZ49#'3`}!=z;|O~^vGe;Ȣ `{4SuF-GvXB~X
+!p ST1@ֿUJmj_[[cLJ'jel=vkW q\50""@#0ZI(8sj^24$M>+K)blM򒜇tm`<a46\߰`<`57py^	L1.@1L[,Œ)VSVv-[}~DJ\Xn;Oxm%nz2HKkgeʆ
+5(Kit`p5qTべ';q 26
+3A]IN$_[`޽LHS_B_У8)ܐ9]pOͮ}#dbb"KB*bRNpݥ2/.ncg%s&MV*BaBWs3'dQ/PZh*C%2p3by@qFy$Pg  !z)I7,ڴ,Gp*y[-6jZ:^;x</X7R!`[o Q` _r9B."@zd;L\&psҳПD 4SzRYYGv5w[W*a0!&7	2og=?656ێX&#1.=g7=1"୦+EqdZ4.N}or?< |w֯Nʌ(+Ҋ	l~6Wۖ1YZ#.-Aƀ3Z!p55 V`. ]
+_SFF: ב^#;aaQYIg/#Ii0
+כg!(q)GXF":QuK-Jr56p s$6YI)L$!%=(lp"XO
+1I2&Z\*tz`s83W2G*Κm*C(OtϻJ&յMfxS=}ᤤ$Le|℥&;`QZBRL&0v}JbZj_blRʞXQ0yqnGȼ[;e)~lŬs/"[+lg]8ٲ:<o周0z鉍fUZ\J; qYiw\.Fdw۩ƍS_Os#<D؀ `GfCO4V
+?&ꓓPE0,('+yăFţ	|N2amI-KL;lNVC.&|xLøPKZaO" r0yA V*D:W)A{v~aQX4##rr(p9]FaC/‡%5id	7fFJJzrTPM/-;ZKjqJĸ3j")#yM L2cBpضe,iՌK_V 뷭LzSꛐp#Ι|eF7U^G@fƩc{7=Ea
+e3h}Ϛ쁏Z{'0bQ _#뤭MdsYܮ	/0!XҶmϜ<yg}-\;nNK1(hPNꡝr:Zi"0@x~C6:m~G"h1$	@.sI5t<,RG
+SnJWC2 ?xgF(6Y,8k(. @'\T$	DB="+r3H'\7}n?sC/&cRKԏ/0C*R,?RX=Ar#s]Օ66hؽ+!x]5h5a<xg/~mCҔ{kLn4#=,ۯmK4	
+*(?{Ѫ=W=YkwI0rw٢tSM4IQen0tvLN#B(#YGԅۅ	6zoDɄFv?p"`1y9kցW^z5׈g8΀ @iS{nZ{# ZPN03wVnX\$dn`[rcmG+'*M6[cT(G^b@ hQ$>6*OU禦P%h崪B@JJL<#Z^߰_̖
+&q<v_(&4\xaT'zk]
+'
+Ytjv4vYF'|ވ pܞqKzVg\q3@  NH0
+IaE#Q{'=-Y"ZT 
+mSP	+nz.A96uu'0vAéXGQ;v`&jFzU˥gb,3%P༝|Xs艢X0& `8{	݄!fq@F|:Q;m)REI29unw3m
+9b!
+mfQQg_G*~n7Es\qJh<3Wqߨ-s1956mhаl>hsDbY8m"iZe1C9jDU3'[ǵ
+@%$-)	?lGjke0Z-♎[P)M:d dX$J9.hPb+N4W_۱kvmXy-ZUVzXy7ofY榛nڵkϟwyn
+MC.ܩ409n:JRM<ͺfxad0lBd.57H?܍>m0  qR">`oY(# wlh"
+J@GP*`Y=$EAcTEE=<TdIxx\vGbfZ~@XI̒B#H8\Ԛl\M/Jd!vHBH gap4GVTnjo10gB!&\V(	pI_BI2ل:NM~lXC1!X>d%3E#G*t"pj?YMrF0Hvo0?d3<ɐ	1سg,w`1@Z
+^!+^%3k -իXQ]DS; *!H!&fiYH 3\~8Nx20#k;&q]GFI"^7{ϋ(UMuBq"ȓUќ8F`߾}PX%D}t\-K_$&jrFץML;C&SqbZc95W[-0mzu1	ѕ @ÒQgp~'	
+~ѵSbD_<*n
+t~G 9YH\`c>+d2b~>7!AZ{VRo/Ϸ&3g."C9"H 8t꠹X  B,!xI(]  8"U=N$uM:H;Y&;SX4\i4)ju:tk18P?/;bN?
+>nRPd%$vpv@<&PztG"=l󥿻%i)uMIKv \'X'@:+AO_g[` %MПBYRFO0xx`ÂIeP/CxЮ`VGB<,tdm$Uj87A~/ Kg0dU (CwQ(Q eB|3t:F8BNAɻVz$NK*_tT2qi82aɪ'8[u{J<PDjkk)/`D%=WX|H!%c4
+Ap@p	B
+1+Տ=8bm?X~ƒuo\-/:ųmݲ/:&鿿"m)ݜGGQn!)" m8ZCTYF'Aw=0v}I0@gJ+Kzl7_@x3p
+2ꦪhލ>7Fv!	!lAP5ݤТ V,{0m?ݴ@􁞣3<%зqW_}۫6~TR9Rh[u<e;vl۱lmȄ?uAc&uճǾvJ#뤔Y9s5x+B#EčsۅhisO$C~7 AOtǎ
++i 7Tcð}@|Vvp@.hB lNI8XS9kBuOBU{`N[!	"x>	'D@__զ>-ѷ,_1`%sɘ?*76p^iN'B^Գ
+vQkÌn?k5uph_XDd2MD v0@Vޗa O>` !	4%tp&@AcZC#@FV8( 7#dkvvrp\,UNh˜~C*!փ*]u}[Yy?[|kO}x$-uߖjo]GĞs;3qV/'3wj/c|ԪG,x<+5/o8`P]h+|n'qlĉXijfJ!AiUXUD,psAFF||VPO+Ǫ*9@.vj. C7OD8Njq
+!TaEin!`g쇷-Y}j_uk
+>vdkʞ;O)=%>X7I-۶m=Gܺ'Cdr°g=Cj۞n(vy/|]g++[K,}WRtܮZ2ŊzG"7+τEq%$?d3x O_աx6 `Z}tr  {G=iY䣏B:	;\ gDhCC bQ#8q8&gL @=7]Hx,J[1U4BD_:ېo)oWXܚk7tn6Je#kz~zE2,[{Y&7ߦ#Go^ZF|r1krc.p$.3"'_{oh.[u*.!b7yhsg[#Lf,6o	_"tF+%tggtY0@
+6D/vSe#$KcV`!1oN/ ѩn-1(Q ⹲S3n\nT:pZbGh(Lϭ^e;1箿{smWEA <M99|pp/v
+QgM'<_ɗ^0NouLa#;*KfnM1%Yz6=FLab0Qrjl^=OZD<n!s/֩?`oIHt{SJ/"XP[,v<\AHX=DL0jBunP]!Zl"#<ƚ?l[s&^{ſ9o7.P0 T00drh~: (}4p۪-_UYuݷxjU:-m\nN;2oJd̗זw	Y}oz{oX(#i]xeӤ^p磌c]h=aN!UxX.yioUf`qqb=MUj;%glkǪXN^-yj	y&_CAouɧstퟵ{vj6y{,nβ'ahbpȘQY#H)hɸchBv)cfõ+攱L!;7FlL_]}߽seǎ:TI7(5\zXl6h*AĩfULzo?lrK1{,ojb茉7'>URb=kZsۗ>Ks#s^<?Y8U(Y^6هQ`>:Ɨe>ilʣ/?R^oxMuMM.̞VsڶAU_ا% bڽuM0K`OfG%ʿm)e/ϟ|၇ŧ/z\}S%<62xI@gOy<ʷ1l?{>nok8	ŗc۷}ɓ>-ZBϚo~~㗖Vmua#
+΁//n۪]˦}i{$oV<5BzKT^5Ǧ|_?ȓlmyЌ۟1o[s=鹝=D Y	KI+لiE,2J19H+n.41G+?$ٱ^
+̎8G7JɌW2'YBBʘq.8">B== pc@qrAv"j|=~㻋5EEE3(w]/^vZY * dqF1zĢ`vή Y42hw+YT5EhrP2?Cù~r2\
+7.;F-)ytk<Xòf@?%G)Åҵ(er~~5K>c$OgJfNUsFghwQ9;ڥxtgDd̥k5%X3z]\LX@nzҵ3VL[X `AQ'S^ڼ}ޘ$aƈޙ_+VOykdd:w҂lOWMLHJ%˾%]7s҅3Ϻs\Gw}+o ,{J^7k}DppX|ev%#&t,؏\hӑ,+oa FBU}g^Y	Kݲkt'"@f*xʴ	 *$ıTg!́1a䐄QH/EEJ+;;ŋ	4/eE@<#(v֐ۼ҈U3ȖfB@ XNjUAXO>Ta8qL"p
+ g1n!T}=wy[kud?'e	r)zvi͒HZk)z`gob4 O}ʣ_?>|rU>NJ_pſ]B~Ft!Y=umE-[NdJ+Z&qH), Vňu*99\eaƥC}<V|Q2ՠ"MdV,Y;^Wl\GMT|Ĭfo8a[W.\~]絞GMVDB+t'"2 #j^_`;OշrѴnwJ,˟	}ǟ.x[`@NeYŞ_=\L&Dyŗ7|gywy	X+T}c)%ŕoPmpO
+(ꩆCն.e*TOxGסèġ:SWM`
+GP^
+lj.|";?80x.Wr/xĞ=GT2gTe!ЁY54,w$Tv#` zpTgG!
+!&C\9·?DHC6>\vf)P˄V9ZHbbEdselЕxG S h]EQ(I>!.Fj*H"h#띥`lѡxG(Er~dmPa
+Q"I B]}$1Q뉕쩷'Vs⚽۸e'$#1R^|󽍉L?N(gC/Xuܤw34?6dYѧ0]%/?l[s43le
+~=YP^ 9̕cËw]<<;}҅$aM-.)z|{ٖR2oNt!ky8<*l>݇NJJJNfxtݏ>0mT<{3#~DNy	N<yT8̾Iaim>~1jyQkSӒ²{_&kPacjmV=wN}!:}XaړTK#2Y,p}Y`h
+@}YY˕H$r<// /qZv}#NLb3<[CCk5^LuBW&\CWMdjN̧+(Ee<;B-unb5 .Q:6 ^/C.ĮYVЍE #hkJyyr.1^~+EL:I8A+ _u-8r6S/k^rZgq"|";?.=S^
+Ѩ =]6jew=C_o'w]\s'.o6EE3.2WDTW9+g?{_E0\TP(ԠR
+͵_z"L4
+JRM>%ԣpnBo 
+
+
+n.;;2;.gΜ9w3sB`y(U7e\a/Ӣų0v_Od#QR5.s]JPzDdi[/a<\CAmT8oǔ2(7vkxn0|A&ODDc&lHq%B59q$bU)E  x5j63>MҘ~V{vRj/>]|bqX>ZZ%voW3!5#1/V,EWEEt	ido?wEQSQ9,'4xXC){6Zy%HRWQ(Ed6⟲kTwcC'_7cIčssFMek[4U_(`xLZU{xvL28s[`?I۴}psKU̕T(-ZqaX^ 'pD!''\$,Գg/\0rHn=.Q7@/i1! j'X`^FM+`0 ?
+Ϗ̞M.%_|:cwEIcoDT<8C#@ F F֥"ZoQL*n!:Dl?d7 q`btbY.'?yKT[{'&"$'3l;&X[XŖIX9ݸ%}1TJ'#L$>"湎Æ3|=LzgGM9=8:loiG330 d__Ỹ5E1%s	)opqK\7Gy	&17>S;<Y<b&X1L&'^2)G+`~9تܑ  @ IDATd8N}5 PIE]Ӂ6(&?o1bv܉ t %SjjjñU)h˩Ħ>᧭텇-}QjKct3E@홬uXteA<$Sg24am`zgz(7gPE;xT1i &yS@P#\?P]8DGIUǥ/,=GX_k/_ESCb$z5L{ƣAy!\Re OT3bC}%ά<9>09%Tyd'Wz3uҭsܔg+9;d槆oU3""q\if`h_q{5jgT4~ߦK3ʂC'+r<ZiO2^2Fq$EIJt\L^'ZWnA~/Xd0:E}233?ɜR6nnooZ%LAlla0` Y@-I&!R,{lԩܟEEEZU7O`J@ljGs!|06<YIƲy}Օ:qtq`b.!k#$r,`<տ$`ou,]T(]GBVɚ˫ꬬlEY^/#b@Ng|S1V0mkߎ9J}mX;:Ⲧ&k[eT3y}el 9T_/Gx-5?BCC4
+x+fbm;`bz?l(vvM(d#v$#/TvzP666@gaa/'+j;2ѣ^^^q=]1u=kH,t$6A$!K	 pYm!~flJ`<APDZ
+`Fm{'eHrr<DN.RA7*},pB;6pPGm.k~c쪴"̨CD}}}"ڛ;7,E%CNl4VucPj,WUo, ޼:<8n52Z3nO2<=ۃ@-	ǇENW-Y	g,YԘGYFڢ[WR4Nsʲ?ɭT;2鰿y;uWfǾ͋DXbA
+5+!:
+-xā,@|TbY(KUWW-\0\P B3S \Nkc#b1a#RL~ѳB{@! ~HxuCjRmhb3/1ځE@8DYЬGF`#,	A+	9zvbJ|NQů2[Yi*~631>>,Tz.v21%4jmTUQ<>jW ``,qٟgD%LX`Æ|>C%)t]p
+/3t2lC_L!Txi @Cx
+\`s*4.X*Qt6Cc]iLa('`PړNFbB}7V{Sb T5IRRDHymcvt{1`1d c ~S4#h0D]@.$$r+5@>=[íe# 3_xNx(@+|+krN3p`oh;s&	$˗wЄxxId*8%k< /pT(]AuJKFPM
++`w֭-۷otD|߸dKd 0b}qk/H}EeɳM+ReQ:<!*ˈcXl*a*=ߋ$ YVsf̉&yƚeJ
+רTmڷ22auj<	V.`DN[򗳳'Nx}kxG&:t(PᝥD oX];4#6c7co$%|Jɏ?vڐ67g3Hw#8+Og(^nJڜwRP>"FuLEizl,VX3fyLu&Xِ͎H34ǬJ26LnjI9Hi⥭5*V	y8_痏+mH&9B$M'22	'R$LEif`uUD~UKgHkV-Q\;#wzͤt\ŊAxT\OYZ7;3H$'~bOŠhس 2 <݂J@^B"PHmz0l`w ~AupFJ+L&\z!" X@+-U&	d	
+ʃ%YW!g&H"1j^l @X);ϓ{0aٔÏ#t]FBIdɫ;8doAnXνkLeEKo:6+!D썏l&ik:ۛ맀mvam},Mjҏ{pɡG?nYo:3bBΛ'ph"ҭjOg\QXt+~b06 56ڗ!)-01֦2GIc0wh<6\ٷN0X#!-Qa o+Wzq4ڕ"@"R8J+]y	uyW;QȈ{kfw3z~]aG)Vna!sI	rFK qg. =祊K5E,
+3sHjO(,r_GքڡKMK,6qoUeE\#OO4RHN{Z[4fAMD]f-pxe˖_|wmE`@mXYSS|skl4G|w׉ϧ	huNt6o&_}E\J/0ADPc20X`6Pw6mF @"1kV0Gg:Z|6Tf6ead_Xh~u\_P)+oVC\Bd?(Z2Bx^飣)&Yu䀴HԚW6ٓSD~!!?
+RipiHW%KOnIB5G%fDA>2 Khڵ!b#GDv:4BlXyۮUGsfo;-VDX>&3᤽mY_PDW1ư8rZ2*޻!=j@i=lF8bĈzZmɕbBX#Bp֐OV@%"/E)mcqd͖%ؔj`VA=6Dm8!on.N5a۲NnSN'ĺ?H`xkU!Bz!T>@@Yu",-H 	DsD43uuL<x\"!Sc	#
+P lq	@Dю3B;5!FƣV'(yPPTg+@HBT,@:HGY~*IuvM+:Od	#SQȋX3Qhmm-|b1h:)`ّa%VVc6Y$ 3N<pk`NX~NJFYnH<T>:UydЭ WZu,v
+[dXBPFbD=[OQ]VسfMMMUUUI92-)**
+fr!Ɉv}"7k!CtG]`1@߫+w!&M"|C|};nHRL
+
+``q	hS]Qia	
+E=oPG8yfC7}{YGJ+2](/ƥ7G)H&=z˫hٳƍqeϪUWVF02k;G[q[)Ď՝dC[ŦڪFFR,zPi#qak`Uy2{ȖRl"|Q0ڈV솯vO'sVwrۓO>a|"\^9# MxF`KWBFP O)W[)tSe}#v"oVGȨ{MZ@l\:+IiٟIu[_"^ڮ>@@%j%jA)ZUC"	rݼI\]ܑ "|7hv?O<<ڵ3U"`@kh`;#YA00X;Fs4ixUC1وa
+={fU>3!hE}4S
+2.̂>Yyok^C|á@;cN*ےf=}u+پ>}R 8;l#
+R2#o(8ܳL 4CQ<l@ixDA@f O!![; T 發	py
+k^=0\Fӡ'UaV$8~ܘ[B D$.((pT;:2/^tP5'K"`BU
+{۹3]QGG', {Qe	*\:#[Q>A _҈S6>x$Q[l<Y[`Ɍ-GP$J?C֭cQ?)@TcBP&#55|/P
+E@!A"`V/y~6~Ma]q' X׆Y8Dt1miyx}HS9S
+JﮭMN& P ^Νc"X_OG'@OPژ<#,PZAP!U"@P#aS >TسjWk` 6
+{A`@:"ͥsEǏdILϭt#7!,@T!{̞u()abZr-a!'<( guX3.lŢiHʲ#wt6n(guشO֥\ֆ7N|rזWۦpl2dcיPg=h/ӰY0YPŻ +<'djDI,q6U6v^F<}
+MU'
+wlY9;}di/%-ٶ[0>C``,_ytp`
+ep
+E@!BԘ왩>MX
+l갣߲ʬ掚0,z)ʶG>ӔҞoaӿjP]]ىdfUBuJUfR̂hft@w|gcl,ҰC"@ΞM{Ke-EsL,;:)%|19q":U e?!j5G**B uc`VhFZYB16i]ݵ2@e젾^ ѧ	{
+VSis?,\4~ڗw܏}iJBjӪXCv̛҉-k-ԇ\ѣ:+5.3,˝w1iG)Cvz(
+	J?ƺFEKv?.!!kiRϸ@*<HG"` @\"ZQ^`T\+'==j@;	f@i<%F&!O-
+%$>vq~7JR/j쇱U{rʖVk&.䫃Lڰv> dǒ6ҘǹoSO!^aSntVr22e^ߡZ	
+F!+V0/V̒#B{ffƪ#`3a//P-&  : $D W&z3|%mh<Bf@i=f_kPj.UeB_~B~9UV:%{GmX-r)}͙Ӫߞ9ܮ+ynzQ635{X<w𯄨.Ȥ~KC]+E'Y0tWJ"Ll&|2 A+DNsGLj)&AN\N>>m8]H!'Ղe9b
+_Nw-p
+E "&`
+ n()]XWNƩkOԢO'}t߿Coϱөs	\:RM7œE{W/zrb>$$TAxc޽)S`~MmXA/r.ήϤt0[la'[m۶d$SXT)el!55-ܹ-П}  \aX Zwܞ1d ЗiL^O͌R7,&>xnuҫLd0q0
+\?h˓#b
+<C\.OCОY,PZmi 2";E~>Q۠PFq)qqhݍS40vyEq.!C6.-k{v_b:	ϋ2z=il: :*`/^̪믳W_}-+l!22-KlaѢEl!,,X-П} |9Z&j!"<=V +sH\A,;fوosX.P3`*
+-8q6\IW\Xh:D0J+穣>cYd#fM!c7נ(,E#pn+M/޾R}]҇GZk_in)f'H~ZrL3f<oCN6LeuUj\՛*
+/̂ubGYx[⎵:/fk>shn\doE,YSYrטbB/S~jgojH#,٘0#Æ1T(jC-Iwh`r̻/˛?6y)>Ho@S6g'y֡]=;_ծA[sEO7&OWL"mTʟNyk뿿ܔ}?N(?hAoYd@ge70Y0sfcO3	}L5^A p/u`%L,lDf_T8!>|Lz%&.yndE@77=#<AH4< 1PXC@31X@7XBEA>O&:wNw牆|l_|C,g{{C򹓇9;?4Q>	i8rB67Ql.H3FHH ҴiMi9_y]l??wiҞߠ:+;U899׷ܹsGSU뫫NCQQQp0ZCEO*ݝ#tK041֒Dt mW3oEoz,EDBbbmB0i@+md1Jb
+!JJf(p5e=!ￋD"GGJ  ׊Ibeccӯ_?_~?Y('DX(dGzyyl^X1LٵJ^r
+ЀljPpJY/ػj8~@g%J#?.I߀R	o]t˭MXܾn;-h9㡿vP>SR4o#gYZjߺ GR<nqh'HiiiIDmHm+pUr떆A;ģF#z`NP>`@i>̨=G@d;|H.J'!C@@VDCFIWSfn,G2j
+8X[G7puE@+mgVx&V!kKU2"xojx_B0s x¸@ODleƨOW_C"
+yv\s@i}]"@P#p쐵6|<odIB+'H7T(vvAW'SߕHPBՉ"`0q(rS-@OY	FOgz?!&o@i>=E/l!t@mq35
+LII@&4"
+
+8fS^U|Cs<"<	y_̑2e\ODj*y׿2P!C',E l
+$(d>X{bPX(O" DrppP7X(1KaajKahq'ۖ,Îg{;oܞqpWFlXM#b'[=9ccbֻs"uT/]oɑ#B=&T+C &n s$
+XDoV(@pb!@+b@`p?MT(`7צ`AheܙNaq'MMM`h]aOtuT FCgg	V`Okp"Bvz({,Zphea(+EɻpIpɂ*F0( &:
+A"@"D)=!, -
+^p
+jvꜪN9Rc	A@5mNuh/-ߛRˁ:ǒB?)UŞ䭷* s+W^PeaA30Hѭi0V}i0m\n)ug%ln4ֱe	e4u܈##c2J\IRURWxD^vFFFAk1fA.#+:fY1e{.pi
+6ٰՆ7!<5A!61OМyB]K/7)OǓe*  o|r{a|"G'o>q9`%,M߄(`;(g'Gm-P/_z+ߪJWa%t_d;$J^MUyy뾴۵[f;K$~>+Bs:/;O@D;nK^F\m-L> 5PPPl7&`,'06L a!\<`UMy;dUK[;Y k<o0?W5) ǎ(@P-){xr/(`9L̅<!T(`ȧ;XhߍmV
+^ԥ3VLt%x7wɉޔź&V}M<6,ټR%{ZUgف5$.EQD-=zI\, o:.M>@w6UP{IDcj`߻Rㅔ
+c"1+QJãW`JkgB:Cmb>HR -qU>׮B0|A. u02UJ+.ID|sSɖ _5NPUz_)o,;yeuU"a$>2B26byB?pK5slw7n,[iltY55uvU14Y pԀKids#PJj`")`cYm+èԕQX,ВLDs.*od{lMHIDD'=A sUA.D0< +kCMa[lV0Cu8;fC"
+Јv\0=:elfq5!퓓ZesӮK	QfZ9&0jtR\Kk|_>U),Ou	%$6sk-:\"/<쌈mu9HvS!!*33S|p XCnWC91+L}5bҔ5q۫«S3p=@ fG .Xֶ*{s"P\Ö
+zP˖>V S;ɂ]68vvC6ԀD%Zp̲T!=4XޞڱhT-/$NCqol޹3pG_c*+RX |OI f9s[[pHK_NHXal>V[yMmCA O^Uٵ|B\UVS~nRWCQSf
+lLw3kSfGXX9)xnEq{M@?P<p.o}JBNdY9&~=N*
+%U,O
+%E@JDr|oa\[?TaozV0cC;
+yo͌#w&Zܺc-:"Sr9J^^q^)!VVVh<=	31޽obV|5G	XW6[v^"}P`~4᲋ovHwH3ô'/*u_Z)w9j9Q[j0	xQ5a
+Üo/LYޭ/{ٹNvwZxyz^#680X!M*1v`&XWiQ}T3Xڿ!p
+ZPBc6pSVޔ5şYɋUKEB&S(/+}twEڞШ鵃6N59qF<1 BW{3ׂ  07E.c/X<_yX:QtW5Ys\n? NVӪHߚt@_̘@g2'Z5iń,)OؔW! #V1% EA AgɅFsfy,`oPxQ1gh}3Xٳg>ȋWi=" %WBˈxkvWɛz-5$G&b;PY{b_Xf8=Il9\ۿWC$ZZ*6zBQjjnK~#&͕+#63cdD/I!$6]43ؠ	j9ȑօ~p~FuG6/ltފXP	:a(L2#"?)VU	 Ob»	]iU_XR(K|.G55Q]͟^L>pB{E_ڡko`*f u߭71J+Q=>/,?$:[[!KZ\y"[=I$%!IvG*f!XDv;Jˬ̸56V6~Q){,%͍)^nI_lm\*9r)j꾪W2N4n$rC K.`(^s	?S=$V;<_6?r-bOgY'FWۡ 6#^a
+Bgrdbck~Y~L##B<yed~N"N@hX`	3͐!\P9޷@ٓ;Apъ;ж:EiV%" .A[ZVsqYX$T]iTXtvr`W>-UWdvbdKdrwd
++Xc1r|psStZ-{J88('"mm*
+^Vv.zGSEfǚ*ѽ;~0'3kc&՞eJ^f`;ڣ{9
+fAt[du49ISIxL 'qvxJ+rW_sմL0k).D=˸q - Df}7%J+	}
+3J`ppj3kG6MtMtzUfVkrk`~}eid~ܾ$0UA2~."WgF''OHNA(ui	maсV^^OKbj,ؗ}R>>3k*  ZnnL"a*=c8J}ߑۆMk2(ǃI57l? bp~؍$Ouۼy^=-=x0͂_
+a FasW/jy3{7x:IdL:,X@^]Qn\(/h΅#0؅qVBKsOҲ#@3D=6J+A;P7e~,,,@
+'}-w'ks{_pri2Y
+1_turT$=9~0A4DY@7'9(DK˼DD^c=',`P~5yF0b@"0-%
+и	(X(0%>4N@:D}6Vݧs'+OAttfQ 9xO9?K-w?9ylԴǪY}Ea%P U9(PHoVR{)$n-r~+;ED ;v0O07P(,p*)a w޴>l8d,\tbYbp>e0XB?gGAKMaKqyA^VǝhxCP*p/)[mB,Hm>rѪ˩_Gu2\{[\D+eD*G|" _ppqjUb7VPM7EKCd~?\Bl` ̄ >O`Ɓb&!o	DXB/>+ Eа)`mpC/8ܴ<UPT0{JEַ/1y,0C<"W1a^vB|jWV2-f¬>yye_C"2Ϭo[_/Uy=A$<#[GpZ<@V5@T]aһͅ!W4J+ʓ@;;z5iu;h`,Cӫg.sS.֍=KX$i}x<440t (ah.I<37ysf]KrlJ/;K(Ƭ
+E"F o98|3ltFT%#@3D
+n@i^yh'Q#,t8S`f=dzV	vA9)`¤<x밿	S]vX;Ə[aZh4$&F_*~)F \` $0иl!!o,PZڃzwO.vLĥ)?vFQ踑l(?q?{q?vnOkz7z9F,eƅ_8tzl9-Q]Vyjȯ>P)q?sv֡
+ȳΏ뷯Gk0@Ů|J<Ew@ 	\ [:
+]]\M\<7t#EAɾ6q{kxkCד$&E`ef7zi´X/B/(N9<փTzQ,PZ^4_4eScĴtUf핖sXpxR&ږk۔uB] r|.u^}Y,ع'e״bǒ]&L	1$IҴfsK&OUJR4M^V9yl	}OΣ>lp3Nw@4Wn|~3B_Oz?wUc\[Bh=Bd&i1mxQo\^@t3v.qg	)ٱ8$ZzásZvoĖOM%/ĜB2Y笁h2 xBӜ'lm@A=j2L944/LĒyb>hGlGlXurn;e{	YMyҊY#?:z%PtZ tו;I^z#rԀWY}_c&/^!k^ޯ1ʛȂmyE=4fԔv!ߕ߮,;L_=Åo7?	]/_Gb\zZ.zj+$N k08BWu0h!L@hf8!XMI=#
+zsux
+ܪ)&K6nMK\{|lkߐ̓Ul' fK#"@hE A^ySp9/ǐ-n_!q7k{;wvŶNO-
+%$>VۂFIJt /jU{U+[J^ZWXm.I_CIcf9{kIDlx(%</|Vj#|+R+XQݸW{iH&%>oC/>Ix<`DeE<0TW%}Kb;rиVy۱ZhDw#./oJ#$2GCq[{|fq`Gp!
+UM(˸2n}W;`.Hw}=>aI?*j"ODbJySUV4(ޜ@&?(&}	'x
+*]4CDn,PZgw^u`-@<_ts+~mW`QF䪏2!vد{!JoMB.^5寯ܷ93??wZ3ǽ\]o6|xVɠs~4aV9Jp}v[wVƊG|fBڴv[4o0Uɒ_E%1rŗk.&'7@G)ٜG"Ysq)B<L
+ZDHV%su溋d3>x  @ IDATmTh&L-7-P-hɖ.jӚn!*~ka	 `<iҊx½~6~q{٫G*-((8^4hs'{T(53>+&x=̳P  &^43T`
+=B`̸	#\y:o()]Xio:$I-$pG~;d<:qEI?'xhEO~`Z^PfJT&ڱ?[	yǎr|j~wWM+tίO+-m';R^}"~O	Q411,oz	L]vOǳVԩ@0:#T>դcLrQ۴3BeUn{RY!V	(J!E-+HklbL`Age`7sW\XH{ٹNvwǒ	3f3ɛo.sG nZPx X^??u}6RJ+^Kz'p?i]E!#"߼C]sG+ qqj]l3vDZ*royEq.!C6.Xzip	'~KEx-Wp+"'*`Sg#lkW}bOE_IZ*lnǟ(3w"9|jЃ1ץ#}N[HҧYfLPGl$ՎLh'6C "um譑;VWfk];62w8htNd0UpIxbbw)OؔWj?$~Krr#"@`$ {(	|tV
+Ms>E(ݻL	!C<WZWvX>c>9?ra!0kr573lpDd?_i}><ub9^v<I_RjڋwxӝpU%g_;4AiYP%kZ4qXY]>&w J%$3Y<5}9TxGog1TCf0aMqӔ2Z%t>`K;0@+ ^5II;Kޛiˋ%ōҰ
+x|dzXڿ[Ly3hC֙]&H5wD*au劀-`
+ݺŴWu6b¤?h`/4ww_7˫mS}ށJ&bf8 {xݦw|29,b}.y्r/NGSG'|v脼1/d3VҎv~JZ2acf˲O_`&}D<}cUM}-YZР+RklX[;XwA~ @6ꥥGs]_%8V%o(Bbg<3I\}[V%~Zfit9A7M \daMȳb0BDv[3J,Y!{lO=bЏidd d
+:ZP{&>
+G`p$С)ƋGΝ2&pⓆ
+0X^UWZ
+r#j2i~+r_\ 2-w=:9{S&~N^< EMܾu*U|CadVo˃FdΓ[%}e
+p 4o>Z剐uߘD"BZgٮS~{ȼ%+k=?>䇀ϽΎ0ڐuqOOSNhˬ|u	3Jd.^S.Hړ:<dlؖ'"F|s7{0v\Ҥ=eKdS4WÉ10v_,.r;99!3QSU뫫NXQQQp0CJK+ o1b݈XOBHڴ" /a=fӑKNy)(ҖgIF'M"w??
+E"І @b#29:;AA8p"pP,444V:IiaDH/'+ĚᴰPdGX1LgG?;%\l9px[@_Q):BmZ%WXrpЬ(z	GZZrMUWÆm VY~yvr1UuMw7N%~Wd,yd1yCm
+Eg? ];qyQ]jo['U\ڳUE5acZ7L.
+`Jl x;,olK4.VZtٿD$T"6JJ"DrJϴE 
+ Poh@.p׮1m!۸",PZ6zVDG
+N<ZC:.0tV`4rNZӳZR3}\bJ4hdrR
+D~|gci
+Lۡ#\F
+ƩA-ZMp}VC+RB2yaGJ@{)؝+O]PJ	Z.|BV\0+-#NZU(VXUG	z.T9mTE;rO&pa&?Px7G:DtWJ+t63G@4rZX9:X;w41rW\-x/a"Ќ2] / :\]5Ɔy-Ec"/5;}/HK΍z?ݲ[By[}SF` XsGT&D5|,CCgh6CuQJ+tp) E@P9a]W`:tGK[Q'|nmoRSSΝ;QV=/}mۊ^t"<z-$D8Jݯ)B_S E@  ;KKBb OB:Dt|`
+Jz"` nBd<h01\slZU~<AݠO
+ئ0#[KKws/H󭮐-٭wv3=v˭9"%$hzED z&T\y^C%++Ʉ	&zAݝf	ɓ'q.uN%s/!#8	!hqGܰ|^eŗ4MV!6(GIxĆßѡNشQ,/ܷ<~\3v'4gyណCBZG䉀Q@/CMжT=)d5CD{8ڻOX O5AwL0_@ yaaŀVP	4Z(u|aIa=&Ō-\=q掷Dd8'!OvDP(jAA	C\RPjSezF
+>ZOP:F,tOg5 +nl0}q Z*`/e1}"w5>npiKR+]:~ɦ!;C{X;:E@q݈eS.]bз/"-yƇ&?'hVғ@sZz'fJ
+.e	ko]=Kܕj\w?Wn4.J͚.5H[ٻ9`#-hde$y·BvxYZZpecXC4%asb'ʪV,\cةxy-丳]2mHybk+ 71B,`07ËSp"w\)!(_L# v`Mk99(-\UOe5׾;n^73pMJiYnacu׭LmjCZR!@!TH7J ڹ+0j[p1tWe!MkrZfqP(,@ĠS 9\ C۩!wo@i->VLRqvJp2,c+& iK@+J[Z*r<INwapH=R\\Zelo/42{LetWeo]=G3	J%DޟI|gku__1yղ#ﾫuVP''@PvB{Obbe8Dr8DL8AGXB#mFmK'&b?_k3"-%EdKd hqϦx2.Or_*&V-/?<˧ǃuC:4etgqD
+w+8F1.-͊?^%iaK?[DQV+ZA0Wg!E8w넷D%c*f aVSno7XB{7Sh,ob${wt1u|_d#IǘfR0=:9Hi?
+X-FnFKWTYlԀh
+!:$9D
+ɉz!IȨq;2 E}-^F^KcL0HR?4ZЃ^BD|bߴI^p!Kn(F NQpDxD`?!B}l@im@`&fY66vQD9ۭې{d{F^^LV	LO;pDN;`lkx⟹a¯z!7?7馨`J"8ZO3$.8Qo8Mi$,n!L#/$vчJ`T@smƺ4I\%|4ҽ$$A֯w!/:2<fʡ/y* u`ﵐ(`>t@q5u555uuc	I_X߬-,f̐Vݐ#(o(\U27Ħ6f9Y666fo3=]I$11IYc0yty+.!/*ZPfA>^vlз`Rc#A
+DE4d̶rI[8[IH6o&'OO3E@>(A]J\AIBy^lzPS,PZhGG-:	!Y
+N*kQd
+E]ET;T4Oi i:oFqnJ?u+7y;SWG8N8&Y
+Aۊzi]A^FL7#!agVnyUFAi AESHS Я0[Tm(	rq5XBYБFmb|ψ $*2%/8W")4ǟQ%o=/d4B6/A.0WpL29R.o:%TJ"9QV\^_8%ц-)\(*} 5Jctna{_X<ͤ԰,7!ƄIe>/={ƍd
+:E [ͩSBv]ȘQpk[y9  
+d4,0Xv) ;B1 N"3KG$$eWP*2F2&2$n1ܓsIBIDNn?w~h}rAhɡZԀ[eɱ؍4X@4*@az4bM7]'N$[_deN&O&	qw7Ft@D	l*#f@ƻo	BI`"`9l60( c4<v)ZC,dkfhUU+kG[v"[uEfmh+Lָ<"wDV"29{ںFH{-Vѩuv!g 0ŽyS@aY/w򊌉e	Z!"'Da5i:PP mھxkWg!ϥY #,PZ,D:i! rhQEN.N$u*ZA՟H̎
+*<t&733n:;B@&cbz5u	z	DHz/,Wd&$'&e*6;eq6Ld$MՋF,uVt ,WjLJr11X,dp0ijNVоM"@" ҁO?}ψ---*7lLLt7@@`.:Ka=\4Bڅ,"R5D-ټ9;dً}@<mNL!<CƍS)f LOfhPxf6mbvjf|L|HfB@iKӣP@W;7nqcsN}nƚrY6"Oи+y"0X!^$[!Ԍ$rs\-cg{iZhPv>Ċm`ݎQ556#bB-l,-prYZLʬfsgYWO0=d*6u>K+TMppCFƽS`q<xݫk=P-"Gjȏ.PK4Q	|ؑ$bSiW_?&W@<AKJ$`}0a্sUC !BPV߳M{6<?0(0-긓.}yE~YW>tC5H#֬SrlR-W@Wm`2CsH1ZB2O7ם!qSTqkRShee} " ?H  䩘	j3(`&O&E" ,(*+FV[~qeYXYhTjpU@	 @+{Ps
+rwۺ5Aڸy.YRx!IO29-ՎyeTb|"ɀzaxE""H0)2A2D'%O`ȫ>^񬽸ѫ2Ulh}tlC h7 lDD\(8먣uCm먫ua~-jkEmb]bhGVhAED)d#eB[s%=ܓ[)S'kiy9Ka zU*\g̰jN*p-Z&T[EPXHhOA&Cfޙ1Z_|d'q䧭HYߞ.DG~B`F+3P
+o)#xy5|.yTv3O, >
+V0QL=g*0o@ۗGTg(o8Jؤ5jyY$pٙ?W&Y'PLȷW0l^P:ڑ8(0׬)VXhtrXqFAŦ		o]k4o~R/	m0ᢏ
+XmR ahi~
+҃KVړP⹓}9/qBVD )H.YH.vۜnVؔ8tb8ednL&R]0(qqHARtI
+l@^n|a/FL\H(1Aro6.p406
+6}t(@7<G)fPXH"JݻM0`!)M# L=vMY"@WPY疾oQ	oyr	m'ԃGW}D4y搽d^Ԟh8"vԵ%h>:1O&fۿw
+W)8us_5>ÇM2#<k; ~MB(|Bo6bwή%C"\Xt)e0pC"@+M n	AQ4# F:(,`Z|/3## ~`<K//<
+Ud;1w69͔g;݊=-nyh'㐶D$*I޾(t~c/G*^ڬJ;pCѕsn]8k׍Y@U?xܔ ~37MD H8D"TSC;a
+@@jS7=nPUl2/r;F;JҾ}¬+}Kb$PeCu `{F{Z6ktPX-}, E]UfͦW@vrc\OTqnnԏk{5דa?/oC=:yl1EOQ|K4Z,:+ЕY`p.==RSDɓ,ЌSЌU#d4fԬ"pf*~Gֿ˩F4v\PUB/<4w襥q8rEЇE\Ft 0XӢp&()^"`v&B8::A0@a$]鉩ȯ:bq-|nzۅo6ʴ*PvfX$ \P%ݿK~؃Etevb'ؿhA#G6a/;iRjZB	v@BÁfMX>}EQ\H4JSLct(t⠨~@M3ٱ8# h-M&  }uuYD]a
+%4"l{rLrޞn["E1:.-z8Zme=-SJ_̂E,0A|6vD^z6uDSԴ[}K.-ˠp9fӌ!|$UsEBso9_m9I\F4;**h!& b/-V[D0 <!¸
+V0t&E/@,tҲV]Zpʒ~4pʻ7l%*֒:KC4lB֝w7ud1k9Љm^$L.ΉPmMtFk7p (q}.WCgam/gdܹ)1 -H[0 \P  'zz#O fռimN1늣=NY4v"8l6ScI)𛀺/3k#iID(JwHF(u}^u쫾oH]?yr>6868.`fjd<! I5]:ȃeЊ@ʉ]C?G(HsP׉Eo7iry}P3X?6Mk8#`R@v67z ̂k1 `lL@a#0`7Gi>RTZ6nub\y%{zNkbYǊA{@*+iE%5Uqfkj7¬0Xz8t谫 )yl`Ϫ6tqtnN=^CW	As}вe(?ߠ0B ,J4S::DQa
+ݤl;'_VhL8VPdԚi\G/VYMGY M!`l _h&{)6Fy":`<1<=Ѽy?0 x	քFԀ*7"a
+e}`L,zIPU˅<M(0`SsH蘤CX Bx8zy?1 X otS  .9a,L+Xȗw#0-;%)K /-z;{^@L׈	so4|qPH]y XdGT[5~GBVF`=\ ;XYc	f(0`7B#NvFҘ(Ɩs4@χ`ڵS\D:	1ss\LNS;C9}YЂ#2Qr2!ݨS(I*2`fCc(,`Z*n&L>&Ec[>|gΜil8>zvij1U'gI"PzMD.{΄Ћ3?=F=t(51 53c_ ~xAgA<"a
+=`L`QF Lv*'?&N7Nc7$.ya{SK(<q8x+z#  ~lG Km,300,᫁Hki;l}#`#<aM%3z;jBXnʍgȩ+C'h2Bkbi`<5
+c2k845{SF4t^E^BӦO>$(F f<HSq`@CjjT@>n'DXa
+f4Dg"""Ngee%''GDqD?1.xc˛m:vh_Ts&"&ֲ0Tc ESe44a+fbGb[,DlN3cB>׮E		qyXL&F 	jgU`fb` F&i|F ߿㲚aE'\cb}.(&h(aϜX'.f7& JZԻ!prI#&bK)ѡ];̣<^iXڋϧʤq(@&`gjjhRA|,A0ppp(Di&Ύ0܎ݧ"TQО0oMWM;śKi;ȥr@J̞$4UG❬XB`kV!	p0t` k|L6D&-:|W5d	l	vN.Z{40C\YZHYC+r0QC*,`Zr& lXݼx*..66M9QFPuŘzU\<Eǐy~<H<<gՀݦnzd\bzIj	@ͪnk͂ 'iRL"aM®	>BelLhMC =:4|=kƹPP:u
+vKhz&]?NS~t|`!ADff&DմPXСdĴ@M` M
+"
+%%%gVj`stKk6;-Faάj;ʣ-{+܌!f"{	BxY,@&,hYXC'hb0@ ,BbWTZ!3no0HM3|lݽ͛Gpn ^j.S 葙A0`9_SB ,$]IL	r\q"cc08X/|]P{gЀ<e4,4sE3j0T!qT]~L蜚}:&ZT#KA<'Dh<<4Dhlb0CSc@.)?*Ҥ@xJuLk.d"A>4X[ۣe/QP7S
+d,h4)Xl
+a!л 2;UrbUK)M}_8Ee\!F+QMY(
+]-e8ըiaL+ib^ }7nǝ^<jW_7"ڸ?S L90 {$F^/-Sp&=LMV5u,"f=+v|:/	-ZYLW&*}-KWbPa:1Tc uMXk&*wOgjhan6n|=P" n#`4@m~YςHD$ `!ApB+l Vc%dBԼQ
+ٜcvM,joOqa'g1kBh7SEU}5ǎ_E4vBKAhڻ:;֐ˢ}<kC`H[Bk8kAE4?ʞ;(&KC7OQ,#E @q)Y+Zprr*((?` L+-a ~ltEJپsw$NonwwҎǄה~VR}(g\!˩OeQ}2KVW?x]>VTKz
+Z Za"7jZaqt·{+!owVV?F44 ++?FgT#yfʩ/n0"Z[a
+1DwҺHwrJ ˗bp۔bڶswqqw4eX\QXv| N 0X2Vf؈9IhPYbh̓}hNشwQN>RgAM  4s[[a
+t},F #]>rR߶oGh:inA
+, SX,#*NBN 3v}(ސ8j
+	A#G , Y Do3V=
+x,F #h
+
+hʜ<?2$C(wp5S:Y1MTsy:(,0j=F30_6.BAaIWW|IаaF@ _F,Flŷ@yRmJPP``)psFF "222b1O6$ZUa
+ iVB ,T
+;\k\:knFRvb:hԇ4+ox5v /jfƖw|<82 Lcћz`/j̙ΉK@ ~@mVGPPcBN 'DL+IߙLSLG0|nĝm]!*y0^F*kw#Q-@"t`b7]LHy8FPV ;n2_q0 fUM`B0(5h=L+	Ía0G	b(đq; ͧk14b <&pm֣{& ߫KnTUeWB1##ѣe2` Ujq֤skC " n=k%V@cy0#mE+Ϧ*yȕ-|^|;oIZ&_;yog_VW(5E/$Vz봅,X8^|rݺgϾ}^&ZZ!aVU6Su*<9&~FDзX2'A;ڗxM`Q("hVRXFh"'}wĔEY"Dq&쑘tzc\/wti543`G?Ч_{+V}ԍYE༑2qUEE|S>YCЄYo/AmK;!~؎0}~PxahC/h*2^0ܢADk(,`Zn#_YaUn<4sFN֜6dVio}}qL4ܶ@tq94}[q/qZ'i"zmqS&قn̂IvBN1$r0@<!|Ǆ'_.|`_'q[hoy[,Ղ G %`Q 50`Q4Y"x'NF(\>Ӣ͋:w@hGz=`.ݺz${F*m<2~>y(Un鳆+n	C-wpOÃ6&^}{wt_(̂ՂD<}	ASnO+2όtψ4×φ#K~͘A#`DgAƷ0ѧafwL+"a8Wo<[@#,6{Vu}g/{̺_X5iydı[om9ewM<v`0#1<2`8f!(O+%+#OϴC.?0кc ;QjNh1Gl
+a\ߺ mCgENwPPKe`R$&ݠ_%1лŝ4ގм׃z{pth׿eD|9zW p>g-Op,X#zP|"?="g<8ͭ&4I1t卣+m;\>P7^?ᡝE5叀	kjzr_k0JYCpLJou3 s&Q(pFA1#RCAMd@B "222:|L+I\Fd'
+96Mw@(W{ΕH/5+Pwwª D?GUܦSR^~Q*λÁ.qvt/x.̛ggGF7x6lȼH.K?Ѫ4x}H}ep!coh)F&wܨO5a"PUB+ >nn!pN0c 0hj("p8X41Я,15[N6Vbr|B+};OSwpj0U\"8dvmʋҴs_6e4pq3G
+9vj"L\w§#Z̂VX2uCŨAmcz`qpbiuܐpdFChZ%3:F<QA=,`Z(On#}
+
+1u]:u9Yes'nb}LZr]!WW';^ٓ+kF&599[㛎 1/e'$ܼpJ˦=|3S($u)4}^ղ~8W$߀C'cmB[;0/䒪?2tY `"vbEFtB1˃jw"  @ IDAT޾xmԫo/!PR} PF}B&ALlBzTXE=掀(1u0:EZDG%Or,uوQ{Wʚ4¿BNȸdmX`x);2O5؂]$W{\Tm1x5~ĵg֌Odmcw=\aqsXQnH1  aJ" @`860o%]y	TqQ^g_{✈[ӿXB@#; 14f;4puU}yX70 ɿH':8F %fIg6Ys_a 9zf+E`8X07HhŇ+lhh۬ų/Ua@;:=`OxNxYhB1M7KY%Kó9olG{Έ;Ѯ}$`.J
+@=S0@O` B_
+Vw#@Tx(hF`a˳ mǷ;Hl$nq<|Y.
+
+<U\1dɃT*QKW"dD"adE=6`"L
+C}%o
+!ڶ5|E!;&<qT:|=kqgO[Q8``-G*A
+|@˓zQX=9\,WY]bh,
+
+J@JPTftXCu05! f		kwhzf7L"̘L_OqaFj`>bP2 "i?@X`XBEER5*@Ne ZZ4]K"XC|r:ãePG@w3#E笚Eq>
+¡Ch5F <8j\xqR㖃 DB0`9(!8AC6gma[>΍W,  :(%_@(ӵ^YV"5.9j5vpP(׹L0ϙߋz3qBDh(
+ԼS0<B	E	`P4>EorL+XjXcͰy	Ɩ*w\Q BVh$(YVA&C`Qr|	j 7! >'5`%,A
+^^Zheiajj)l F #`, MNZ UyAbx]`0TS,xٲ8`?5A3GMƍhr͛8#` P^ndxz,1,P/YJܼ0AD0`7h|۟緱/.&֪e<Iv~磶[
+jx;ZûMteK(ٿF}mzlMgkYc<.ߚX7˾TY\e2G*&R9έܶqj]_+gL0`XA#88̂LFYoMq#kӇYB8'F o|!Ihe:J(,0bHxX>&5ƒKeugdЋ{Wz.!-f[	:wdun+ɮ-uYnU)Ywi6ѫu`ɯ{xP#dn+WJTP4 0g IqP`8 ڹs EZې[,Y*<fr,n68VKEk6r&-pF _<@"0ADK0`7QneʫF"ĊPbBz6}C41B/g=_s\>E7 j𧩵(0{!/IlqQ_p]?Z,BMM /@Y 4xܪ%ȽBٱ N4Bgb o`5E BjU5q0
+FtYO>IBV5qq9<]|oHt
+Kh0C"aWGLi! j}BD0`ne  kRwlӻTM]~+Љx..]5ؤW$<@^!$TkG*ذ/*7Ɩml`OkG
+I|q$IolWv,B_nʘ#wgvrd#Ϡkw弼]{8MDGR]gAw A a!ALkO&<gW#i:@"Oo@}O0tCwLx#).:u5fM=zȗ7eʔC?X+oMv,FG$jA(la7.f@! B_9g]gvy:ri6Z(~)\B	?f/xXXAρyCdʐkjmS>h+d\W>gVyXA	UԡUЀc}=gvf?jamu$אaqgT.پl(W,) Vx)(#
+=rAyr+,HDJKP|0qdZ$>iqȠWҸ鋀Sף}2ztnU
+ZqUЬYᕾc0MB@M? l6!` 	iz
+qWGf[^%bd$yys'z/>Pq!>Yzlͮ'3X˰_Ew]`yxjPٺ&T!A.)_K"*^z š
+p[}aᮟ }ҕqCHf@nV%ː1T!/UN PLɖ9r)򂌐d&L^EMg7On܀ui6d陰>]',C.|	:|3@ ` «Db.@D4Oa
+:Ά/PF/_w/;l]U\t/~~iA84 ?ɪOfj7NG64y+^
+֬Aow6<D~}_O[AR'k[.Q@(>º|Gʡ>y0PEmUE@BL&"@0O'rFuuCEBpJ/Q	Q[X7,jh25E7sA1Qg,	E=h@kS
+X_E@S_}Ax*J΂K۪'D4,)}6S.
+	, &?Yz(=Hbr)U±[Jz^??g#KNעZɵkin@H40;tB'˾Z޶bOb=uB:hX):ξUGY]RPc*{@
+dZȘۊ4NΞC- A(A Ia&`x|@R笆h:e8]eyt1MiUD(F R@=h/,\988inf(,`Zz! Y l"H&WB|,>;1,	*ܭ"Ƅ鞐8h`ٝ:Hx7[g;ޡ}\md]E5p0߭m;Y|mpdJ3z3Qijs~QzuBEif?IRD}ݾI!<u[|f9BOvf/ݮ'T7yL"0k/vKuBNKB%YPS &5;)~r|7J|U~*껸x1:rmߎ7N~X*`> !b@Tbt<	n"i(bW[y?/Ny~	kwl.B+lp~Q8"nGRAix2uۿv}@'	yamB6hO	p
+Q3$Z'Z*}zw^O8bwbW_e[7pL#cJ340PrWyw-2+!o0  +KC^}WHOUENO:XC`f1_Kkvw/ze4n՚'bLRmF>g2ФWj"zq@5"ixp/- Aa׽!yz:Zlސ!>lHrQ-+u-6w͢fIA"}P[=?a/_,iCM܊k+:r;2H6[H)B4^TmCN=ĲoR`A
+AO(ſ<&7؍jOgʉEWY#2BdAKj5,MD0F3 Esgg_b\FЁY u=°F aAʩn-I
+Vh	Ը,F]H؄'N&e_}0S`h-ִVT+%yT}G\avF*N@HŔ `Hw	Y27:'SYjh1p>- `f껭5:`^[O?E`ϭ#кh[=mk)43G "jI
+V0gw#f#4 q2F+l<gt6FyA-.1` -	K0M*Y f xMi(] wiADUUG //6njcZA|`0 b
+n d ?%!}# "w@6	q%Y*@-kQqxkZ̂`7g"GE  ?*ƧFV;4I
+0җA
+V bc6o.mc1΍W:@PhֻP	ZoYB& {` 6p~Q=#DgAs[(jI4@]-a
+&T`!-ߙl!=mn ވ;x%*K/> UʈZڥZ6׻:);LLaah#ѨQH75[4G:I7XJ! :%;7:*,`ZAk`0
+`Anͮj,hfvhp
+BC'NF\FR Ajw(AqJ7R* "JKK[0X@k! LZmA+fV,"HhΰǷ듺|uɗ~~Wٸ]ymd2qޕu^{Jo^ţ)z굢#n.:WI,@]b	v{)6˨7$$ -#
+)G{[40+Wmfqs @觮2i(h4ԗb %'D袰i|p-	qy܏Q}TmQ֡w<{$&]_nqf<oן}+umL}Kq%|}=b?+37F1l߽9X;t9wQzD#60~/]wN]&23J(I!l1Qfh# K}В%33%"@ M`ꘗ|=**رR|lzv"0hx/<
+ld+7lwɚK/8|{UW9q+PmN_+dGܫԞX>*hEh|?OPj4cwB?& Bqiwѕ@/X
+ {	
+~(==i:fT[2Pw(oF%Fuu^М9h|ejF/{D "{L&:8`Q\S4w-IQQaCg]]2/52%a=_SSwI:^i1@BfMEh=LZg¿y~+"_Fġ<t:)Hc<gkoSf^̕gÞDC{)M.FKɦ6mad+㳴ݯz@ew,<WV_yy`+,'vڢQ릹JM?:6=o0CΧ(dxzڡ|fsr:Fpb~>1:.W&*DIr A^Tx}gDв_V,S 
+[MrV,@C///W~hfnDotؒ,S0/D 6UÇС $997dӧ/H${$VT
+p#` 蠳#h 
+	x<[_~Guu֕N\ɍ:7T[[+躧l0@'ˆ/0c`EQjş۝~By׎S׿TBP}_n˃DumWQ&VV
+_ѓ+ѿDB:V|ٍ:\Onk[E%'&\b+*"w{?AxèޮT >ep?wj۾_xbQ)v{j[+N&ݸm/QKwPeJ{aoLL^;>^aouR.)ͺ?=wضG܌Z={j3:0rĈOat .팞8}nEn4Rgw-V %A&R?aKKhzheZ=KahC%%%˕+W"""ڷoozpc<PΉxu4brsC2@,-(`p8{{eg0dpWVQ!+)3ݻyp,i(hj1GG>-KKc,&d#J^WRR'ƌpu1eM;yQѸtg"ɫo{y$}=?t:""1y>l4FF"Ь#Fhgu{Nнσ>w?P-!x*z١˯ͅ 8cٮg_A\qoٛ]906 7j-.$YHYkMc$Wt6~B^3w%~0޻0m.'Y|+{?6J?~Z;@\"#{@_?!f@Z;n8#c A>+G1g{H\y멃!y;sY%. ]5p}GSMk+ǃL#jJ@-hEjķt]a"H\aϓvoݺuBH[Cӧ?UPR րٯk *_buȆDrrDWJq%<$4#<hj(Tj\CkCڅٵgfnls~_ڻF'"ǱL+XcPG t湽=:5k۵GVH>'׫~͈AuO]$m:L$=Ad[Yӟ1a=|1|\\mAUEޯm\`7fodV Lmm\牢-K~MQ^=Wa5P+F	[L/rTwb1ghhg*? aqF96.hV7~%@B=1Jk%hr~ ]
+]I!
+Agd*hURP+u450<OY+..~y>}ʆ<CVVf
+&00ϫc5Gw鑍oAv2=(+-%'0JE2ɉ|%p޼)q1hÉ|7e#L4Wͬ4-2,UÇ.;{Vj`0ӧy[sṔZ04i10fv'Lލ냐JHkqv9xV[\p|ڊ.ͮ6ȡ"IT
+a
+APW /^Sv)%(OD0>5y_\T䊑cʸo&FbąW2 ?1xFwt@!^y͖S);"E0>~ V 9!b@xeW͉lak3nAOTYFVAb$Rs*jSe)& ӧOo޼왳'OT;s111_<}qy8vc߱ߏ]rWۗt;3пjF{V.[K	{WSd1;t`xx0%8peP
+usify"^k퉦)Z<#G\Y8VlA6iUTW~| t'D<Oa
+sa.Shu%=/oFޝݷk(i{!5HB_o
+k5-i:<{?2%18q[fuНw3M<wnJnT,,<+hx 0^\~~Oέp'x+ǐ>5dޖʢg]FoF\[׭[v9<#9.d&RDDNe҉A`@	.]X~)j!d(J.F	5ML
+~+yl3\JF;&pWE+m>@=P17)
+-.`l,g	 w>3ޟ+7,w-4w5<P 6'##L`$?(+ ;Xl6	,"RRSS
+pd'{Qm۶H%hMG@&EsX]}"٫+r"Cԥ3;[|mr߾f>)fJ#ś}>תXFn.p
+ji*N,JtO?++  B),`ZAkr_Vc_֗p]M15ǩDW~9kvn<bVY6}7?٘:OxSS `<E>
+</,>d΄v=2ĝbMbW{MfV0"/x|0an n1؝e<O5Oc
+lhBBPdw>:r.pF.rh1Yl޶[_4T&vLNe$=HϬ W.8tzw OaېֻIמt>xa+?MyH"z|
+jy$,ev-N +m>Tm_FNNY~6|/! 	(3ͺMZe:߼:.' Aw?0cǎH6X1nQ(  ĉ#2-Q`pnZVZv|{{{0BYCgC+*;+&qn鐑(@P0@ sφ9β^yݡHMW$>ʄyNPGP;xqz_}afLf&]NoLCsyW>Jp
+  i]eK[5ELbu_˫Z 
+@tܻwCf
+T4p#<`mR.6&0` ,s׃Ӽ)%,/m<D%DbN>(+8vnn:5+,-ёA\G8;`]jٹ6dT
+s[jcP?RDy%suuR!nSws86B:aYn@0KAu݈;lY(	
+
+8]r!ʸ돍EW{݅6YTd{7eRYNˬdRPQXqX0pmx<%00jz	Wh*+sAB]Mp ЁH?'$pf$YY홮6m$LXaf!5kv9cyG)E,x(r	G"=-^^2ܹfw.p"P+T^Rr71 P$pT9,&Ϛla2BŴBSA1 GѕD]ɕLvԬ}J
+Or\'oMLCԂZC&|+) wjWaHZ$5 Uڴ{@˷L!?٠pI3,ς:G$uJzt2܀gυh6@]%y]83#-MZVΉGGKJJv80dG0PlapAnpu(,@Ck2d~'9GaQs8H"5Q)sde/4RQX$**̩jJ)-d1v2&Nb7)0"(U8<qz8zSSS	8`0U!9[}FivAY z"L ΒJ ?z	@m{A,<O841fyq:F)0DGFl`o{PsBӁGzxtVBI	x3oxQq1lIpAױ
+d`B ֭ݻe.GT|\p	ST
+VVm
+%U+] ݄)	)9tM]:e%ᰤL1?;")
+ra	<'!`+#d@qVDg2.< Fp;/[j_Y H: xJHX;fpmr@~qG±zJcr`脭Z/fha S/IO> >()y)O@$qJ
+Ņ!36PVЄYd7(XInn?x`
+|5XB,JS#%dsE9rB m%q7Nz$sQh+He`@TG5Y{=o%S aC܇;D u ́_:2+ʎ~Ψ}{gyF@_LG2cݝ7ԙI'jkwQ2z˄8Xd3dÀi,oi,h ߔ2|ӸEEd(:wNnG{RgmUs66剉& O23Æ!b0:v$Y޸tVAkbStԸ{$>ު^ؠ<<D,Ǎ8."JO`1څAǦJkE܅>qr%^T+ZhNNÎf˶b GFNPvh!g}Ip)r:!+ތ0/oy@s>}Jsralp̙+QaB8MS H ".\<Fj%oD!*PCK 8Tƛ7SR,s" aRݍ*V^nHAϺ6wSG.:-Mo6[|*(;0)#``5=P57,ntYUV}{oqrs >PMTc`MJ*)DLfg8bBX[0ERirm-jf`BQ')p"藿S$~.mĈEArMShG2ZOP"%.#imCDAj.3:ލFJ)#`0G@Y ;` ?~Kw*Rղ/2"9[CGp  tfJWyssmإK纺YY,խ7	%ɬA..-h4fbIk.-v;@ ,?&r	TAIA"2nL&K!ȭ'_`<nm+n2Wipm7i6]rESN S	ndHdiT8y=Y8m6pF #`tB@Y 'b	k̐B$ <;4P@I
+ʤ6m$keqZ`X[3Β\7>mOUlw+BB^~E>?< :j'bZhkUOP{CȰo``)#7D ^%R)QJN,VG{6ٔI6,SN]][6l93Ӟ;=Xks@mE$BlptK	B9VwFMU0QU	0)qN `2ٙrV;x{lF #0SPEx3aT4** Ye.ol*!"e:O|Bx;V*NmBi)fѐDs<^f86mX]wuW$!!"iuQPrSA@k<!.?v
+`S_8c/H d{P#+)'_Y,WF SPz]]>c20V:y)1Ū,Q&C|O/vzXR^9T D@ZTC
+2-kc*I)
+qbXU9쟛T F #`dqqqFFFii)cY+X!xjf)j0@ j0{ )si͓l42Bl(-\0eȍĻ}remڴi}	qf (/Y&_|ieOxd@aEy?֚trinnҁŇ[W	ԕV0gRiف6L-%߆jL@DKVZY)ઉG_@~V֝R*]w7=a 	/9˒_rmd;pl3eb lXFXd<+c3aI1Z)½	0@FE
+
+dFt"ትauLz
+´-aL]3wb)<!,#|_܆0e#7p@[ɓ't.WM/qU;Rat!pfܸU_]`fhy;,pĶ%LXK+jBi	0KpRȹcjuO[{ZRp굋/ݿB0p L+4f***ƿZYYߗ.Xz7 1v V`P-U _+ª'qqIQQi׮u!}L0`+e2wva7UID"ji$ ,fÉZ(*,0\}l:칯jx,>l5=(ٵg҄ON!X:mX,UZ.|-1~APza5X2{ £NBS6n~̐G*|*}@T<z,O2#wtbPѨG,~QQ
+ v"ԉY)>%J2wBm߉:렶f[7MYjFb?ln@"I(,b#Wy2 \q4|j$0,&",&h k$%dF$HoK^^~qq55B̙G i cELSF8eM fᕔ|Jo
+嗜W^i#Ucw{TKɪ4,ϸ̂~"S#yV$X3bK{R(HLOUaGALhD 2φ!P_WQWwimJa-'q?`͐j
+p	$咔"ij$U'UU2wؑ˴bpJA	"9@FzY!e%[l#0?E9vL0iO?ndX[ψ)^\?{WUȰ
+*(hjeN4{BDQ3,Q[DP=XHAd(weؔU/{s~#`4+Qoz8MnD޶2u|7kkkA`REVVV0@Ζ2褳=ؒqlN9ۇ1QYt̸Dp=N[\6n;ݕ2lʆqJPR)T
+R^]_-㰄	n+kɐe?K3_yҥjjj<=Gu8.r׊{Վ7^~kю/@y:Ԑa%\
+],\(h@KsxSSUqMlCݳ^YY	}r/їxLpʥ5^[81#(}~UY˯w̚C=p{ʎD*llTp~)ƫ*r0zgěMSPs#du-0csblM4Z'Mh
+/VۍI̶>KMV{+r+kA%(TGEf?\V|!ZC?~ Kv&M"R7,OCCY
+F9h"@6s/]u>;s'X|!c&zoF@3oa4$"e˚)K\|d9HI%ÖmatJRK)ͳK
+$E/s`d[՗ǡ19l9yjlXm\‱fi)|ѫF#[_6`  @ IDAT<q˚^ƿb3}JT'%7G:[__6ۑ)C󽇤7 \$ׁe6,1iш(l)3a=ptΖO=HkWg9cp1g6n2πp	6E׮_%9+yy ,Y<sn͙6&-͜[E1Oב6<3Wޖj
+W'=}e|p;ty͙銙-*Ȏ#xakSeeQQ:uqӫ*xE*V`4mF4/7Bbgk݊^~S0z魟Ҽ4#Aq.E/]ﴝZ/UM^~Sِ`o)g{ےTxf[	kk8K+@LR66\ f&fxwJoLjh =Q`TBU bj"N-"+ۆk<slele
+s>VۆȊ܄oLIY-;(T4XUB/SD8"`S_}z#S[e@E-LFɣz͎<0[?eUObsK&DK{~%~nۓmAk*HIL$B^Z`	V|\y~0˄ȜݼjYijihys޹?,!">I2z~3`/iKB}20=	5؉7\<qKR#ɏ|$bz͐<
+S.:qR]47N;%c钘D:6Rt$4:T*L^r,wpK3NkF?>vp2)]!{;{,jgzX;8כ䝑9+#X_(.nlwL[C
+vଌNq?\5"D۬A; imBV.Ew͘Ĳ0IBZې|݂(9|mOFچ[ː	Oܟ}ƔBֽ\bygBfLOVm`մ׼Tn	fJP23=N_%q{nĉ[ڬAlccIIIcƌ<jIzDg$V9ZF;F[?lzJ]F\s#8NGUjMRh_^<kT&3ƉIUBs5k._u)v!dB-膆?45ua #kp[fg\ApXc	*%,<@`R*ՙ:3L Ҵ8"N#-  7ԋ_Xܐw[2ggr5?M^=V2fATpr}ِ`3fbv`9E"p!w\va't
+:^TWEQiol$l(S}0suĴdkϖDl⒔C<qb<C"~r7V)DgHb|$/Tx1 '̷dߥ2L-s/`;Qesޅ|X"p
+\%S/HXIU^nfB&?1ĥ],erBa6%+s ;i)NxwsgҨ6B]ֹս+ʊcKoo`G#\T
+BN v/["^bCrvwʋ*!><5'X?\<ML^wk,9֛K955[s;&aW<Q1#,@;ވ8qUZr^YL\8$!O^0(fsDbSM(j%$/5q7C"B&DK+;@؜i;W.hpif/lN)JTfVfԷ䷚_F?(<|70T `vrrp82N{fZoiGCpхL
+[:mg^%-Bխ[zMDʠdPoajjRSϛö#*U1co	4<ƀ>aɎZSL&D)ak}z<;L lPSSrv%2pyF<|[?)y<Ѯ׏jOv-n 4"++;c2B/ nv PϦ#
+L:e`*4&|S%_8|9B1i
+E"*]Z<{Z9jI 60+X{2`dSG%v9řd͉h~t̳'ƴ@%BmIQA?Hv 4>bL\s0|`;Y('7K4]pæp],ٲn=݅s$&F.glpqzAC1hEЅ;E6CG,Em9H1M.c
+ǩ~ >H%55g~Ͽ`oo
+ָ
+E]k?^?Euc{IJJ|$pICUu,RVR,9;smyaNՑ yYWZ1 SeI2stň)Q@7c[i\%!$hURn(v_dl
+V	^xKȼċWWXMr!~al,vǐ틼C4Ht_r/wl#t͡FIv?˫0vaW^8k,<+W|}mPX?~?0Lr0! ˠiF(]!=0y"nn:Ckbi[**
+;tRY 01ZR`:
+
+@k|qPPj(c ώfA`V}񆘚:d=8\mlD(\\\)Z8/)n^JT&&#|SM%6Шf]</UgϷ0!S3 -kbs1(ރ)(t)/pVV<&P(w?GKcB;wiI܋Y+,(0O>[F؁#l0:χp!0qھts5!HL@Mh-γ#PYE1idV1a]{ya{d_R|w;Qy:{yUUI^V}Q^CeKp[[I<{o:V1@ A)"8rql~`L]{2{f&@7ojzD3/ؿ?4v]?\63R"τ/^g3}<.'-`qB1t6bVerG,u0ow9gΗ֐G*hꝼLen7
+]4g%̠~i[ՉMBZLd{ZL8"׈ݦ%I"'
+ulv.]|Ƿ^I8;R`7道eM
+|K-Lݓ[)6"3-nڀQ}g%Ypkl)V(
+I?eB !+51Άcҷ!W">>off&Æ;yZۦ/txR0`_YYD2M&t?zԨh鳂qfWbВ%(Gh0 Tz``#b JgS`jdi
+s믨TBXL}e47PhjR0yĄ*t*X{)orγw&kp!Cv ^+S`knUkgBDQyЌq4Gne<Fkp?JHs2,m/+80Fgl!!dd}ȥ]^M&oy0+FpCBVÁ,y&`@9Z=6p֔/h,]')!!9~&oZߩl;BUɏlת89#G@&9hڨ?>mx:M&!E9DVe2
+Y.N)d(qф;TMX3[";/ZL,0=	PٱA`-]).!zAfpD.y64 ]NGZ=0AW?~̙CV_?'ղz\1ӧO򐦪.JKNH )Iے\<^ӐWsR
+3t	x6얖͇UY_fs]ۘz=AVp!|t|/x2]J@Zձ0MoW`;u/O
+Za{ʕ{fdܷ$3ܟ*LKR79GL/Hy?0UFhj/qgkW";[fV
+E}o+;Įꇓwgf9)ĲfaP8]/6ѯN:Z ;oyK߻aA	W\vff 6>#f#pl  zӓ{ƻF0ٳ5(A11)%J%xCc0 8_
+˕,h  J	L`fofe9d)/]!5h̳5 ީPaYjɶ
+y.pOJ/o^Paz`6vvgjabѰ1 EnD9 ->oOC.kz,lFGıWiISZG'`(1t}"d8dWN)[5"Eޟv	fn!x:ۜX
+{s&@'װQ\I*x	FoJjݛY4뢈d="bcxuba \|V]J1B2".I-cޣfr3I/w8wEt՗4sxMC)KYYYnL&Ɂ<]n%t>h](4<uȍ7 Ӻuf-ˢE0t!۪PK"<ߖ[O,ӳC}{Q3qtU,aU``|T 
+6QLO#DK3v$Dy_4=1 Bb(AΦFN<G:V2ҶԩSb%&$T8¢֘/zoªU"F~\_xSks+V"7!89s>[a+}6XzZkh)Asm~"(rEe7yGpJK|I
+gϞ)S4׉'FM4`N03LZWqgv^ǁ3sa:+G`ٚ3%ց-9G3U 4VC	e6,xcn1Э\UYRW~JRYg̦VB+^?k
+ԭtTj ~R0.UrW[)TVۨjX69ZpСbQй	TgAzB;p]pLlaލZ%wvl.l~!x-8Zv_yLVXP \0Ld}¥4yH*;.ȬިR,]Ն".)Q-mj4'QTM/w7>Yyyy9^Y[[sm-ڥeHEUXE|bDQV9Sza1.>,uh[ˡ,[0;E2jNר*0XEPB6SN4A+0aEyss}nR4ynn/g=-V'p|7zYCbɬ_,s[-/)fyށl6Ge''0/W<_|-k|\E:\D/,udݷv+qUү)#gg3$j(ulpD"u*t1 \&ss%m_LnVkJêtSdeѻ0ˎ-,\*^q͍ld8..h Y<eٿ&jDTsͱ2?u,/#1;w۵k|ҰnL5iҤaÆ>` J:ts>ƍ`$77FcE9|Ha0]ɕRF$'d=Y7ov}UjSό;{xpXPgt7Žb40b` an)j:ZYcMZȕ
+}RQ#&f|SKsz{/`Yz@~SU@qkjLa=юR:j;:?s5]9jCh1[٧x1Ba?#0Ob|*9:G|#kh @ D\) ui>=z0詀ۇ)cZ
+C+A3sC6Eٳϟq
+m=KNLFc;J~V!!yc-"?>Bqz&9Ip{FeCp]o.4e҄yC!lcjK{mTS'>Y)/]x/7c+Q\#biфDx8(ۮ&j ԩ0|d{D{[aUn`6lxKksC5ŦG/,YXlqyֺg_ٶ~(^R0cDS-e;)rgfjC^3H~>;h%M#ԁYBEh}=Rh"'SEk5㍄iBǘ9 hHPЌ	҄C-!obFBӍ½cTx*Ss4T80 oBLHB$44`JF0{ԾQcի5O EG /@fA%vKeV1Q+ezS|A|w!480[k>5%SM
+%7J'aSTّϢd{/
+ -R u溢!/gb4aXߒqUAg[pkF+Kmdr6}Ӷ1&̃k=kGO
+e);wa>i,ڊȹiMn钑SVH{2#VՅG'߁ʬ6*)V&K6V ݃I:g&\4	lw`n'ۄg$.c9A	:57cxyk63ԢYtM;LM-~{i	/tF	*?μ(FV&&Q&r"]h33{p<^UC)S1MV##jG,'W!ޱӡXt(Fv'OJwg6p5sS1Lv%0ke}#1f<}R62t$P	rpU^ˠ%Wr*zޞI"@3sfG>kZ[D/0;GQ>u`tfC@q0H5a0RHzY(H@bڽ$X;_p¥O5f<"[{f.NbR-ݟ,_`peF,H{.p?0)gcLᅣM:)pBv"}y9/*SߘsѬ\<Y?ȳ'p'bI9*a 5
+7WP4gkzsMt[NPilj uӷ> #,)i3fFYFxCn1>>ҥKPNc\Q@^EJ`4+f4cqW1M ȉ>zl-u,%QϦA@FÞUR 
+U*`m#8ndF:
+[: ^N|?|eq:$<hE3w%c	Ua3R6(
+^i%2`$VFP(_{[,tlMWD<p#,M#j4	4+BW	V\pXXP9{Q%iMx)<`ctD+`"22e~11Yƭ;qD$evg|k'&)K<Ay6\++^s֫j#PF(c br"-DM>m0~%ܴs\v5kڬNkٽv=E僎XnTTT=lJŔ).aJ8q~9l?IaMswXgvF][!L'͵c<gȽwy>Fp8aBV.QUlYS\б`,)ǄzXbCJeLLFif1i]-,&OOgdfe\9'7Hh?.੓2v`*4@jPTˊn5lƏ9hկS( Eh:Z7Qhw"X9t$*PYY#|L'ʡJ  M^b>{3s6Ҵ~ץ#HA'qlS"~f>4=[Uxy9Ɏ6a M:-i84st6
+5;{8;^>62Ҭ=6P,ESݠ3S{.ÐY0L7>G4c8JT	#0 Be0  Պ!0\s8M}+a(}JUҌhbTs	i8x!fqqv2(-mMlV,B)6ķ3:4
+EC}JY]Nju6̆:tGߞE"M|njnxɾJ(:>2αYDP=6r 5J:w{8-㉛kquTퟭAU ktY񩱡R@Oc'8x <Z+Q~
+Yp01d-4CMTt ZdnCRy*4
+M`FUEEqaQIYeiy~MEM]C}^-105FDenB~vvV""@<}Ql*݇@z;EU	ڳIz(<ayO/a4tM3ڗ|W0BA9;Y}TۡJe@JK| 	|KSS_\?qOi=sS؁b#IEC?#tcm 4.Bi/*g E"@BZ^FH1IjI8Xݭ2vcBe7 nMAU\@hrHس`obѱ o\C8XI"pgמּ)m(avRb~#gu%-?EfڊsC6іu|a8hQDh)|ʇsZ_M9Wbzũ_SƯO1a{hnz֧U>.	\洫"ǋ/q#pSۃcaYA0a%{Uz뇮[?`6S,ÏQh;A pKwRmBX0hVa鐩PXuCZо [{Y05i`Gkuo4!T[*P(>by^}nY[vr
+[8>}޸}$Z&j]Ѿ;׺74PC.GWrMO@P'yƍx釗G"0ţK\)=$(\aucǎ=qDIIɀn5G3S8
+bn`)"bl"45Gb]'LO(P%R(8p4 ;U3at1F{C ~ANlöSN8W'wԖ) E+PɞƗN}q57j<\rd3C+wu#'R^N]l57cС[lݲe;Vm`=``)41!+X&\="VU>Glbee5lذ[n^g.D C5!S_5x=֙pESӁ	QK 67|T_DS$Ƙ631oq<ആXn'.ןfDRy8՝åJeQC<8kg+zNP( |36̉[W&8L$csD~e9WIXogΔ?_aYєƒ{S4▞*kDa;DIcOKs"V()O,e~rW詝'8Ec<sS;a2c"o7~ب!g̘ѹ25,țH{s
+2XX {.^L^{50:m!WoV[Q!Ckn {@TJJ8XRiJFQ&WQ7`5p
+|C'mD?f31l4q઀B^};YªR+oT
+75.NS(@"w):zаڇ>bh<E^Y⢿L<괐v9]pi`d}Z6THJ~}ilF.4lN&ߘ!2!X嵯2,9ɏd&sGOEmIJw`LǊv^1=?+	uI_*"aCrӗxL<<o㡴])g`~Yٲ>M fɓΞWgO\S=%,aڳ2IճV6n$nn嗝xw!𞹓Viޠ`n %M ~߀.ɲ
+ʪ몫yb3bm-`hM,-$@ 4Ds
+띁CT=,qt`r6624NP(]]85Wnwуigs?E׎r/M:7|ғ/G}ܪ"Yo=E0Pg|G:fG	}9<\}ڲ?!~f_;,!F99Ǽckh\M\(_IV|#(Vh1:'
+T`p6<D{+@m1{S	0,6m#fШubPU"_uZ̂`E}=6G)Fuu=-j<}oo.V{ٲ:Żs]$ePڍ YC"wtuEXVW]^'rVnպBeYJ&&`!p<r5 7Bk,N3P(  /vi\33I1-@|n\N`Z8fKd_.¬EWN<Lık2O=WF~<v19di}(UF:3~Lf=xe?I%UJ21i
+!)s]>kJ/56+.Z9kJDGFꎷ^^<w;L%]K(9Du`#e"4t:횱=au?q2S	^Kc90(s`M7L&C jkjoܸq,(B(,rs%ׯ_)ƣfM3=_5ztK7$CtK`.4j1$"d[GG/A1j2?"+EE<5153_v}F)N 0dw( E'2~?	1ae)[C=VTi>?{?g,$c\Dg_|[nL7ط=Z	BՃ>E/ćLz)+Y%hBArW1`$bvg1,RYυX}虺BB"(ygAaE6~ʫ(5ow{e!u	fX2(/体K^jnY/RKiY+W4 pZRr_u:YMj_q@c^j	"ЋW~ &S6hYyHRjeU .U^"(*Rr9z, Q:v?K79؁l Eṷ*F5bqxIcƐNnta&v+"V>~Taof7U-72_l"[v6&2hwR样_g"rg#M9!&|^ϧV%>_8ܴU^.~!'My^ُ3L@:QUO-iq	~.z~w07Mx%%j݆ȝB=k!7Sٳg)ꬭAA669-Vb+&<l$M Ta"#O?1: W`8iB{``emAÇ#[N.EAAՕ+չ5W745U*aFfD9L@vC6d8( E?ѤoMv`67Ӄ-2+U$E7OT1qǾ<G6l
+O
+G^ćͺSONq@H?T#ujEg|piᓿ%c/8̬ky>l_Ɣl_̤N^q(
+F\Qz,xr9jG	O+Kz"TwߥtūMxQQф	AAAwA
+KsrhiZy;ggAzR;wym4"G<o{R܊
+R^Nkӧ^jbr벡
+.rsok-*(0ol24ʊgeŷ61 Cvb2-EP @a1yp& :~ɑE۸qnW1N	llÆcݷA~JSi\evc͵KKM@Ei\!rtj7EŌɆȩ:V`m?>*J>_dk閑z-6HO=|ڬ[lSpMAPQ?)2`9(GE8xdfNv+,?)*LXjVqGyGbRfW[TiΑI=VPJ(HS;	ޠ`}}D'j	r f5
+ŭ*dlh<FP(݂
+5ܖ)q`WzhXD=ljROl'tʮ~Fg@{5g1KV~!볲bccqDU@	,ai02hcBwUU$~*9`f%Ů[~8/uO\qbtLf\?zty-]faX:㘕.D702t!V[[{'',ӁXh5/HP(ِ~9E <O죦*H0乶lO|C77y9#zQP@(k#[Vrpc[>oox'ufY]ysz3+1G"f/5Bŷ%3h@ܦLXLXZ{	E"@t5.A{@S@űa9gm!Klsڥ믿PYY[2S8AY PSàCg($1H	VKN)s\ɩ=K|A%)[Lq%/[ ER薤a'/Lwu$%7tlʏFMA6$*oG̶ז/KfnLڰ)cD^OGCu
+}%`HԾ"8IfpW/Ze7<r+2A@.yfXh0=b-S(#p۳os(w}tY`+֚ؔes;Mx*:۵6sLSSSx:a_= Mw]M/}P)׃֬Nxos;(dBϪ_&{$I;?8ң`g]C6Hʓ7IL)^bZa{ʅ@ǒy>N6U_/OJowD<=(±PƒQvD\4rMLIO*RuW;ʑ­fZeeӃ}y~aqQ/=4tؔ{۵vI1z\zKP(=z{	.09IIIWfq ]a,B;6q@+KjwFiGݽ1j`p GxEw'yyVxG=OV/"9wkJڼw/|8JH"~?^]uD"I
+	a	z$-Iv9Sk	q@\pӢio$-,אg>G.7^S9o|ok`νQ)LA=VToY<$#]@o0@=8kEwVKP{m6ԍҦzR!F}jZF>oiiY0QTm@GPrb_!pc-^b>;"#d4AZkg^nڪ9P:@D?{O 	qsȓow.	^kn$).!K+NPPm
+\RPʵ%ҔYd	!GsI|J)wV=CZ0Pknh EKkfC3tRf9xHjeKIO*ov*ݏh5RYTBī/*m	h&ؓ\;@
+P B{%3)O?vq/i;`b~=t)_CQi_ϷagiWZz[r>b_-2'v(=-t  @ IDAT/ufLuB".ծw%r'~v2Df}|_TdoUMӛ*J.ṕnC+$a
+جbdƙ\h&Q3N'xZ5<gkԎJlބFmɎ$]eԆ:=sDl-̖ѫNV(*(b
+,q,kQ(	TA';I덾oKqSK"}[x.1:𠊆5eT\1{kP30!Vz6`l(Xgw0ozeбBmcs,eؘ@BWuw0LL}{9Ds0K./9d[ 	NS([K,M~菾>2l͸{(DRju{hB|\"[8zL0J&3hFjD#}h=r%\E	Ǹ&U
+ֿ:o]Hy\X:/F{62=+<f͚׮Bfz&/&_5)wTA*/Av"%a'K'S%-CAY(}4-#](WRdćJM-횱R9%vnzz6FQ̠](Y\Vmv }6f	pj^v>@[9id5x}'t~ƞC ?]K+s4^)	(e!d"RK<װW6&]/8؅0[lGIw_sǇw	3?m>׉->£Rk.QIZ?45%6-hM1Jc{fNܚu@,zDVI}-y'x9w2W{4d UWX@ٯdR/,neUD)+1$k\]E|"/ϻ_%p?J!Y"+";䇛Լb=Ց꘽Z2ɉ	RhRT8IDj1!-,)FݴE"ЇM+֖8+1C5sZ[ƅqG᷑R5s$Y9i3&'4GfA|+&%rDE0ҳt쇉=ZRؚ㏞0b cUuRK`j6eil2RhNEL%r&fkz.CkAdLX\®Ӗj˻QsځqRjL緣ZI*Źrk.LׂM;Sʔ|w'!  ݳ;!гvn2ie,giBRT߾.nj+d{7&^>"֝eMU$/-7+skb	ْkozV[SLāDʲZ,sCBO7Yap9H7}6$97_IfFJ'ޅX'-t8<mfhJc=}oKXTt]lbՏ8V{:#1UÞRa Lqy.",Yؚw^7#w/#|ӛelQ6B=/rlZl.J0J;ZGֺrҳѐG0Li+zM+sZeN =dKZء`]p44ޝ-;ZE~2yBYnyS3j33/`ĩxQێxGo25I>C	.֫"IU?餆h5@@ nM(ɻW)b
+uyrv)MqIR*BcG}T8^pW7k`# /Z]aQ%]jHx8ILd,@kJ ̂1wdeq5aa:B7~,БS[dx!/+oXB)P8IVYVr[PswzA7eYgOgJPfSnR^1޾w{_n`֩M(>a_VZ#RU":{N=x&x a]W0=5*@W#r%7<`WCt+uxj4OCBE9]~UDlS`!H.b4+pr"bUIUCRJs<3[NH(s~k̵qO}Neߘ9Z(> |BI`}&?9}މ𺣘;EGl<LWwM;FS>6*X֌/N:Az̂abkUujcLvIDRh}"s%kONPtu$l9\0n2^{^_3]5P{@%P:nۯ3`6ZL)K}5LJVCc9GtD{UQžt둜j3C%酞D2]>xtZ~W5xFhF 3ܾ8Űn+bQvm:4̖{EIod<RڙZ.4w_Mh5u2yk˨)g.NThfǦ2bbO+|54'zPQ)#|uӞ;|ٗY"]XżjWQV%EXݸaf4kW,81(P{+rnY.Yzu}oIHPǾ5sb¦Ǆ&]x/p|Όi(}ugygp`:Amō$jӐHw牃2"a;OB<PH,&R?hFV4#<H:zmF*7&mzJܸ]vSPb=<]:;qF֖-QVKt-%: A譓f4kB
+Xׯ	.'b@cs5;rZC"ٳ肵z:: X ţMSޠ NGWuAy-Pqw]`yUjBّbz1V`!V.Dw ѨٻT%,rrt ;"po p{^s]xSqV˗лY.qDC>bAl}.=CzV	%2{JtC0wBAev~utk0x"h7I ;SZe E"p/#@.
+HCPf]WN)VmI$ȈTb8bwQ<}fu~"Ы66 ׀O E"@PۄAay9pYf=,<ޏdFr򤎤"9Q%^Pş_63DOP7tp"P=~@i E.BwE鱮Pz'']M)` I%}ff:^LӲNKt+$"cwۘV6}9SxAzX`CSh1YAS( OS.h;
+ٽ1J74_5.p;;w
+nHӤ|p#Ф>@o0 \^$STT E"@PA(е7ݐGtvfh{bjٱC[׋?Ѡ*2m9yC-
+1"@Pzk_ycÞ"ɳ␸66_xũ_S-z&PMPfk!`5t-Ԏ4eZ&3,_N-*i[ADq[S\I ^=,0:r:	E"@PneOl'9t}H|w;[8.8=7nٛFوD,O!@]Db'LC=+mW p0wv4G[5\W0Yv+tEO! ؎}D ΂ "@P4([<#|A?BRyubw~8#/0?]j>@ AΞ=}MLLx<#FyOOꪪ*>.٨!r4 ߍ#Z(z`7,|)v㏞<Wq=yjgVMs+KO)}<"Q -z6$4NP(M466gmԴ(tx|.\R	+G5,(zj	="ڳ)%kh
+TʆSRXڰ}{$%kNuE*EygM}]f){DOTK%/J'>NHٶo'OO(~qqqNNN\;=ZSSw^X|in/cTCxOww{u#$  ŕGi*UYƐ@U6%(]@o0@ `5tIi E"B)Ӎ
+Gk'"d펏ǐYSOO&
+:_.zfUL7#bރGR33?gˏ.uvMϘ4yڼ YB&{Uy{0PjʰKbDWv2n<ɩ=2$7-Iii)ޜV1=2ʛӆmyI^GV>:RB*җxL@e~j嬑(1RV<fN8}D"֟^x!00eeetF CFh^,`hh#F'ǥn,%.pծK?ߌsXJmh"`oY0ܟ)z\CEMP(]уӫCOq3#̟|m&&Y2nH|~iׄPB
+執֗5/WQ$t̺r#u
+p;_[a.ZHƏ=}dѾEoOٝ~ bPXZR4	G\C1<D{+|-5!m3t()xxxhw}Y[[Ϙ1ѾDyMPW݉vh;.^Ll!v$Gy9sonBD6gVŇǄ%?>qG-# d_N>o4ZBP("POPiZ	E.KBϽ_qg䵐I:u[ǹ\9|DvddzQ	)M}s0@p[\w&~Lfi'XbSv6LL~EBgs]D&Lx!͌a"YMU;"7AdY!. f!fvf+QUq`òMm_Iׯ:455U/8 9z)!.R!8WPĥ"!aqw's綂wf*n(}^ PZƇ E"@>:ae&H~D}$E&+k7e9Gbk'&t%\vM yכd[gfeOr|EP0
+?%)t7~!/(Qͮ[T\zn*33y
+sC΋هvm<2_uض,⏒%57kҎ&~󟧕e9{݆Y' 6 999~ŋ'L?{EuI !	"IHPZZ--P
+V
+lX[P
+B,AH	 	yI{gv83|fw=Ǻu)%H7bߧWpE,XH@lX@{bHH&0jޡʿdۃi޲n֫;#sjRv柫|
+	߳kj~#  fGϿ)~l֘!IC6tHҤ9FN<iG۞gF]b<UwDʏM;[m}?tB@R2SwÜЁI5fB:M5/#|?sK۟Y^W7ͷzkҥgQ-G-#ڛvP
+Z2D"G^ĠAm/.}".Nְ	$b.`_CY08{f7WHHH@@@w߷nCaf]_i	Ǉ=wfmV䚻fg佻ݍw; /vjLyė{縘=n[t_>ݻmo;T5ۼ40cߗ3￺~q+2r|wuӽ/f|5yW.aesG
+#,|.$,--rXbY'kkkap|S?}uuur;vzZ	V/\ KS OLxBU&Ǵ:dgŰa}f>\>X|M׋״iZX79yvFk/	 \!.\<SS8kx oyn	 	D0B9nU hܸqUWWǣF^1b;~r;~yd@xܙ]UE+Ehtt(l*k!JQSUZUWRu
+cyuu].PѺ%җ9,&U*#㢮6Tj!o_eZ-YnܩPV^32u]?00FZ	~ÊQ	!ɣvOmI'ā/|ܤWl|W]{>mW(!l&MN#P^.qZmݮsH`*y"	 	op v&	аEl]4ШhnU7Bs@ШPQ94"JU՞LtTY)ŚG>}ˎ~}pinY5C-y!ӟDEZ&/V.	H,t@܀XHHHHX:,$LWU^ǪkA_ϴRH-ˉ<r%_"N+W9XD=hZ;gŴ1i*/]f8@M@'?:e[`lH"   pNyCW]ms\sO>^p	!osV;r{wB\kx@@*3?9[+IYi|$1X `8>$&ڀ љHH/oX@$A*WJL~Mdݫ[vmJ0z*cꬩId~!TOW|1onkiH0EVPKXR{-}ܼm??>_ wd.z@ ](Tn%/O$@$i?lO7c]گee&a2b_17?䒕O-'K6ca*I[#~(vkִݰs[,Iځ]" j)56$@$@$@tVY()-[壏?:x&.K 
+uuJ2mka	Ѳ<xwI *ṽ)SEx4	 	 	dڽs@\7jOtxÍ=˲\$RN}Wo[\PO>k#s{T!B_ʑgڥH.m[Jt};{%ܘ:,'Ց;	A:jS's+	 	 	x秏[Cr]h7j[ ;<K{ %$Y+WwT?o|vt}37	/05gD}vgjfxe]G&2mʄ1)oMO{R5%d)eA>% 06ҽH]Vk<wH8ܨn,\@g	6+'/䡔G6
+7H秼sx=?_pƃ!WޱqAq!iru1"Y>F xa`/"@  @-bgDϬbgnDkv/[PQn,	I:U_{k@9\9uxaQjkmho`ۍ+č<D`FŻ{Cbcъ3sٷ"[9~,XHG`7bʠzx/M$@$ -|zu(}y!+6lN?t҉gZ	tVYv#,${&/y>גn~ʧ{-ຽx2w<#^zI}ؖvo;@^C@
+$/h	W[{L$@$@%PW,Y_S<G6r!GG8,[rkK 㛁Ԥ]r\,TuK֦`he )R3Ȑi&hLZkK_o pX\$%/iΘ)!oe>;cdKߢoܘzbxo-@0X@@TMӔE<{e-kWIHH@%OkQݙb\ GN<K[\@mj*P9r)B)nmtI<HF/rpӂ53SMW.Rljr$sWsYX1	x T]I\!יNK. 	 	 	HJ (\d].#m;˦ZIz,ﯼ;B\yZdN6%p)<=sٌ5;Za00sׂ/' JH򚉛l9	8${]aXS   -fݕ2])MLtg58<9_nˬ&oߝײ{ݲu;s	PYp7s{޶!٬B\`>˖sˎi1o)P=rrvړYwY0G>JX@9Y*Z\& 9~]O	hʷ掌pW#8\n,p5OV7ө8fZs0ono8΂orq],䈸8+rCTF'
+.ͰGxE?Gb[ꎙcvL\}KxŶ?;;E  RoeA$@$ +OV̿TR-c[ nlPnZZjUDG{d7{'-k!v;2P}-LiWG-2*c/-Ǽwi+W(| 	 	@pDl|RUVPp;pópY6T<pGu5#f<^80[`O<!uo('+G!~ܣչW[4)tǊl.<;BByKvG[^. 	 	 	!PYmWsSX_P
+a 'OmKoI#[zvo&n[{g/"$AvacJ$@$@$@` _~)"&Z,:Q_5k;]wl|EVhg6zLbfw  "&v<!65I6B$@$>	 cb:jWLmF(Ή&)ހѰ"*sJ_۾eQYsZ.hwr &$Hѫ`!!6?kC+$@$@YF!p/Loj/tjKN :8joOشɦGA8,Ǌlq ,hšt$@$@$@=$@e y:B6".d#/%Q.8ݼҜ"=]|A9oYoK֪x1S;smH	`Ak.ڋp"0гIHHH	,8b7@
+xUYC%:Zड़Š^~Y O~m~o3S3wlv-e23"OFBٮ;$@$@$@Cq<vU mh=d#CDkW.WxQ\)uW*aa<Wd.:֐ڄ-Y{ %IF$ܱi?tvHHHfc7Aa
+s<cbDa& SE{c)$<<4C!a =e^sw~H@(xIR$+Wd,$@$@$@$h౛xԺ!Y}BJO5;^T{xرC;VzGVۖ7ep-_85bw*C% woYW`ڂ^. 	 	 	f:ti#<D-x~7.]Q!~c=rl?;y|⌝KE΃
+n$QQ\b(`y{W{+CfcIHHH n^AG٫,^@QUCX!t`M_NT|)pIisgl	8 lP4'*
+$`!    @e^GP[|d(~qd_;vOsnMPܜknY@^@ ALBB"]!d=l	 	 	PYpVc5:<X1Hξ)HQ< ޚ#MG6)=.f!'@ #Ø-%F,$@$@BPY 1WamALGy"L)C~;zVKᮍ0f^=3lzL@* bC 	x*:. 	@PY<',<dJI
+슡,Pv7q5
+Lځ<!'/Ψ8gi\3u;OB0ީxxCEh^mb2	$&&l-	 	 WPZPs]ԩGCmNpXY	~e377oB¨٥",)mWn[1-&`hv}<(&:Z @$^D@^8k /	hhlopI@5 #`9%ꥸbjZ$\PD7bv@&߬悧˃֌\r׼LZyO9vֳߜ1YE/x.	  ΈZWzUy`BhĀ6$@"PWW{rp`eLP;88oL*g:C$#TzY'
+Zesn;$)ڃ,8wN<h;3IgOwƪy^Ɨ禱%"x@IƢp"ó]WMNm*	ՃNݘWtE
+Z+8$8O~KZ  e?41Mo\Y`0@9C|!:}E+fXdY3s܎[;U@0$`qHqq60`T6MVU/:wnsWoęf$@#@e{ܜ|<sY[l`7QD=\قBmßR=ʬBl{I/&$KO|i=[BN% uhoTH g/\-j+ ?W0Ɓbq}A	Hʠlp:XouD[;yBe/ڹ߰}ܬ]6K7=;[Cw<8-Zj,6<uc@? =bKH 2(Xӥ 	t n@s)E>qf-axq+_Qs)2um&oٴ`ɔ)$eC'j<R6\N n!\~ն/6,t56Mm7{HHHHed;APf#;(D>p]:Ssl8uJqgp={޽	#ϧLK߲
+={A43vDMhztZi #lI	0Ƥ$i!$@$@$@$TTgAD8^ 9qˣ,"<\\$JɌC[y+w#'RSEzz'}#EI` ?yNff!>jXHHHH+	B
+<d`$Q8S)!Y<B =]v<YxMeɁE7gAѣY'p#mEI^HLM6S:`nM	 	 	 -ƫ'B$ĈB	
+pA&NS[EMeeM"p"}愙+V8uX!*oNJ0aO}@~b?Jm/"XHHHH[	PYbЎ:x45+W$j*^ZMv?c
+			5}{7<97vf,}޾ܾ> ni84ƣ7	0)HHH, jϪthpcϮӣ0[NwS-t0[Ul6f~d6vq$nt<D 8]BD%.m f   /!Ȱ0I .|!0bIRw*eΜ֕.:oUgPӦι͛4/&sG-^d OPsB
+W%yt{@$@$@$h mP-=^(QkѤAd,!|?ꉃsYVhy[lH{«	 C<*H3X@`ŀG:	 	 	 	x7*2_GDT]*N}	:]2yM-ٲET`fmF~oDJL^L ~x u<1Q ੄9,$@$@$@$,xa _]>R$@қoWF>v<3dԲ9"B}}B\VNee"6V467nHHHAʂ3((
+xC 3`y
+1s,#xb3JNY*6LJo΢VC[Vf4:	;dDYyJMbhR-bHJX	 	8 ptz-l9)Q6b, OSOh-+0c59o[oSxW\ud B]E
+",@tvAf1$@."`2,7s+>8gjIH<p,䎈e`-Xɑ+f!.`s ƢEbV?yV1㹇LĕRWY8.sZH@"aa k)a*Պ!1f#WH|_cCɉxjhj5/#cObBb}ڪ\1 	PYpn^
+Um\6J5e`dVU.i+W;_6ǎ~;:-gci&:T- "",΀ݜQ ;DX,.:傐(EPL6	?VU_eeU9,JfP	[LM՚O#,$@$ *܄ ӧFp0>sFqOT<22cqwk9uN+ /jp8hT+뮓l	}u_uEEPE^h^TE8RI
+(CښPץEJUeFYjJ݉'`;N>B'`v&0`;l2[@(Gyc75~'/Yh\eYS]s1JF pӛxm,yudx;  ̌4mMŋ
+VMO>a({E#	 	H@@D%hX( `#^ge+hbWV.Cg1t1C]e҇5VqƐaIVkӊzj+^lN&+#@uuٳgO>}-ilj`ͧ,\U
+* Aʕ+AW^[F$Kh ݆`gp{>D)ʜR:L{/{cqk߹f|KGr{i`湆!fhÆI`S>6/L	NLL,--0vؐM(,VUUj!<<Ky0	kf5\ZCclI1_QXM ƒ< V;vƌIg<Y_6qÄSH?/t2O4x"TEM,44(R5!p.`А=hР 8DFFB\B_Dx攸GHDBpy޽EPb-j"6)lH=6)!$JC0Ca2ߩڳeʍ[f1d	O9	ᧆ`
+:4X$G	<xpĈ~~~/_.//:t(`5!((B.*Cpp0q9mV p#*n݃KcRA>*5嗛dxФʍN/rwƺϿWc6gl
+	@]h&>EwZ8h Qŀ65`WH!A\\$  hp?\f,-EAA/f_I$%8]fh 6ӽu*"BC/tCT('UعYl^<9&5"5UdQ1.Q% ?<ߚ^(Cn[Cn$z#ীPX7XZ.XwR@\@F8_VƂ` 	;	N=+9#"#g[kl;a]/b	8!QNxmqxp;6aks[)ݼ?LM \$Պ×.ý%  @ IDAT.+<bvH1'N(i M	p+:u
+n6d4 8F5i\:5~Be@KXLuEn' 7 s	V.l4PB9Z9b=B<^sswTw%zb\S6riKL؜t{Y~c:z.T.55 &dCyDp6$yK$@!#G W@XL[`_+**
+VV#߿88[&81, #  ťx\9:uJ1S^pa ! ɗaup@s3{=[OQq=[d(4஗*mU"g͛0p~/-LeZ<:HEHLBO>8p *#al=k3flBnnnQQ	ՖzUᯚ~.Ż{	fYƩ6^<Lʂo@.
+aP^u03͵QZVC{Ǜi[wG}-xp\;{iDHb MAVFA-svA6%$@." ӧO}q[WDG9r$,GbP`z<=ƾNEAGqCDrr1R߳-jNPm\#/'@e`7XA0(zUqZz,R¹GIXa/Ĥ8ʼk-c+4V>癣If	TV*8.TG_<{AF['1Q$@>A 58~@UhЂj 1_|F8[mbBNN,W]^,xm8ۓp\vhFiV޽ѺTv1>GG8"D8J?/޺M/7$bqj*?zaߪ;ࣹ;}ܾU=s1lq>$nF;ֈplMHJg/r|s:	 ÇL /Xe)`^c]=Z!VQgaAݎeT	 fbb"Pqm0@VFV5	x ϱ
+x@h3An "l-&!aoB,[SߞL˭~Æ%d~SS6,Ȫ+RŹW$@I0ShGәᩋQ UI@Cꚡuծ?^+%X/a=8$ 3TC.X;kg	PY,\SyHY2\BeYYK9Pjo9b?ϟ/֭kP`6OXC$LFS8,jrޙ)v]G-9.{'ȣQ@< 4Rh@3<XI$@ `?v$@$ ?	&t ڂY>L!j̛aܜIzI7*j˼y
+vyLOݵ[LIK<sΖɱ=sxUrE	OvBsa~Ku)v%&  F³ oÆٴ_ \AZAGZ9\nt_R|I0N<}iWzΡ>*Oom2c{$4d9CBƅS=`^7Fq]aE$@$@5I
+6:&@yڂr3@q`{+Đ!Vacg=[_xxUxA!3|򌹳fPVQ]N㩅:Ib3HHHHʂxӅosk@Jd9J\%\˞nuqGv4f8V=waބp9;뻁 0³K4Oih@<,$@$@$@$@ @e_$t.ifQZ 40!$6'!<x啖zwrBj;ZtഇWO J>N
+ct.˯6<ciRԘcKHHH| cnV{9fϴr"0%.gALX.Y.?=Z}eiͰY[soHơ<ecG;Č!5	x3j{j#|,CLm_&{	 	 	 	J@ַ9ޟq-(`i1 !L~e:]G->HZܫG,|~w{Z>{\iTZx9[sd{
+#R6J ,eX5X    +*VF]|^1-YӲ=ƳxYg} 7';_ܜ)%S"M<0w
+l=qӎ[)2HY 0p#RB$@$@$@$`%@exރlt /'&*+-xC׀''I+ZwϴeTW~kU4%	i?phAJ  1xdK/(0<TQfk[e   p*nCsn.lG+GrHɢ[ⷿU+=baI3|;g
+I{j BUԤ\`򐗧8G U	 	 	 	 -/cP`il8OEuA(iZxoEdZ9|xeQkIS.bA&${>Һ$U**lPeNplk;pp=cF:3$@$@$@N"@eI =]!.mXW\j +#M^*b:%Rg?a~)sŸeoR3{k|ӻl{ۄ@F&d")I_#m<5F[)@ůHHHH파~n1L+)5rë0,xSR!`{qWNT >g9G*H϶4{܆٩n޼mΖI8$iVd@}Q%/DRIEYO*[k0WIHHH,˯Xx@h݀v iˀ ]G>(zgkks
+>jzxEX`!$/PcbD>R:,Gpdum\&   FXxކa`MQr,sL&/+ɏt!12wXLowgć|r9e/쎎3",LQd.-	DH@4G 	 	 	 	8$%Xm09F1mA'2x_WV*^S`VWZ$Eo%}v.piϊo#$ Ne6Bp%7е$@$`GCE6sch$\!>*g'x3K0h^!,sc.)鼣'G?#F& Xd~|(gV=xaeڜcZw$0\GښٻX+۴-Pk~  	v7ijMC|gܸOj6qHOBI{fH'f(@悈HGww?oGeޑ좰_9%&eL=eI-P8tJ>ma9AMB$@vrvK3m"1@[z(S̄L!l;HHr8|"
+fn-!'BeB\@7-
+o
+?c&Ȫ~^Ƹf俜o_č3Ѡ7 < yd~55E1l;P,$@$`\?زsN.)ӗm~ntwZ^R%3	#Y舐1#w#|"Q$xKEop@*[f/SoWh;ԕV>gXpm$``Hfl譃	Li AhpH"FN;wx#hi9~6͙>͈aId% o*'0D@geH#%~p9OpVK?bC?ZN4Zl	8 0'm\_5"@#4~lA/ش+$@$zJ.n  Bי猁X#ks:faaQ8$cKmڄ< ޲=iFFa9bQ{sl
+	xI J^` A+h?AB$@$@$@$*mcFc]m@9sA[3m9vtkGGNj)ٵqܢIɦ?VT#s66>.B+t݉J8 \G5 	 	 	xzCx=agQ$W3DXf1m$Bqؖd/(>JߔR#&/ΨI,Sq Oȗ452R&rȠ"-	 	x{/ C$AT<MV	#'N(p:h-s
+bYf\PR&F.WX:vtVY^ZRT*[E$ 7^9&[6n5[G$`1ȍY3!"5Z0台9HD/$+VCw#9EV~{{dxځ0
+V(\
+/0AXC
+@]A28^øJ$@#6rHGw,ţ5+6H@&Yn-"/1+$Ǽ"c< h, F/Z. O$DM!)kH"nXk-3)-
+dPC6	ExE8)?a    BWhXx= `}uQ_QQ$.[YH<fཌ5k-Bn7.D$-_0l	t 1 7z-6Ppy<!7 )oPv3IHHH:EB0yAxi.	%`l!
+$!C1 bS'˛[P<yS
++uߢ?3by%tI
+GWUYz`AW`se6\,$@$@$@$@ @eЌz
+L|!"` _m!
+8eeRi-Ғ.{ۃ7mvX[ejuH\pQkmN P*{. 	 	 	gPYwO] L֝9qԖ޽EvY@l	/nEiHeޱiܱVX2h6/S0B">dB %45ECܩtSdJL3iF 	 	 	I/.l@}^&&F`{;aa,tSS4S7e^Q;/TLx4eBΈgO%^UF) w*mAx(H!aPXm;L$@$@$@͂7%̓v0cuI0ؘ8G
+r=0@)>;.lK-=RB' s'Pg,Y)LVW@(f 	 	 	 	t cOcsǬ
+
+R`،.Uqꥊ>4i=k s翵rZj̨eo؉9nh#/AN# A/
+xPw #4S;
+PtXJ$@$@$@ @eм@f6a6lhh=F8 I6b+{+n_fZHC9vƓ~ac@F# 
+p(:#5)vhHĝm%  1c7\]GF*2iGG+a=LeL<";F>B ͟//iNbBl*l7gyp̸AKO3>G=zƳ](O"9gOW]wGRhlDbdsEd2Bl-	x@dɣIhYR^yaw<0j@wc4!$ӱoD?3mʸA&Ө{c켂OSky~.	\
+%+ :#CِlYH\M
+~G,$@$@NʂcFXWsb0VW:;sωM޴bj[friRFM;'>;Srl˪HxP	j	xTa =|eˠA\'px :IH@2솸9Y1"*X;rvT GJ9#."6f}9eŻ>|yqkw<Zo/fo# ,q ?(eT{+ѹzaWi(+ÆU k/80 .' Ppm|#ȈG/!tzwbͱdI3aLXH+ObYʏ-$	 ^#\*qn L+_f۷{Hk}z">6*fE%~BQؑC#BM$@!Gl	XH`O.n0@ݹsF1avP]C?xk䃇aʤt!gU@V`!WXJ*v+V'.DsģcHjj^=Ҵ`AeY%	 	8 @eod)A[*\	@ågCLGX[ &bbDjfzgo^:6i%mpň0,U&8UL- &hx!#~fhI\\jƦesl/O#GhG$@$TTAS6buNy/Y4aa*ӕ=Gđ#wجnNMW3fpB @T?~2=xJc
+
+|
+#	B\ў꺺ZW:IH"m@Fdex;7bAU]DҽY܇/m-x$.3^<<K Y:(&1`pzHo"	<\X~y0%$@$ *)ZFm94fuD+`|q;=XRy<2o6 JZq	yatVJ!B$@$@$@$"pXWkڈy~$Yբ#"envBua'Nt鑳vpwd "
+L~5pvOcC|&w 	 	 	@	fDmN)F
+iD~bf#-#cJ2w'#RÁb|1n4R6kʈ9Wc`Hxd銚Jb;    WJF[uWFCx/kb #ʴ}DFJ谬Yy 	 ~ŘGl][q	P<u昄	 	 	 		Մ\?jx(k& `ibkya0@LJ]W;,хBfÝH$ k|a ["?]I%1iܛ˖ 	 	 	 muZ5ٳ¥6fQH[SpM0,gZK-6#`A-+ .#rdAla .iq	 	 	 	JʂwFvaweN
+&S7NF+Н.*L3`ZcS[^|Q]ȰZ(\6,DAhÆ)]`j
+C@hheIHHH@rT$Aoxn
+¨cjXG"5'%-O=%^~Y￭U0tA>}QE.0s	lt^Y	 	 	 	;	\&ZQoVǺNTNp[=@(Cz!x2B&	ԈL ;#d
+@B$@$@^C5}aG ﾿N4hpφʠUL"^0.Ç+6(_G ; ^;#]pAIh$øJ$@$@$@$
+pU̘<wN`PW0Տd0j0[a	-/Q	 *8 "X+
+P$Fql3	 	 	 	 #5x˽$JCgP>9S|{JxyLx$	MMH}N!!GwJX]AIffJ$BwWI#:o,EH @o9qZBdCCm&loOHPbb`t+$ L+zTRR&2>@ִWIw8Ah2	L&(pAT L~KƑ 	x*^wK]!BV8sFyr7#9|P ٤UDHD>Xj`#Rq ytF9΁C`|a)H~ Y^ql	fsmMM]PWeSGF74bUUmT$@$@'@eL}F۲\@U\H>xp[[]w	dhVba	C j!RcT<rBK[	&
+[e'Pf$^ϝ:{:dk,Т4YLe-{<^-Lj-Ӻj!,x <|jmؑF$@Kʂ+ ">zxQ~xU/a؆Mbn	 x!4/|A
+5F	',="$Gٷ"&i< (Mh(
+phMj0H#R1DVQkpHHe,T
+@\{NAB!1Q0Kc?_[Vhr	aqqqR9H0Sz5td .#]S F<n'y	|Gmll_k[mdօf١uE~Szppp\\Y3g$ꉅHH,W_"r߰Aiܹ[@&?o;,#&ݼ;9 2@ShhP~\Poh
+}9tb+@qB$`,W\)((8q߱cJKKa^R{կ_?HX p*N`hy0 @@GI@ڂkֈkDJ@NJd|%kyt	 (Wt  +TC:&?Y
+&M߉T,455AJ߿?d>}|7|ªHHPF,(0>Gw];7(V,\(VP/Z9`U@B P_HNr2Ku=>~DM
+(!BO\ ⊊X(:thHH< X +ї/_EFFb`yi T|F F>+ fēDwiJ@ǔ:1~<TA^) $-+ +2`NW𳂲@YA$` J^z*Bs pxX,<b# 	 	뛋꽘 aH KfuV`̀R`cW
+. @I@/ WG)@ !wj,rFHM0(@J<C+c!0"<<333Ga61o߾.]BAAA0a@G#BcIHXgXKoj`mZt^N`$CYT⦛/E ӮǊ@m@(ES",߁}x⭪}C+Cuu5
+ͱ}'2X9X.Xw/гg߿wްY`0 	 	8 gd=-TU\@]IHP|:#=[v?w~+x'ktjEBChR^)*`6D+o:{Vq2(ioȠ;$@8qkCSN@S+++:ei 2A;'Z	"**
+p0L0  tP#E`1>^DqSn|5&@J@R@Xc#}usU7XTU)=G3]:0@D3`B$`\=zt	-p#!
+hud|HLLdJ5C```LLRQPYh:w 	@O	PY)A 1͈l0r#669tX7b$Bg3o@qDG} f&ݰV2ʈC: {,$@&駟B#X`ר컆#O<	[nE#a DLHHHh]86"It{JƸsgNBי0	&$Xaa-vhsQxM%
+$-p,i.nk/$#(>0ށʆ)0hS"  hp0܀?		 ;{`]p5=rd/ZPeam8-a(*Vn\  tІ 0V+b'ar0euOtbL#>W*sԘW>E=^ lX
+]~-
+At=.!؋0i 	 `wg#	Tu@vp<cǎx5#|[/B={
+u#7|V^$@$@='@eYCQ,+NԚIu'{I==:tŊC_6y" /cqh
+UMSТ }wH[G#h[e =ztjj**Q-Կ.)))S#[zu#PT	uY˪'8eHH,*,BVXdDl:^5ZyNv0BmE\$;xbh
+0R@ 
+9rp/945D3/_!]){BD nHHTځ]$ rX}##BQ"sP	c-D|Čs1ԃFhh]>x)%eT-|ঁWnb }rTfc:$0")XASaQ<. 	 	 	 	&zLEb ?j(KX2Tc
+u`^a[x͛/"K/)^M.?f_>\q2r" HS/8 \THp/3
+ 	 ?ߺl%Ȁe4\!   ͂qWXAy]4#eUR^NJcΝ;W^^^\\|l=2M~Fw0}8&{a G	͡i;Z]PV "c{hF\(pFM3%hj,$@$@$@$@%@eΨ-?l/]b:b/ܰt {qQ(EoFdd䷾5 (tEE~YFPQ F@Q h.Bb JD̺CP=BxB?'ptž2=n!   `[%%"J<f2a%+آ&~lْ e-LJi-B!CJKPm}}߽=a.4m^.rAD/>W0_}Hruూہj8?SPPCNpE1׈,$@$@$@$@F'@ew;00ei08;$I>sfl1eUo@M]mcCS^}#ʂ_ɓ]#yy	a0E8}۠/%ps4j*(`!AGhx@ K-Wx:n\%   `{-G87V|]ХB@aMPS\QQx}{7a&^z\p"4_GKL̼zř;
+TG	t~0ô9>kCe$Y
+|39iE%,v= +  lXHHHH FֈHV2	#]D||]aW"̰R0?I3!a	^(Gge'~{QWwź$Uh#	]ex[*!~HaPthZn'    Op %,n%>$)&8ܯfp"ΝδvoOX=ŋpI*Mb2Ced{Hw٩w! AAU` uzqWb˾-5V-$@$@$@$,xM.`k~xA73gӧ$\ZސPP|]ZVd()*7mNJr㈜Z{-]aޱ1%p_I}/fXp % >py 4:yuo>`ۗ:l    #`ĻmXSfW=#0Օ TbRaE+BIs&ގxÈׯxix'-AA@A<uQc&Y5dP0x{ބ݇5	XV'L @'Eg-)`\I$@$@$@$T<m aE9BWLuһcBm9w\p2>nl</SwNڳ|g3ƘUN,%^c#B]`CD-iUIN-zɆ;0L_N*_`UJWt+DU@d5	 	 	 	7]Cx3Ò	,	nZhiXpB~Wk?=i6WϿw`}͹o;W7aY%aSc h2<@]P[-	s%h9S 5Lw*9ls䎥|欄HH7	T@ʂno6Q@xF =mhX[\? eeMMMHQ]OzOv!Bkjj{ĉ_[0G[_ǠP<<pMXb$!Veԯ~ V _,BV\DJ`jUŊOS[]'    Op@tAPPd.啱_Vy(N]?OAAe G1u5rՎ Pmف:FuA+1`U)hz*OUUT{4t^R~"E!$n	 	 	 	#7D̅/)ilr`P۷oQCcL MB~A!	x颁HtUδ`p"UVL<mSdk~:; <p7YHHHJ?9dkƥ|eiU&E/l+	 	xǧ'k@["#++kSNxw+W^_o+.InʘO>SA.#q&XJ AΝSd,)MR 	 	@Mz`h5{nC1	-ظphu& wpZ$y!W)ng35OefQ+
+*f|ߚ2sy nd ;'Kdu")+t2O"(LZ#D5qT; +uRvX2c-Ѣ=V^H$&@eAæX,&Qo6),eU**S?
+QZ\\7x@IiG\z9#lk	@  \þ@w((PƊx%4	 	#mx/lKw$_.ĶNUj2	 	 su@*/I{!چzJ(:sï;6oDEi"沠 Dc!d@r*quJ^R
+H<敤aCDH$`feXfc!o4$o8=N}KN9MzC$ 1pW	.++kqٿ\WRU\r#"
+Lo76.\zK;`+xAjF)Ta FTDAB2	
+1*_k?_/_  *\ B*)pPpxeUQ
+L%W?P{bSO7n}8l.RaUŋaf!h =mEjĉW(
+{+rEIN _^hbٺ 	 	8 @en@cCc]C]d/-AjxcwɅ-.d*--ԫWTN?'V>\ W;@5B> \	\$**;J$@"v]ZXRXK_b
+*uZ `-#K fShxsijjW32{6d77iC608#<f0m#"_? Rcp1MY'N(Lڒ{C$Z}"X6GO8TPSnL!VNN+/~%g BYHX]2pR!?? 1^56	Eu2=gAڌNg=$( N	,$%^$@${>	}~-Rz6mOx2{Mf/H\FIe.  *edDuUUllS]]ħo\*h
+uC_pl-	d[;z"\hphΒ 	-nGZtcy%"rP|4hH$@	PYp%%P[[{E	p^p%
+
+6{23";tJq~0OnE:b lv.h  ,IDATiǯLBC3gzV 	q>	 	t N..6,$aֵ ,2N㥥b%%zZ/2R\$K U|`
+ C9 XHHHHHCEuHD PԈh3`;
+Vɵam_p Z117ba}lcI fa{Ħ;_/WHHHH:"@e#B/H	zJDGwf_o_0 CxcRd(`n4)dPl,	 	 	x'Ў_}PY0DC}˗
+p(**B̅PJ	 oxC._7cb0%6:4Fx|$8sE\8Cpv|˕
+czfj{Ɠ 	 	 	PYz^,BoN,<AH *KVd=PץVV,|k*U?.VE[i]\VExp	$!'3ɼ\03yy}!TEjsߗ7?~뤞cwMWTzR=9;=UCNITO!xSLA E7a@ @ N @	nb
+]kٳgrTg|5
+z',hgA3]U.#Ԩ*Gؽ6jB;kq^aSA~/ΙF |QUrT!d5՛f@ @ @=$cxA1J_JLk?bezҗ
+lZS}4hM\X/K@~vLe*?oI"   $ B*N4:5hkCFk
+Z*A/kn6޸VkkG	(#P쥼 dRIꧮ@&}h~Λ#!   t"Nt3SRԺQ95DWէzv3!+h4mJKe|A]6/()cvOP+|b%v( oRzNk4	@ @ hKd-'@e|C,85imV[p.R
+azmVՁPQUSx+OL&:T@4W^nםQW ~Z+u:l,xn@CH:Tcefe~9ĉ1Fq:YQ^q0C(|A['vXXh55v1O+VP@!=eX\M)8L uX97@  YGuT>f|J['UA>B8UaPۇVE	znj"kUMo{VwL[!UCA?0S_Fd1r$/4i$iH3@ h B{ض3(_0oP[CBoTE
+NOODBy=[$:OMo|qNGPOea=$x @ JSWۛeefv͍"o{,A H]Խxl4gi5+:n)hϕvdV~]fҲҨY@=w!նUURШJ
+^82׏pl$T>ԿWW.C~m{˦ѿg`;[!  Bb=LTs!BYYl`k-+-$Q_VcA<(P(*GUa& g*"*`@ 'JaVR"a)M%ATY@r	7ewܞ/<y¥c~]]qYu19;D HMԼwէN:^ջw望U{GAopjzW^ =l Fj"QZV ϓM/Ytv$AGQ߅Nf/D~J=7t?G2ĢvapQ)eee=lX'9
+Oǥ0W  $>c,PXX8aWK4t##ǎ^L^~TSzC M$=7Sjwk=(_Pʠ)+PYiwÈmvO.AL#@ROWuDF+MD HdS)}'N3fS!"	VAAAvL;TɱxT/_aA.i%*RXz"IUOШs `?L$z!
+ 4ep@ $!X!%w|TA}.hTv5w/+>arQ\v	s6|A42#~e	t?L#Qz'hJ0    ($r'8dP̓euD.֯[7K"*sa@-['Kj\@4*<R]0{PO
+
+4'6 :LRp   @wYHH"b]B	WTjTR2zaPpb	&~A=V)T=`i")%RLʉt3PCí&V?~[D|@ @ RJd!n7{LR ޽vUvthNNQT4M!7?sWȑZ
+	jJ
+vۭ6
+ۭOQj_=0     $Iq8d0m",BLFZ!dxUІUdU*8`,2N
+<:&twtք߁JkoCn~Jn@ @ $ YHũ&^з=xҼ"dĠNz	SUo`+e$KSWc%Jug;A"$%M?2|:D @ H4D#O'siIݻ5oM@AUU:ը6A{cs<b7(19FDim7vZ	@!vWÞ@ @  BAa
+jj좦:bP}jZ1̧*YF`AE_-2=K;j&DPj<7&:(:PЧ8n    CdsGKe';Aby85F§R1nʇ3ɹI%J+T0V1J&b0>f}JqӄꦈK@uL`nvH]0a(&    K RKΎ">yփ|2慭okqLU|4:0+24iz4)0#w:45!021htVAqO]046@ @ @ IHFq?ig7};}&=?H|w
+ȠGJ4`&NZ;k.VuG]M"RA>VLMs7=RBC0     
+$pv	|Z93c/ܲ6loЮ=ռ_MՓʮרF5tP=z]m(U-FL(nW}F׀sOuJ̧p4:3WۡQ\
+hMSfvЫEo1;D U<v;ev  $}80gUY&GpZֺg&VzMTYڔi# ӹٻ2Ux6sSDWN^kЮQT	ĔuP0ͨhQLaG'
+A2:Si4AdH^ J --ObF%cd=n  
+,D+v)#ӭז侙..܋{*;5*9b{Uw=Hw
+Q5VqU7SW%Z9ߌiFnL3 W')W(htS@AG1Qwv I!Y{fԐsxz%CSmP6tР'>xW@ " YSR.UuxnbfP۩ˠQ;S./UTFPʠ>Z׮w2=5kt @G-n~.]Yeӗ%iӚV~}iVBsҬm;wwUMw1   ~.pkmϖ.(1{0o..0iY_fI;P
+H0zC9ȇ8~3w钝hpN;UL8'WױWHS=2n߽kǅ^l  Q$|9)+cCb$ZO?3[4xwU4GT!YI=7Eh?z.QAūjJԴ&_bFtN/fB3էZhB @֯_?dȐ̬.*ڹAS-?UbJ:7$Y-@ pwL":w]538D4[)~AhgP7iUm0Hj9Ȍ3BzL@ qN:O4)++?<vعSwӧOvvvzzzeeewb@ @}ͺ}~lBMJ]);%s%6N49fZw5ƪN'fB	f4|jBLAץiM@ Xn]qqJ.kSLQsVPUUСC7n8mڴ!@z5u~ Y(C Toz
+NI^z栙/DA8	O3mGg'Nra}U+'0K1  I(pqYիZ+[w^NN)Bl_~6lО5(_زeY(qQ @	,zh)Շ@ hs֠櫓&hH5R222:aРA
+
+[\ZjsǎÆ_i@ " YT@ \6! *PZZzi&l޼yĈj(PPVV:?Tq @HbFɎ@ @ HTW̿o߾\ud?iP9rZ֭>u8M9"@ .@܇   @
+ܹSiS^NՂAA^CMM͉'tNNT0䌵sDC먷zɓl"@ ,a)   Q/g]RTݻw
+:k֬9s2uww^z݃Ք,2dڵI8D8{f@  YH%#  @BWk LAiG}
+GV`~6mڤJ,8>C0` g&  D$@+#   P_^dDRF:x𠳦k*2m5Yi6T-BJD Gd!%A @ b,m۶:Л *&,0р3	 j7M hZ4cݚЮXL|uV08|p}}:zW@ " YT@ @ 轏;	%{YAtV<̴3iwV_LO8  D*@#   1P
+1@ @ Z%p
+       |$w8c@ @ @ Gd!qg      @	,$=@ @ @ HĹ	      '!q     
+'_.
+5& uq      _d!3@ @ @ @ yHq      _d!3@ @ @ @ yHq      _d!3@ @ @ @ yHq      _d!3@ @ @ @ yHq      _ 3    $kߺ7?}y491@ 8
+,C#   	-и郯Z;W糃|@ &ZCS@ @ hUw_v[<Ok^pݛk[]  )-@ҷG @ h,}k-_*UrLҲYQe @ UHRs   @pUU`֪9Q|u"  ,@ @ EςS{}Z;;,E HI,m@ @ 0.c-UW\qal*  (@T\3   @-dǳX+׾KƆ 葟:X:@ @ 3ڷZsokȀ  @,   O ??Q3f-O@ 	@ @ ݊gSU!`@QwB/  >O@ @ V	D+.B pg`@ @ @ " Y@ @ @ @ Yp(@ @ @ @ H"&c@ @ @ pH
+&@ @ @ @ b @ @ @ 	@ @ @ Xd!b26@ @ @ @ Gd`@ @ @ " Y@ @ @ @ Yp(@ @ @ @ H"&c@ @ @ p2)&@ @ @ G'qN3A  u@ @ @ B, b1       Y"@ @ @ !@       Dd!@ @ @ @  B #      @ 8,B @ @ @ $!X       AH@ @ @ B, b1       Y"@ @ @ !@       Dd!@ @ @ @  B #      @ 8,B @ @ @ $!X       A2,c     @z+#      @|A @ @ @ H"be@ @ @ h!@Ђ/        BD\       -HZp@ @ @ " Y@ @ @ @ B       @D$q2       Yh@ @ @ Hd!".VF @ @ @ $-8       	,D       Bd_@ @ @ @ "X@ @ @ Zd@ @ @ Xzubg@@,F @ @ μرcA9"	":7B @ @ @ [d      D/@["       @ @ @ ^d!z;D @ @ @ ~        Bvl       $@ @ @ @ z@ @ @ H       @o-W^}@ @ @ @d{g\ر8      t@sPQQAǈnKKKlR^^ޥKs&'@ @ @ H^4s={lNnw^U3W#F0ɂd!@ @ @ .,9r'UUUyyyd
+,E @ @ @ L*kLj.].-]]cy[ucc[۬S{p'6X9-F_6i#S^;oY?ko`go!\k
++@ @ @ "P);++K͑<%_uE6Òs&hm+52icŮ<<KLׯ׼ߙ??<5ˣzdd{f,3(ھ222L+6H@ @ @ LOYHwywr~,nuht.ugdY%?_lK>K^ԫȽ{ސ["p@m@#      >Sn~9iYӿze囼sܪʠkһf-^u޽w/7o5fOOoV~ǲ*k5[Mv{\Ϛ@V5{t]́p/h._yZMM芥Z;-%B~*l      @*q$neMXǟy+}vȲW>pw|-/Ϛ<()6>US_cGw#pv5>gG>kU#w~w{_erˢV8]Ϯ\]_јV+_wǻ.w͞/[/Yrs}7y#Ϯ))X\@ @ @ b!ςX43n1ˮvm}ua{/M._QkL0vuZiLޚ5~~nYЪY{ɋ&Y]]߲{ܹ&nYG7^,-߽W+<jnawa}{Ͽ6g*ܽnf>kZ_{4Dm      F@%dAwSʝ5'o{;k[ChԳr{^cλA@a޻rk:m/YG].hos7.djfg.c[/Z^>4]m[g㲊
+G7QWfVz	Sކ"?i@ @ @ hJɂ]>w<;t	(C8PNT@N#*j&}zu7=8jAS`Ypoݟ~~1/0zep_[_k7X`=9#_mՌ8l
+{-Gn
+FlsV+      %, mql!w?{͞
+tX'~Y3fMk񽃮~boar^SU[VS'eU6k,6{S24Ϻa&z{)9:ҏes7y?.X2       @O#zc̿py:R^f;w}g5vʵ+>=|.˝53s~xuy]l.зV.i"ŋ6[5~ƃ{sU#/ܩ#~jڙjU :,ߙ=פ[h÷)K*.Ҳ6wd!V      'JKKO.SWutFv>=2|ꪫgoA?*Z9={h꜂zKo?yQA6̙tȮZ8Ŗ7n5jTNN;ZC8L       #ږ,YV~`Of涜ag?/,\fߊgd{۫˟jKgӧOD	jL       @*q7'H=延}Ϫ
+drCO=Gn#lWSggg75X!g.@ @ @ H災*ȑ#ayyysNy(@ @ @ 3#`
+uuunV3s1=w}Сog$1fg      %`u>Vz\gSJ(MR蔗E!      p^B篳g!      "ɂ5s       +#A @ @ @ -Mk    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/NodeCountersChart.pdf ns-3.20/src/netanim/doc/figures/NodeCountersChart.pdf
--- ns-3.19/src/netanim/doc/figures/NodeCountersChart.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NodeCountersChart.pdf	2014-06-17 10:33:13.885996023 -0700
@@ -0,0 +1,529 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 1167 645]
+/CropBox [0 0 1167 645]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+1167 0 0 645 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+32
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1167
+/Height 645
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+xw|DR#E"7Q+$fČ)Q3ZM=J*mhѪKuMS{O'#99y;|7                                                                       2;;;K   //ԩӠAʔ)ӠA-[z{{<yv)Rɓ' Hb  [t'$$յo߾^ݻJ,5`O^5  5  lӧo^v:xzz{Zjʖ-/_׬Ywߥ k  ؖ3gL6MYʕkԨakRsrrRJϟ?Om!֠;vL`(rJǎ'NޥK^sppfoo_̙SZb^ט($&25  l;w.\P~@QjÇ7Z@@ڠ#Gf~~~ZZA/]|J 5b  wxfk׮PB=VlYUj\]]#.XJgg۷OM (b
+!1	P{M2`m۶5鵼yR{뭷... ~ǗL`  VW^&M%*̤^{5UjK6&{\r۵kF  ҌX j]rK.[.UT``Ie͚Uf5FGEE?^M ِ(^}ѤI+ּyƍ{CmP˛7FD(P`{<yqY	 a$X 6mZdd<ULKy*UiFŤ$qU @h{!  9H"C15Qg[T[۶m}}}MzMԙSL;v H32
+!1	P˻y	VZ^֭[*|׌6wXc0R3  X{._\W˖-k5'''uG%J1oDСC<hrSN} p  `V\zj_F֯_r^+\Y!K,7%mƌ<Hy`x).q?<vl$@a,&22r٢dkիWW#GkD˟wӦM5gyL!}R\~x  Zpa޽6l_D^QJ5FD\hѕ+WwWp  ݻwׯ__lYk+VlРA֭E^UVF֢E>իSO>fݷ@*x).q?<vl$@a^Ǐǋ
+		ٳqj}Uǯ^ըQk׮2?֘(CʗG%?IM|o=ɷEMHL*p  `y"6nXXaÆ9rӉ/oDZhhΟ?"?kƌG}*_?vY7PLshg66ǮD  iӦuo߾hѢ^޽IikoEGG:uX-|) ߯[7нⓓ"ǎ%=H-|h8.?ȓIn쫑{fC}Bѭ8;?Vy?X( I0
+			]tѣGj|}}6tPUj+V4z||ę3g5ʜ53	PeK*._}kMv2p;#E]:@|).G{O~c'폯w3~vMˣc~K 2Da9rg^^^"ٌ&>U֡C7n\*UΝ;֟k~xE|)~ggg^bD{ۣv>׆w߷]tםg_;!.T~zlG%G'G >\p#FQOcU\YZpppL7"SN/Q#<<<$$D  Oeo2\	?(Ep;r+c_$^kIoY,.YF@_L'Hygc$&
+Ð^>-[ԬYSYBLzEfo5??ӧٳ~$@aW7֙٥!~љnZRb6?;nQw~?	'y5AD_s'Fe	|$p  J=zt̙"|}}Wnk"d͛C5k*UqK/ ""B\@*른l]jϕ ΝOQҝ[ϒIzWnIrTĉ7oT>~ûw~_(9sF\ܽDm F>}{cǎ-RHEUVMtڵk={gys@V_O4Uׯx<yD,R"'N޹sxGGGu6g`1 I0C<_rN:&Lpqq>|:uꤞ[n_S,
+n׮]?/h֬Y#G4(C-k6q?"111Z<\!?P2ZlǇ{{{M6= -qƙ3g*UԳgςV2Z*UT|#:=iӦtYcl~xEDCɞ2@cS%^h)/YuY^(#θ/M3  آo۶C~~~+VT&^A^sss3_$AZէOwZٳŏ} HU&WM&1N8!.Un]k{ҥK)/;Uq)܆X;6@b0/o5kرc/ok9s攙-[ڵkׂŋ+kk׮MW_$@aҗUϚ`SӍ7lŋcڛQvʿ{n㕫Om Vgw}WĚСCMz-{WSoDڦM:3grTR<<<ի~I\.Y~ Xkٲ<+ȅŧ71?D~zƍX_mY3  V
+		1鵬Y7|3FvZt騨>WEVޒ&=չsgooogc{
+<x`<ch1d{v*Hu4YßcHL]~C-[,W\VX1?5j09H@@@:uz9uWs犟e50	PKq?%M}&-99Y&s,&{E= ۵kWXXXRZhѴiӲe˪^srrRVR%kĳ̙3<g~xEx).Y'&RKŚF&S?ߞmS?|F  ٢E.\:p@k͛7o֬5gggD\pa^DEEΛ7oذa' ॸQ^yaRRRﰖ! 1	Pbk^^^2Ӳd䤎_3;w|Ջ4?֘(C⥸<3  Ç:4h(QF^+R,5www4lذjժ5kּ|9 TR\~x  ƍmԨQVDFsss&LҤD͛7b% Kqygc$&
+ÐCEEEyxxӧB
+6T&J-[lǯ^={)22RD9$@aҗWag  xqW^fh.Q^&VD	#wnҥMzmܹac~    xA/~7D*!E^1bD\\嗽`!C  iFAaHL(22rĉ5jڵkōֺukUjKTjܹsWn~1	PHLek  .]k׮A&&*LfZ,Yǯ^\Ν;p iF '7o[o)[l6mVjUUj{P!g̘ѭ[+Wh	 (b
+!1	PW&$$8;;yxx2zlٲ!VdQFM2ܹszoŢEd50	PHLek  /سgOBCCSZ\Dkڵk_k  -5  RڵkW\\\2eD5u:ҥKwڵXb&[o?~ѣGo/^,֬{ 4#֠9 %ömk.eRkڴ:~Mڸq*V}G#c-NRb 1	A `k׮ѣGѣVZ~~~^3f*r7"zmԨQǏ}#ǒ%K}]ݫ   rȑ:-ZK.^uJMi^zM4i޽o)b lِ(mΞ=[f)S1k͛7W&Rɤ5jrD7"K.0`9א&a$X @RR7|Sd1cƈR;vʗ//3-{쩞oDڎ;ݻvX hPB  ꫯ*Wܻw"ER!&zMD:Ev_~Ex@ݫ  ِ(aΜ9k׮֭[7o޼RJ&kR+YdZׯo5ݻw㏺oǟ1?2$1   ٳgRb-ZZ֬Ye5jHzmС-[mٲe׽
+ @k cǎ>}W߾}MzAZ׮]^СC^f͚Fb lِ(x_.l޼yΣG65{{{Yj3&{vSNMHH}#^Ttt!\C Ib ܽ{]v"D;֤ԩD.\xԨQׂ/s7"̏5   S駟Zn-dɒAAA
+,JiӦrH^}FH_^ݫ  ِ(o._ܥK׮]cǎ%JP$3^d5kk׮=tfZƛ4`  8pK*`k...m铲ϟ%7e,_\"ݫ   V^xbwwC1Yj5c5nܸSNX EAas6$&JYfXBرcMz7ߔVP!k7/\P-0{62$|$&25 @&k3f0kʕVX1uk8X hA 2QFQ6` ^SԊ/^VN:Zttɓu߂tK*  iFAas6$&۵kרQ#^&>CŋEXI@:b 1	A 2GFF/^{իW7\rRsrr2zmĉ;v}#MLLLϞ=u f  |5kGmkg<~MZ^X EAas6$&-ɓ'✝'NP@,Yk׮}V\٣Gs' Ib aݻ7!!mҤI){M344Tڄ	Zhq=7"k  -5 @m۶"EKk2ǯ^={vΝ]FV{ 4#֠9 ņaӦM˗4hI?^Z,Yufrk3g1bDbbk64	xHLek  [nݺe˖իWSN"6vXYjrH^>|xdd_FBWZ*  iv׽  ^ƆNڮ]&Mԭ[k"T_S'ܼySx5 Qd6gCbX0ŉ.RJ6mDթSs΢DR˞={󍈯֨Q?׿Frk֬ڵ9` a 1	A lݻE/^O>^R˓'T_?yDc  Ei<<<BBBVR%Yj<xpE{NNN⯼曉O>}#,?ҥU  ҌXlHLgϖ-[v...&L0Z"Edoǯ{mƌժU;q[`QǚN,a$X !<8q2c˗OZz^4iR-8FXڵk;w{ 4#  ͛eʔ:thB΍r!K-  xaÆgo (b
+!1	Pj.\pԩڵkw֭t& Km)7ҵkױc~Ǻo֭j5X$@/` ;w͛7U/kAAAײd"Km̘1)7ҴiȣGژk  -5 ;{-[_F-[*ǧ<߈赵k~oNׯرU  ҌXlHLkQQQ"J(ѳgO^S{?R39߈赸QXI` 1	A ַ~;uy(P`Ĉ&5kVYjrȱc^o~-z-!!a׮]o~6lxwt f :]zUҥKE|M065kğ۶m?~%b lW5(~߿%K2cRKyk7npZ{C\PHLek  +Խ{Yf,Xpܸq&&3MZ&[`Ȅ5  teѥJ>|<ͣ5YjYfMynݺO6mSݷlڴ}W H3b
+!1	PCEvU^]IR{RoENppk<,@a 1	A G~Zj%KYZ5cR˓'OtR˷RW H3b `<yTVwyA&&KU3fرC-^ (b
+!1	P,6>;vl#ͤd!U%˖-=zʪm޼]v\PHLek  ݻ7gΜE^ݻwUR0zmʕ'O}  Ȍn޼]`0kʕS&{m}lG}Զm[ݫ  ِ(z.^~zLСC5Yjo$22r͚5!`~ a$X ٳqqqӧOOk\\\R=tiF*  iF ,ĉ;w6c^U~49~MZ``_|q57fk `5(lΆ$@yEgٳGԙh&K-wjHcoolɖ-[͹0   }yzz.KkrZX1^kԨ?S7Ƙk  -5 ڵk޽D5Yj9sZ5~Gݷ&}'[ֽ
+ @kP؜Iðckeʔ>|쵂^#G?5;w?l` =Sj~^+ZhXX5Uj&ǯ^8qϭ[tתU+ݫ   xնnGկ_SNUT15c̜9Sڕ+WtF"֠9 %]Aښ5kZl)z^z&&K_OysV\911Q`o5 a$X xuvرlٲΝ;&&K-o޼jHkͫQƩSt߂X hA ^]v
+V;ck\\\L_6gmzٺuu f^Ab3R\>},5OOO?dpp굙3g]8̏502$\p!99xə3g>uǏ%w6+hk&%%=k twiSL	dkԊ)b<~Mĉ;vsNݷ Cٶm[-t l  N81hРٳg{zz;V$|ckkJ*|#d4 Ix.9r;w/ꅂPT[?X	7g#ULw,pssoz\r)ʕ+0 88xժUot}͛s<,@a eI_ddl8""B|\BǏ7ȓ;za||coooF7X DQ^K,qqq6m3PJڵ	>cݷ c2?  %䳘5hj3"TǦT/sBq7oLӉ5 @tb
+QjӧO7Zd!Unz֬Y{}2;v4kL* dSCRݺuW<O/]BSʍ5(js6 Ňa֭ݻw&kOYj"F֠A%K0u/
+ )Mz9N@fy)/LNN޽xS#b `*444""UgFyzzUдiSݫ  2D}#2Ծ7nPŋw]
+	 y-ZnkԚ5k_3;5 0IO+Tc=<01R2兿=;ȑ#c2l< /߿1ccRkذ:~mҤIGĄts&Ms<,@a eI05y~'NK.<#i2RP^|6yT. xiO7Ōhrkqqqb̏5 LbMn 3md<E.:w.a?X !C\PB'O6:H
+^%֭ӽLO?mܸU @f!K//LJJJ$bJfۜa06,&&H"&M2,%K.3&{?޼y[k<,@a 1	A jĈ|Abƍ'{kʔ)
+._3ƍmۦ{ή]5j{ 4#  i2j(Qj%J3fIRsssf<߈sÆ (b
+!1	PRCXX؊+|͐^(4ڵkS}OX6lh5 a$X xA&LX|yrnk^u?I:uO?սX hA ^ɓzkȐ!&%Kl#Gkbbbt/?S۳gOt f6gCba]J^+[lpp5YjYfMykQQQoGfg~ a$X s˖-QF>}*Wl5<boo_DP^[p;t/ݻO*  iF ļy󢢢j׮ݣGի{-{P5?ϝ;w/_}@"֠9 eĈK.;wlk9s攥4̙3mvEݷ ۷o_͹0   dɒƍo^ҥ<yR39~Mڔ)SD]pA-k  -5 @Jы/nѢE6m5jd|R39~ME}7oի{ 4#֠9Qj"͚7on5gggYjիW۷I3f֭gϞ}?̏50   F֭[jHMjժe˖e޽*T0r7o0uu^  ͈5 yM6m0,5_i!CRq[Tk `5(lΆ$dZ۶mۺu֭[iF5oooYjk@Y֩Sǜka
+ Ib  yEm۶mٲ굀7xCZ[u<  ß}YfDZޏdu-..Rrս
+ @iP؜Il|FWN6mj2eRURgd5lذcǎM0?xX0@b,X3~~~]vezR+Wh4ykڵv5ݷ õkֽ
+ @k i]tŋu޽{&R+RH֪֭U+J͆k `5(lΆ$dZjӧN:^kӦ,yT5kO>z[g_9` dBjԨѿ5k{cǎ^7"{->>mjX hA@f/ܻwjժ0nݺRsppԩS&M&bmƍϟ}6Gbݫ  ِ履~TSz??dƍUknʕNҽ|` d*ԪTexk:tXdg}{xGbݫ   GRRرc+T${Mۻ KO>{ֹs爈;w^>^ 6XlHLBFu=Q^SL)_|ppײg.K_~rHk+V޽I6oެ{xyy͹0   3ֲeYf)S&$$\r#F+W.UjDou/f1?  Zk Rk߾K*5fc͛W(&VZ}8p9st/:vXjt f6gCb2=zDGG(Qbر^srr֡CkիWW^׎t`~ a$X [PPЦM/>~xcR{M72pvډ?uUVս
+ @k M81>>PB^Vvmk׆Ҹq:^; 6XlHLBhѢy{KZҥǯ>VZ~~~/R9$@a 1	A@aÆ;wd3SZRoDѣuX hA@Ƴw;v,]kj_DaaaoƎ믿^>ى'*W{ 4#֠9`Ν;e5777YjŊǯ{m	?W0d a$X ɏ?qFeK,1S45///Fd{?/+U{ 4  ӘOOυFS+W.h/:|#צMvEǫB"Ӡ9`"##gϞ]`.!Kq&燜9s3gRB!c8ydŊ͹&
+ Ib 2s֬Ysڴi&VJYjy[Dϟ?_ѣ׮]ӽ|B @b 2;7TRSNUֺukYj9s'dW_[W H3b
+!1	6gΜ9C\rXX>}R˞=%KD{mݺu˖-p\3Ð1kL` شݻN:CQN/4ƍ'O{SNUPA*  iFZ|yLLL6mګW/k#FP'5&{mӦM(̃X EAas6$&V_>>>E۷W6h UjdmذSNϟ0dO1($&25 E۶m;tPzzѼyscR3fFV\ٰaNaQ @b lΑ#G*U8Фײf*K_~&Yh˺K˗/{ 4#֠9`\rҥeˎ5ʤ#KM6&>}zoܸ0d a$X 6ɓ'W^-\pxxIeըQ|#~GˇgΜ)WU  ҌX _-]ԤתV*KXb&O=5 Q6gCbռ[k֬1Z2eڶm+K-)7"zҥK/uhgϊ7($&25 	Qn:gg+V^-[AիW{͚5k믿~C'c  !!!+Wtuuzm֬Y-7TREZݺu{!{MΝ;WLݫ  ِks?22PBK.Ul2_W5kz裏|K5!c0?֘($&25 fǏ߳gOXXX.zMɓ׆3)Kֽ
+ @k `.<ӧO:u
+3Z,Yd6mɒ%BCC{ｸ8ˇ  FkPOxHL駟ZjզM޽{^+W(^{M:~Mڜ9s,X.k`2o74($&25 N?sZײeKk!!!J*e<߈8::~֭ӽvXc :AB  ݻUT4iIA;o޼D}
+زe$&&׽
+ @iP؜I֭[M4Y|yҥCCCU5h@Ҥ8+a2cI0@b,X ryB
+͚5KZ=Ծk		)_N8qMˇ5:|ɒ%u f X/N0a۶m!ƌNظqcQsu5ɓ'9{R (b
+!1	R'x={vYj͚5ǯ{ѣ7n|Kb2.(Qk`0  J|֭f<ҥKՉUf<߈xQyf~   oƲeT-_<W\Ԋ-jrm.Yd߾}kߊҽ
+ @kP؜IТSL1Zܹed2oD|ȑ#.\JW0d a$X ue3Z]\\.]7owUaŋ^  ͈5 KdZttt&M:vطo_kEU̗/<߈&M{ (b
+!1	4uݻw/_>$$DZڵIEɳ|ru~HkQQQ>ŋŊ3($&25 eƍG-X&LmSǯ{mӦM[b~   @g߿_$ʕ+)K-w^۱cGBB\thѢW H3b
+!1	+l͚5^ЫW:u^rwwߵkג%K,N!c0?֘(L8	.\OKܹ{3g/|ÇO>wŅIII X-T?֭[cǎ}QsPM|U m#  30aB׮]Nj5'''uǢE5J&{-&&K.wսv$b -zM]500P^(@](8::MO!֠dHJF7o[^˕+:<~MZNe2+W)RĜk`02$hp*/INNvY}UV
+Ǐ?ֲe]/>>|[|lM" bvij׊-*gn<߈_Uȁ5 ȴDC'hS*d""T	#Gߞlv͔?X HHH8}[^[,,YoD|sXXݻw.Kzju lL6k/vttT_%*BKR^(w}kP2l	&UΝKj͚5S/ZQQQG駟t-a̏5&
+ )MIO8qh7LxM۷S^(ܽ{էF XѣGSڦ&1B_ږ-[ħgϞսvؼk׮*TH* 喵-[S;OoܸBkJRr#t lܸlٲ6m2ZroÆMRm>w##  L&=%YS_#E S^(ȑ#{8f.m0	kAAA
+X~|R+R[okܸw}{Cqu///sI0@l`k2dm%Ɵ,Mߐ2{Es5 xu֭[;bĈJ*-]TZ2edʕ-զO.^;2c 2{*>|X//'S?Bss5 xE>oE۷V&L>2ϙ3G_?{PnܸQ`Aݫ &999))&R5k%m0	B< K7n\;t {mĈΝ-nݺe=0d a$X 3gݗ/_nR>|!CCC>|]kGFsMOOOݫ   nj㏍֬YlٲR[|#ҥK,Yr	kGD"֠9`۷=ZˆTdyxxoD|[ݫ{֭[b̹&
+ Ib ݻn:}%Jĸ^5kրÇW\Yږ-[W~kGe~    \pڵk;wnܸ)ST2D$_3u{ 4#4Zren߾KOVڡC,6gCb^?O/w^P6p@Fd~IS0d a$X׼y-zb]\\t@\|x-2ڤId"KgϞ׿{~wwwݫ  IQj-:}tVmYj!C^˛7,B
+TM0?<s## Fk@Rcs6$&!=6۷;;;[NZeȑ7Prf͚^4K@:}:sI0@b,X
+(?~Νi&k={T7+>ӽvd @bJ;vL.efr +믿vԩiӦgV&M_C<yRbt fĚ5{?*U7F,⒒*Ufu֩R+Y<~M|C&Md}!c0?֘($&25qjʕ:th`._ܱc;v/_~Ѫr!K-^/l٢{\ܹ#ht fĚ^3+V,((Uo-Ztyk޲D7"zmŊGսvd: (bM#s?6L~<w\n56gCb?C>HZ۶m_|#.޽u=mEsI0@b,X>Tɓg_zUnСժU[|5WWYfR+TМ9sL{Ȥ̏5 ꥅ,Y^YfVa{{{pرcGyZѢEe8p?#{U  ҌLw1b`s6$&Oܾ}o߾񾾾lիWIEg^l1c{ܹs!c0?֘($&25!~#GԽ
+ FtxzǠ^+RKqժU˗WvСHGv޽^  ͈5!~!!!W๾۷l޼YZ֭s:iҤGfG"֬ÇoYcs6$&yO^du֩^Ȓ%*hu~HkaaaWm!cHJJrtt4($&25+q#̔)S-[6YjYf۷<~M믿^8 ЂXW\qpp03fLBB3r̩U1oDډ'8{~|^  ͈5+qܹyi\!1	&D={XbfRV`Auxl<߈ÇO6MÐ1kL`Ě8~!Ct/x]\\\l٢zI&jH|#""">Cͫ{ 4#֬ľ}J(1x`?ƍW|M6^9s믿v69?5ݫ 6X[n}뭷qlΆ$(cƌ;wرce9;;'E*5e&[Ð1̓'9$@a 1	Ai|}} ?=rݻuV^-֯_gϞrέJL2^ۿ~{)c ?eˎ?^~bŊM>y{4H9؜'OnݺsٲeDCre<߈C^zUS<ȝ;U  ҌXk,۷Rcs6$&AwI d'tҖ-[޽{WÐ1kL`Ě^f̘!2xlS{fc 'M$_3R?W H3bM;kk.Y%,!!a5k\j5'''Uj˗U6w?}Tځk lαc~ݫЏX?c۵kW`s6<	OzjʕzEسgϰ0k۴iӹstÐ_ʕ+9$@a I={vo޼jFi'(!^djNruuUըQ]9sk/?^?c~%uС[n:cǎ{|CիW׫Wo^+VR4odܸq'Nx'AÜ9s^ }fZrc<}^,mڴ?~v0vl9'aժU7nd'Uj͛7Oy~HX_9$@a I8tٳg,e53A|"XGɚBb~j7^hQNL$''/_iӦ;v7o5gg9r
+ԨQcժVX!߿{_O4U _[vΝ;6fs3QœFM#G]dSi{!βe߯]V-q;۳v^#Y|"LzMP6w߭YǏ'?\B	۷_r4h.Cq1>>ldH2JTPaŊ:tиvl	'PBIk{V%ڭRJך7o{	!CzQ9̹&
+ )'aҤIwܹsƍcbbdeɒż`y0Y%QqN^C؈5+oWd.7o^~ʕ+===U4SVn]y׶mۦ{@k JpB#""Td˖ D9}rL\$5+!^"[m۶d"W\w^[h^swwԻ.\XoDڍ7̀Mxqu k۶m;v쐽֩S:uRsvX\Ln6n/XyݴiS6m4 eI~yVdIYaÆ|#...{+3$@a $3uIV<^9s:Ǘ|`H~t♄}5I,Yl"UBb8`5q*ϨlҤu/H_~Wd֬Y			(7^SKfG}2Q{%y`3Bk@g|||˖-uvܹnݺXWWW!{^zꩡlٲ)yu^::uʕ+9wܸqrέx&MĘCĆM8sϏ֛FY{ϟ֭oec?	?ӿ~թSG$͛W>5̙]oD<MtI;v[ZL?O֬Y͹&
+ )]&qqqתTv\SNOج|'Vٛk^^^۷o<4u<~YEժUK=F&{m{^8̏5 Hw;wޱc˧g͚7by7k6!!amgD^\#֬AbbbR4mTZFbŊTtԩݻ?^3Go߾uԙ={k׊){ՀYt ի;6lذUnݺUDǩINEKKمLz b|嗕*UO7nqؐ˗/|I<G5k^c*2$kMv-飞<<<D͟?k~k!S1?֘($s&}vҥ'M$zJ*۶m˛7|:.X`5F/1?;=uٵkWFtI-Lzm˖-Yfm׮f:kǎ6m~zkŊ+\:9xR6ӧOu/0,Y^ E}駲ׂ*W6Aya20 Lh5D8w?fċf͚ٳAׂtָqc'DWMyԂvڵ
+*{_mVswwǯ^Νӽp\ dɒ'~'^TO4rݭZ2'&_~l5bM?z/_۷~UVݹsWŎhΜ9oS赭[^kݺxɔ5k֏>H+CN_~9mڴ'Ozyy-]Tg]@y]v5h:S9Г'O͹&
+ &p޽ի'^^cbxԪUs%?76&w1{}իŋCyr+Wc+Wvssx/^~ڲzmذa(!lxn޼y֭OOOх
+/YFg^HukNҽp }k .nܸQX9s^sttTO9sX|դzxbM#k/8p+eFe )4dט/ov@@U{Fd;{Cv*T8p굺uzyywyԪU曗qW"uA}HbxKGHHH=|Maǆt1}!ClٲU(@$'*U4b+}6	W^߱cD/߈7"zm֬Y7oԤ6$@a uS|Rwwwy/kOtܪU+r<xq_}K(f=:ݯûOm5bMUV|fԩjҽ%66VիWz~kFq%o޼5koٴiӗ_~!^0aqZv5k&{m߾}	bź3ht,ᇲğR4c?A]3Gc|Ʀ5;}t_{6ԨQCr`'<y
+Ν{|#,X{Ϟ=Ia͛7wttT&yҥ굯Z= .^l2k	WWDRX:߈~!99=~=8cg7h-)._&fI&=z/˗/q1`k׾RVvmQg J*%p{^3	?_ppݻw{xxkNFgϮ7"{ʕ+Zj20@9G3	PH/>	eO>}?^`hk+W喽&^͜9s޽[I/gX_&Ʋ{V0aBl.\{]x˗/߸q<ߠx&~ꁨ_~o߿jժynxWҥKSL9{l5)z-""BFr%2燜5k֖-[t/x%̌5 x9ѾE.\СC*T}||{%/^ܜCRs,*N%tT۵ky'N
+l۷߿߰aî]~ϯ}U\Y믋FK=
+q޽{w޽;w6cƌ,Y_JڵMl2^{{'O^LYﾻ`"E^ȑ#|.vpp|#>|HNz>kQ{O>kR6mpɊ+ZJWcK;~'|zM~g.D 4V{*KOy\MǳJ ,!2S33a2N֬XDJJZYT$w>3I{so}^n9~|3cǎNb&GصkW>}L;pS	BB	BLb02n޼˨'N$^kڴ)+ua~#UV&%%m	[ka/>|(;tы__z#1
+U;v5kj֬Q~nɒ%k׮$k 4)͛7r۷Zjn߾aQ	ʖ-;Q		"]pQ݉׺wqW\A.bɹӢk֐C5<Yf~~~cʟnܸ_~EHGk,j׮j*⵶m֯__U~zhh\\\)Sɓxd7|Q				X>|3f_}iF1lT͛74o!^+)RI3(Ƀի200̌cbbCWn?ZJ؍Q***</_f۽{7sgg5kzyy5Jz !^sssJSr
+c-FBGjժ*xMWWϰrFמ?_f*)9xJI<ѣGwmذ!X!d.] Y1^k֬YY"jժkWӧΝ;y^"?fccÎ8z޽RȰ7oZHUHXʻ]6۷o
+[x_~F3[l9|phhh1ii1 Q<H[[;)))88Acʫ===]]]Uv%5Am۶|}}gϞ۳gKvѡCԅ7رC xb?qPxG-$$/_۷*zQ||Mط5tDlV˖-߈wv8Pl8)e#/XfM\B
+!!!ؐ/kСw&^Ottttuu;:&^5xǞw$\r,v)5T\,-7k,?$xw.BYTHX#AI!җFׯѣGY.5jԐޏF<xP$}&`222ʕ+aaauP[^g2^)faahhxܹʕ+3^C6r۷d
+տr"^1|YtR?$Ǜ7oxG-$$#ѷ*
+
+
+B/3R1.G0)1>>)3b>S)G%''kiiAxxx:ux#Μ9w^`'Ooߞ%Mٵlْxݻ3f̖-[xoA	Ԇ޽?XZZb
+Y|W\)		qrr$`MHHFߚ;5Hxmll?ٳg/mڴIs8iBǏW#(fEI,fffƮ8.]xˍ7x"3-E8BCCvMvrIc3uӧOwppbHPRVV.̥d1`"}>޽{7lذ={iFEEcHoxmRE|F1RPbx#߿Oאy*U&2)d'N\~=(iZpaFUF|#F kC
+	kBBBB9}A.\xҷ~$P&*11122BJqup9(3#kߴiS<UprҥKV^}իo߾RM.]X"200 k/^`0uT1h#`SSk׮aHhR`Tށ	ThxG!$$T2マjժ#^9s&jjjtT77[noX)1]򣹭1O)`Mtʕ\=cc$bbCzuzzŋׯ( ^k׮YٻwMVZ{SrW^=yGǅԬǏGHP*$ $)H1cFfͮ^Jַo_u֕C0،?O'#)
+\KII9w,Yĝ'\Juׯ_Ϝ9ӣGRx(p6@zH!Igbkhh8qBO"RM>}7xh&@oߞF}wBB;
+!!x+++WWW)uؑ5H˗?Xg?fcNv֖}HQ5V"K*4޶m[w1
+e͛7탃-Z:N%kϞ=		>fZt))!ZrfΜ)]X~CR:uJ			PXO:^vիW͛7beeCQ&^
+
+rqqEpi^\3+0!h愣Kymmm$e˖'mmmsx2qvemm'mllgr$51Kٗ&7Wj*ߓ-ǟoż7()HAi׮۶mۈЎ#FkȖӦMI!P^	BLb0Hذa!$1cH'@lٲW^hĈӧOM)~4{¿aʚ4i{4$;Ǐ+Wgdd$@ .'?kx#|&LhѢEʕy%wA k5cccJ*1⵳gfVE"/ϟihh	KիG~#
+ө
+	)
+	kB%FNҥKttzIϞ=;F!f)5mT:r߾}CevUe=*Y98$g?oKn3cxǏTI<^lYO~A8xm۶YJA	e]wz:Kj/L&ꂳ;#Flڞ={^z;j!!BgR"c111SN"7_/^,%5F7B#i)^NVBZZ:zǟ9EWhn>|_ׯ_O(G"?E_42ŋįc0bbJJJy!Q@dR+9sԯ_xsKa޼y7+HǉӧO>}xMSS!C@{WH`ʻ
+	kb$ifҤIYx46667Ac4?x@&lٲe78-ݙUwGv9z~.<|q>X	&L8ӧ:::#޼yӽ{Ç;vxe˖Rgx]]]&a yob4є񚪪ROOC{~J444^|;
+!pBnn߾@jZZZNlllVX!B
+.dh:$3Rb9;e5%%sk;c>ScӆA^`JÕ}fdK@jm۶7nѣ+U;(WXXجYݻ'5Ԕ?3ҥK񞼷Le˖7`	:t`~#[d(`t``ÇQȼ׊+-[vcR$?-[矉VZ$ck?GsCJsb!YZ9FĦ-kq"#X1=kvZ'? AgD8r۷bXRࠐ[~/ҙؠjժ1^ÃM6˗/	R%#!)))55uРA|ʄ.yҵkW7^pvvF[;p
+ya܆HPt~SNF:x Z֭mllؔ<BQ1V\) ٥KCCׯmٲ]AE;:UDWlmmk8:&MГDm_.'? k\HBP<yq_⫷oׯk:t:@1#$+GG\vժUvvv7NQr'O$^ |Ƒ"^۽{7 Zn
+	ɫ
+	kB
+-tԽ{9СCÇ	/*$%.]+z!⵺ufiʔ))XtDٓ̆WǏd	Xc`C8^RSS[x1***jܹwޕtdrp~I!󸀗*ٳaÆW2^ҥ:qaffv)CHISSŋ @J^^^;v5jƍYEe)$.]׾}q۷jժk׮2ЌF߿wŨLeyv҇ddd7oTָSN/^yXk#HTwwwy,TlY0xcǎu&M{sW^[[[we;(-[ݻ!9rw
+/9BS!aM={6k[fEʔ)3y\HUTA577mذA7<<<s	X.47o***;5.u֍I0 aĉy|7?&*n߾]jC1^SSSc\RsΑ?gӦMWT8G?;
+!Yﾻ{.5#5P[߾}o5Rӧ;991^k߾) 2RzukCVx	XAzz:r&p>.!CH/1H-^m޼yر7Qtȑ;wb?3^С6;(&&&4x3			B<y\zG 7$IwǏWQQ!5/),,ٳg4Z-[H}E/^L~#kK'e$:;Oֶ!:R]H3-ʗ/11D Ϝ9C|r%K 8h[|#G佉HFxccc)ߟFxxxd$T `*b$('̤s4hСC͛3gܹsgo+C9ܸqxmٲeNJ3Y<==GQCo^CGamkme(`M(oB{1s2'pJgҥKkVVVjjj,۷/Qxw}	$A[HuVڵ_*V%GN"H//F5;քNӦMg)ݣ2rfMLLΝ;_-Zh޽R^k޼9FioUg8
+(kܥUySk׮GYexmԐ֮]K~#kW^GٳgĈ7Tatyjooox]>f``FyG-$$fB%^^JKK;|0uk}KnnnHskW@ށɩRRR`?3Cb,p(Se*)9x)jtW߿_1x"چA'O_עoߞߏػwaxoh.;vɌx~TT	e8:>uB&Fb	ĉ5jH illv;~xŊu6{l<P;wc$wD`d<,Hc^/$IAnWHȓW{JƎ;}t	֧OMMM8L;wpJS;tVЭ[ڶmxG5ʕSWWGB#]Vn] Q	ɩttt={;
+!Y+۴i3i$ʕ+׬YU4$R72sLeeerV6l8,--Hc]JkriR6J);B*..NOO/\Y(>>*ٳgAdc_ҥK?$P4{s@/_&GZ^ԩr,L~#k4XHH([	X+Uڳgj$RѣGY|ygggٮ]o֭[C_!u4n~ǎիWƉ x.88X*rZJ'%}RBEiUDD1)۷)8o޼Y:wtAx-::zӦM ~\$#!==ouuuAǦүWyQqQb$AHӧw1Eϟ?͝;ZÆUUUt1Hoo4o<_!C֭[QܹxMEE]VSSSC!1"'vQFAkvX9*$HkE,/7c&͘1ٙ z.]讨gϢM4.}5OOOMMM.9jy󦱱ɓ'yG-$$*$	)BCC=۴iS6Z,&vZؿށɩo7֬YhYV@ԭ[,~r6v=kJvNNF
+k
+9ʜ!dd(B~zeŋZ'@N>ݫW/-B?ŋcǎUR6pm۲#|cbP^Ė*ZfQ`` ɓY,[=V5T@!K?666^r%񚟟*mL1Ȁ ϟ3Y*)9H|Ruܹ&M0w\VGFFxV:'6lٲF0k'OXV-]]݋/-[,**ѽ{wyZZF،<@i ]r~PĪtB	/א!C>xTCC]T#G;wn{PJ@=z4*,5'f׏Qnݢ}̙;FDD:;}Zg?v")քǏ#Oͼ&ժUSQQy% K^*:u0.PVVܹ30^+Mϟҥ_Z*&&񚎎#5Cd;j!!NE]V(WEFFFGGתUkڵkÆ^V;wdK`:uw޼;xb֬YM6
+
+W0^iK<EՔ\BR1^suu>|8ݻ555qjɓ'3GGG5,6imk+}:ur6?p@MF%^y@J6&N)K޳gOޱɝ hzzzg.]X~ݻǎg$?,
+r˚5n"^;w$rr2JĆ%KXZZ3^SVVfp,ttt?$^6mڴyyyuЁ"^#ܺuM61^366fԬYFk{opP_#A믿"g2^QJklmm?dnݘH&P[~۷Se QW𚛛[tD)1]>30w85!AII1VuGzH+w
+׮]k۶-ﭗGݽ{QQQ UVPAu~:󇤹Rք\蜫Vz+t;<ݻwy!!uxm˖-+Vd#Yf;/
+1#63)y?)
+)++(@"^f_AmڴiժùqȮH+iݺ5ﭗS͜9% 00x-=?$x-%%EWrWxG!T,By&l6'222244dAAAH===---yoҥKhYgheA>^)~MKKqVF^q˚MtZ߾}mll{
+JĆ˗/^Ν;*UVꫯWPɓQF^$ۢE; ~$DFF9;j&ZCJ'-xH[=z411nEzD466f ˗/?gΜ,~Ggޱc|}%XΝCGz4Bƍol7^5kx-::w_VFZR'WwÓ$Zg춀5/9L:ɉi*2ׯөݾ}&߿͛kԨx?ؤI@&S4q.Nk׎~'$$ӋPы͛7~I'@1H<xa,ZHfJII4inpU6e	^ȐN88Y)):8ChYX8HHGu֏bZB]\2k*T`_Bjhh.[x-<<ٳgE遁fff|	ֳgaÆݸqĉcGڶm+Μ9;j!!ɓ'ܹZ^455iZrdƍ?ǴiӲիW۵k{;BFbbŊ222IqR2vQ{xP$%KkH*8 "J*.@#𚫫+hh4h{7"YڵxMGG端"XC~#5޽{[[[CH!-<y.FO>%5dQ]!B׭[x{{3疼  aYӧO={wŮt@="*ÇgB;<*JQ}.k2V\\zq߾}hW}}}1dQ]_N<)]lx" ^^=޻ADdkh-sx6n!lx!!9V!aMHp룬^ZJj617WPBBB,^z=dȐ"qsEDDlݺZժU7?vܙCP߼y;|(#%)eDx)zؙW5j<|wP%V...#FdRcwikkkiiݻ%<&&fݺuEMLLx	ytx=II!Q#xG-$)HK	-[ ͪW.߮]7n?۳}*Vmڴd5{Ӽc,vyxx`1^UWWgFkwԩ\VO~INrO	X+`^R=xիWko׊c(###;#l$u|1-J^VZݺu6lؐϟ)u*iT&F	YkȖj'OC=zK.IMׯi@j_ʊ+x(ƦK. 11p<|0M;{RZ3!\IO1.	XF_kժ%fyPתVzA5ʾ2/!|xdWak֬{gȋhr#ٳ'%&&ӋPiS?~;
+LQ-X XAE<U|pܷm[rbl>͛R+_vdd$] ]0^oUUUoC+ZU-_K%@kBH?k׮]҂uС'O޹s
+nXcu`W^-HP42r#3^344DA&fE	ڵҥKCR`	X+1MMMʔxUVlbå~}IOOһ26nܘ68R^#Lp
+v#6gך7og oDkΧ2Bl"|>YCZd|e9+wdy5ʲy07oCNY%"F 8uBVDa?rlF˗/^?Ӱz\5{&GHM,5FLQW^ÆlZ9[PPPF@`.] Of͚ž522*f@~32afjjj1uܸq0޽{G8#!ъ/%%]X+uuutu놅	,**R1B3w\D$%ח-			޻F_1^qaᧉ	:  ӧOO:;d!!V!aMHNm6F)![	h5k֤khǏ{9Yt7`ekU^s+W>y񚆆#5!f.bC||2]]c_G}?3WR|||jj*pu.ꚙxDtW|<{LGG^D0p^![.ZlٲxCYHH%܆Kbbbjժn:J+V` >}H}ka\PAZZk#Fh֬J
+H0]0`
+*xxx0^+ڕge4/AA	XW^KAPGq.gC߯^ۉ b@cǎuj׊;ϟWT^E=!^۸qWM6&&&V!ҩB	مڵ4bwʱ?rJEnuW%`0WVmkZZZ/%ׂxCÉ#`,^FsE;(H74fi+A
+MUT>ӰaûwԩSaaa Jjjj\`Ztt4`q/K|(S5nDC޼ysټC*	Y+.0ezzu׮]֭[+++3hժVXaaaۢE766q2LݻwZ 2|p*7?99ɵk*W|YZzh'c?\t!\]]yG]PZ))9x%}bd铆g,?Y\[Y
+788lUX!}TUUU;nݺE!k&L`sĉ7xwBB%D]tc5R(˗hbԣG򇤺ǷU?Vo߾ׯ_qז-[LE  ˏ?ߢܕҦMI&1^Ce	?1H!fk}f.>'X{%%a/>`jܸq0rv^t#G>|hjj>!Q=zUzzz
+x\T|#aΌצNZ|yf_n]---	v3JJXZ(244)𿋑WG		򚞞[	KCCC[[;00!A;cT`l+FBg.c{ޠI&cƌR
+x;yB9ydbb"54Hllt):::ݳgF8#!	fndi"0&K y֭_񫑑xh5oޜ]GZVSS{nkxBzᦔɓ'# )S!.\n:wBB%D5!\Ԯ]{k˗/4h`ǎժUcۼ3
+%퓩PZ-Pllllffkժչsx[,EkcǎEUA񚷷7xXO+ŏwPy5Y͛7zBGJKTxzzZZZҟf̘@rDaaaL܈אr"666IJIo,]$^۳g]PRfM;;;k*QUVBru-[ZLQ^z*UֈŠXGޛ(#րD޽[jUVTTT~4~Oy:(u	֭[\9 Vfr&%%%Wi]I~c1UpyIkǏ۷IٳgfHq.g"d`^a+V!÷lr!D1\LQkhi	$4kQQQϏ'JNZ*$QhֳgOPxSN"-[qqqzzzGA۷A(h hC@[[D7'ǌi&\žիWOu /4w'{;OBa ^ H'؛7oP=Lː֮]˲16$"k2eeeD{'Z.]BiOPV@gI;^!&###^ʷ:ԨQ#ڭ[حtU=?$x-1uIUjj%#00|J&%rpRRRǎ/^xM}jcxܹskԝ*\-35kKs:V3#m]Cx(HUxJ^蘐Э[#FאrX"SN߾}޽K:%㩧jjj_潟dիW{xx0^={6v]VCˁCKKɓɓ 6?	XSDݹsӧ4efhhHv(j4Qߣ.\E0_{C]`e˖3^î&&&sر%ﶔA'hM"Nu	B+W8qM廓DIΖJ0cA[%%G9wK5]]]]|6m_+$Źk׎) m\r׮]#-Z۷O@ȹoF48j% 	kcױc铬*1iAY0Hp^x?ٚtY"H|͕Q XSzԠ=zH{$lCg{;bѤI,,,kgF$Z0#!ӺGzX*Zp-EIO2k4c}}}CCaÆ1wm%x
+
+
+ӧύ7a3~555g	^ǋ{WN-2eJll,ځ領4lpɌx+$T2UHX>!5T1Fjș?,,,--Vϟ?[՝;w _@Zkإ7Yfhh~;` ''' 廓XM6%&&N8&x#]V355ea려dnBi!_JZ&>iӦ͟?gϞڵk	BL߿ჷ7
+JX*Uի QvI[lF[zA;wCLYٲe˗/Fk<3gݻwyG-$Tell/	!bX`l>53	&3g4h (( bŊEeʕ+_}'xMOOĄ9@Bnnn 4iǏx
+^CZV-6sʕxoQ*J^	NEd/(bggjժ7o0^С+FokǏ744dg%`ҤI4Vzud.q"U[9GݻJxՕTcO0CxoPV)zZb*$H5jo=xO?;B؄x `vUVmٲ%^zPpMMMN:N~۷x-22ƍ;T\\./A۶m?$2bσ.N驔@z &cIq !|̼x믿tR dk#Fܽ{xѣGϟ*x	&]v-!!Ak(lOŊq?$իW|2Ą7TŤ[nURY'"9N,/Z`6&M0[cdQUppСC{>|THZ\wZLQo=ހCװlݺuѼc/bn߾f8%d4i˗<3\I,ߟ9@8##c͚5.\Bȷ]tAE
+2e
+wi\Lxj`` Td!j*kSNeӧOKKP!!٫$ǎݻycǎ~w6lWtx0WP`tv?̖`۶mR?sqqy^4hɓÉ׆f?3+W2mmm'[k[ǐ|G8ѣg1<==yţXB]zubb"㵚5kMlӦs\PWo)bc_0iԋ5j̛7T-7-eQ:uЪg$DEE'2אUTT܌\tyƫWo9	Hd&-\rEj+_aV_g0䬀ӧPz;w~)::˗莰Q8_h?pm֬^C&`;+H11si5Kkk5dkme(`M(7Ξ=+}k׮
+e+V}}}--Z ͤ_mٲ!QgΜyfO6mN0!((FϞ=٭(xܹ3` PIV!aM~D~-𚡡!~X˗[ݪFI0݅*{K۶mþ
+jHرӧ;;;ٳgĈc/25lW˖-"8ePxw ,w|%`>7޽{Z|FyMk@rQB]ի(qXbZgooHv9v#3sΖ>$^PWݺuѲ򎢰:r缦R~9"ʏ.]+V@?$x-==VQ0<Xo ӧ^KwނNgϞ1^kӦF-uܸqc;z<SC.e*)9x)M%UHѣǙ3gxţ8ϯJ*ǎ}MoݺE.zrRǷkiӦ=MMM
+^CAU	,*$H  _z옘^zO( _آCbӰÇ'e˝\~"2er\uӧOehؚb̙-[ܿ!Cx_4:y$vիײeK	Kx0l0tR4QzsE	ݧYǼ_Hb'kH*R$%%%umժUk96dEʕ+׷o_<\D%{)#GDEEfάY؜UtrGHH>kdݛ?̙3+WD]#^CР[}AsfffIXVr8.]]xe-Jvg@/1p@QZp!0ڏ?HO
+40!x[|JqRF^)ʛq}9;.˗/SRR?;xM[[۩"ѽQ5KR7.)m۷oiJjXXx.ѤJ*߿׮]xZǈ			Q% ֢7lxFv7BYFQCx1xy洁<c={~z"PyI)_>h"@MMMOOk׮	^ËGގ"?' ?OCwŨOJI)5|oĉQ٤w4;u6}tV}|a&MZh;Oj֬w90#A:%8xb:={ԬYDSpiAK*l#aڴiQQQר$_|:TqyDwM$TXƆx0Ys9cʪ_~0g͚UZ56{!`O.Z(;}:u_xmѮh޼|(#᠃5Vv΁2	RW}>K)w\f~ZڵG&bsk3׮e˖%uIooHk;vPSSSWWgO81((xwBBHlMtDhтnUC̏nSEEfWONN>u- &'`-b+!yܖ-[.)޻w/%Ȧp_z{F׮]Cg"0r?$x---'OӇV̓qհaCr)&&&l>-RI'ا{֔\]2#N,O~PZr%dZNt?~<]	?x?i뼣(I4 ح8.x5p/YH>(
+9s0 ~ȑ}2e3f!^r:լY'N:t'_3g&H"+!q*~ݺu=z
+0bff&LB-ڳg r@ݰapP߿?Nvc.T)~JJN>7$+%%G?KO>$Φ#G
+I.guxkZW]?v/ywvm-rl$<y=!!xۈuttk*+-BǑktǏo߾=~VJ,_R%--K.S2+ӒGRk222}-D}/vM 1!k@`˖!HZ7&ݻޚ̻whZN4HUTS;A;Snbi|HȪO묙kB	Yf͚Y8p`/:uR͛7QjԨ
+oY˔)3dvB@@y\|wE/|p\\x&5Ϗ!fl޼wBBH4EAqFK2׏=k<غukϞ=f.وI ^?>@F-+@=z\3޻ht1	𚡡7?lܹs]v)תU{l5:Yg݋*f͚={~>yWFħY.1I<VSr	Qx޽{Y<x0@+5$UźN:(|yyΝ/\;"tϟݾ}=4b	^+ISnB
+
+kwy%5Dc`` ٰa;vx󭈈H)UXQUUYO7n#wy@]{OQ}}ޠO>&&&IAF5Nׯ_j׮A)gN ,ĉk㕑\[:+lik2R1+%̜gڵkȐ!]rǏh9U^Сec#mۖ!Qv,ܹsI	3gl֬Y\\x444ÇٔԀ,>Br+JB9+<	h)@d3HNyVZ׭[G*sJOOGDG#F (}.~\!GGⰌr1$<^Co`aa&@B`70)x-999x1)]8e tL??N܎ϔ1#%30wH5Y
+櫯*.]ر#4Y36l޽Ôw7IxmϞ=@3k׮O>;ެѣǙ3gxGQB7C⵳gZ~TKKΎ.q-BBD5.:zhdd$㵹s"5d뛛9!}˗/bcc***]dbᩧ{gVcƌٽ{7ھ}ZlBP|x-rJyoPAtȑk(Sy`ĉk㕅RBܭǕ~l<h~;"kNݻԠÇQS$Tmv QWWǯڗ*]=sv=&555Z[MSSoƦz
+	xJ5j;۶m#^0` PbLNNCηsڵk״iSvYYL^ZLٻel𚮮n57ШUC޼y[y{{[XXޠUZj$N<0+))	ͧ}o%xZf/:R"𔹽)Ehڥ}wB\3fӑkq-Z:NƍϟobbQFOF}(_#͛k7o2᠀,X@8LMM=<<xoP>iA(/*$~$l߾ڒ%K:e{P$^C)OwٰaωעlZZ~CS$ͼ^ٳ1kM4@s?ͤIr~7njՊ6[[lf2^7o]Y.藺wNE,#!e-rXb5.BB3HJj]xG'zÑmիGCQ]?$xǼ^%o5K.a'xMSS#@4!pJP鑙Y`` (!6xhF3_\o:ڼy3@)22Q366䉺hUV=p ƕ+W)CCØ;PJMM I=Yre!矗6RW~-"^ի;esjii2%%_,lsB_J
+M峸$ڱcWSLٳgk֭E֌G9r$xWIZ!<<exmqeɒ%t/:q_C*R,X[nabb"2	2554ix]v/__߼y;
+9stuuٲH6?>^:Eze0!Oio" j5jԨ\lڴ)ʟP^xm޼yv)#[[[ccc5KKK-eOf}0XKTRrT\&{}j`Ç3Oɻr/޿?vد?<j5H{e~z~Ey	8"iiiժU۽{7xubŊtk w5nΝ;w$
+ZBno[Ԙ?$x'99Ç?H:skUTc"5LՋ!kHz5z^?cΝlْ	RCEkyyπ sss[?~cǎ@Q2t%b?NJJ*j$dk섃!Y3C맅F(F&c1G?CB8˶m;F9ղeԩ$C6p@6W@?xwsssE(!!tk'OFuc`)S?{1JWYH&K__}9ٳUUUiV@[d	Cnݺ8C~wyRLLۛxѣ*W;Zk~*ܒL-PK-,,SIqR?((A^lԨ-ˇV^ONN&^:u*62k^x1C]:g%Z[IX`DlBBlDUSdkq˗/_?1clٲw(o2^ի0M._Yݺuxw9LQ	G!11ݻwQB#F ={wBBZxG'}M֭MXbJo!zwyq!𚶶Gd6'^zwIA Z׮]1H؍Zd3QZ޽{(m7.z=Z,8epԪU	2Zxy+ke$9XgYbܮ)k2S	&lذ^xqܸq6m<_޵k>	xﾣFURnmHJJrqq>(31/#˗m۶0GQ6l=@2e̟?Ϟ=kh<xoPA$iA(_*$l$l۶צMƾ*[,Z͛7W^80L@22dѣGלhlMׯߌ3hNݪU;0ZPP7@gϞaq'T4W_'ˋ/&O\S
+Ux֭	^v^Pv3rURl'$)G&k2SbbvN;w_߾}lkkRc没^b6tP555֨iӦxsѣ9yGQ(/"^Bi`?$J4i¸Fo!#5JKKK[[HMSSFkTyǞ' cװl'xS?SkII_~ڀ0H4e˖[@kygCӧOo޼ӧOZSFCC	$'^PA$`^nbrww\񚵵5 ҭiiiׯ_sEocxk׮Mk/SH!`ݺu{1̙3h[ʕ+Ǩ:)S\|/d[a׭[G믿ZXXշSNR:qz[n1BК閖7o`O422}yݻ{Ӂxŗ:%gQ#HV'O͈*Z	X㥞={A<9i$p^!.$&&2^C6F
+YfVVV:t ?/*HH{͛7k0]VCO?1H5$TpgZ*6mG+l%\fMt˳fBnQX"0-I:::
+qo,*ZF@5dH~$]]]]$^MHyyH>}ʖ<x0 )Zo@jxҼ71Zzuڵ=zD L?$x?ZFBi5^_|~'ڵky&_q0kl)$1c|/_DxE?>|=ztǎkx.J0?|9B		
+	k2ݻwfϞ]R%-˗WVVvss/RRRРf1xoD.߿3lmmvJ}5Ih޼M~7o?eUfxGٳkVVVњhAW^7xobhyN6sLFWUTT:D8eV\em_!E5^67N:ɉwhr$'O0^h<hٲIԩKV`?>o߾%^ït#3]VCC5g	*Rȑ#UV}+hI5Ѕ$
+[P:t0vXv?7nM H5Eb*ϋ~.qqq@jޠM6Ǐ'H逦GVInnn((8eؼ#2:u"H"YXMRN?իy$8 ^CNٳ'6@T`KOOo/\w9)瑀[h^k޼.-jC֧OxTI"JӂPTHX+p%E ڬYl
+*ݹs'CxY%箳C3fLJJ
+xmРA|'MSSS ?|Pn:_Ǘ{Z cGa\v7ϐĐ(@o\b)@F՘(Κ?$ѣG~^}$ȃ\rI)˗E`ϝ;#SOJ%`=zI٘*N8rxmذadmDM4[fM˖-L3͘1cٲe(ݻw̙7oC7EK:'+D汰A͛7u(rٳg+W{ӦMdGg6I"..F$$^z***t1[
+QC20k@oks!ȕ+WiӦ [74O,VV^FUxM|qZ|V%iVX;4y3g,QYUUUGGGYY5}Νk͇fϞ-;\._>Z&;;F@0˷k׎!kbƅ\Ia54ͣj`Ѝ7?$l-Qbccyoemm=x={Ij
+&?lc*,7 ʳBCCqw^RJYo0>ٳgn74'yyya̠"^).aAwD(~~~)##Cy$Fa˖-cOd	X
+*|~i50^P(AK,AqѣGQh>#_ÔH@}Į~5Sjx/?$!CN{;@r
+-Zߋ{$DJرVdƎKײ}lȏ޽{GSbkFGMՀQxMƱex80kÇ(yAl׃
+)b*UⵍyԅPq6l =ecƌ!Hk(甔hxpq<yz?|@X']\\}OE8:H/??k֬KN.$Tzjr2}˪=qӧx?"kuNÇkjB-cpDP%[
+		Gj͝;(.^~MSFd'[<#1,--˗'EDD?N^:ux"'1%f͚Qoܸ3?˗/<666͛7fJ45YSFa;w~tJ_385?&cxg$`jii}BO+B<yyڸqrQz֮]գG`!C;	Ȍk5uEtZLM>!_x1m4ŵ*g?gΜqss#{-Ԝ2e
+C2^қG'{S׻wֳgOdQ)fI633 H5ه~体r׉'95ݭְa5kYvHHH>IMM$///]]][NJx[bE4?:^RJnD0nԋ݉zmn[("6v"*ﲞg?< ٜs{fZ{fesrVcҼ.75&bСC'NȪTg:ٳgpgӦMAuttq׵kעk?~۹*`R( RTTMmpGp(?$x@+*<fKFk"Pk1cj#nQ#sΝ
+B|wG7aUV}8@ȍbS>~L6f#VfǠYf(6 %mڴIXO+˅RRRpk:<٢!#;Ɛ0a?!!!!#~s_b-}9&̾SGLo/aMn޽[۶§.]bxDX௛7o
+ֻwoX`YR~[n5o޼p.C&M2dRHٳڑ#G)hMVӧOhh(Bw͘1"sqq}-OO¹h65ڵkVC8zY8Y&!x|>|=F1IwA۷k={DDD ٶo@-X:}4ŋ24FK@^c]آ,5!
+iīi3kAAAz0e˖?Ɵ!nnnѸq^z#FOօe/^@455GGGXkpx]`ϟua)S.iѢEfff`X9&(?$rqqBkׯ_wvv>p ɓ$;P~HZJJ
+9	SO>4^С2MMM bbx&e*O5Ĵ(6@3Rld	^Zk#5E/_FPtqpa(0d,<3!%>}D F>}@o&%%|fM_|Gxf73ɔN:5j̘1JX2>x~:255]z5Μ9ú?K	'OD%^;r䈓nmڻwoTe璧
+Y~v$ROr
+;v_(mVϞ=ix-S؈`|UU^Ç(!<B&<0[&,X{7=z$Zhh0O}|!ŵo^XxSxZ pǔR+/` 	n߾NeϟO^")0j׮e'+RbxVf 'N.l5s̾}.Oh޼yc𚾾0Go;3W&wEGGH'N ^<y2M#L;w{!ᬽݭ[XWԿ;"UV5xi矚N(((a	K2pCs̡%7CCCS
+rE+v._y9)Sx CW^GŐ.;j6zUV߾y)MaW&`jnǎ$Tܹs^>|8Ml]F_|ٽ{_%u		a]jŸ#k\]]i5vB>-[׏uyrW
+.,ݻi&BJhݺuk>xgKe]QFFb6??d[[ۜj`@?
+ƪ߱c,x|xmРA.upC`ޫWR~ϟ#6=㾧\7e.B 2a;BƐС>B\$Fo|WW)fNqX^5SSSojd'0
+" ^rrr244i55-V'^c]҂+""GKr/R_n"~}k%%k	Ѿϟ'^yOm U:Z޽iZ6tOâ6lCIo̈$=ɎƤO	-q5z̕+WH3%KĐҥs. 55n8!߈':uݻ޽#S^5j Ogp%X=!!?uhѢnݺ.Et3fO>H@"4i(qqXR(CmٲEMMڃ֭#Z~N|u|Ҵi@BHOZ:u(?kڸqc$&&>xxmذa(Zr֭n|||hh.QDaۆ "[z5ƐiР=)rS$=3z~I咺Qqqq0.!OgEp1ʤKvܙu)p[[ϟLLLiZMGG7޽{kŕ
+EEEn֭[k/FI["
+ړysZk׮ܿ/?uԴ45ZՏ:*f&A5OҢ62`gٲe5SSr	Kn ,ƒYߺpB۶mpE3C]v_E֤|?+;64hⱝ޺ukcǎUQQ)~Z4~Pɓ߽{jgXTbŊ:.E^oS^(Ql/_w:twެK%*"J*ɒ>W=AHOk'TUUaΝ;^9]]]^*j_)))155IV֬YF>|xmiQR۷6b03H{BBB>}9	**A#@ʕ+w҈Údʙ./,,lʔ)Y6uԁ.)YLMM"x6m.Zzu۶mY:|r,,,(OxP~H5օd5yʕ+x	>=MbN\df777YA׬Y#ژ1c k#jj۷}0kժUdd$RҥKo޼@J(6@Ky̚5KHJ&ǳ?/FЈxmÆL4:;wo75i~?7ogff._nu떁	TUU'gUTTlbee5}ľ}U|"<#RKDssīٳ)#Gzɺ\\\?ӧO.?ںu+bk׮#FTLY`޽{^i˕+we֕G/oonݺ}ND<==)?k˛զM%R䮘 	xmш%i۷{޽{.Zx6A`hhl2mmmC=zT5օ咿81QVXYMgýg<4eEK:uhV#GmذyKBBB|}}r9;;ݸ5=_.ƺ\"r)2h6vTRx߼y{xx\xQ[,8t'<88x̙	JJJFFF{@2{3QvVZKcΟ?p=C@Kn(6޽_Wǵ^x!A53޽{vZt}2ݺu쐑]AH#kLy%VSWW)%J̝;Lq|||ǎYVVm޼I&K!~Ⴣ=OOƏv~ɮ]\'ooouKC6ܹzjĴ.2t^3{zz"g]oߺlll
+
+
+R5G"VР qBDD|5OMGO>e 5577*!n~;Ð^c]X.QaruCg59sJ*kB##0<tjc]Xh۶m6d]N^\2Y;[(bb"rqqKa눨'k2GGGr _~B>:o~MϟO@m>L!Q/_~mI;w^t)RN<Yj7nib _xWbEEEٳ'55xnx:d!?F_E֘&ĉ߾?gΜ^z*+7w\Fa3}.]UWWիǺy(aF#5kȊ~߿/k%G\򒏏\zĉa=-ZbjjJjxUSSlBy𚥥#f~¢®
+ƶvS#Y  9si5z!W%f:tk||<.""Q{^/]$BqXc-7oޟɺt	SNϞ=#^;v,-v۴i#d]^nu)eٙ~ҢO:5yd°+?d,yLLLFFJI	hѣG?~X$3 lFP-xpd42E(?/_߿jcXڜ
+g]ȑ#]t!^9rI;t i{6~5m/Ɛ4iÇg
+.988~~DDD=XNRZ 5 ƋS_~ӧO}}}7nȺQ5֥`+U~@Fj/%Kl޼yr,Y \\\V*U.{੤ðQk׮	V3_Iyk0pgڴ"Tg+#`](D6bxA(7o~Q5m&Flllܹð233|47784HR5E[֘{k,X wƪTOg=zVx-22\ܜbϞ=)?OmYhVZKf͚0رc5tEYwk!4\d5YzBJkOXѴTxq	߼ysA+(`322^1cPII	o"Ͱrn'j"%''YF*ՋC+͛7;ԧ
+!SM>C^zUerw҈}oEu֍u]\\k0>IRJٳx---ua&P*l/R.a>W
+O(?$xm޳VN͛Sk****-ZZZ`4D`~
+fe#3gkp^\ȴsB>??bd/斐@ۊihhЮ▖`(DP ^o	UUWޡCTf-
+455h
+ƪ\҈a嚰wɒ%]ta]:)t8ӧOã,ڸq8nⵤ$EN `]\wϟV~}zG7Ϟ=+߲erqqزk׿ ,0,0/-xرApxwfǎcU6f śe˖ڵyԷoߙ3g.?B<yRUUm(&M 5"L28?æxMV#א盛ݻɰ\ÚҥK;w̪`RNge˖`CCCƪM/b֥EQQQ۶mC,.Y$1F(հaTXK
+U.EFժU;~x=!11nݺZ)GlƋ/^+p	k֬y[1wmڴ	V^ѱBTTThU۷oט0ooxf0ۤItP<G{1)k	n|xC			kyyy!aȠ,;Ƥ$ 5{\?ub]@͛$5X{OF0ŰɫVgffrL
+Xkz
+^R൙3gR3`ɓ'?--d]^..&|:ZrѣGٽ|ի>|IƘU>eѢEg3/_̪ӀMƺ^{.LII	xܽ{70&vl0k<O<IO)++_[k֬F/^~Ū\#sCC\?ZreYPt%&&֠A2+++JXÁ۷^c]^9˗g]%<-^lqttDLձcTXdg /ΝC`	^kӦ;.]ZGG 	d_2(8ck`5jta?ck/?B?e֥&k5(ApZi8kѣG!!! zĄ UʄIC}ӧOCA[c~:ݽ{ҟ05t!eUڵkǪRbkp0zy	?|0H.WR"zA?M144|AŊ{왙	WaQ䷕V $={,B%J Ҧ-Z|v<x,߿m=6VT͛7WQQlS~Ȅڗ'O3EEE-Z$G;6P¹sDo߾&TccFQ>M61ɜBqXF2_z5+G=kk֬iӦ+7oYXX+))+FQ~H5啿Px4{l___5J6Eww1Y5i!;z]bׯf̘W
+s°ܹsGMkթSg߾}WIJ֫W/ 'BkCCC1<<\/qaÆM0mݻc:f`!I&vyp7Ϝ9#q#ܿʕ&ڜ9sJ*EН<<<(?$b%kI5oIlժ뒊.xgxj8C`hGN::,^{םYk;aU޽)%RWWG4B}>.~E1={ ^.^K#"PQQ.[,m=uT3J*999##*-;;;zٳg֭+}S#F7nRdݼyvRh,,W@ѣG'OlقXڵk{UTT%K,SLǎƏx\LaMJ5
+F[R֭[ײeKVœ`:'44Çkfffpj0JhaÆj
+Q,b]j֬Y-.K5S92~U.EF2&K,@O@P#^;qℋo8SǏd hhݢWzAbbkׯWVV&R}:t&e~VKƌ,\rkpCb[[԰05	ڄIB |1کS)TzFxM* 5E0r{7lмyseWvӻtҪU455a`4h ^;vۄ;K_GkF焃.pS ״x>))iܹsqq(3ۏ1͛7+((д"OmmC4lP.KJիsN)+X377 )SFUUdɒ
+قWWWGݻw8e)kl˰m64bK"LB'<x(((%(h۷o i RĐ?~ϟn8IObM~M6mʺb%^2em F )|Ek+໭XڳgxI&իWgA|ragօ*d'^{ꕟo͛7hذaV7S_BTS"ӧO%.jܸqS~ڵ#bISZj1Cパ-t*ԝCפ/[qXR8֨Q\-[4nܘU$>|83|ԩSa`A@ֶ_~3f̐x5s`]KXhcccbbN;;;-[C̝:u*̿s$ʥHFXٞо}{Xff&̾5#h"//^kذ!eFǏq̣!jgiiI{SRBTM8qС͂qҤI]tuuq4hbiӦI6y*}rі-[ғ0d4440diȬYw҈ÚdbHhhh[n-S`Nϣ;w$<` !?Ǐw.?3ܟ3
+L{ܽ{Wxؙuad3pzüІ'N|0AO<7n{%YrGTz%JL:U矔TWO<Y}
+,!6 ^[Оh[pLB>) $2GRDR8IƏ?|[i_qXV}jժ:ū-kb
+85֭[.z*κp@foooZ
+@xpX366uy
+.)amĉW\!^񁝁͇׃ٴi.ڴiSV
+޽{޼y?*U>[A(z!
+&M
+)S\Ǐ+WFlеkW6ޢnjj`ڵ~~~Rf`
+
+͕r&L&^èAЖFwImaM}IoȐ!&M㯆czXSl``ᯕڶm+gU}K}}}֥^[fn#,[9r2eʀX*"#ĺ	nBzX?ydɒ#F|8֬Y3)2۷wFiiiIfnn^J8;¿ɴi,nC=A/qԯ_ǎ]@۴iիWхP}4=02|pZ͛7Ky;iaMYw޳gFڵ+((uy寇vܹs5ooo؜rʩߩ\t77oޔ*Uu).];MSSSCC:::8DU4$#_SSS&N.CM1'Lɕ+Wx-Zq.Ux"+ʗ/(} 5XKƐ!Cr&Adә<סC,xB
+гsZFn*͵P4pmmmU===)_IaMzuqr.(qE0DB%J^jOOO)+9֥G}7LLL;w.+++ebر/dff.,L][	C˗/hkfff6`ܜA=zH^mٲu$`GQYa?mllrGDD 5kֱc$(9s&ɥA;w޻wXSSb	vvv+V|R?>⢇:t|
+!www:G؊Ú׿}!BfU0޽xD?@ßo޼fU}{e8x`tttV6!(]4H2M ѣGJJkی*"#azիW˕+H05@a5Vu֒MuVJR/_)3gN^}޽{ך4iA'ba5oÆ]x@3t'zfoo,&q#PAH#k+VϺܹsau=z.9.UTF\]]k?d]Xnf[|9F",Sy 
+~͘1###XW:~Io߾!!!5RJ*iii5me֬YVoٶmիW]˗/?200055}Q;O88|fzɮy_^mɓ5k֠t	jR>JjJ,"Qv/2i۷̜<yE
+.1aMzըQѣ~ϏuEڦM`y/Bw+Dk)RRRX߼ֲeK]]]JL{.&|$cׯ_?55\FK(VZNx]v @+<y6~<&&Ɯr*++yv	^$RDDɥ6l@P__YvmkL޼`!bvZŊѯ8I///M>|חUĘNNN[nHHmfmmmooOYy)sΝ)lٳgY]J 3,ϟ?H?w#P)MO>o4UW! ܷo_=?=aɒ%kI*UJCCc̘1>}:t v~{)))5mmm###777Jngg{㵅tzPnРAD֖vFlн{wOMڷorJx;w999hؠYLThy;iaMz9;;_~=׏9RfM׌"zfJ*kK*C!v-_ 
+%Ku|ۉKn۷o_VZ^P=Jb`CCC)?G^^fٲeVB-ʗ/"ӬPG333DeÇw0k׮_Ǐnݺǣc *О^^^*WLƤMN6n^!C=
+C0,,gdd<|PCW7e\\\;vz(O߿__^WLx4X$''1`Nzu֕+Wh)1((11ȑ#ϟgT\\\Q@@kƍ"&ƥȴ,_<<<ZjemmM+V+ڳgϬIPy	T6rxzzzBl R=i͚5Yҥ˒%K$ڄ	Z2[h"a5&UHaMz.z*׏N8QjUVc:ӥJB^<88ZCL
+Ҙ\ضm[___0/H㙚֩S?tttn$B!ʥHFXaO6mٳg5mcԪUK__1'x-!!a111r`׮]/^,^j666SNq455a<`?ѣrܒ@XCfba(6  R/_NIppEĸqaCjlllbb^{ͼynݺŰ5' 5sGw*UXPnEk;w677`4|wll,x(>ݻw)))k>>>gB
+pw^^^׸#%`^h^UU^MMxuh"Q+(ڡCڳgϜYv-Z]v]bⵎ;ZXX!b@=x_UΟ?_ȀiTfzⅰF*$uA~eff+V{kO:ͺrS+Wn:8k%d8q%wwwX!xpm(lE՝;wLLL2|}}qGKK,iee5d|3::*Jրi۷oMMͺuaZ /]4 -55uǎ~~~?8,/^1bīWk'j8tՠ XG5k,,,Lb5kִiFuҥJ*pWFlcoo7-Wibb" $$dܹ4k0. 2>:==}ƍuy9v*&``ҿ3g*UĪlbLg;wN[[[AA6YEEECCF_cUeVBB!Glmmrv$$$oߞuqU.EF ݻw	c-[UG9sūS! CC[n*++#;](xOZe4kgϞPl peh^[|g֬Y?>>L2Ç1F/^,g?w҈Ú:~M+===Ө j*T)n6ma)c?LqڵM48p@HHJ%Kw7h޽GNJJ!|ر#\"Ӹqcǰkײn$...yJFXC_FHIC1Ƽyr&RO\H3'$$k5ɩRJ <wDxڰa@k!6@^=|||(6={zͰMf2`Rⵀ Ԛr2.]s5UaMTXL}\\%O{A>yD////問ݻ"E*]&ͯ9rDQ` >~x/_n߾x g`-004GY7k.1μm6 LTTxSX1SYNȳW^s?~St !Eנ3SS5jP>O>ݾ}[
+M65mTk	;YXXiǏ\rpp0|0m4Nn:t7n ∈hȠ/Mmܸc_N֤kׯ_wvvʍԠ.*߾}K^366PΝ;X՗bBBBrrrV6YZZG޸MUTh5is\d{Çmll(s***^vME^9s&eS311mذaVDHڲeKƍb{J(6pss޽{kldРA❟xѣjjj,[64&00r%5ҥK0_K*:5>>>&&FWWё9r$+{lօe -Ϟ=lrx86lzr(9nVZ/_|uqqqY#hڵk04@&lׯ_=ŋUo߾ )6::zȐ!0lTΝ;~R>;v 	Sl8۷@x:-xĉY 6M4ig믿ka1zիW/^5jTTTv*&hҥKJj˗aXS>"^ClWUUUxmmmm@bHD-LLLhdddiӆxupqq_"FUAMi555ÅĮxo߾I{0.]_E̬_4"^۾};I	޽{'ƺI>~x1ΜTbE`dzSHV3ga5mUXaMbbccs4**lٲ&lxg8l^344TR1cv 8<xU}Bʊ;vl̙2 sɒ%)Q[^)VXo޺u/l;Cq\{=MCQtiDq9͍CCClmmN?޿\H=X^j֬-LTNG֮]ɓ'_z5+{G<###///OOOJ-?>zH 5jԘ1c~Z2k21d0p0^26,+''ׯ_n;iaMJ͘1C__R7]ºΝ;9SRRi16@IIICCcƍkKL{Iyűc:88oٲ~EUUwD]]ҥKtX7Xr	<xB
+u)-???Jև233ke@Q2ΠpxM:{}7oF֮]g<nHЗX?~ZT@TlYZjѐ#F`]{%kS2e
+Q9]L%<==a|TTT@ mme˖eeY,$6YzIk3	)~p^|y}׳n...QNVWk333G޽{.B50QGT	[zkuJp!˃PI ҃τ?=E]khst---J-RR%Ɓ&׸rÚ42̚5O>Y_PLLBe:ѣGK,*UJ]]V<[ӧOwtt$^vq4׊Ѭ wO1[o j/_%w"#a۞fSѢEkkkXSNDRSS7l  v<yd9d.kܸ1r]vp|r+(<,}y
+:'#0?ڷosBI&2D\rk4i_lbbAl_b 5	3ĉJk+<x`nn&[k:u~]ߜ%ܽ{LMM.\بQ#DS
+
+
+666xW^VX7XjذmxB8/ߴsquAmڴ1%	
++s[kFwF{k+ooonݺ1LF>|W쫌9oI(6;hL8Diwȿ$s}u8 A8@GQc]{%kbƍKLL?6a͛7td7o޴g]dtσ`a	Wjlmmaa~E#2lٲŽIOO!|A*U
+x ꐐ}}}Jv}ʕM6n...$wXTP\|ywo>i
+4I&_CCCKKf399AGQ@;𚉉	兖ī%Z|eDJk׮`6?6mڀ~Z*U=aL%z왕"wn B$k+`n߾aU6Lgv]v;VSS-T7nf``ϪD.]B?|c0=	paxɯ$_%w"FmݺUOXn]j՞>}
+^C	ri޼9jZASN#F7nΆ:  `Μ9Yټ:3Ζ\[vW^ĉk~<ړ2j׮Mnj	/_^f͗/_&$$888`ȴhѢXbh???DO9q!8I,PŋݻwYQVmllJ*C@0778qY
+M^ϟZknnnp40[j;{ϟ<-b*\\\"JFXV0eVVV@ğg)yMa?=q;:e6x;w^;y򤏏WAC'S"F3Y(+;iӄeH%dБ0X0dhYp+vdɒ
+*r%8I,ɑ޽{Ȭ(&O<r3g(**jժ訧Ctied+={VDGGhk.555r TL¿jܸ-[r(RJԃe /!!!8IOO߾}{\\4-ׯ_GQM8堠e˺ dR
+Y=z>x<\re-8˗/V &֭˺ܹsѓu6=)B` Uch4ﳮ=W5N7pj&/_+))": 7xsJ7󂼽O:%N8Wr%p䔜LO|k|a d=)СbNWWW8ptt^piw'Aن@C}=2{{{OS3}ܸq*U"^"ٳ+V`/Z٪Y&	xM6-k׮eCdr@tf7k.üy_Y~ 5{}CssseI3gά^:5556l ԭ[W^S=x!TժUP^7"===+p,X`eeψ!_vmТҥK<~upqq&Ml޼Y^g#^ڵ%FAArΝ׼111UPcʔ)RC\
+I걱?~% B%SRR222BCCL0hСnnn@ุgϞ͞=[C-\088X'$^Ðx/!ӼysJn:DD~.aMb13s\?JNNa<x+kccWti]]]Xfs&r/5jDݻwʕdV[l,תUKUUUKKԯ_?5.."/yZddʕ+|^())&M/}# ar*p::::Ŋk֬^Qʯ~EO{akAhOtpR۷^u|%KtE.Zjڵk5mѝVVVl`4UaMb\v{>yO^ê			(ݛ Lgxdɒ@^z Fu} <СCb_x{@3\NKW5|޽{_%w"Mʲ=i8U```bbbJhq5mu}|w1>{lR`ݫ:U|3g@"k/_`є-&EWqttD m޼9be#CZZZPPPƍ)Ӑ+$b4yW5 5eee{>{H׾Gjr͛7>}[gϞŋ.]>m۶KIIҿ/cbbN<PlYUkx@333?̺=DSkeʔYt)mEEEի򛙙=|v~Μ9)+(]k@vڡ5j QQQblD<x?|۷8K.UVE{_ڸqͺʕ+۷o/-\JAA1Rʕ˗/ӧ3gΔav_N."/^|S|/~;v Iacc#Ç6nfhh6k.c(HVK|rEYY٭[7B͚5CT,Iv]NǏ|}}7իױcGsss2eJXXiݺٳs$R.&e3444nݺ#]-<x`dd3n8UUUSSS"Ŋ5jT5
+ի۶m+y6oތ>s𚷷7L6m0^Н`Y[[XטcRWW=}ӗ/_BK.511Y<Ν;kjjΛ7/ܰa>x˗Y&u`H!'k]v;(Q{N.544(ɲer=M.V❡HFXz+o#oaa->7oF	M6ҕQo߾uss8p`0`
+|7DMoܸk֢kׯ_wvv`U\Z\=§N
+		)ly"##[j%Sю۶m+U3ઊ$Zi_4&`322)\ ܟKYُǚ=x ftܹ-D<z(lιsfffP_wrfΜ)VRjذ!H'G,(~9ƇTRR (?fN 6r_ti6|p$IRSSyҽ{wuAoggǣ=z$qS󇇇9sEpC jJ*
+QQQkaЏH25cc޽{Q5440XFm``@߽{Wz|aMJ%'' 2^ʕ+ixҥKxZSSVB<e@B\L2jjj(ԥKTח?%j/_nݺ5<n:"+xܹsGuKpqqI$aڵk0,[n1oZE3kV_^3f$pU?(\\\f/^B
+טQ$ݺu(*AhFMВ`4EE	&n6mTƓ\pCz
+
+RPP@ݕeccԄ׸'k*..Qo޼A,M2%enN^5k\*n4lc%m~H\;_*i֬zj;0£G^*Gs֯_/%kKwn;:$z/l;CfzZ߾}6lH6޽{#LIIyYz,w=eff&xbŊ 	iddTreT"";w5111_ZM
+GGz왘(^6רQ#CԤI+++T;UR%==Q``9w҈Úغ{˳ry+cǎ޽ҒrWx@vO<k>ѣG˖-K.QSwwvH[^vg~qVYKi4n\ȑ#qqq>֢"xs77 eeex%Knܸf͚uevbٴp)Sf~rGE֖`u=pH'E۶m̙H;~N:ժUc hǎחW^kB58b+Wa5	$-eer7o8995
+ǏGND~o5"!nkkkaa<x`QV/ZJ#""MթSXb)ߧݑWκS˖-׭[W}PR;%
+VפI6wܐY $:x Cz8Ϝ9Z=^wF4lڴ)vkРbsss芡]vr{ǏONNvww!:bp^8I#ⵑ#G-[{NAk	6eXIxX
+򍤦^:&&&?k:cǎ"F+^ɓ'FFF(m+MD"xm̘1 5k0; S>/l;C@ְa'Ns6loDwܾ};Tp={$7AP/z
+F=}t<`RG$,ɧ
+`{ Rٳ.~hOpֵ]{$k͚5cА2d"4{FF͛oݺźw҈ÚdikkGjǏa
+|Gp"X~)fnԨQJbhι \?WG7ozyP.]:uL>ǈʊ+BǍh۶6TZ,;v KB;w		111ai=z7nˬl^YZZV^ֹs5kqB'OtrתU mW===D,֭˺r>u:xpJkwf#!/'kիWRaȼiӦ1@F8Ι_uqq222@as7gbsϞ=۵k	n=bz:ܹsYK}GXիרQ#yD\l#GƖ`TaZBI&룂)<ǎ۲eI^{\x:t(~ԩH+faa :uҥK!y! f=%%VHAF
+ Վ\8I#zNYfBogeeeY.DcuuuanhGׯ_5Xu/\ /^N,]4AEkk0ƽ|}}7l؀#?\xg(21ӧaU`Iv碡rA؉#&$$\ѢEu&ז-[ָqc'''5jؔ/_͛Eo/^tŋիO>h	&|ы͛ǺѣxQFmJ?wPf7o|@ʯ% 5	$du1g~ȯRTT,U8f͚lUXQIIix}زeKUUUw)^M6mjmm4 e	^f%db\pXs̑9:t̜;w.M__nޢEn?%
+kZz5<KZZ!碮^d͛7û	1Ԓ%KtRͼqFVv kewoذ!:$D)" NGc!B$xDtg2NSo߾HetAQ<!3zhݻu-~qX[9s?
+k0\V+W|a@p	fhh8|Ν;9b~~~ J*(QBKKfoҥ{V߾}gΜ)~_nyS1­WhOmڴ))\*T b{}}h&۫	ZlYN
+	6Z	^
+&LwzѧOO>1Hʹ	ׯ]kjjm=rYp+WX:y$\g733VժUa "RQQ w޽{w%cp'W!5QUpa{QX1YHd]]]xboo_V2NgŁќ.pM4D={&A߿_%sfלʖ-O[q/^400g.8KEFK^KϞ=ajƺr֮߉ז.]UNDGkF8ݮ];Qs}dYW/^= &NBegΜTR]5TUPPҥǳ|SN|'::\9|5G?|38>B#G̙
+h#GYx1L"k֬ػwo
+x˖-ӧOGW+^e˔)5m4eee;&&FGG~0>>^6%6eEoPWW7ܢFҥ) n,~]mۖJǎ[hQrr2/8KESS寿rqq)rg͚ue\x6<=c5{#Fm^k׮KAAx]X5
+?ydΝ;W@~]J*JJJ!!!2:ڼy31"k\$kEFO)8p`r:իFK@OׁK/_ٍ=Z
+߿WׯQ1^֭UUUw%5dȐI&_|q]V0R?~<qsqq1P`-+;֭[֭Kh(!g޿+4BP]t֭ZCCk׮Ь4x):$==x PoԨt\o޾}ppBEƍ Ck~-[Xu-&D9q@aSNR'g]Hݻw_`A߁k@]llli
+cZ6m:wܼq:\lRv5kޅKjy{{>\eddde߂͛*T`hhw^xjĈ<_%w"#UVkp+Z 4-zBZvmiii+֬YӦM/&8N:Hsssg]9q{Yc6m"XCA]~=¦K.߉!GVzVZ8+l4` eҟv4fiic8t\֤T~~؄Ľ,_@VZfsΚp۶m?~@@v111ٳgqu;88`8eF5f9e˖->}Ժuk]]]kkkF=9UT X;yehE\5\hk"""(A."j???ŋe/Z_(&yH[ncǎ-VXlyiWTT,؄Bbѣ+W_*UVm߾=	aNZ5۷oӼa h-z5>z)xԩ%8I)x&7L?4\r4^Lwww߽{ɲc~ta`BʕioXcge-[Фeȑr<!Vz@cccDnQ#(#[Eua׈#J6nI읜͛p.f:te[g`{N4?t[nunZ?⢣3p@mmm(Y=b (::= ؿ^CAUUUQeqqq̧M~U䒃YaK s2%?~utU8Iڵk0M+͑zXlKڵ=%%%p355x⊀//^&L ͛7Gk3 n߿ō?)\xg(2*ee/F٢EDp.tСB
+0komذ6 H6n8rjժ |k&~v۠5.\PQQqttD@KKaÆXoǏg]T{xxӓ{{{UV-Jqv>|@?雤ѣGU8I)oor|g%JHIw#!`k؅R ؝x~=;}#,.<fgfsΜy=ϝs^FY8
+3338Htyy$DB###{n޼{ׯ_ځєߏwؽ{7
+ֺukxqy#22۷CJ5k֬ypjį]o
+
+
+ oUO?xzzRRR@.-5BTDį#+y_vqVN67o۶Wk?lPUxyg"t>:_ajls@߲eߐگF!޾}>;9|ެU?7dW#>dkFFƵkڋ0k~~~8sA Y`ADDDVpƍM6544$࿃(RIIIM5`̝;wuu54,lHHț7o@Ez`` ?O۟WFM'Ij iii9{+$XSi_~٫WG4hLx̙3ϟ?v'Ѐpgݻw=9;;X}	ׯ+.IMկ_?<)eee|pHZB}I/̼to7"2w]YDݙ0իQRRE׆hff&!!1}tpPBB ֩S'>O<VVVBBh5jy3tzo_3I]WԄV{xx|2:::88Fҁhgh0ի\IM舿VVV 3f4k,11t#RKgB[įA 5oQ*]-!wCAxqѴiS	x##Z|1%%ۿ'''2lEݡ^zv ##qX-ڈUǋS&LTNG!%.]p߱4b\e˖222.(( ?¯k׮jc>s)S :!,Ϛ5k***ZVK:/^<p:T޽qA;vD[XXhhh#?~gϞ}E
+
+5zwss=z4!iiC\ƌ#R~$+ U8܅"""ZhAVx={~VLԂ௿B=IhN}MMͻw/]Jpm[K zVQQqСP>&&&Q'N@4hPkvح[7]Nf'糳Y&TUU]kLs|5**
+rM2iqƾ}ڴiSCMAI`w	~GFbe˖ׯN.BWˬS|5{^n'[nyyy(((@cw䒑f ]999_TTڻw֮]Jh(5/ϟv5!8N<VE_jժd\\\ll,Ӱaخw|H <聻wqrr	FNioׯ_gr <O³VN^P&L|O@0~mڴiWVWW3?{:tߟϥ~uvqq1sVV4lڌ3P6a4`ʕIIIuu51Y==㦣'ݿȭ5:52k6k,cc-[B0Y[n5lk׮Jk[n5118p 'H3"":	5JnV 
+I	֯_?45IUv+ǃjƯM8=
+$t.OJ5kӧOoذ~>}aV:BMMMQ%_&V~wEEE\annWH>rcǎSeoݺ@M݃a-[D~ paB7m
+ _VV֣G^zOk
+r&3!5$aܹ* ?B_۽{w<JgTLL<-*xjL,_|w^4+ŋhjo߲]Jc'3z~6g=ZG|ϯQԬ+Nӧ&aT@Gw={&w:88ʪfΜG<yӳ*[RR9a̙3GEE}Л_зo_46֭[׻woCyyy߯ULw" ~ٺu+: n7FAAA YxFHJJ:qB&≖(nۈ98"5'ɰټy,X j6k֬u,gAWCr]3avͪ~Ϟ=}}}qw``[J|'"rdx1!C9rzR$M6xd8.*	U(DԬ7 pē'O8֯_eCCCpOWWW>W. pww5kh &&W^HNNްaCll,shɒ%e̜[j5ft t	ǏwС~l`@;CABB5k<k6mֶGl1ё$)mV_+((@u -Z̜9yr-2g5`QO|Q;h 4{;vJ51bϟ?WSS|Ư Ȥ;Ed9º%ယ5!-[wj ڣG8"b<B"/?/z'&M "YXX(((ܾ}פI_ܯ;vw^mݻӦMy۶m#EpqM}v,##~Ffk&&&5Kȅ Eͯ"짴t=¤ >|ȬvΗ7ntwwIEEEAnKLL|11"h'UU}~h֭[x1|үQԬ	kJ:::@:ujذaFFF$ ;멂߿]|&¾wU'/7T0~7VkIem8ex4033Ύݦ(((>}ݻyyy0 sssX,mmmDCCC	qܹslpu@ȅG5kָq)3JEE޾ٳgcǎò]-!T3OH͛7[sy }&L|0Vʂyƍm<x $*=i۷o/))aZb	jքVZT;LKW\ۺu'p7Ν	VE訠/_laa?:ӳQF/^*@a6lذb
+҇! ~ ]\\j_KHH \mfff ,"(` Y^
+rٴi<"bKJJJ׮]6m"ڌǼ2d#""TUUaQ~K΂̯5
+`=6h>vĻw<Ν;9
+xbNB	B8fM8HMM600?ݻw,TII	!E!!!߿ek׮_S_|j*0(jxPUMBF鳵xFk,C_h`HLL	x26!۷C]r	Dl݂ B 49s&">¦Zu 㺽&Ν;wlll`[=ztAAv_UȤ#ر#ϟJ Z5!S[|yxx)S͛# b5k KKK!@NNNPݻwoDڼy37oSQ]YYBG(;vցHd
+ wVogg\pBo߾h"		VZM)y}AKQPP
+Ĭ]|y l!#zC`;;;\trJӧ]8zomٲ6ȶm"`P۷,,,v`!0); KKK()7n]Qapkׂpϟ?QMt={C;L8qƍl׉B\AZ}(i&<.Ak-ZuV_pYdRIIIRRb֭QQQ?~޽{
+klB6*\tiܹplsǴi&ĬAkLBBBp)*SSS[v(`зoUVU{-|uHwEJJ!^ BkFZMMMVV6''PlW>S ҩS'yy3f9r<[MMMC6hׯ1|r3; 	DXpp0%#(AԬ+xs?XB׌	~akB <~k+#_/#sCP	ݵkp\A29} tY;oj6l@@zեh8\ִiS9s渻rЀuN8%șįn$//QzΝZZZlFdTO- olllookaax(g\!ïpd;;;<2f:t(UoPV?O>|8s.&20_7		iѢq8ܔAAACm멲|q̘1(F݃az111?F~b6n\M04n5q|2ە	$%%\R3INu:\ >'MBBlf6ɓ*//I^b]ͯ\v
+GPA#G@~SYYY.۷o}PW@p7ڶm[dv]1w}%xҰ0kC!ƠfMh<yĉ=ի|N Wj*11ׯpC{ZZZ[ln*֋/p+lpF@Y(RvvZY1i&7k1k.]"!Ag7F@SG%t`5k߿ݻ7.ƵUdٮ?zxx?'77WCChsA)))WWWD=zǏg@Q=L㣢zqqqgΜAײ45@3`𘐕|bgg'//ˆ=t?%ယ5aȑgCzBBBdddHHHnpw`شiJ~#())_/^ 8#B.X Q:00u֢<4]8ߘ5ઈY#o@ ͳF SM&!!سg'O5
+
++V?^zu5((aj۶mi0n&ӧ=͛7/zeeeijjvq˗lW\v/sZĄ
+PqwwG]o~vRpu	?Օ,usNA!fMhׯ߲e~ҥ/^0+xY1^~ feewѯ}je˖Ç߾}f6O>SNE<&'N5k5ŋGo@QQ Buq&b8a$	ra_c*E3Itttɏid_Яlٲn	0 4o\MM-|={cwOV[:$\&MZhc<2xdHB9f5kF!ޠfMh۰aÏGKKK=o<cc0'_vmňP Yooo\g	/C|"%%ŧ?:аRQQYhY{ܸql7hZLG# j044TPPؽ{7ҁhgh0HIIY|yUGoܸc{_MQ\\焴<7:,-nbbJ~T>opx(`X}69   @UU-::NWWWWVo߾%3gĳے%K={vϟܹbz|T5PY"##+=׬	555ϝ;k.vPDll޽{A$dۍ
+>|,//G~E[߬qkaaau63gY*RPP5`,%%%{t 0[@2؆_'-**B9r$ە`1-=WKKK(xT88._zũ̩@dhL<;ļ<2֥>lRvA>BBBUeU955Đ&MXXXHKKmL
+X%Q5}jjj*Bh>{,ܡChuř3gjf ""db
+t(Єj*(G]K
+
+
+BUCyk.KƍO8ammM2$\N<ɬv=_5ooomm혘,pDttӧOmmmǌv=u{Mv;vYᡬS#9zrjkdBvځklWBAms1>'GዏSpǁYF###A:u"O>=uJ(++燬Z>wܠA޽+A p!&%%رcɬjTY E$$$p[hѺuk4P!$l`@;C f4ԥKr'r0՞xbZNN_iԨᚋyg
+g^nݷo:t耦Uȑ#Æ+((`ޕ5%%qj@ii)Y m'O$*5TPYΜ9%JN۷')%߽{GRy訪=zȈB](Fƍa6Qx ϟ.\Y{w|||QQIRR߷o_\]ҥzMhh9 cii	ri޼9СChѢU丹v)##[f^d	5`W^*((L^^^VVƍhp0(ׯ*uj/_		?>	k`aǰv(YYds޼y#`JssI	Y>l0aVZת>o:ğ0u2ٯ_?$D/L\tvfå?{{{Pޮ]bbb@yT֭'6E1kW@~3fTjj*7w"XJKKemm˗#`?~QҴiӑ#G2pvv&߾}#ٳիtuuSRRD9̙3*FꊇߺukllړFAfMh׿{.<5ܑJs<x@AA.??$BC{yyYdٳݻw?ydRRRdm777ׯǎ+//gEh6k@FFt`bb$NZl`@;C$G?F$<xҲeK2J͛7>|ppphݺ5ەK.YZZ?gȐ!n߾ÝGw]v Na̢/^} УG}!I) ݻw{Ν;xdPZbvwwvvq%ယ5AMMh@&H||k
+ݸqR}fhhѡCDznnne5#ʀgƆ8l0###FU¬-_	w۷o`ƍCi ֭[7i$0 ?YcիW&&&Й ůMJ1J֯_/++w:vֹ֭%N:U7nܚ5kttt\\\ ̙v+Qǵp͛ bZ͡`цT"kB)Ԭ	|{~$f
+~mȑO~~>(UZZ޽{
+
+
+$Pv+WDaRA-=z1D05Z jf]7<<$X\\,!!aeeb
+f5
+
+
+
+8pŋ+=Emkk@}AiF_=N*=i'jWWWEEE
+;J/OOϓ'O5@y ,KKK:UnXoGp4_<x0˗/1sz.GH!f'ܷh",0Etի9QD(p֭ X3k$7ӧ-\399fرYYYPZ-J3:?::C͚5ݻ7*k˗/@پ',lu	Th޽;r 	);|0Z!#Ek(`Ǭq~RPP蔐 6b2>pƍlנ\z6kPVVV`+t5YWk^^^'0,dgg×Aꢩ;w|ݐ?X~=SBC0 ntҤIklWA	B8fCM䨬/CȨQZUG]hw	B͍|2OX@gu^S1Aڵk'--=|p9{GӦMz{xULQƌ#%%էO(GGݻ ]?
+
+
+ŠA"Tllqeѿ{ƌlנA|N CBoۤI.]HJJ۷|f͚j367`TPM;p5TWW_>˱]j NJJhYYh׮]!eee/^((5k
+ƯhkkW8;R@W^a֊zzzzCΝ;W6/,,,`꼚۶mC~VZ%~VVb$~gmvį1a\NC>q8ȑ#ׯ_ՍVࢴt֭j`U5 ``?p@VǎEy!l^@EEEd{޽0hQQQ:::`gT>>\|KϞ=AXK.EA@ۃvv
+L&wT Ԏ4ennj9###aYo֢Ej{GH
+ o!}||pfbb"hYfpm^)g^go^ZZ{BTχݻwZ-:u*I	Wָqcu222 9 p[ܹCn׉_(`0xʓ Fqqq7oބl޼a8?gboii)htɒ%5vرcaKⳌ
+cC@ީʟ?$bVVVuEX<}qZZKbcc{3EKxjy.Y⧪2k:rrrNNN#	,-- ygǩU/3g<|jjj])))(ǏQ;vEf=z41k:5)SM4	dk~~~˩SPPPTeր?d133_ԗ/_Ծlzܾ}Cb&hÆ *88֖kAAAkïADYXX.aڲerN}	=
+VkB 5kB "d]JhMMMu릤Լy}W...hܹsǎCyG|}}I7yyAZll,1k8SNԩS%$$⳱<y>o
+
+
+1dȐTz2##C]]?::ZYYYWWdZ\DwE0(NgϞ222'G)Um۶u#~ϟ?7n8""abb2x`خt5cP55MMMccc1t'62P
+5k+**ۛ7#pav._|ڤIuA	h߿#5mݺVNǏ3f̐T5xƅڰa?ٳg ::5˝;w84G ĖT(jӧO3E'ܿs׮]dUV5jԨM6`O[[ے={x aaad12聼<42aTv8wv!9oQ7oNLLD5yYW0:w̛*tҥ΂lᲥdjS=*++yNlҒ@p5]Maw"n7nO0ܩS'77ׯ_.GAAA#ʼHbp)(jBq	M6E!.@@ 6-22]vWϫ"''':iC0uxϟ?슋 {zz]j(\aH_c
+Ԭxmٲ%&&+Tttۇqu&MqA)Y`͛-C꼦^BXFF/`"~7ڧOHK
+Nѱm۶xpCL"_daaiii&ֿKSQPPPJܼy^qa<--M,b8ɺ~5lQell(͛ڂ_GhhhNNN^8pO>III;54>ەUe熫,++SPe̙~zNѠ@Z=BƏUV1	`5﨨Jdps]tA^xQRiӆ)S)j:Ν;߾}ڵ+0U`ީA S߯vrr2pssGXfMݖl`@;Ca͛W!jDMMM0$(rysD'<~fC<5j
+elDΝ<Y cqq1\(8`K.	 GٳCGEGRSS`޽;>S)~XhfPae:j1skגׯ_SSTTEذa6rss,Uv궦^B533
+
+ :UZZ;EBRR233ޛ[p-===P(fDCH~m۶UfYYl-[&L`ccsI5pׯǏodd*<rih@.d64d}Nپ};xEOoٷoݻ}ѣGÄpv`R:֭[&NѣGJJJh2&lFEУrrrV^{]jjքS
+UNN.""w9"ަMtuu׭[6bĈk׮aOrrrӦM|V8dlh/_܏˸.]b:x	ŋG'A;w	ޭݽ|RPP4$>|ܹ{N>rٸq~jjjZZ"9"bxkCTwׯ_BBBF	k75j3ǌcmm+ALOOB\r%>>N,>'s*d>vYWZso)))_oP&=z֬YVa'JKK+xH2.?'oy+~
+l)Y@@̩SӼ>T	q߿f``:I>}W\Y(`Yp@\̙seի954w]8ϟ+_swwQOH=vG.],EA xgزe3e@[+GfҥgϞâEC5` XN aa5 %K*=<y/_GΝ;ők	d<Ç+V'2N7Cׯ_#?EMhjjϞ={-/ڵ+Y
+pL޽;,A4
+:I>bf˗/SRRowdr9p ů=իÃ/^@-d8y%%%Lخ_@yXh E3eͬYMp.ov{p~M޽{ȀǏ]|lOu*=A4h۶-!eee3LBVii)h,ȀXA~'ICο{n-53333~2٦(!/@ĬA߿?ƙ3gTTTw܉C []
+
+
+Qb8<f-[ׯ!˗/S@=Xz5mpƍlz\vMGGgÆO[d
+G6DKP!iggS,>RƀuXhpϻw֮]΁}sIHH0D
+i:t PNb.]Դiә3glgϞ%:pƎ;خEiAtt4ׯy09%ñ}v2۷oA48T5ƯŁԪrj{}KKK}}},EEE{+v"z!Yp¤I޿?~x999tu"@vqǰaÜF9g ;AI"	BVB^USS}&=k_~pѕ+W\]]*=<<^|	2~avvF```v_#ٳM<Y0n8MM͹s¬GIJJ#YuŊaaa'N`ҕׯIIIEEEe999n޼̠A:w=_ٰ@͚pо}{f=J5֭[F)))RAI}֭['Oc_ gϞ]WxSD֭V<_xJKK9_޽Y@|΂A'L@yMLBBݻ&M]Aʕ+Q$nh٘1c4ibkkv9<{Y/ 5ݻg```hhm !!tRZ&##D9w޲2"6t*sspYU@]jքj&--ݨQ
+fmm-++[ӗ)d=J:wj yʶjޞw
+ݻf5wRRR ;kjjjS#_ACHˀ\,)_CHDdyfgggll+
+
+3Yxȑ#p:lWkRaX*)!!!::NMNN'P& ^	YUUU#ϟ?'ACdYI8-Zv8qBYY{Ț_xcq!v;wn(_zռys+++\_YKKKG{Ѫyyy0/wСq
+34 VCRD5%,sM$**߿D'5
+Au#3amС111
+
+
+%%%>>>ԯn]tUvkŹcdK+XWϣ(9aO<3O $Yǎ 'kY,--/]2Ow``_]~=˗2aSkݺ5'oNc)STzBpC0S#"m|Dbb ofΜ	#qFߝ;wnCul߾he2O_+**\rEOO0ڹsg
+,NԂ7;o߾1cݾ}YfΝ+//A		~A߾}WZUtttDJJJ	-uVapdIINE=zŋ,h0t6.5@͚p sQd͚5kx?~#311)((x+~CCy&9LF7?d vWMMmܸqknn<}.\L5-((pG&MCٮ(2&X$N)kر7<5U&2*-//
+&$$ڂ`Kׯ_O0 .)>}z쩧׸qzZdAÒkxN>kXQ)))4סS4@P& X`85l[fׯį{.""m۶۷
+>a7QfϞ|jM[`=RVVvҥ;zh: ^t"Ype/Ԡ$$lTP0A85lO2~o,.h׮rjތ"߾}ct5wĉiPכ6meC.(_~˖-d;ùs&L A-Z԰_b3FנĜ100PhD6,40PV8{,ׯ_3{@Lj˗/D^]իo'O5oĊ:AV?vXfPb_޻wdGC?ݻ!߿?jV.߿;w4hʄ袢R~BԀӧ7lՅ'b삂שdbfϞD𴲲>|8vH^^mHL2Ŭ@kii"uh ,"ڐ!Cخ}uj@jjjbb"'?G7nlhh5=y	j	pUwp_<,k;<`>nܸ166`
+%%%+իv	R	W~9~iӦ1KKKҬ!*++UIC2@SH`ݸkh1qJ۶m+
+~));@***BOpA_mU
+
+
+qAYpmcƌpya߾}%%%QQQdE7o~}nݺuaN1AF44P?3ydMMM6)n:kkk={5/\p;w&v4h
+ۄZ^^kW
+c>d>^O>=$MJJ
+\^~EHHk
+j_{-kNeNGV<QWWСܹsqɒ%Y^^^Ϟ=sqqYv1j4Ewĉ u6܇!	ԦUtttHH2dnaqǜy)33ӧ@pWA6P0`Μ9#G˗/544`͛B,rss+̳b;vkpp0*<¦,aEAh2bcc׆:| aƌ௢"mDD9XLB+>>BD>UGMOg4",4 PV ~̙3ZZZ85 O}LL&K!<xi֬;jkW85:&\Jڵ<x4aÆ666dۅ%~=y6I&ٳgcg5b6󒚚/ָq}]̟۷o9܁|dǌ:KCk$ϿS .䔛j{9ە$ >vpB]]-ZwANjYNjjj85[ݙkm;B3}5ŴiƏ_u5`K-,,!iċ%$$#?ns xƩGBJ%&&d7h5
+
+
+`^a	F/^C j%=`^zE~کS'qԨQ.5q\^A%y 	lٲc;_Y1@ӑxd((5kB ,`.nݺ1Hv4˗/k`dƌUK.$Ƚ{`-ǿ	N#֯_^1l0yK޼yHYYY8o߾]LQ~l`@;CE T---DuJJ
+jնm[̏_ /FVpG{`@5j^|yvIE_WUUЪhC,ÇM>Ek֬X5& ^̨Z豆 Ԭ7nݪ۷L6m׮]ׯ_'Np	F_gϮ[GfiiI&O2qYrɒ%kk<1k9996bݻwH|MMM42|zxx8ɸvU(((K.߿3o޼y!wwww5%00buu{;ٳg۶m7nT4ĹspBzzz~hI
+EZli``@5
+ `Ӥ̠^Ə]RRFdArv߿{n<2xLpÇa|}}/^va)2YWyjׯ;v숎~56HG'''IIIڵkqAp:IT##F:Hw)._85ccc???<}_d#	TRR"!_9sQ->w\| JIIy⅝]dd$rQSS[fYD""@D})8WWWw	!i...ӧOzĉᰘ|#?իWGצM1ct3ssr+-(Huvv6hooOt3-->2bjLF܎;r7UHOOr3AÇtۈ|1V:~=zhYY!CtedR6o<4ɓ'f͚E橁Ț6mo\qq1F;.Zl,WO(`j*?{xxDGGرBrEV	GqCT!QLMMUTThb^~$EA:@ƍ<?~<Of[390GOz_b Y'~ܶm__Ȉ ۷nݒYKMME8'MWR@u[)SXXXԯU ԰=j(<}Ν<pOFN_#4iBF? ۯQPP400FqBZAAcǎ\}2IRRB޽{>AAQ!K?~?-[^B涓|x۵kdee===.]Jlლ 8"ҳg5k$$$0GO>={쪾rشD ssseee7?$ޅjQ%KJ?˗/9knnnBɳb^$''wEtuuV0k9996m@AĩɡϏKKKcNb&9#>>B/?!>.i_F=p@ӦMM222d#ɠwK>6mtYƑ1q=vWCgggPgΜp'y]{@rpƖ,1G&##_>+W]Rjք
+9`Æo޼!*,,mpm^7CXlY~:Zٻws,))!Embb2a#>~Z(,x'OEV---Mw+ڭ[nzzz]vE3¸=~Ѿ}{t +///ش:Pt`@+k׮}-d'!
+yzzr*䂣y!=A[[gϞkpdd=5{{{8מL4	~Y2|ՂgC֭	U?Զ~ 1qΝ7o'wGM6F7IMM5WX jք 	+ ;;wa#11ۈ8vW\T_kҤ	"0.F_R#Fӷk.PkK999ǏmZlޢE7k6,E- ٵkWooﰰ0KYY!kkx
+]zFFF+VAbbb?~zMK*rO5)S+)))^8;uJCk̖ɠc2vYo` ƍ<2F[h)D;"^AA!YkmO<	ѿGGGsss*vY5jDrt%4olll>}hi
+
+dKx=bHDDe̙էNС\v-;;ԭ[7kΝ~~~E A0j(0W.]>l0mm턄9?#<<531''ÇC1((Ԧ	פ]v,..@ƇX׮]kmm=~ZWh-^gя+W$ϟ[YYQdP2=䥣#!!G:5ԩSuuuUTTȐ߿ïy{{׫_(`L9wfÆ3P`[[ѣGX3332=q℁y|rׯ]FYOd={nFF?_cr4ыώ)S.# @͚ uMƹ	v]|,iddDF?|k`^^٨Yi@wb2#IIItx@ UA1f.fmC9f>|PSSkԨÇqf~~ƍ<H&SPPPHTTTYYeڵ^^^L/^TD`AlݺU]]@MSV)VX\'8p "rYPtj#FK6㬬Ν;mڴHSF!P&tM#Gn߼y3!":ggg/_9r$==v?L!ٳ؋!&QYCC8..Bi`D-^صkWKKP	)))pHݻwd?!,,
+GLQPPC	%%% {{{B.w>|pFF>|'O>}=lcAAL^-vIE2|?h (={\rE[[uMMM*(D
+t$&!ϟsrr=ct<KJA͚ Z׭['++f7[||{rr޲eKLLLUGk:5===pmPSa:56l>UUU6m.X`9gΜ0l;>ܹsorrrIbF6P0 j\^^~Ŋ&A+Zӧr Ƅ5 ׯy戮0!fŏTnM4IKKS;uꔓ_,rJyÆat$1Tgl}EXh fM|}yyyL<dpBCCǏ+))Adv
+ D5557vF]]CMG7225/]T[[<<<~71ZNB2A$Ax#¨lٲ8{
+JZnѣ%$$vvD2|u+W@@ݻ+33SCCEK!vݺuk)SȀ߿hkkv(~!P&2N:%D|DOOOС:~*::FS{%<1ȬV+2d>􍂂2ƍ/_e#ۃя3f̠~@Xn߾=(YիWVZbRNNNgΜ_[nAQϝ;2{lܸv21--J@UU,˻$@NNnݺ5,,JulW5kBͅ<?M6]x^6m~|-DόȈhM_g/_`a1}AffWp2%			!"$n޼Yv{wѠ<yuX9Pl`@;C޽{aR@.d| ȅ~$5	8ww#FXYYIKK3~*z!;CVV֝;wMnF"~zС'O]]Gfٲe:::d#OX jք ##7nx2☵5=ah߾}ҽF`<>ܡC.] ~-..N__% ܹsdddآ㒒%%%;䓳ƌ3H2I`RRRpPV[lab	pQї/_F133c|&8(??mHk#G0G߿vEiiiݺu>|xMJJ
+a|?Cv]{<Qt3 X5! \qk힞^^^&5k֜<y'	z})$$/::zӦMB蒢*III&&&#F3fݻ! SC@gB# /,Xw!(**"ԬXԩS Fkٲ%bdddcc9ݧO]gI:tH]]}ݺu+W466.**RUUUVVf}̘1UV{4999豍7=zͭ2R*fK<ƍc())y_ރ]C޽K,_~]CC|[U`VܮxG]]]d2__HX`pĉ˗/3$$$5jTVVE#`7w8Zaa!A@e	t`wrsy---<yd_p-DÇé^qqqcƌ{U!==]0vY9w^+Z`BA%&&
+W^)cgqq1ۥ	~Xhf>;;;f6BַoǏo֬ȔMۿ&M`H>={BBBꪚd#<Z6m`7_XN~pcVۢW4nXJJ"++khhH֣?lڴ			Bk̺ =z@b9:::tҚNϝ;_kkrK'ҨYԩS'Nt?oD#ӷo_N//<2jqFKGz>| '''Sph]{{maԩS7nIU\O>zяp.]'0~F[Ȝ9s7M7fr\L:Zm!--\!''e#\lll-Z	hsm}}P5ԱiӦVq5>ԩS\jeeexHYYF1<x0k,,صkcΨTv`B^C@Z	Ԁdl9~|ѣɀځPξ~:M6d?szob1ٳgr;www/--E7EEE\ZZ>p
+I6P0 Deܸq yyyfǌ?slݺ֭[Ғ%qt?2.ϒ:ãGݻdGHOý/a .G̌~|Q~~rCÂ͛;w<xw?Dݏ;䱳Jw򂚵zQ˖-A:5Ã_e<:Df<Μ9ֱcǀ 4888::z֬Y&&&>mXlT]tAGt`8f͚L4I[[{ĉ}lB\qi777gaޛmu\|9%5~"߾}	huǏZY666;w.
+$'ݩy/_p!P&3_ヵkdgg# 5i$%%a??zѣuU;5bWWװ0k㢪?,.*H". f䂢.n~K̥DT_\+^d
+)!*>vӰ0Ýםs/{yϜs	VJRk/(8pqNzIkk:u꠷WSl?p_~YBcm5! YfMFm֬Y3QeȐ!ׯGp1!,x˘N:5mζK.^jhkk;Z駟ÔWkٹs率GBBB֭ԪWfРA^
+Tn ]
+^jٳgKHhTbMwujݺuS7R-rvvFƎHk.[[[4FDDXXXh-|&<Oa{K:Sr֭k׮F޽;Ko1cD_=<<<..`ӦMeexΪUܹS@<Nl e\^z%ݻwWT	OyO}?kGt;\tg@=z̡C0 &uGs纺G!:#x4"4#@'%%mn"Ǐ@S('cCZ]6?c!fM'D\/r_q"UCA׮]P)lٲo߾/rCOhB+(f??3,ׯ_6m'OpW\yȔ5988+G-F4̙3!FF^^9ҬY3p5>nnnBCCT"##*uVIُkb>$Tgkaaa|7ܰa3W^!*h@^1-4^vMh1i ۳g.1DTk?Jz1qEݻjԨ4>&&}EqVQZA;faaakkNM "1szꉗ)((HMC,WE,WћwR
+I\^jժ"ƍgzɓ':urqq48qb͚57oޯ_?$N/^USVIHA
+w^$3|QӦMRié׈Ԛ<yDS\czzEУ?ŚQүhX>|ںRJB	ܹSƹG)lo'mll*W}5N)A$;
+eA8.MFc'6	v %99aÆ,.تS.z233={ֵk+Vԯ_MtttQȦ.]$zMѫ$Ф3ddd@#[YYz#r__Av{tnܹ QvmέU[(7v={]BŤ?L+1)ִZ"P~~~[l177wppn|ILLlڴisx+Jnݺ/^:,߿#hqqAѣ]v\'OFXd	behh֭[x㍙3g6idb[+ 0gΜھ};7->ݻw_v/q	rcHheD\\\XXؽ{<=={VZ{m޼lްaիW嶈##GSv﹑R)"Fe)1B>hcw#EW(Ճ}ʔ)iiiHwQ3%~uΜ9G-	ĒzKSCoῨXb``gFZju|ѣ4h`eeynkko={n|mll%"XrM0 u#e˖AmcUĈIݺuC0B
+8qӧccc *cz{{#A^~z<D=3?WK.o%uqvvƷfҤIϟGvk.m$BTTj#8(85kHk/Tg*w-?e˖277_!y,--_F3O<==?#___vhŋ+J>aaa1k,eff}6 ǡ5jԬY3dPmڴ#^b;^f͓'OCѰ:"`<zm۶p5fffx)O>7o6z"}	HE5jny5d۷f(zEtfwA:tݻ|Hi1̙3bmll5WfРArG[(Cv֭4%	߄ԒV(kW`cbM̟?J#׼
+ԩs)oo?<,TC r9;;K-J\244رcjBRٳ'&oѢV5`|\rw޶P~~~PjyyyǏoذ!Dc||<6K|߿m>!@ܨQ#p;>DP07nD^YjUTTԺu6lPzu\, ZY% رc}}}?C5Q=)tݺu%''#߾w"rPPǍ76ȢOPň ;;[AQP`k&66V1-[կ_!!!K.Pju
+֊^*V(RSŋB=5
+u(U)#@l޼:4N!	 Zʕn݊tJmȟ.]ZV-CkPmڴi߾=IcbbD>5b)pDY^R
+Wb߿p_GDD@l*_ԩ ݻjSrssbUX5SLA iOLL[pqqJMPFcRSS=<<<==Ǎ_n8I&fff:Fdz#R;c\]]ZKb*F.Νy\R{5.OD-~ĕ>|Pn'O6nXÃ5wFbv/ YBeJMn:-kf%w)_|Q#A[#G[jUBTPnnnv62N>-tZ6m+Vػwۣ===Xjٲe~oBQFd:bGpX1ќSNhlPjx!5R6h]n[ICk>w\͏OLLRkذ.^IUV-<w>t<xoq=Nm8yxx8F_mlݺUE7n9p7nܰVrʤ$''''h.mr[}o!e9Ν;RCQǎ3{{{ZJ,BDvuus	)(tW7l؀4?hԨK/$t0`			6`޽k֬Sa<Q0rH/Pm|őg#ѱk׮Ϟ=0aԩSodX~}Ŋp}||ԩfii	w	ޟ~*U*5Nl ́V\ѣ6mgfߦM5<\ͧmOXxx{"Pǎ3-[nirr]ժUrsso mmmk֬ik|̾w^d_}oR"z\Śӧ_|Q1PR.H!y߿ASF }Ih8h4H64B8L2'k
+
+׿7~ƍ'&&r>da eLCE˫I&;w~]\\RRR6l8iҤ$·$xfx?_|I+W6mQQQcƌ/Yf՘===xݻw+ٶmիWr@!YdzVuܯ_?5弼w"F#y6bM+_a7o޴W^ZZBp	(|H/KKˉ'0iݺuÇ777|,XXff&̃۷ovBBBwvmMW7[ljRE\-pPj'O !jBÚ5k:::"?@p1..0a{ Unh·Ԑ/K$SgɸsAV ؛eUT>}4G&<<W^|HRP隰0MDVZرcGx{{VZAu~ӧ_|E_`~I&B#6m۶k׮E(_hѣGK1-PjDC6n܈oZV___UH4,"8H3:k֬Akp/Pj׮]C
+nݺSNir	gϞ7oB[xӧC͚5K0*ѲqҥK(3@R3 VXCߪUL	J
+ؓ'OV^}Im-kZqܹsGĎ={[n!9sEXBԴk̬n޼	ꫯƍ͛7Gٳg]vE,-$6m
+gnn.%$#DCmIOOZj͚5]\\R#s777mMSضmWVJrrr^{5LаBm1](ִn*>l
+e]\ggbDBTREΝ;89yyypjbD?QF8g޽۵kG	Bu_		Ao۷mll {쉔cŊrK1|WWP4>}6puuʩ:wypډ'Н:9!%bM5$N:ԭ[{ZΘ1cprOOf͚ݻw-111pbPbƣ(rY'''12((!P/FgJ_gs<<<:eI赥K"^@$X8i}q	_jii	jd&/_7nܨQ޻w&'';΃!i*,6nXvAcz2vbMGHzaÆ[lPEFFk%..cǎkSN_>NknݲMCΝ;&">3QT|Lw]9MFtժU<&MԶm[tQNСCݺupBaRN(;2E@!WV-bAGP.@Hvm޼ڭDop777q6l؀;wI?H?>6׈PPjHC"CYl"R3m4+[|ذa
+e=cFDD.9laaP-((3f̀ڵ+G<qD2n#{{sfddxxxXYYUXѣ{~k<==ǌoIEE֠AO>ŋrX& ./_,*L4	xtxb_cHz-++A4B)V
+|]|lժO?g G|T|eyDENNVɁ^ԩm#1E(t
+0Mч}w-Z@ğ_=44,kGT͛7pr
+PvU^ϟh8;--"N쫯ٳ'Bʷ}D4<55$Q1Ov$N~~~m۶uwwG@r
+BNl +W"*@mcc,Z5	\ݺuõ/:uT\#tӧO.\(kCSh
+SO<^C^~1QYؾ};֭[]|/W^0nXbc?(A,Y7nCʋǟ8q,ٷoÝ  qiӦAUVݷ~+1GԈ&faa$jR;K/$!1_RCˏ?ߟ?^nʜ9sBCC۶mɆk(Wr֭أGm4bŊSSC*U{֭[_cǎ]ri˖-HSRRVX(XREkkkh"(b' 5|&9r'߱cN>` Ԥ˖-(i,--ᓩJ
+HU܄@B oׯPjrM?6yd\Pj^",Y++2*5;＃͘1C*%H|lPjEt]CTk?# Vj'ZTjhrʪJdggjCڮZJՈȨ[1c|HRJxF~~~YYYrǉD8ztJM{kkbJ_%(;իW,--|H@988 +R+=wFŚQUjO<XhP}x(&LЅm~6~MSر5]l|&f?JJeff&֯ɨ!F;w,!myfGUS"8~M+%Aᅿ!66V~ժU]111gϞ-o!ÄT*;b%Nvڥ755F)UiժՁ5bQUj5777tQQz#k#֩WRE_32ýpbbZRRn݈#]~5Νwv)^fzcǎm1i(t͛7e`QQtڲ2"U?3lkM6U̙3~TQQ^suu-I_Gرܼk׮ vAy{{#*g;9H3RE~' 8qXFV,H<"ƍ[jդI>}HV#g@2#N+!zaÆGrK(/	nR&g`LP8ZjirPjNsŋ%yUv3TO#dz#jzmӦMpE
+1ϯf͚7n-Ф
+2;@\\܁bee5`X0Nkذa|O!HJM۶mmv6&M ^+#FX[[Kk=Nٳz!uiܸ楮Н qE[>>>_ܗ)BA{^~ʕ+5W1sA~.&O
+P,իWņŋ$EcQo{w \kM_7|C(5m޽rrӐׯ6ĚB^y. ˗;::f--bymc@"U?~|͚5iѢb65PU.]R(Gll,{bGʷO0A(5'O} BBwB֮]+X))))5*ԶmݻwOX^|ݻIOOOi 'r-uҥ_~:u{W9%vM{{{*#5X</y'6	v&22VZ"?|06!s4Ϛ~+W֮]O?ǎ+@b
+{I.ӑ@nݺEuI!}gʅf͚ݿ_X{!/\%~bM;vzM>|8s5!=zxⲛ!	&XbnYL{Nׂ!'ԴkM6utt!D+̛7rի
+_7n]#iucbbuM4Q(Z͚5`ma ѣHEJz*ׂR<xk&Z^^:6(k:ŮzJ
+EJM 5<%%@&޽49'o
+*!zҒJ-Ν&RHzmԨQHJY=D	GAn݄.){EbmJM ZZZ	5wAPB+PjrCUZN_}4[
+&֯'6	v@5//)5=	BlHVRܹӨQ#t'''~MbŖEtNrʈeb{BVz5}IEu}]3fO>)0b}X6n8,хͦXڴiS!hO?wޑ]fiiiffFV"R?~<ǿ^zIkCE`TRE/B7b =#!ԡX)			/f?mVK:K
+cR
+D(dɒAև4f";w		QI!eDS!6G'XťvڥgHJM Hzێ/^TUCbc6m5!&ŚNYn]^4<Xu֋VQ74{{OZq̙GV9d#@qwwRz'6	v#@~' SS7BFU)	ݻl%6cƌ%w*VVV9997 TשIF6Js`4P|5sZڏ5	x)So?uqRR&={6f̘e˖ǝ5"ϟq?S|		ڵF߷o6BK"kzJjݺuC#[z"0a$! ֤]'N@ڀ\M_QzŚNY`!C=ڏZkU/ZAA,YhRk>K!EPX~ck~^+H9}ʕyE5侚RRXG5"#keͮ'O̙3rHm6_UOS|Ma'DH/IQQQk֬)p{)^7ݺu7I>}BCC?믱wСe1qg~7}h,?v'@$xiӦk׮nTk׮vZm_tY*
+e@ݻwǎEپ}j!))yǎcjj*	>QDC$-kZgӦM5j#~q㰱uի7h(_>((HNW^(3߹s'qpvvV$ȚgN>m_qhLII:B!Fȳgzc2!<so+7/TժUoyHNNFm6/ÆbMHzm	ӦM3DPU굀CQHcggg6m|TjBt^CBxJM(q*I޽gR#D[P!c(J-p6СC)뇇Si#""Uj@$=XBDB9U:kGFz@f
+-kzbŊ666
+իRBUL	33 *5mfnn>15B!ZݑnݺQQQ-^CCCFX[nTToy7.]bo߾*T(ڷ`kk(֯B!gϞ:t
+$==4BkC#:?
+޳gZTQҲG,uj5,"@	ƊTQÇF
+)_XgۧO1b5] Uܹ3զME;|ԢZٳg!IP("^#b~T,''s%U:uĉUCB#!ƃj+W͝;\l*OZXX(y{RR
+HF!Dw;bcc###Uk??~'4V?))Il^+l8?U矕*UP"˥8H3{QX.Z 9rԢVԨQgkB@]?^ziiiE`(3fPkrpp0bo*!rгf͚-[vСCϟ!BS\]]322Bnnnyyy...rF!ɀ-[
+;hР%Km#!ŚNZBSP{mʥK嶚hNl D@$vՠA{j*m$B@S*T6e[.$$D%--^zrE!CEEE}Wr[G@;mllBk<~Zj.\ZN:#]B)o~WGFF&$$m!Śyf嶢;=z>H/Dpb`g "!u޽{O<YmoXX嶑tŚpB:uB;99Ie~>km!Bdˎׯ_Wm		ٵkܦb<P'Nm	[r۴i#EBQF4H"xXjѢV MwٴiSk.#8"@	DB3ܻwZjgϞZ~gm$B@;R<vǎm^u-"BlŅK6bMwlܸޒ
+3{hl$$$DFFm!Bd}||N:%QkcB
+ggee/ߖj}8H3{bnݺΝFR-kZdҥqC999j{b;W_}:{UVOB+E-@@$=HvYf]toƍhqwwGսrKtBEݻg5j(q̙G߮>}ڥKzK,5\/h"@	DB3NNNsD,m/tvQeǏ>}(5fAe&M6lA@$=HB5o|YYYTj B`X 1
+uָq?P.fZe0ԙՎ;G$?uZ`mZE)Jr{:v=<<S3@kiZkpZZKke4zJ{D)Z!B!D[3B!B!B!BǏ<xpϞ=ϟ?"iii5ݻw嶔x	il߾=///;݂ɂ$:ܶ_[y1t&("tV@Ĉs^˿;N6MV^ܯ]&E<yrndU}r[Dts%W9R0D-[M4}Pmaaar[D[)))J"bCm)W}/3-,ŘZڵ嶈)JP=nd4z~O4G6"'G-LFxn`R ~L+#>޽{wrEd _?-&D.?JY| I!BpbM	5(b@SRR䶈QQQxb[~@`dLx*5ϽLb|M3*ȵ$Pb&E5tY%i=xxB\n4f"-߾}6+b_LNTTibM35P+Y&FX m!R%$pB92t&kҳ2SCn4QRȵT QXעExMAJajkQ:.>2+3zXD5".F`R~ڥ[0D۷n4 ׬1`+~7c!S#X8pf1D1gxwFPI@G'jNN`	/~ 9#Db&`~DMbvb#FI||ZQtD,-~D?n(-L<Ynsx]c@M<>zR t&K ݂i"&$!B!B!B!B!B!B!B!B!B!DG\n숱i#V1p#B!$7^vm?c>B!B@OyWB!B$A%ߧK=l"¶#VyZ/-!!oi)_28uB!B?ڃ^<P<HYar` $݁KB(.}7m#~w6NIB!Bjb/Xv)gWc;BT,şLk_+^P9	!B!RXJΑUo|AkB!-kѨ1lھ\EnNNn}	Rnq!B!hR5ži-^쭜Ks&	!B!hx|
+iv%e1%B!B{+##B!B!B!B!B!B1\2
+endstream
+endobj
+9 0 obj
+107429
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 59
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x\gOM?W#*AXcWQ슱w(j^b((`<\Ϲ^{=}ٝr5w9(PZZZ4	%ĻXP<\z5&&6,m\ߩ߿;Q{]jjj6m^~N;w
+KKK
+
+QngS^x<_|qDo-Q{[u:\vׯNVdϟ?߾}7=WCLbXpBffvstw֬Yݺu{^߼yKaF}}:Zo=B;>~o߾= h7AfI0G)Fr.Y_o/^8E_Fբ6#JMMMe]p{{{AEEE͙3\Pv
+d'1=v)++k۶mbbzRౄT9E>}6{l%B9]999%%%>}r]vV2_{Y9moa<HxÇ:uZhŲ=;޲aV;Wc֠r E8'			RX ɓ'NѳsMp=uСcƌ	8zcrV^;АZBgk5Ν;CrBx.-q)7"SFFFmNb@2_O>ʡ{~מ<ѣׯۄNG}V@P	 ¢]ɱp>><--Ѱ˚-GϟCϴ=!7oޜ9sUWW=\SݦһuM)zٶm[ll,8)lD%=8V{p=2H._xm۶W߉0î]𷺢<MU;>|XxϟPsrr`5X~It2H}}}UUSZ&=ڊٷ3ԩSL7;WѣG2eIS`OK=WǏkYqqaA&``D^`'k#DɰzM=9{ldd$۸MՍ@#o-ǍGӆ򠼬kN{ٷo,h۹sYG{ۋN8Y=z]tiÆf'OիfӊJ˱=_^ÆKIIQ]'IҥKZ_AT
+XEȎEٳ'\U^46 ZԀ=w*cp2'ҥKi%ӥz˾!y#FU8ISRb^ٕ[ʉS#`^rŔ<q8ǎrJ:S#5Yڰk_{' z`oy>eÎ;Ə+VDxt[@4dNG_gΜG޸qUWTd䪟.k.y˗/Ka
+0XYQFZoJj`(傰>}HP˯P8rCctڕ񩩮yl7%+aCaݺutTF/\msRIv9r$Y]!RPPe|%@qp(Ixʛ%Kwp-͛7 #]w	/ 17OtАp H%5jK= M0@@6!,,,d!y @`\b<=oe˖!ijj3am۶+=N2eJ;lvSZZZ*0V4ҀC !өjll$z{_1&&%{VkL/WXW: tXYc%~z7I`Nt!Cܽk8E9pɓh]˗A[U\߉A}v0.x"	k*3rkFyCнHf_xM{471PW t]DDDEEN$7X^5_.
+xhр0H3T޽+h>y+DT"#
+'Pi!M.{YHaF
+PB;w\eTq	[	z@޽{7?	p]Ο?o@OCCK^z2h͙-aܧ/zp`8;ztDX8
+P_lyQn\-H/_Z233zEJ2!hf͚TSVvwH.\5iӦI%Y7j_Lf+X4tXU'D
+V	J珯Cl[pB䒹|i$k\,lČ3x"b3C'*//oXbEqq/ѱ+v% !ЄR'NְpRg=p׾!#&#FAAfYnJ;ed:$;99[2xp&!%K."Yf׍T;vf'ek"^~Qe7=k9 wqݻw^PeP5ʌ+H0pCFm/y7׮]Sf`!nAu޼y]KLL5jBoQ>Rу[`lF3|$&B}U
+AQS)3=I|tP}a!2 ɷXH!u'4[l]5CrÝ@%w4̂5G*L/ҽ{w;qX;w4^`	(*#GXH9sPxz'S`\%c"W:+MC!J?Ë桌/#=ro\@f_Chp!y,*?1t9
+!V\
+79O j gp"ރ6sM>lSY>U9kހĨ1D?S$"^C`tp@{bmsA!ń0\0>gwj6>$m 352$E$b⯽5=6TJ rj2_ ,68-1@WTTZ4E$[nB,с6"D{ЀǻWVV744#Smh;Ś l|'_mX
+endstream
+endobj
+12 0 obj
+3441
+endobj
+13 0 obj
+endobj
+14 0 obj
+3441
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+3441
+endobj
+17 0 obj
+<<
+/Title (NodeCountersChart)
+/CreationDate (D:20140209184610)
+/ModDate (D:20140209184610)
+/Producer (ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000302 00000 n 
+0000000386 00000 n 
+0000000404 00000 n 
+0000000442 00000 n 
+0000000463 00000 n 
+0000108075 00000 n 
+0000108097 00000 n 
+0000108124 00000 n 
+0000111706 00000 n 
+0000111727 00000 n 
+0000111743 00000 n 
+0000111764 00000 n 
+0000111786 00000 n 
+0000111807 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+111991
+%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/NodeCountersChart.png ns-3.20/src/netanim/doc/figures/NodeCountersChart.png
--- ns-3.19/src/netanim/doc/figures/NodeCountersChart.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NodeCountersChart.png	2014-06-17 10:33:13.886996016 -0700
@@ -0,0 +1,458 @@
+PNG
+
+   IHDR       ^	  QiCCPICC Profile  X	Yy8U\yysD\5u	i0BIRX4I	"
+ D2|={s^{{}'EE R-=< x H1QF6A^xo?
+ Xq (
+ HCQm-6	 8- hI$J0 .0: r$l	x!\DMb)D+D
+cI	[/EDx,%K#|A_f27tx?p@@2 !67 Q GVο+eoprPI!VpN`CPAds+X*C zȮv3@ &iSM9!&-Jb>D1ߴ#b ڒ'mjgKHm6f~.ADQ7l'Fo7nI4&ON*y
+%mߌW3ca' 6!o?r\| @ VM$,@""!Ov[ Ri+jZF!U0Z?3Ù,q8?75Q`ǆa?`oϱߒRr
+%ۂ	(BE?<	:c80<@-1@!6ۿ?|Z2꿵c?o)֐A oNMt݌n Bt#}w|;{shGZiFi_[ISaQ	rpUBV
+rB*Jj l< ,8ni hok4	 @_8!	YXJܖ8|`0/ Q mR@3gvAA:'ipP4V	AxFalLY0UAaEADET-D1ClGEH$IBRL$9\B*my#/7YAQ(6?JBQ(oT0*JCGEQnsjh:4Z-Bў 4CkMp9OÊĸ`1ј,9L 3y|XY
+ce[Lbp8$N~P^\<w׏{[xYOS||~ ?ACG#HBcNIIBGSEsfffVV֞66m)mSIU3AGp&	g	5aNNn Yktg7?N_NH =Tqb%A! CC= gFZFqF#]y7212I0030ffZbfeVfg`bb~<͂g`1c	`Ic)aigyǊfe5agMe-e`dñIYe]eeggaWcweg/`>8qccӈ3(g 2/!W WW-sn!n30lq=<x:xxxuyy3xoC9+[o0'0#*/Hl(.d$.tVм0p%^UIZqQhhh輘XXKqZq-3]n%$%$$%%ǤRRRRϤqZadP22!22OeQdrX9mHbayzy#8j7
+
+6
+)
+
+=)++**(oWNQnR"RLjz@QZuVu[mM1M_Ba-6-,Xmc?u4t:7tVNot;==%	}!}_$beSFFFW>+So/3o6005c1s1;g\<ؼ|Bb}KeUv?v>gFƆbdn{vN.Ү[ٟwtvaGʎI]NN>NUNߝO8Hĺ2zV.M+s {4z=]=<v<sK+k[;.]0|nb}||HbҒ_߼ À܀@ `S3!!y!sd9PТ0p߈ۑ,av%5}:zbM)Abclp+{(M~\A܏={n3G$$MJ4Oo[pRrқ}F.Go; z AɄ')J)9)nMii8TΐNI>{HQգGed<T\z|Lcǃ8q$dɡlĜwlO
+f.9(O-L왉6gO毝9h/e\$_dqX8WWԵ2̲
+ǊU|U'Qձ3W]5X#_s6{uC7oԺYS'^WxVF=RP?0{&ݦ[w77e{^ڽĖQZ[ߵ?{AouN.z<XqCFw}zϭ'Onj?|اԿހ@`3g{OLeуcرqW|_KИM[;y6!oJprZey|ΏQs韘?~\KϼW׍oYjmKKG|_]Ϯ=kMmDllD(   @  ?9"#b3L.`@J@%0BҜ%(a^e 22dNa:ykG7 `=nQXTtK9bRr!}T`Z2W:uk猆;LnXdXXN!8qt:sIw=vƽȣܳvgWwۮNnߧAaр~B-ÂD\۽Iъf/a q&	O`U)	+69v4"pfiVױ/'O:fgt2v?3wγLa"ËjKE.{QV,j2_Z{|:[Ɠ<oJF+ӎ{@Aww={Tҭ=ՓDDo>~g
+~>&hy胱_MM,y]{Iye_^N?iX7{}ڧkT_m~QkpYݕ5_ppDF"Ga,*5	Vmp߂N5hz	st0 #IYővcۈgUiqAK}"xu%vJHΗ)- J!E1\QYMUeJ&&Z:@n6/=	/MGٌthH30\dooig`/@tXSsKkŝiSKܛcuY{	Ѡסa/#^F3$e6fϛ (W!Ic~.)i7ua8ᑹ/X'5rO֞r䳜(+t;OWtT1{EiOU$ͮ\M)6sxS~_Cvc;#w*?` s]>N{+T{{s!a:/G=_N(^{r߇is.}QbW5s%	N1qE(5Tjmn(aj6;nKK3M{OKoCbgd"2YV4%cGt&"%wT%"%$Jݒ= '$w_(*Z*)(k+QTT}vB]_}V㌦'|m3y]݅mEz6z?K6(*&uff	Vw66mivDg;UPN0Fb]>xQB5}}_-+_Az!d,y&I	޻d)xR[ئ=	.Z{ڃ,<)it>I:r''sZ];+YB9E%bJI^ieʕUg{Zo݊0|INX-lln?m#	=<OwU:>kz2&M$uş75@I1 nlR9 U gmH	X]?,	5>+p1ESM9A`4]CMއ@? i|bm&"N	W[h44մ(Z/;~B*yvӻ݉c~3ь+Lǐ,R,fBs8d8pprmŏ*.
+Êu* [!*/'Y%eZ!˪{Ԝ545~i:9{<e/n@kQq[f-n[޶~ݺʦ]=+;N)/Uo]>;}CI~Y\φs
+ϊh%J9s*NjOl|g"^j~ɜ)i,09FpNUnQޝ|/gvmTWzsâh}Q㭦'[a]\]7|=z0UDۜ?tN}_.gx¼jo9Y<<; T`d#u0G٠bQEGEۡQ\Wvc1CX:6[]ipwXGhh,z'
+ѳ_ ZY,l[9G'{/:M>*:d!Ka&QrQ8=<iY'^ZlE*O45ij7ҽ^~AaQqӇfS?ml2wwpsnwt);aW7H_|/M}BF"#-w.j$'!49i_{9Sz$O;Z)UxDA`NYglΎ]>v	Gϲ'U-WjjUݨ+jjrlV2~XG.O~45ec<5ĵV&#ӧ>rf-}vr~~{rğ+k6طƟhcGC$
+t!_Ṏ5<ǩBF8U{y
+q%?@ISBAM`')ӍЧՉELlL̹,¬غ/qέ#ʷA_UNZLT\DdԈ̆R!";j4*Z>ud01eggI۞cVn}fGo2WS_=vy:%%}
+L$GvFFDDQc$O:ǁ/SSJ=rdq֥ȉrNK<%?ܻB//V*tpz%ӕjI9y+~1N]{m4;:WV<v!<xo0a(rDѸqW'xTGY9_L~υJ\F{~_v]a+!+}k~k:k~cF5^1LX  zjz	L6 9̛nNՏF٧  iTXtXML:com.adobe.xmp     <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:exif="http://ns.adobe.com/exif/1.0/">
+         <exif:PixelXDimension>1167</exif:PixelXDimension>
+         <exif:PixelYDimension>645</exif:PixelYDimension>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+w}  @ IDATxwe';+DBdde&Y$4HPJRY,dDf"Qf#{d^ux<}8ι}_u}ϸ|r"=D@D@D@D@D@D@F ƣሀM@jMv " " " " " N$ UјD@D@D@D@D@D@jM6 " " " " " N$ UјD@D@D@D@D@D@jM6 " " " " " N$ UјD@D@D@D@D@D@jM6 " " " " " N$ UјD@D@D@D@D@D@jM6 " " " " " N$ UјD@D@D@D@D@D@jM6 " " " " " N$ UјD@D@D@D@D@Dj+4iҾ}WZnݺyСCLڵk8qb~yr-Ka՚^D@D@D<?no/9sH"3gάW/_nK.![7NVc95/" " n"f͚UV=3
+qM>lYd9r>7t]׮]+5XE@\ۻMDGv" " "֭믷o߾zdɒ[[dIFƏKmԩRmzmۖ-[ֲebŊ4_VD[@? %,2s^ܹ7<3p]pa˗/5H5XܹO>6͛S.,9͖_|kxCD@D@&pcǎ=SM63"6mÖ#Gɓ'RH[ZԩqeΜy8fϞ=o޼;,QDSp5笅F"" " ";P\&Lصk3̙c	6<f85=:u&x|G}5k*Ul]E@D	l!`Gۖ9`kdYرc"-ZdkԨoFH%Պ/~9RtL2Bq	"{jXBG"c8d 6[|kYwCD@D@D &0XӦM	w,]ax&M<3*T(]tVёqQtdĥfIl]E@D[si" " "?i֬ѣGq5l"F%M4R S6xԚwR3	ǩ#M@i.j_ꫯF?rE%(O/2´if̘QVdnݺϟ?C!#K%8w#	ŵV" " " 1	Ӈ!zzGCo*U"l7tS#7oΙ3gxZ޽s>^D@\B׾5pJi" " "}/я^ĉk֬I~%ҧONkiҤ	,:t;~H5`+o5CgZ\_ζOFgGۦY%$g1ؿ{ѣA+Wc_
+"fTyGa#c-Pu\ǫWp52><.c4{NT8C`ꫯ[tiLd<"gΜ15E$I¦j+W2eU%fbŊ59pZOq
+	1 E'N/?FQ_x(H`!C<dja بGRV-$\&."Uj^	%؆l1-Kx<#Fxǈ,[~AfSHѦMÖ;w*dɒbj׼i}1?'֎CwBj0" " ":l{O?!(/T^"vwΚ5̈4CZ`]v5hЀ#kfXNyӧO:("ES&֢hZD@D@|J ل	u$PBCac4Kgc!*2_|$թSjRgOk" ! 枵H#F@C벆e	.[HWI(H):E;v'XlR ZUV?qD`Hb&5{'*2C%D1k:]\ˁ_n<uvt۹}zq7nƋW;#ǥJ'z@2e;9,d		Se[ad;w|7oEs̱&Wً/8cf	6אvPyA[%\N1`/=m.Qa'~᫪lL.nl쮜R帍RkFE@D@D@B#_^MZ["ECƌz꩑#GUtVT<ym۶@DW@lVi|m^,Y':qzn\w]~qm{[#[ܩ?S8~ߧi>}l_*OPl3BKeXٳgO:uÆlv%KZ;vD*T09lgyYfŋ*ĽUe	DdZ~኏uHX?iWUuԮsRrZ{fWnǀޮL߭=Z<S&WƬ\k}.v-BEe	䏓d]g&QK.7|34
+?l5jM6^X9lA=䓫W&$_ޱݚ,!n>Tf91FX.\UoOҤ8D^5U%۔~Z[6hqUw(Ҧ-"?%GWj-XrND@D@D 6nH&Mw}ÇFo	6ǍgԩE6St`ȭ[VpxSB9pJ*M<l4葞(ϪݽYRX/˸cŴܖ?UiآRΒ7Qi	۵]F%JhגvKPPj-4~e$d	a&dZ%K:wLp#Ikl~=zhKѪU+I$>1ct;wl;2eԺu4YBHuiCEwIkv_77=E5-Ske{(Qdլ~t
+Ζ#sLVXڒgjGg	5;=:
+osJh" " %l2hk׮#5ͻxbblȶ>ҥKL=mڴC\>쳖-[~씽nݺ]R2gΜzw:sp*ןFk{ѫv^<uع3Di2ܱgfC]<vX43[ۼyŋ{޽E3c=%|s&E~BD@D@D6k֬aK4cײe˖,Y2a߿jlM}.StD5aN@ݺujT@Ϟ=1yT\gSyK8?i2XRx?j5הjC_E۷.:B|9~)S-_Zĉsc=2DD#b"bb [Yoʉd#F?tx`Ŋɓ#fZÙ#ϛ%HT9s&7H"^y&k%\N1ع=z?o|.3s	о	(QF1s/n0Ǒ^/!_>ϱdcǏkJr-6^F,V:D(%DӺ1"{F?z맟~J#`CM04Ovr،`O<^F.%ڑ18p\5_,:1h5D+͞	w$=̙33f̈ WuؑSd3z<s.5M6{MHtHW$^j6rq0Ǝj|}[*Epz#ݷԂ@XRTQt$Bl4՚2aÆCc[Cl(VyۡC^Mk3)$nיzX	(!V,><(K_m2-[o)>}zK=DdZ+lo%{?%:1'[4ZK}5&NR&<N\=/b=h,f'J>־tP6d	5rd
+66>{,p5{7taC}(4wv9WOݷ&K?mϟ)cp#x{IZ;N)q*DQ(YfpyH?3jqm಑z͗x:" " " 	"@A6{=rƏ((o~ǩHVl̞=7$Nuo	cܹc>4֏xqj-M4dikp-ٴixKL&MJ]yi18^x1>[Z$f*KU)c޽J!#Y}٤m(Xt$k֬M~qſx=Y~yrbσ2{gXk;v츲۵kK/wo(6q
+$	F-;M7xsW" " "jT
+d6.WE<z-[6nܘ͛7:uj۶mn+M=(}*x{jPD DS &n"\ngmm/Y:uj se7sѩU5?Ψ5Z`7II<[t)#FXR-W\Ǳf'DHFN63ɋ@#!7镎5^8xM$?	H'Orΰ 73HTzPl,o+|eq18(MR*Pȑ4~fFLƌ"#d`c#5kF\SO%ܱ=4X#!WۢE^?-TTYժUFi<l$Q	&I
+{#Ao)B>9w]Uy!ytGj_D !vML|8xG}bŊ)Svm~-"dʐpGa ԨBۘ1c3F秀dDE@D3	{	(kޑխb]ŋSdÇ9sd=H5Fqf
+;zFO?WNvֱ͛N3,!_n T	yMD:AD@D@D SNx͎jlAK#7nܲea:uj=.Zt\m6}.]PJGg{S/" "v4h	i={$7C+Y$δcǎYR:"lCAn3xQ6K5րHi5׫PlU,wK~	:tEoD
+ܹsd{)S/_6*?5kl-e	nY))c+{I\A.Sckk$	$͞:TR
+!7o?5#fo̙3GeD!JNE@D tP-	f"M6M=m۶ea%횐ȳgZEGQ߾}*UThJ" # 5׌ `Gu)d	NY	Cigj<ch+f	?",Td^x6^;ie!^~ejDq=C%Dqֵi+l	RkZh db8h4Jq=PbR$٬M6Cyh`[v={X3|n7EG`*Uv&p@>2/pg%H{ety߱cx^CBp͘1iӦHשShѢQo-S D@|N@jMf;,Kc|k3g$"H6x`5jԸ馛aЈ%Znz>t)S"ѣo-!0ަ+l		S;" " "nxH9ñFd)tbʕ	H߾}-]4_|'O4U"-[֨Q#[ΝjΡ$nF"" $ Z<A42ſxbJPGmnݺT{WO(:)md_lGI5/&"RkYjMlh_} $d	Q^ 'u7cX~/HÉ~Wf	66lY]2[ԩ=#5{,Ql	Zk2hhРAÆ?Sf-Z u<bIK 9#F@ׯ2f=ڒT:cPD@D`"hAs	xԩ'||Ǐ7Jxؚ7o>zѓVJEG`0a-I[s4*u$$:MR?Lmh1}]wT~0f;vx׳dɲf'M`#{7ڠAT(*H5;+bQ~C#2?r|h%(2>sD@D@DSHT#9zK,?.<XX<ŋ}gܹUF#U"Vjժ^zIC!hsʕVޝGቀ|[	l޼Ff;３Df͚xoZf͐sVёa+\0tT:j" ~  UAf5FG@=ư{ngʔC͙3'P5ҥKsݮ-vo,aKE@?}f%(Oƥ hT}D8j"KD}5j駟~giӦ?CƍIN3EGul֭[rʑ-_gX[DoE@D@D?Vix3fJm۶%6{lKLrђ-[4EGPtxZERUݷMSЬD@C@j=kFCJ@*A]=ccO<+QĬYh4=w^Vm-I$&j"`5jETg	N!6*~<f%(ҏF9E[
+)R`HrIcZƍGhPRիWg;lٲYU"矯[:htR]7rXD@d	" " "e슶aأ(7&KlϞ=Ѩ	iZӤICH$E/~S%HT{(ռoHf5ѫ٣}(%DyԽgwœֽ{w[lߠ~7Ha[|ի7~xzޚg,I:[W.	T{" " "p$nѢiO=Ԉ#z!5ljDN8UVxȳ>[TJ*9c*ARܒ e" "mE{ԿD@.]UN!)?tPjB~xT˛7/)j%K4EG?Ξ=v}kX5)" 	   X:իlh{%K"k
+n7֭[WZ[dI`K81e!={vRԈr$2PٓO_{ptu;nWweN[hfKP$dZ@	8qbl~Mu͛7S;nضm[g̘qر3gkƌMMS%rBݱ/v2eȢQ.\s4:W" "'`SO>lxbv>ua<l3R-]t!$*:b<l(~3R	+1@B˽@fyt.l0r1ںu{9$6l$,n&*[9l6ʑ#[foS	=o͍pd_0MfKP$dM͈@,Xh{]v~aS{ʈq8q&HLH*\s"3A9"Q<"X=@$	(Kzg>#f^τD֭[H/nٲeޓj ݷuS" "pmRkf3<Ofyw]G"c ?ڵkڵǍ(cl@RS$0^zd6
+HRb$Ѡ,<Wαl	sq՗`4LX̙3Ȟilo_@#$B
+Ѭ*SrEsLNj"[[N"" "k<I' o>gΜ)R"#'76%պuf7
+|AK5-#" Z:)9]!6{=DkS%xmECah36*U)Sݻ; eE&ׁ9lF>}o5JA rO6z[+C1xe%C͖XӍGoYD@DϟSmZJ֮]3gNR_Otxï9m4q$yg}6{l=?SMPDMՕӼD@D@IٳgRFѰaE͸g<llmNG}Һukt]ǎ)3:m֬Y 0ݙZD@jKIfve' K<cXc)HKl#r#CRTvѱ)p1۱	vE@D@|A Yf'q&-Zĉ 0#D^C؞x˗wܙIR-sƌ<oeኀ DxF3wii셍mFQ`HB"^|=T"i߾ߤDS5ﭩf`6{<>]`Y]]Џa͇& ;菉HhիW[9lF+V,uu!x=e	ƣF@Ɛ0^=fKP$wMI3p?6?<4&9ZjSL! o߾|T#_}>4S%xHDHnfV<so!@lH<۲eB<$ItرۼyoQ?FDRVZjݷ۲G@j>ɱlh;&KX`˒%Kp
+9r$PQx^y[9lVH$_ϟߚ^A	İuI$"AՍml	Rkn49ʔ)՜;	ܹnuԍ2~'TYti`cSK.1sPC=SԇD!xJ%KqO֢n	͖ eY" " "`]v2o|7&BU`c/2f͚1cxC!CrHU."`GEd6TYV<F8@|hW`c`ƫFBZ`%PkD?|7(tZ-!dW2-A5!ifC	P*hٲ%6ND߿A@c2eBŨٵkׇz:7ۇ5iҤ/g{V" "򭅇Z	ܘ={vB]#FxIH36#Ւ&M-0[ɒ%/_~mVR-pB" "`?5G٣k@% K/	(*ƀW-qT,[Y~O?6\cURL9s6DO(?{lĉ/b	ᝂZCH-An7_D@DHNcS5`(TЏ?HrQ|ciҤI<	lҤ_]\M6n6j^99aݰȷfhu#" " `۴g}ը9[֬YWa3R-cƌ84hP`ёSQR-V:("   EB%`G;%DΜ9ӽ{`;w$,P:ۦ!Րdfvnݺ5._|׮f%؅DO@<;o]i%Hy|4uP<x,1GRqܸqUTYbEilaٲec4f	Ӈɾ};E]/XBM@pJ6[x8e5?ػwɓoЌ`l|0ʕ+l4jl'`̕_˗/sgZ\_ΰ(fvgN@pu6$ưm۶ŋmڴ=z%V\`3v]w[nRHAV%%DcN3H2 y2-tsw4!po߾'x:6?~|:u`iy9r*6JA֬YS(L2f=/" Ao-HfLD@D@%H5B{N:Q;x7nl T-0x*UqovD@D@\F@jeFHLAm,!,Haɒ%'NhѢ^w}7`{뭷:uf͚@={v/^8lހl,B%0wuv2#ui6["!]j',\d͛?S[C!o
+I*	i'N]6瓷>lszرc8VV}ԩF9AWdp֜g	̛7]'CFƚa3RݱtBёGyd̙+W6~?ZB#tZB{" "^Rk\If+cвsf^c5kuz!(+b	])eȏϛ%تVz-L>RN
+7ZBGl% c;	`[D@D@O /ٳgbŖ.]ZziӦQIFq=z)R_7!J$'|b(=2܏!:3@>t^E@D d򭅌PU̘1?D͛wߟ;wn)֏H5 yHǎj:Ia5_,&7=qFF,!uXv#GIfl}a7p/Fb#b&	tw'XiW# c	7|E@D@ @ݻx*=&Nɓ7t֭[OxH6-k&$Ҫ٭[7t9͎zA==KMND[jn" " Q!@M6Zj۶m3g>s!ffZL#ۄDZEG(IՀ$²p25"" AZ.=繙<O(cXhѲeGM"Eܹ3PM0a֠Arx,X@[2e+P,!Qc' c8c6[#"!7o|뭷&MZu!C1I^bŹshl9AΧ,YFf_~[ {1F1bDݺuQ_K^~=hݮn5jG}tƍ-[mXFF @AA"" n$ ߚWMcp"6fYuִiSҥT}Fa3R@E,:2gΜFٳK$՜D@tm߾݂/KsO$I;GܒL2%GUvh33f̈jY/D V6{c:,	1ak׮ōS`~5 Q_\L&b s~g~.^XbE~2}#8 ,34d1͖e6j(<yr2a˗Fz0Cjx 2xbZ F^p"p5J%moB ƷzTRzzg?cKD$$}u]vaÆ`#2hH%Dk2 -!jE~dt:Cwܪ$9m͚5)R;Goʃ\ŎM4P3<!" "  @Z޽ؽ{,Fitʯe1KڏxxHLm[C.h5	yR3Esʕ|TX1ixw+^%%J0gR.\0o,٣t	d	NX!CiH.<o	?~oV`wϞ=[fMjrȬ5+	VG<F@z:6[B4ZBQ(h668:ujsIdxAf5s>w==@lh:tYV!c1uFQG~:wX{y6w=rӹ{EGZh-9oME܀ec뮖mǩ5V]DC.]~;<cYfQz/_kq@ȑt^z"`{wL,gFv`ԩRܝOG:GD@Dp4#"C556ay,ٴix9WdӶ[ѕOEJ/S=뺙\d5Gn)"x{.PH5Bor8yF@^Nb&Ö'}(%Ҹu+rJT^;v)y\v#<؂`ǟq^PhjM\&ʹFb['~ٲe $qs/< I4ʍgɒ%"G7mEH`իW]." Q$80HCdkHDox،N:pBsHiZ?BD@D@B'3ϐkmۖb֎=J+ܵk	l>0O?%CC_xo-4GBoRvbWLK&Ǒ^'O$O 73qG[ةYۣp,sK0TYɒ%{ѪUO>l7eEn6v2٬*M0dҕl:2C1l	s;[m	FD@Dg4r՚6m:vXv>|8EDgU4
+ x\$"q]vm#ypxlkLD@GqᛚZp F?L%I]kݺ5N3#HN#e*:bjᣏ>Z8Cm?D?5KG٣h,_i*HL<9PQE]:8lOڿ&8+-+g18k=7-A[j," "dbk֭[wԩ>I̞1D9fȐogZǎ9:DYBLkÜ?~߾}y4o7KEw7|3rφ2;wd)(oB"O6lՒjAQE3"" Z="絩!26Lc;52(? (YQV-۶mۨ<L#Yd66	a4,KP4h1D{ҿ͖HH,!" "4dF)o}͚5lx͏t
+7^t	M|5j4q*#ɛ7/i3x,X@O6qWD3T3K Ygҥ3fmذW\i<l[lAuGa/yS%rĈl}뭷,X0Q[" " $HH_.&o6{ݹ9,AaZʔ)Q\GT%6m&p&$6Kkuy$ 3,>a%(鋀$0dȐ˗/O2ڑ#GgϾk."i˩Sx&$""f2U"}%JϟQbV{s4:W" "D5!" "|	CfΜIQǏSq߾}sFj%K$#UT;w5nFs!tߚs梑"!Wz$'Ft2jԨ. N8NlH52,RpY9lFYtiD]B3tZWW*cpE`6["!#jRD@DƏT4?ɓI)R;}u<Ȝʗ/lEa/5<l?#[fWT;樂!/Z{<{y	ȷD@D@G`6uԳgRAtI$ÆWH+=۾};ׯ7{FZH,ZK ,U6{%x`YjƎ3-YdΝC믿ٳfx̒%a5 r\׺*B[BD]ܵ^͖H-ZpoQF$d?;boݺOjԇ$$Ͳ*xx<l7|!~ݺuٗפE@@׾5n2j" " A#w߽	zıFAH 9H5 ۩QYDR-(]į<D@D |חx-ʕv%#Zu,WZH{7lH5*pjr8FJ۱cǲfC )hz<LK5/^c%Zy~4`P;t<qMhÆx^z%Ç3d`	6jB6S1cƌ(4#yk!M6W-.,tߚ!kl	RkXvBD@DF	Ak׎ {͖-%(4b
+SbK6F>cH\r8^u%" "SRk>]xM;Qd	ZfG}4_|;w$l=Ι3ӦMi$0o	/jժXbj[oM_]W&cpq6[oC㪫){8qըxwgZBlr-޽ȉ'2jԪU̙3VH~2iFR͞e
+W/K,ܹ3jP툀[PCtիWEN-x4ROZݺuO<*U*J$#nѢ%UձM8ԚCC=њ&Y5eժU+]O?C}gfv7& HK%O_R@n''J<	͖ $`smoBĬd	XƫNHJ*-[,`9rd6F lDEw}dQYMݤ=  @ IDATm%ctGvi%H9
+4(`4kԨ`
+*~kh#F7x	jEhK*Eeˇu8jLD@D@E@j-^t	6LWNcGe3k^
+Ql\ۺukrw4ֲgN#Rh\9@5}-8y}mffKZs%h`٣mS	#!f͚Ǐy޼yUV5 H0!M#؊-JHJ<FZWW*cpE`6[ZPM8 R96|pJAΜ9sE5# իWIoܸ!o&vWs<4 	[c]&" a" &jlh.KwԩzlԨє)S,T%Bƍҕ+W{fPZH(1/c&hj6[vNdxgOڵkӦM'L' Lv{J?pwLM>"rРAzu˗/СW?E	ȷD@D@#Sy^hӦ͸qEmҤIxƌceweQ%lٲ[newlI*Z;R5>6{7#%xf?c:hƏ>lG޷o,T5VX-/^7!5Y7,!,1	D@D@G`ĉӧoѢE=x.]ߟp8dݻ9!iӦ%$CΚ5ܶ#VXѮ];?@D[k" "Il~k޼y^z٭[~|`7ܐ:ujO:*:BH~7=ϓ
+ݷgzH9a4(٣٪%\;>ٰaWkf	z@Frؾ⋆Zם;wSk2_|n ӗ1k-A~66]D@CСC=3A(ñֻwo^v%nל0l0S%_}U&MHl˖-wXh&%j*п" "2 e+ኀ\A|Lګj<llmZ,Y(Xtf͚I]ATD@D@Aj_wX"lhGu<.8?,5((ؒ&MZcAř6KjՊty^99ÕLx{!ܸ!B`]׬͖귘ZjJ/D@D@HKVNO>ڏ$\r\Iw!0EG2e{/r%riQ(vehݺ5E@ڷ9jYD@D0ns5^w9~3!ߚj_=HkݻwFl=^tg6Zկ@Hq1=.&\l~D{QرFըQԘNqU%p?c4d3X!nlVUĘmEBFbզ@	F#'mƍ[n-Vزei'OytOE~!Tĥ۠A6mD5ȂF| V^큨|kAe" " Q$駟5ll͚5w}9sj׮mc#5<xŋ%բpZD@D AK'{moBĬd	nY	&He
+"CVLb#,Y9lF(C-8C[%MW|qLfKP$dkD@D@G`̙iӦLܹ>*U*"?uM74zhSzSLa/Ç*䭑6dȐ|9nJPt}GyXjXD@"K@U" " a$tٳ߾k׮̙3BgFyd?Q_R-kኦBb	Hyxq5٣a<	lGwܙ-[6<f{+k/^PD֦MjL:5O<OV>SMd	mEBzؖ45Rv]b۳D,XPT_~eǎSetm۶*=ynaěu6msЉ" ",9k=4X	_t4~d"f<lDBv뭷u`au-6uPD@D@N@jAfSRA%͎X{}{a	3f|̈́D22TPaDN4ܶ't2sQ!*ة͖HHڀ$" "?F=3C"-㜗,Y'|rÆrJ$qlFYF-\7gtE@C@5ﬥf"" #hѢ~>,Rs4<l(7#՘s=|S%4t)OHI5Dfo-Ad;#U#`G}|3bYӖ [lə3'f[޽_z%3Zv69l"EM4!-SLAH4:](K؂2C(t͖HH/"" !bk
+?[k޼9E޽{߾}[je扄3_5N:LYH4[˔)I(ڨQ#m@׉@	ȷP" " Wؼy3AƍGZZ@"HQ3GpHjը)BI+	Hq40٣ѫ%eH-?~/=z2!˖-C;C:ub5Z[.8dzBe3tB!al	k " " "@5j~H4)l֭8HGN-P BHɆZ{7qĵiӆ7&믿6lؐgcE@\L׾5npi" "9ǪTRzurevcǎa#{HiӞ={6I`!	+P[" "=Vk|K<z砞mh;hʿ	#
+״iӶmN8RJ`4ƍ|!&T>4hM\|!<͖ۚ{N$'	P|mIHc;1~k8ƌc\|r͞=E1U"*PߓX4Plڴ<FCiD׊@	ڷEZD@D mFI~6p'xbԩ+V9f͚5M<l(KkZRj"٣@ue	"#dɒ=)h	"()RP.[oۄ	(@M!Xrκ.8YV41D:	頵PD@DVX" fyϝ;ҥKSҪVl۷o?GOhu|qۦu8|k\ID@|Dz.޽{޽qQl{T˓'ϩS8qqƩST5}kAuD@D lRme	QY~@;`vƓ*U.6#((B0K("]-ܵ^!x]Ը͖HHن*" ^#ЬYtҡ(ώأG?ucL5SLH>}*<5kJxVDؒsX[Uc" "`cD@D@	k׮rʔ!б@sַo_i9+bDN2TRjZD@D<Z|	юtd	v"76l+VOk6߿L&{grza۳>͆qllClX&t!cpJEz6["!#j_D@D &I&|=O?%V2̟?ljy׈ҥ)@vwqGc6"pxnWU>ap:֜BxdRn]kTiժ.5<l/6RbT7EGpmԨQx$<fN辵HP틀@O}Af/sŋyG@~K;v߾} I$5;wɮkw܉Ά.dvxG/Ó1I}l	dJ10&*&k֬XOvPeUr [%K$j!k aÆ I#iiTOڑ#G *VHna˖-İQ% EiՋر{K\D@|EWdE@D@'@2qoC?nFe˖]z5oϏژ1c(ihգD@#!E۷[,'ZjE}ꩧqm)S{88qbS1,փ?k93cƌ8٬Bb%`G;1"
+=|דf텍`#b|SY6k֬ŋS%ݱy_܍7ѱ]ٸJ&n<z,1"ul	QVkd"%O,)d7i#GG-'~!^ԯ_X~ܦ%[nd/LzX	)S&:7ȭСC.Xjܛ#UF
+|lGyk]e,o+|eqG6[B4"e˖6{Aex.,i!RH9sfΘ1#փ߱cG^
+x|rM:/ _7{agϞ$1A#6kVV o4WZ3ߡ1&k魊#hRyúCػw	nX%̙2eŅ[=@lh:tYB$V/yV]UMHZa[\$Fu6eDd	>YLSJ~8fKί`f@nwXM?xdxA`5s֭[B$`GC"TUl=8^yjHeHSM6 cMCp\Q5Y;C1D[ڷpYX3j7xy^H?32%@z˗//u\/D@D@B`ҤIO>-IK[diYؚsnϞ=lDϟ?o"EejDD@D@Kqj-UTjV[.iӦaW${Vtӧ9x|ToCfn.h2<]f	ݻw_trMo5lVp&J̙sOP&KǮ1xlA͖X.kMʅQ>AH]سgO9rß[61'z:/ٴi;nNheԡ[SƏϝe˖-\'8k֬'sol79TUp;vV#rJD@Nqj"?4ӧO[.3ԩCxӦMC7y,HCE@D p%a|RbdѢEF+1qD:[r\C
+oJQxԔo	pz<&."vя4)?
+iՌTr4ip!N<ir|ܸqIU}4٣0%&7mxNC*#|	{F/6kk5	;;,cCт,Yl	Ek[y+"m֭VE dhUV.f⤥;O_}U6a#￿PB7xhv6`ҥK-lZ݉@XD߷i' Km۶D`<y%Km1b	ׯ]vDKLRR	+18ԚC=љzYB< u
+Yg3ϴi>?l\ɖ-zwkFO?(PPq5mg2ۑGhd	Yw6*cp纅6["!ÿjQD@|HZ$9rW^ys~!)O(Jq-^uTo߾}lT!1MF 6.D@D "AUml޼PƗ_~ȑ#:õl<>4âcǎ'MY,wX,F6D@D 	Nj+F]jՃ^y>)S(rGlhGn"j9DCQJݮG}O>TO?=o<r؈۴>I_ӈ^(c(^5.KpbEz2HvK6[|kn1s䯺9sZs)G5kZBDvAN:R+Ua+_<lTa[`Hþj(^8Ϯ/"gy9wJxEĔiZ4C}@FM2К5k|rJ;a#H5֯_b#MH	ll),u]'" "Rk~Yi3PEWvZhH,! 1S;Ӽys"N<Ik)y"`ҥ]ww$;;ϗ1I;r}&de}-pc͖HXWA#@H$QJnܸq
+z	lڴŋ4L$ J%74_B5jXEG(w߭W^6-k/" " RkXe˖M,sMEtcǎF5n ^{5fQ}$FH6dF!zC)³'fI"!Ι3R"d`#٣m]	
+Vt[o5C{С`͒jvaAWS%rҥiӦ/Q<SEZ`dm5,F
+8J(舝8ЊvvK@ϥ$n7x믿Ν;%ZliZș3gLG`?~<lg/=M]=5YB<a͖ US#	&`I5r#	nNE_oPk?85ym'H$	ρEGll}5L#" " ^  Ut?Pk@Q8RJVY{fG۞I 	moM>}ƍLl贝;wfCl@8qOkdYPFoM
+]+c؂=-AUF^)]<¨f͚*U*y,Zz[;~8w@WD APiӦ[nq۶ml/ոBqHStTd#'|2b#R"pU)X W=C	$u";:av֯ 'OcoL#pg6l0o޼6vڡǚ4ibϭ\rsΥ|#`rt5ݷCh:&s믿r`lhGkd	q b*gk֬!״TR|	}is4U"۷o`[hcSI(bd	3wl2.|l^Zu5kAE,!$FfGf*p!̈́DΜ9l߲b:#c&Aݷ&KHpo,cv6[ZFgF@2U""[fϞ-7oFő~ʹ:uO?_|>lٶmIn!vE@D@D'Ws'qюLud	W_ti1^z3f01HHl|D~J_A183}kp92,5i%&5WD'DÇdٞԺ@PbWcǾˆBe.^ҤII]c֭[kT' kAD <;4VD@Dvَ\ !N^MED)vjlr-ZH5FyL{HȌ3J9e	=}kًDZ#@p8d668dqc͚5CUPӌ`#֑#*۠UtF$>f]d e	6@vK2Ti%HEzA5HzZ5%J*	iF-^СCN]~*XEGp>]^yv\Z҅1}kHV͖ _@	R$н{^xaРAxό`%KHRԬ#J$N6|qqE@D@D@@@j-tj$(2Tfplmn\EgT
+!F Ӈf ZzwD>~=óm"tߚ,erK2Ti%HEzA~L챻fhHȥKΟ?Ԟ6{화z	,@#EOg#؈l޼ɓ'	T9rUtΝ3/18s],~Qإy`6[ԚLEAV	I ^|ya~)C?5IB3RRTZlkJW_}Ee
+DkWF tZqԚ=dʔiyg]t=˦ߞ٣?z0[n!qС={ͤ%NxܸqV%׏7|k[ϐ#c	.%xh1C!T^fK^1̓0ʕ+7lؐ6rD@߾}RjUz=z5d#9yv8N~CFpXjZ%plٲlND@L@j-`K>Çɇپ}^5?E aÆʕtիWƾj{ѣL8q8֡C'x"mڴěhMoE	֜
+@+QDUL=ND.X`Ŋ^~pBT[a%gKO5u"Eŋ2w!?rJpc%o޼uի-^9s$HғRUQn,5YBIK-yd&)Z4}SV\y]xnZvρh"EӪW?{"?;<Ȩzt%b9Gv#Tq(&Rd5	" "?0M-JE͕o	1mJ*=3U%ҏ84g*?sdŋSq!#>766EGo[~}j$բnB]!" a"йsgr;M6on(jgSaKQV[ҥ#Ҫi?H{ퟑz?-a̘1hx'lxH%5kժ>Vݻws{o+1bil,fNNձsln{tpܹ˗Z;;l|Y^WAq׹vR_n%(U#@%iҤdRyn6rh]	C4?1˖-{g`hQ#*	:[u>4Oqљd	.ZHUini?BjժQīwޖ`{衇BQkiڝ=u+yer}t=/qnό={)+Z7#?#;~嗞&"'@f[cpq&M6ߐSt֌`2eʖ-[._KSD@D@D-2_Xѡ%ظ[ʑ0T9uxeo<xrM4. _!ႁz}!رcGۤI5W<M('P;ylFG@9rHf)m͟={Ə7]Wܵ@-DX5<d	W2o>n	$/_8vjڴi׮]GET$ogXdFUy#U**V0nj8Za|Qy?~`M&ZTS<y21^y~!`4hO?dTX_El]oi#Zsݔ5`w@eȐǽF5f#Nf.ICυ]#%鹇ߓ/{Pa$Lw\<]F`ΝUT̙3#8a`;saޞ%pg͚msx}M@q4^~M^@ ymP"Y2LjI5҅B[kѭk6(#c뮻EmnFE]pOK,!I$%K$G`#
+SC#'*:>φ+61$%k㜭!N<>0aÆ½?ˤQxոđP"!Yڲ?i촿T`C*5}}!CnL\ WxLY%Ka#$o5רQʖ-=ߧOb v:CDSIXD@Do*R ΍ҰaCi۶mNoܗ],ji^CC'tT8  RHHysٿ?? ԁ#b.nK.\xڵU"urTmh" " XzuF^|E+Vl1u-/_>6>}뭷BQk]_g۩S)92l[e/t߈7pC
+ªx#,X0p@tq6Hk6ξ6eUVE7V9*&yc
+U;E`9Gc恅L뮻]!wy@2*͘1#CQkizm͛+l{v[ya]lZK8qt}k*-;n+P l9s<yҬ75Z|MCּy8pB~34Fe[f%׏4*Pllgj6;eT!;ls_PϞYf}A}Zp+˫|>~(jk7x	6mSe˖<n8~!,֥KK-,ָqcDhHjV"M tZGE@Fld%K=zn%FM4yM[j/$ǣwlZfͦ_[sޚߠkApZG;h:ǘ 7w*W\zu;1>[[ьZNuR{
+<iDٲewB
+Tۼy(!ZH]گ,a"AՍmb	OO nZr<z-ZXA.9rرcAYU"CPkدh3rK^	8$o-t3RLYT^z-Z(PQڨ^zUV%΁H<l	T&O?%]Yf67#6	l8;p%tߚ,!Ka
+NC(S_ۉ'	'6o!cʻ>WA^A&Wk@DiEmZE-r"D$DQ	cQJ%\B5ԠBX?Zoxt99g={={ֳ׬=vZ</<:rꋧma&D>T$^zW$oZoHh/&	)u? 6cx1@5K1{;FOm* ^jhM)KCԜr 16ss'H#*
+gm7}ќˎzcb{m0f8e* ܅J P7WW2zv/ɓ'|E~Q~K_QF[nYQL/Y!G9艴_bA:y٦GB_TNr2#J݅uR4τJ=v&Oʿ:woo&MIQ1Gv%<14:k_Z"QLΔ;wn8vvդߙ6Ioͫ#ܓ
+J-oy];͟?_Lʄ\z"풻Z=?=3 y9:o/f>Vv7/_m)Q3θ馛.S?O0 ~WFeS9P.y&3m{Dy2-b{3ac4p2l%Vq[9X)k6=yК֟V:yBN7%R&MnW^yendpFM6-c= m"b38퇑E/RF(%Ur 6O=G__Jɀ 6+W>f	-ⱵK7p0d 6^lH>UNUt_͍9nlI;3޻CO7O<:e
+|W>EMr
+裏^&%Kz%$p5ko
+c9F] ;[Vt'>Q!Lx30 ہ8}t:oC"]`l^l8j>2{5`LU^ %`I3Rɓ[	e1e.AjK.-\p"+_邶ڼ}9:mL2V=/fy;ؕ82Z+C:t	R
+/VZW_}N;)J<w[DY5@v[J?mVM_*<M-ys	ltצNk.
+UYY(_Wo.
+xhH*DVXr:j!vXF|w'M8딳.bޚWg˟DQ1u^X7-(1xD
+Ψ9Ct
+Air-V{7oE@+c,ȿoBdǰՒ|A@@@@@q	pUXp$d 8K//{Z,xTӭAkv:;hUa˯,1$p]wPTXD~V;ýbXtxlhA
+GLPSfwy[D0M=ؑdmz3 _֢6gBBԯ0Oq5?P_%{a7e	^f+T0wRԫhm-~Oꏟ2F@@56Lg?(wt.Z+"b.[S
+`<AXkk7:$ޣ"wc&ȃ__>lkBh`#W 6?C"=adsH1:"qH	|?OZi&g#p5Y'_yim֊nuuGeou@?<FAHPUnV{	r;CM+{.$1@#gi=:FllkBfc|DU	}78myHDzp8`Ly8Y!,#~fd	d	d	)nkKl]v `jf xu//s	ґ[FD☺Zhzk]rW͙}֥7/Z>OZ]֟2DAW%P()QG{ak>Uc|Bъ(Q)ՓDUMR7Vm05RT@kwy'ڳla͚5v]Zڳy`2\с<9vdy2tDH33'6/6V
+/йJ:E$KgC>R!cwKf_or_?
+8?SB+<i_@kE!/Kp3ʻ&#]w?7M*\؀6B -HGV,b l͇maȜ'S礭"ؤϛ7{W+UО[y2cmcPc[
+K,RkE`>L L`[ lT3zHbxdB>]8u1)o!?GwgR!.Eϴ!9ZhX[-JG-X 0FAP!1Uﾖ*(T A8"^^{d.˻/--G>;Z f/bQ{]-g	\Tߞ$w K K`H@qb~:O9}7h#-w0foy7T W7-:BO.jdT)2iD{ұ* 6n>HEE[`X8U5JTLL+*n;"I=#==DZOAOy&S7<2n6	\	3gR
+԰+dUr/Ml?4|hZ3=Zoc?!4+>կ~ur zGB{Q@(JSdeE;ד0HOXd((zitr׽N[Dpx gtu1םw|<@*ں(7A	(v:;ꨣp?ʩ&]{o\A:q Y\3:Ꚃ.Q(k>3 6 'd# dUzU d	
+U,y\YY3n76ܦ* 6;pq/,k6J#W]ut씽;6ꌨ\UFjxv+{^FX04N)Vp+	ǣXMᒹp!-Hl΄[oߦ4<@ڶ-~\i-$5ĉUY{;z.uU	mn'=F4L+ɵ%!*d'ij[XهC
+k@k՞%!d	44-q\rz# h jUV}<>kyl
+gկ'thZe˖Yx*.>	+T,t+M~x-K$o߅^Xgd*؁<*L{ե<z%węԑ:FʯP[& f$lLN,<k=o{S+az{-[Ga[ƻ\t"t˱#/B3(Ξm+V^OCV0؀7;/Zحlg'P&#Hp~> 	 \֎ 7%%%%%0%ӧ`C"yi[ qjIƖܘѷZ4C֬ts&p3#J@v9v)hrGwCDդ_7M)Rh#iӦQ81#1Ǚ{ST5__[(u>1pxl8i?t'CEDWn0Ͷݫ<}1O{hL"<__jlK.$oۮa&5yvbkl߻ó6:"gBW&%#.ΙMJA5G*"M&:vZK?	  @ IDAT
+ՔdlO"6bnCo{[o|89 3bOyutD3 jf4$w!?.I τ.	͓Z7\7j{|86,A:,<Jښ[;hm|}k^KGm$󏯍2ϗ%3!?xDm{W vM2dt~-<ɓrOCR%U:HJ =*h׿ɏ3~4N+5gin@I {dY}$IA(\$oy[%6 lهrHM϶T_pFW͙1m/.~A_ocnͷHh籵ƻdO<Ğ{鯕H,xeȼyB8|5X=t`x/TIz}[룙<0o; x	Kt# ۧ?i9 6J>h >F?*.<p`Zȓa`ehkp2Ry-^v7T#ɛC;hmh&2kW\dsf'ĭ7=NիW8H5|<bHvus>{I{ē%@\ooZ\>-.]^?FQ`*vi-JǎmD#]A_>	v[ 旾 lJ릤1 	fO/TkJ>n >F?"<,Jȓ!b fY~'pB 6PR42ZHZ`[h-5W>?&n=~u K`w_6}lmBkT)ƖPYRUݖ/"q~lER6YP lji@o9lZd 6r e+Q;3Yrǲ/<RWle$H=H 6j(ha0(I0@ڽך+Op鳮[xŪ5-75uָJ&h:/'%dݭ|L~[DMcO@DbԾɢakЇ3yƯώ6RvsAA~tvW,TFicpq~Rgb&,_Cyk_kS"HC?CDKV
+
++%w/&CX*l'y&-bLQ	*Q.3TpmˇN?L#Lqv˪EG?&>gmܵW2iWb,7oq=[o[o혹΁'9fxr]<d>S`3E ;8ɻKuE`@bH,@k z(4Sl6.<O;~DɴzҮw~/ҿ6 }n
+f2LqojYU@AV-'O*F~a븎YIp2򓟬ldɁX 
+Zk|Ĳvӧ&MqX4=%_BT昿,<jd\Pŵoqb	E/zQjFjہV7~i^l/I#6.kď%@1ضN36F1藪$Wf	TW0xI?,<YK,e^+:=K}e`@$Pi?_W9ڧԭ=kϻb֬ZxYqqNyӍן|ʼ>z@4XCP)XԐߒh HCRˑH~򓟌x2.+"{@wni7tL!'=I*xSKpRH-7NrW>
+q3y/6cv\}QVQED;WZ'S!r]wɊI%솴g?YMJⓡQˊK τ2BG}4\0i$+سgch\`&x_N ]T˧> 1ڔh0kV,t
+jK4+1nh7,{om@hf<,Okҁq>(_ t׿5
+@O>ݖq	|JJN?"ݙqGMXA ҵƔ]5}ӛIRfm&扐vDRUR%t򸚑 ϡYl& Xʹ	 \ /H/R&¶;'(`',$Lډ=;][oM'xЄ)f̹n_oz)RA/YXPe/{6W6vydS(wU 
+VOO<Qv&%6}t|! yd$RA+gWkϝwyG4h/bk<YM&vjV0
+@HI@,COkJ=Ad1<7JײLDdrIm|=̷/	9s&Kڵ$6FAYX"H|EZ[}g6t=9Sg0ҹ7.^|ڻ謩 ԺLJ#f8@QfK@w^^x2X}vIJ<5kvc6sjEDu({ ~\&f`*	Yj۩;Vٙ'>	,9<zr
+9?W%P!hO y&'|KCM蠃ذ3Bl˞ny24)7L2Q-Y-uM,{LJsPXyfϚpɲ1?)Ɣc}+;ߝ=8?i2GG<{<&Z~>$@JC=4+Bqͮ=7ތluhGLU(D\?f˶|Y@w>9~51/?˓
+HZP:bSdxJ3ޤ]
+!OS=uT	i2 ܋eHG6ܟJI@MG?Q+[bmi:1?xD?)h[
+[SO:k/V|WxNX;v[x֧-Y[*mmo ~@v5!2Z&7WHGJ,'&& CJB2fj&?o-?>FK2$Z @g?dLj-K,K`L	[C.^{a	HNDn%2 6՘͎yAuOpg"mN"E'k/ ڷ|	pt͟?}=Vh;]әy H
+T1 Ǵ	 ]PAl*fĥJ>@3W
+2Qo?zB塆0==c#ax4Hq0n]0-Z	?Nݑe(ͧ W)U{[z4}ڎ$6Kʄ8R:8q"<$(uin-uW[p'ic|*ɴPu巽 ƭ0  ݫsk:'!rSA㩇Q
+\Al1Hn_ԭUp&mS F`"뷃?-]\n &\I=	Tp27-6Ӱm9жzEiR"5;wjEk{/oGAXy2&p^qMq@5~LK+fQj HX0q*©.Z+>B%PVqA=e
+(uhA^^_#V+SOXj{}֚Ki}߈4 lB<SC*߂t`H[S|,,,JI.j_Qe<j liJ$w"6@2 ''.bOSu=>u%w:_=ݳ?|z;dOc?v[ng%ZAgq1e!
+/K 6`_||ZNBzӼy1 +6x9Qn
+uR (yvm'݂!{`裏,A]&àʹqT1y&:~jpH:'!iq#GI]JԗeԸ'y24 
+.BjHl=6/Amݖ.VÆ%ҕ%EXGdR=|><O<O~%ЄZ˙MH뗼۔Hl(7VNx7#'^8V_*LZ߰H!5N_0<)JBNĝCW6@&C~揺-<-ᎷT]</W`SY	ٳ#h1{'Ø"d<{4q2W	 Ak)HtwQ {78MW:: s;E~<cCY}'W).OqAJoÐ޷m[ָP$E7__~_IF2cBC1=DXxhjwA G0gu# CyFv'J@5m`TACK$`Z8ox#C)NB6C?!QbuES &m>wJBAF)+inf?4 Ts;쳕Nyj^zmՇ<LHMJ#<''HGw	Vd33m	m	w}z,h&ak{.B\uMB<:5+`#"l7dتeHrJPr̸ T['uav_73&]zuZhʵ6W
+	ڱ4j꧷L	yT]S>xt0o<J.=Bvm|q~VO1^X=:3>֟54%ЌD~4se%O"uq?Zu/]j7> s'Tj`F	gӉ:ZeU_bAw?]O_y>X'T02*M\A8/_.lUL+8hGXZW@5潓#x6[ti>
+2$}秼0u;#	l2,oF!(WSVty-DزGϷڬZޣ]B)g	HN ˗0@&FǬRvr
+9+>^jʟM}x:pEj9A>_r0f=ҳ89H@h1ZL>^xLO ˖-KPcA:P3U~G50FX>٪
+<Zx7,YBmio?fDJc=c0L!fӑ@"9U@2IIA:ɧž&ZqFEs6xKN|/~/<rڠHnqKc	ԡ5J>,O@я?əI.򨣎|ͩc9&]A_99SepΡظdLQz`/}iK"_܌z>d	P߂1-ߚiaDN[̵FkZHտ.y2R҂ٸH`&TOI`|ɹ,֞:f5f&pOuA@ڠ	Xn"l)SEk6, ᪾@k#SJk#u}^irkV l|,@Zx\xw|d@3lRW$YlfiM)mRfyЍ$DzE]@2T"["y+_^
+8124jg.xhR8V.<hh@WVVOw}wY:-{5 _?#0lz[mRcl&C O@k	\j`xSXSϪ2k?|eHo|٠J τ?Y;~sDB(9(ORU؍SR9;M1O&**DԡaxQSm'F|gK/ֆ=5l`]ZHҀrULQ@Zcr0y?	`COyy
+6lB' ;83Ù&P _ lx GF~A5XNN$ bm?dhܱi([3U|M~YA5: ۮ̈8)CU.`B{Vcky2p{r;{) l\ՊZ{ի^ň0l	Shmuhē}|/>4醹r{ϫ[ǔlA-@5d;]Afˢ׽Gd4uTq l|H| )Abo}ZG%	&؎8H 69?{wGn_	?#v7(͘I#Bh_J#9>m6 Kwa3vzLh-,Zt`'O<hYM_4g#x}`¡'͸qNrpѡ%fAS?mzhď,@8gl%RX"m%C|}z5,\Dtio2`? 6,#apH(PHWAGIַ6Z3%Gy^:ŖMiCRoSa6'"r6<`@Z#禛n$k6nڭմ,=/ZjWͱYsn^HS%Jc])W\'E&tIeTbWFH)ke¤M@BTxgċ\kW꣤mVY)Yz"m&{GѼL|G%%	ظGRٞKn5\IR0LaO>;r&a3|%@J%@)O4:YW9Bk'oCO=|o;KuyݿNH?cAib6)*v#!R1Xai/
+7Q]\}[+>6Z!Ei=UMY*X"	9/yKڸQJ3>>fX9'e?OK$,$~b&lx$Q䃐3R	,/|i^	'e$>U!B5P,K]a;5fk~/Z	{7wVa>ɅWƉUC:bJT.rI鰨wy8Z!ȁDs$sGoS )BgF_gH1=l~_*"(24OW3W99\DAsrv
+)GSmh< u9T0ZS[ ~@PٴD$9[ou`ZfUkg~䯥\r~z}M~)^ +Z@7L&f;%ȩ ##]w%f=`IWѼb-`s׾6=O[ncNu~&`yYeJ@:2UbUL5+-\]#>sBTcLmgxl.4_NTlq|Aح2/n[uxsu>C+:~svzN^>HHhEϟ#!HNx|Y	XzިnMg@D1s"l"<1:ҍ6oS)\Fv*I"?@#(ALg+LN3C\ln'3C 'U]۱&$\G`A""TC apDxDoɅ)mUsܽ	Sf-t뇗C7)CBm>E,R"{5څ֥#'}Hx"/YƈZصfܹ9>`w*S`h̙\5Hlst`H <O'HGMy4҆91(s2؁|SGZ	m{__:h"f3 Yx%TIX,ego2|_1a^]#~:H'
+;	ò*fDG-撿itN96%eJbY5wAs<#\fދޒ$Ԇ9-&6t\ؤ>`FR/V"#z*͗ [; L[L, "=fg?@.ҿ#=
+<z4	(q l]tQ-Te]%HN1[o
+~~\YbGQC/\}4xoU#MMdQٶJ, uL9	'{bw\q-֬~҉[>$@_:*bwt16tVvosli!b8_◉ӟ(X"%Llr&d<(ӈrSj5N;QCO+0;x7j[YYMJ]KUmk \d-wH/HxCHqeD˨f@ Z!`Gr`U*oV#X4cf%R#ff=[W"hm>/}}+Gl~[КC**P L7-JvIr?f]H;;F	>*;}Eho/bi3Rݰ|rvfNPYȜ`ãɭ5@iq7=@	=uPqDl`C-XdⲩS֙1cew 9Zm4;-`lc3qDI7w[r#lV@bW&leτyk9WY6chhW,qЬEA
+i?ǔԌ\蕤N#1}^0BgiYw4`bp)uZl(f(Xd݁֤z"w!c=&ק#Ԝ<C=F@G$J+ۚ70PY<
+K.F)#z3|Q@E_-}$%Ȓh<0$etC&O|="Ukm
+/8![yC.y/X3oМC_IC_?ف K`T	T*6j/{Xn}71tsH%G`ګCZG=b(|D=dN2/U#g0HU='ƏŨX !3M~&5
+R4i%^;c"ZY[z_s>yϓ];vakﾻ.]+1y" |ٳg#ac>ӃBD5`6Ӊ4f@&LZ|O9CCS&9CC}*ʎh8j;xSƝ6
+jɵlf}ʙ	8]DT\5 k_<ԌE	<ʙ_>
+֭е'rnYgmJ<2Jhm`&.@;,}ի^%
+"p$'W_07M*YE4YҺ=ɞ~ܐ,<o,iCԲgBpC$q)5mik MmƝENSE,@@8ϸ=d1bo&B%ҶV=Xs};N|GOIx.믿~ʁdв2avYR%;Q@fkcPBe24%F'Nߍ+,>zԯ_<rxHs?4iCp~([ !ɐޚr[o5#U@rƺ~(bYdO\<wtF :`Tm>(.G}HvA:mXDe)6q$;Z*FtWc';餓 6"'DƉd0'k`OJM7e˔c]ERhȚD6;14>aYe$R D{$#(ii]})28z`
+=zGW͞8q;v=i-o^
+Ep$#HHʎhw7j*PxВ$!;Ahi]}bk* ^Or&$	J4G!?!.U9E^DJJʢroW,+q<WJPM[Mܰ"y@!jt7ZB6y Lbfm6xclRY&6Z%Sl"k!f`bFjj1i,(oPdHK	ڼ:i34fgxy$PW6͑n:6YկYb"S 6i9!Iuu4}ֺ:>ϫR#sJ63bPx\z5vl Ů>xc	tu24u`^y&'~Kj)"3<h665C#ȝp	 ۻC9āEq0<}2PP#^ܸ6N$bBX})/ljsLPb1dW9Xm];ҒgBN'3<kGk|=xp>
+jq(C~`ňC\ŷ`3Z,/m/Z16*RY 6K?}@+yxghYYYAleA貾/~aR3ipuF+֚iװ@Y ;1;!!T|(l
+)kc7XA+6X)m7?BHkFJ'Vmzb]=Nz`G.%GdlrGjew)A:ZkPD*,v`N{h{3O]@B Z(qNy TtK{}@Ao`	"-5xS>>Nvjd3ZP6;CW3hɀH
+45ଳ΢Q[=q	qJeBqƎ2_1@ik*XF@2U!!H;"5_1+{&VΚd{Y{W,TJUKiDWx^OhEcHx+*0% Nc}'9\D2+<O:eD+qUtH,vBQ@O$MAEOnoZ\<YFcX.g(5d)ŋ^}LQ6s\cHDjm5-p}x@b7pYg%˾jA+
+R֜q!ĲvYԫz_]n+% +$<"Abvm$gi"P͚iߨh`O$}GǋI/!4#dpg [WBn<K`I  lz0u}KM+4r`؀dZjrJ&/8gP$ -_vBq
+El[$/"q5ғ2!ql>ڵ+|`ܫ[l쩻O(@2yb2!չʊ濁"DjRqM!$>Q@*[\r%R:^ ]N}Dݫ?[ݘ	?<[|($2V0hi<`{p*IhaogB&ۚ`+9VKT+gD^z0\fjxdG { dm@%q*PY@5)>lwUtkb2HU& kDXL(RcMGTa/X^uul}xjVT lr	)nc$K`B儠B~z$r,֠`F6Jhݢ`ݘ	41}3.ǮBQyj*椄_1:ұHǪ/y&'߲l~Cȱ_L81+Vvmlf7UцѧJA(&Pa E<H;^\7 "ş`Z`1AM(}	C >=W^yn>b6gk\uk^2;5tr1slIK<-HČ\$Zi,"ñ=Ȋ+x@{W}0hd%2Id˓Ef٧|:ªEwXe$tuYsljv#ag	TYRWo% Ueq)\z7Ԅ)*ON#/$%8g{1+s#nY٤4>$&Q@/C5y**6(A(@G2a :[!\S[ UBǚEڭNrte7rm*t#LTZ~~ 6
+6?4Z^
+mhNJcnHO{yAᕠĵ 'lRQq u5KCT<3&S3 eP ɷG7 l>Ѥϗ,Oo$`U|VLhUbޖX/-f& [~+W>o}:5Z$-6J>ϐ]ZI\,n&6`9e%ɼNd&*y&@,
+lɤ	QB.ФE4t/>hR_wO"d\eb=%zե/:HnH<mH:
++Թ+7 *!=Lix`prTZ-QVB-`8yT(`B$!%k[u%&Hj$@$|͚5b1[0ծEBvWgmlfT5U$ƭ\2s
+H6Z尭6Γ_m_ݷۗm6U%g	D*OAg?1w503Y|]>jEeySn*4.Du%mʲϺtZ:ԁ*߄uj$oVXa>^oY~+?,> ,zf FYEdIdvܬ|aGZcí~e"O$PЯSb`|B8xjojUFMD)_Na믿+bJ="ha׷;4}&e9hL$hE ,W@]4KaEm<-LFq#>ꨣ6E^חth3Z]NST@q$Ђ&I7K$̙33TOHEs	Tm& رWdDN8餓F_Nbrڞ~hw&COXTC,_hctmUG-D?>Rn<T`bG`	~o/@F{q#<_sӨfSAaf>e~K_j<
+ֆ^Ե&-{^eɯ|hv
+%P#?`0,=\ KC	<\bZl`"=n$pKB|Xb$Ha/~V[>ZLf<E4G?QaM$a93z۪Hݓ@&Cz[nR6y˪6$vʠ}+{qMqړ}w|衇`!E~LHws9GRit6Zdh0j25!l挃9GVHT$@עyďPr)ڄ|3Ǖ	@6Xer
+8ړeF|xOF'<b,=DŎFO7݀j(x(T@+tm8jYty[z6rW	'xt3r#%RM|&);	0CcP	4{.K R"|*,X@яcB
+fh9JU,:bC:}fV[lc
+c>,
+GQ5Cy0	k^2>[.Beŗ8]q_L9%-y9?s|Tl\{OK3eWUiv66A`9?	qwJ'˖-lm#3`A@a%/v,ҩEn#dHOr#% v#ՙ	!|(Bⴒ6KXSìPbL,4}PqY<,A^0#5صҭʖUи۶þ`z6֥mX"P6ox}*P*;۠$"qpb:<`Z0@hѕ<ԭ=|>'0'~+K"~	Y+&Yngh` Vaˮw.XrAw2B:lHn!"K.aspggH )oOœuBnSdTgr;=@ufSj/K6 ʒǢ`f՟'
+zyuA5-5ȌǙ޽|ã_$ln{g룕xYpiN
+/۠jǭ͌3El_S"hOj
+sy	5~3I9e
+<*ܻ:~pBÓ"_g<lF[y-ĖiZg!pwZ~]i,ifVqx( Dc$Dغ҉h@@'(֭9їj,,.b"lvw>.}9?uZࡇvmUY<kY`h!	#mHSP/A)?n7=m DXRBD LG5m_`zT(T:(|e(]ٍ+2hyUvbklOOۏ[=GҫөaRi2S,f^1RZ ˖Nݺv+>Pl1 xD 	mJ-lU3<Xko.ⓡN[ wYRd+/BJFn%+!"fƯ0uř-Td24~
+*0p
+(3azY6X"K&5X}5:vR3L$M`]$y~U*[l-ٲʞ	Eptxҥ-P<EYQLkC־|DCS^x1P]XpqъHQEw{0igdxsaX`((ǧ[^rYY;찃L_#\bg{Y[^)Zґ/O|c }Uk;O<X9Ϊ#+^#UeIʴ>Of5d@{{0  @ IDATkTEl	%go~C7tSuZabAcwV"xX>.'Fk.V잞o+&֯5 0&\+#U^7,Vf2o @=yke~D#AbU	.e	d	Xc2ֶs\Ҡ5iL
+$|JN#	j*[|gqt!DHo6+mVo
+-P@6PeA35"Kac<ڞ1&ss|_ qi:kMF-'foCՎdBmt*~+W׊W3C=g8ZӓΖ.<H!Gy5Xed2p=*i[yH&̶fmZYn~LTDV*?He[UJB}|de8hrۅ$Pd2qr%PP|&?׾5> JV@2Ȫmi"Aiv=zD$l b+^0l/J̎@5
+Nz>?	ã>ZMQ	Ψ2O`CE(	f<Tx5lROVɠg<BmFnf)$HHc*{&]qՌ)iMtqA>*4;SL>MRA !^ꍣOw#mJƩNeqy KdɜytX(QSʌDw׃͝/	]A_}-mL*EH^&am$BI}"*_c929I{Ɉ`O)0R}ݷjժNJP:Zo1TGw60[jm3'HGbaRr3AW<q'ԚK}QS$_6k.Y3~qq^8J= #D?ZoS\;،KbCcDWN:"<T0N))<R-U{(l,Ԩy5>':.qZ- 6{NODѲ;])"[K/fON5q ֶ.Y<QJٳU	*Ǖ\n[#@ǐ Z DbIt*6\ }0	rpdd#5<ݜHk?H
+.ji.Z4ihhԕ:Q͙[7=#`$	(8\%CCޖaq}sb'WD^"a5xX:auzE;`Ǜjo&pFX٤oA,G,c3qD6V{ڛFnp*ȴNg8	kӲ׽Npjogcaac(cKԔt`k5n,3@#2FA:BӉ=m?_$Öx{8wK͜9ecD6l|HA/XI'ozw~2ܣjR?ZdAH5OP$Nx./?K`4	-Ilw9|oe9"{ xX0:U'hxyck |X%+#bM/U7Ѡ\]rnCho2t湙NJ`l3޾ʩʲ'$"4&jX)D2Eณr[K=F ɶImbjSưjU+p24ywl)m@nRd&Dl=b5FRK'aq`B	;ul\$6Ԗ,j'3Lk'SLh7]9VgWқcojWK:/>Nκv
+^N% [Țk]VBb$*$~-)=@7nL)
+tGF ǤvZV\tc8, :{ｷ%'vhh/dm(@\+猂ҥKU!64aX?6K(L:>Fּt1K(|^Z@r$""lGdE"_rd*c3gꀙTv@lYM_4g#x^{뭷COq㔝2)di%`uI<50+2/{%}
+SY\#l3h#sQ[uz1;߃Zlc&pq!ᔡqpj܊PgWUXϟ?CmLg|?
+^)Nړ!n:-,gz[[ oEySr-d%Q[RO5āe4싅!#piSM7}a4}y{"73q$ZӃ&5=6~ܹsEϓ"Y|V[mF'߱sDe5exv?]\t̙̹y[C/o?+*; gZmc;c( gRiyhy8UKQ1l[yK[Oe,l]x7)y֒ˇ'QG>sDL6-,#,URfY{۹70
+#@21-)%`|c=M\\#bЏ@EY\ZlE\]aX;p) %RMQ;r;-ƺ꟫}^x+2H͓uz뱸(_,2DG)~ <?P5KlP7.e7gJUv #voͅ?k&2uO>_G?q?exh{*(O#c#bk\(h anտUըp+~^+w&iB,gF	pVIE?j*ų 寫Xp	[j)fQ"2BM'.7K K	%Ư+KF6
+ xQ/~złӘ*'VQ#uAD"!ڻQo6{"JGaDJ--$WM"}@&Q<^vgKA0LݘiPBk;h<tЩo̚ve'3n#U{$ڟ"|\+f1$`Eb;/~L.x袋xTu.~j o*h۵4\0dYv
+:SpuQJ;ƪ%gǿ<EȌNIܝmr٦QYg|$V-5( ]%%Kφr9)2 /dVR }Wȍk r,m RLSLatsIu6[HW=@<&VIyL'߯CxV!		`3P1.ògB .Q1ӍA:R=XW{pqK@"2j MGJ!DR)H#6+W
+6Gzҩ>PTa4%ԃcB&Y@n'KC~}fS
+cYP[J3֟c-]v>ȭ6œ^s 7#DJ4(yp/Y̙|+F8&.I	d!\`[39wqrz;/ƹ+
+U&d؜`WLwt_m~j蘷nÏgv:`ܲG+Co-sxn{Y[x8>@#ی0`~JJY%,jʤOv#
+~=Lw|B}6:PБf|2K K KVmj (dIzhͷ3:1(eni#jb)"l	$<Ll4W+ltC
+L	JRSD,N1E׏jz5U{A%"54XB`rLP*iLQT6Y\5Bmbe_83!qy[`XӰUK#}JoK>(yVG &dfZ"!~iKݑQڸQ3#uz[.9;צ'tHz
+VMNv2߽	HR̕#^SLMa¢"P]lp8cE<	
+vm"lDG`@FͤЇ>dl&"0l$K;G$ۀ H ~akZ|M`3WVkj9O&bѲ%z2V\'S%τvbkoЗ'p|~_n._YuWVsJ#qYoN4c#}º7y/V8@tDdo`Ej7WiLPAp4УX8HMP\v{oݵ0h&2g6cK
+۪#!ЂS&:'0S>G"oqM`(I"BjT5ح0l&֟ԧ>AH>f$H@bjMjXC>A2\=O)/ExV'%u}]zWXtKOuCvƞӖjՀbe!6ichzKH#	\t4v#RwAP+S*:iTsx.k<x}nl>,XA_?QH\ 9P(84"lX2c"JMyiY	2dIT\b#vm +Steb]w5ܠFldIu_T=2-X`~Y-IdL-heG1fډ=k\4cʄ;h˶t-^6af^7V^wڎ˯^K EՂ?u*X"9V[SC0N)('60UKp:]ba`ox88E2c ,*4C^엍S	
+~K@3n[\H̢i@&F9¢,Yxʾ Bp h
+Davay;_2	, x#UEVnCoVRia T,"2!:2	( jl1swYvBOc~K1h
+ d13ʧ.B4xInF\SL5`%ْ,\h~ʙ6(G@[65heSpz+pdYEX" ,U-.=g94{ѨaHH+QeA[N6~3xX~LP`[YYݖ8wH-,NE8Cs4SE2ohG:F@wX"lh͔o"ԜPq'K5W_h\n[0d?J$Lx$^[xF#J9 ]k
+ޚWJ} W3+~2kأ#G]-ҁbk$~kv8"tY?% #bkJ-s9=PK-TLb5i^i8+20J["J[7jՋ-C1.O<>qP`=ErUtK,,\55Z=,oYm 	C2I_ExqQ!V 44tzNRaE1h:ksP0>=$KbXcb1ũ!zVBjOXʙ&GjZ0:RƋ!%*9dY(wզI!T𲜷X2]Ck1ޮ"e6Yk0z4wP%g-@ʕ&%WguȨBny4_x|eyL$x2k;T	3hk+'?I7Lsُ 9KmYN-D6z`F*Q	Y&[.rY+g24<_U
+N\,P)W*KJqVX}zytc~2ܦy.ɠ=,y&4:;xh6-(
+B5#z	Yyf%g|FАT߷Z}x&`ߒkORm<15ش%SKx_Ov,ߺd	0mC!
+7EŚej.(~		
+/,l5!5+$uyq8i&DI`?Bl.)v wܪJcĨ~eBlJa*5z
+oᆏ|#<c.SKF#}?ȣ2QR,2HMcA3!:r#-H`D~t;ɓ'oFCqJGMܿc50ְ;҂lYJ0u5PMΉ䓠g߈MYYeJfFZ?:/pI'viN'HR,UrxEh,ӾfT YB%)x*0	4#Vb "VH}_ f@OwĜl~1haNpqpD,d)kv~P`Hrl ZѮPo`ˢzA9eHZG}4/E{^,UE]lvSPԠ" Q2𬔙W֮o}[놟LHmA	t{&X7J#tvK(mv6&X"lu#-iьH]54\] Up~Pjt<$uVE0He9ºjځ4<a$@5`q#fKcY{Aմނ~]P>6|Px_\
+H`"1vȨK[o5-[c!~c
+r>rēxZoqi@aDWWwrܾҖ?=G$<fmCp0}Ef_jUa{MEQ
+A`vpǎ-,,^I 6@3Ы7s_g7Ξ=Pu'X"c6T)5|uX<<0D3R~IH5X"c2m\Z܋m"pTkbO|B^	̭1c5n^C~2~רD#~29AqjGckع$PZ/R{eX#75RnJN6U]Jޤ/v#R!9t!\n>oA`?ADJL'j%C6XO29¾XeKZ/"# VG<_{HyՄ^WIz1RCwJڬ_W\tuB'x)kI{P	HsiZm"/|!. 
+L#qZCKDWBmc.l#bⵂS#QqէQĕ#o՝oˑ tݽzuocVl 9)xerEzۖnP'-}G	Rw$T`G*-kg(vc,vݐ7mv[-mߥ3e%]x;?Om@<]}cB%#f=ގ6!TL1@(5KuQ5v{2ޫPCɬQ+xϫݸDZh--6se7o-) ɀGu9u%τ*""bU4$HI<ILY'l'OB.~2<H$,~~Xk62e&fr& d`/Pɶ>GooZvl)3Camx"$6 lx8,@A=0D8 BȀ1!~?-p$:QOyD6S  ltRU?.j|n -fgaDa"c*`k%i[;<ll$?ʚͯfL+X"/,
+GS)P󀜟 q.px|`"~E3g~~Qk!NŖ#iek >l}a]? l:Èb(/%T_|5,a@R%P+򶪰OTIWH)T	ƔޞXSz-i*
+'Ŷ1U `mk	M:
+l="iiq$w5]}.~2/e%VNJKԁ	aاs#/[g~g :ڈ'}-* AZ_jC?0lnڑ?$.rWZyf8p4__D,2׭lhWgGY`|FP5'*\H\
+Uvtc-I`dh⁑@fOSǕC&(@J}l.3H{@G1O4IvUrPJ'#8AS]Uui29:UjD$ 1` iP-wbB//s1s$r!b6eD0j%/[:Ff%τʡ5'Dl6H%	hZHYN8.0&ОIdס5z6r+f{[%r8Z74X&|H(Nb4ZS<_e5	jR_3_9EHfK$`Rޭ򤚒ϽjCuW*"_^۝L;w.yߜ,qx¢J]v< 4H GkyLhk#;Zz7lpwlVm.Mfvz0O 6Y}@|%
+QZܢq>mU GvZ'؍dH `Õ'So%τʡ`q^f@k<OSI'/*dW(wJċ?Y֔ ቲWDmک[ 4U1gY`lDľ#nGku#*"v5NMMBy.X`ypGk!.} 1Y;<9(\ FҙjZ.ٓ@`æKѳx@[pċp<$6ALZ$eK.QZ㷕U6LsJrQ'%?. x YxGV&$e,9C_M-Zs=b_a#,doJhTa'.n$` \
+pxrF[*HB	
+ prcYɨّj2*Wqv Hn2
+z1@+BN;jdP+g/rva(NE9,8њ-x"xo\r˱mxFQm|UۣqlHĘR60g:^~
+=$Ϩqz)5)E A ؞6[Xc#Eؔ5BA9܁ZRcbI+Escm`vr3s,X"'-Z~>5o{Tn6GRBҽ"u#
+lP7#fJPl"Kc(m-mK. )=lgyx
+g!	T%m7][0뼜.)E\F綖LոAɄ)SKb8\ZF$%WD0E֟2`%0nL2Kzr&oJPC  {ɢaኻRI<oƗ@lה)gml<vQ' ZCɃ-O'9O]y!xFJ
+}?N܈'[ugۮJ  d?kMTs_|ځ7ν g,@jLYy\R]%BT|8#v9F'x"U&LhD8s'QW_}5'q%%@*Ly,	ԁa/H>X"`T}7ee^ f".E0XBy}$	ٷ{EZf]J"D&IP^,A+P` At)m	#'##vQluZ[E^T8
+(S$	tC\<q̸OvAO$w%%Ҋo;Qؓh\0:|jNʄۧEls#J*8cPUjLЂaa+CAZqs>\rڐ@dh+#k;wm3y%^r8Je_)I+rJNm)Qyce)4ڨ DJ?q&C@J[ݍZ=:;:3-Tq>l>\m@b1mx) j5ԍ0pDP%!\ؑFGx:6.Vϔ<*W}yqZLPɺے%`bu=-TC(q߂I:Fq&pZ%+Z_(U] dJ#W<6{dHT>H_tv&`nZC,vpll͂%`Ck$r!4V}i{gEDtEN' {sQed	2ϴ*N#e@lCX6P,RjJLkQ-Ơ*Q0MbZ
+~}RiKl)bբŘҖVZh1_/s{f>?|3gkk"KF~*f[_fw{|)0tF!_\V(Kj#Wug9tJ`IeET<A1vԦ ehA}<!< 	JZ%[Lgl
+1hG~M
+|V79ְ""""}["Pf=XRD<v^dkB@Bd=pDD:Lԙ-W{5a&%!6F60Cm@l>mEcv̤4(&/cE{w+lZ&26L;ɌFJuv	fYʄ7D{bhgr|8u$J?Hnuwqovt@pLPZZ׳XC#Ew|zϬs q2J70LW{#lp_	%%Pl.cq13
+.19hN:QM`y*%g,ٞX|'*ĂS2mag5IްAd6yV'xwA Q)fڀVz0SyIJ]|e!gIjrB`wu8%>kr<"^z<̰Z	j` l#LEBYe<g wY`5897w{	N9b?OWPqfa3A۟}@NVYؖ͟*\!fj
+ljl!D٠@0FՖ6cq$fkVB]~#4f{eUі?!m	3
+Zk7ʯb%;RPV$5g,8f#N5;LauY ?+9iݎZLPHyLsAk6vGUC,-a17a[+		+~GT HSlV3*u,Nlh|Cr o}kHƃĠSTOx,T@1s&H#eh춌.+G$6H7bkl2*FB,?o}f:.⠴c6Dh-e>Al"LkÒ6r_QjZs˦`TjRMFmEb6^g=PvRՄ:0lYkSF},4j`Ї>Bs1kYX 3,3͚`a.% g#~;I/qhOCc@I嵵[DCe]#r:z`MSEe2Tw $	f,%4,Di!;#U&F<^hTxr^eDLǾ03gU(CH`moaf|cw*qYM>H.p+`Sbs<'¯'=3pH\Ds TDdjK`ear`âںcYfT dW#94
+ ` 4I86
+'ޚSS{mho]5c.d88X1%D"N,ۀ0}fHcl0邉hjFٗ%(-CoέcQ\~U~W&I 3[Z%r0ֆ={1̦rU S¤&pyF!40{߮
+	Wc`%+d9(THHH H@:m+_J_җV{ dx))m>,=ItKI6<ymQSP_Ȉ.ֲE65 G(x&~<eX{3L HlQ7d
+2VV%XW)\ V
+3JNWFlyPsg}hm\e#=%0گ UzVa~>=%ŝOyn{}q
+:y\| 603m!%C	'OsS۹K`eaBf;3{{65A{l@)[_Qc[^ߑ$ QRSbMC-ά8h"[TuX?(NaSCJ-!'\sZ\*8/ˣ>
+Be:kF	-12;pffJlmSw	CkGIY'ZMH2$cRW;Vt?An0q&iſ{?x`p5;<҇	{ٷt&ᗅцZn(3&ks]N+؆%bmWSO=Y^xY[/E0$eQ}* 1U ,meɠdc?HvL)\By)/zы'
+dr;[O	[+hmK ~%0MZ/G˶j_:?.AYBu:Y^'0뤮ы\wl)(ځ<)9MozZHH`"F$
+.rUH`D,,}A	P`T޲>hټ rY\u[[e@l
+B'QcTS7fӀfm`\}dTWJ@os.읣֥WF+CH/i*t l⺹>v
+rfۇU6GqPEoT۔qZԱUT/"-k0!taN=3PWFs(N|/Nh^ӟ^f'tLFT`m).~1HKsSsE(-Pk^S^6$0iti:&$P?V*cHc$Ut]&Қ*ذl Q@oؑOMZ5{ljjKysVh+Uʘl#Ue;!6c:jYsZa(+n8({~gdQު6K-$0@$?Kooo:o1Bf+4e Y6Z\OzPxVv{Jj%PU'@ϛf
+"Y/1WQ8@,e1)/Tf##lRO=T{40{jE2֤lq
+:xcA_dFh?'¤e̕}\AXE:	4r Ǐ|#,zd}`%f,$/ǹd.|!%19*'Tl{v<swa5[TxځvZP1҅M*	21 Ѫq"+{N^0`\{{5P$_L)/q몬6*I-ih}_<$V#2qu/p&I>cNZ	ГpƝN42:=/]lFyRbD=|$lۓlAkS{"K܊[\R܆zÖ%%bwd?+`@P ظd5?޲	;drVAaK" 6U'8ҥ} oJ~i= 0La73THH`s!.?y> Қ^CHCAe6F:ꨴ|uZO|E@l`/$D	)1 6`.4-`Û6 YEnM3E`cQpc_7jVZX^$am:uŬmjaO$2$TƁ}pظ`%38hUbLL&/r6&C@nJycv(_Q-sΪz&Xޡtw},&]i-Վp}6qb>}1əΪgQ^deRE;$*avWM=ZOΛG
+fgJ@L[}Y4\wbĪ,\|;Ft4LTTDQʐ)tޠ0;W	L1>y%.+fގ֚u"K=lī2X}<SB'^È:ahK 6:W
+uz"\r*tCS""	J`0v%xI|Ha	);.Rj-( FaoT65SgX	1!úJ`?Kt[#"1!Ja%ML5$UM`m 6VAK&CY^4^+#4-HVU\ul;;$hl5q$rFѦ|hsIEb4g6`cs)Y,L@.`h#S.aL*ie'̓ĬPCOr"F-1)׌(v3fY,oR8ѩuF 
+cgy0^{7ecעjTX2*kҮ\TZނ=ԑC1Tѵ;nSE3]ס=:{{lJrXKVKa0~60$ETo{	{;Hd|r@9>w{Uwľ՟<P5D_dL9rOHcU"!-OCFE )"<F<PoBNKOb$ sekA0Bi_ֶP	˛YXQ
+RH:ޗ+ڱԟ?AF9؂?a_c @IHm|mvZr#Lbb TAP%Cĩ'=M>36ӔPhs-KSt=n:	'*^g6tͪck{!l"Mbkhx6aWIoU  @ IDAT?с,Ԟ3D!/ ר[^%Ah7Evu,]C8F^a,8HQTFAUĖF64U*(($D-Ϋp:,#b#!o]կ@5iv࡞ *cMRIQD5(}Dr`l)'ti*
+JC5[?(Z#R^wTA\ q66'X.wQOUM,{!d[PHGgB!4Uζ?d"o֬VgH;rEE4Gk's7Q G&5I1xx[.6m#Nj_Z8pN%4
+˻Z0: > [bR0v`;>j5/~=䓡5M	!,$J6/}KJ;/DlF
+;mbp)䕑`5Ԫ؉Y|}&4֚S# P[Qp3O 6
+(_sPMp߲(#v^!ٵE?h 8[a`f%:ilf,'CTjy`YX93[oevK~ȖߎCf$.`v(
+RG6UC&&Z"bU{jALo17Ol`!V6MG
+KPߦʤ0בٸQ^;Uů,wHܟ[kO6DI8ໍ:v3cC|B\s]vbGh3`S"{̈N
+12puH̱I	0Kx@hJyd(r"".>d,F	Ys&8驈Tx
+DH}0QwFc[_Bt VsD7.H7$ #8p	
+'P!($ 6` 2ES+ُ(&wFw6^̋_bd6@EM,K!Wzk_kszAl6;ӹgcypٲntčs$77XY8+LFz!C2. gyNMS%0}Xw@B&ԙˣfݢPO?HĮ-'n6Aep{SP4H+	yeȳ"C!BdhnON^dH
+UrmޘIr=RskMI
+rp l2exQEQfuhbo3`Jl]%P ac[+4*ejz`eS7ѦcWr3X6,7V17ö?]U9i85Ŧp|k_z],	~I	$<Aȁ"
+KpC'?IQɖE\;!,
+tǖV%UAF:LK7ʊذUr<P%(}%6M*U&9L۪{e 3hLm"RW{3΄ΔZ5%PA5$Ԅ)"lï퇔K,1=h+I)MK:X#C&6?˧4UW]%qڠ!wc*A陓K_ƓW_mF%em{sρ.PRLlC*P%C
+5r2HD-`B,P zYS#Cnkl .<l9#lF*O[?ρ55e5L$-igʰQ8{rAkS~:&T3WL5-Fsceċf9&:[ǊXPD
+:`G.Q)lj,*dV3T#ݩ*WK@R6qu%̈́?^:04(@Qֹ̜8* :0'䪩&-aZCDlVCNj|Sm<XDE+`ބs!O>q쮻jn-㷩2xk`I<^Ӛ=6;Su+3b3΄w+r&,FJWh 6Q!h["V"{AYw734J:XےLq	Ȼ xOIhGdc&IX#(c@B|ʕS@LUSQND`QjE \kt׺*}6faj4ДavTݹS;KD뻾Kd2ĔF+5 ݸCjjN38Ae*I;PCfRMdxfB<-hE9/ɲߪMM]16'~3 fklҀٸ1P"lؐ(uz4tސ:2
+Ns6RJ~~	`S_U@%07P^cꌑmmd$ &)ox2sJ`p $Sԙ88`e{@gy_j2ƀyS0e}_QMIJnCjj`He ]q<!TԌRm9SY?-١V>$w'v/QH`ts&oiX 8Lw<'=LKRhN59k~UT	z`k_zZ-E.~&(^e !>՚b-1 Q4Ld 
+22cdHJaB>H&26@g9' ZNz_Z]̝M>k#g!pd3>.f	(xY+JCP͍x>ZQ0eHA^4jb?ͭSO=LmߖtGӅ˿ja\5fNMCgI/cI@OBRY$QD6l̨.ZVu0@-}} EFrNF1-W pن&F^61||P2Ϫ$SE9$jD7A*3<m<[ߦ"dɩΊh%9UC6Zߨf	+xY+J]2îF^{.TSY/V|Nvt@A24$``ڑϛ.1j?iu6S*((ؔ u{l4R~J#
+p},;)b/inݏ; 7xG?QPr rI>"l_"W&g.< f7m45<ThʘQj5r(kѧʸȼd;rK`hMD;2R;Bd`/5WvD/2{&`:`L
+0 Wf)}h<5 $	<[) >5mcfbffa,&xkg,*ɱ%޲ϼRrmnf'^ bi[܎КT=6$Mn3Ut1ybGDl$i>P=0,IĆpeeT4w߷XfvT<H5~LQ`G"Xτ:?Ĵ΁8j5HIkI+/ng_gx%8#i1磿wVWGhw q&+1,k0ov6nYU E?ܷwq՞ꚼenkFa9 it1Z}i24pDT^AU B Ox䦰X0Ӊ5(NW&(s=׷(_xەZ-Wwdck]cfmEy[9dFs#Y`L},％o>q	$v35nK] l@g+,[`_;|@$13XTj{ʑ#G۰KZf/a|䨣Ĵ V6>AC	YM0}\|ǽ4 4>lWP7.ҍZļ/z`ۼ05i{oV*W&0vWfs8.hmi!,Z#Mq)l<l$#^z\s|yX5nHGU`Зƅ炰2c
+ճm9^XV(LT`czby[Xx"KC\I2ۼk&THY?1<4QGRU_ᾩUhvN аҠ	M -uh|#@MR9㕱9 +,hӬq&>ۗW%6kpET}<ueA7	!A)NJ˕jw9*Ɓ;ool&5L7Z[Ba$}Y ӟL_DDDq0~l3,oxz%qk^?bd\N&'VfR|G1FC.F *,
+TĿ ]r%:O⧟~:lD6.J0;6q&}ձ5O$`=?eR霴C5c 01a3>*eIRѧz2lҸ5x?ez%_ZEEXYN;44ٰК$%Kf_P}gzU@lk$fm%KФ_~s߃7^E;>TF_D8sm[60s4-^Фjn!mN0rSW[?9WfhtM6رjX邊$x"Akk¾f#	قpxX@l"o\`,Le8Ⱦ,v\KN]<+`]
+ >kgo3kP@A@UeԐ<)5ctR'h	UkSE<	_ '$lF?d(C2mзھF^ԧ>da*٤v$[TGLHZI:_m ȪL]1f9Ѷ= 	8Bj׿ob.@m/\)^B`։wqfR0Tm\.kޒ0, [Mq'9|=\r\J±Ȅ [#m菬*KCPq^ZZ$D2al4JUI )&>;<0
+!`Dr.HIRO2"iC"@>y3*ؼAIyqТZIؽ'#?Dk8 HJWl[voDo!XPD6*\ZQ5'g+lăj"7U#)(Mkr
+vfgb_;|@%П~Acj+ת̰8IDw?IzZv>6faT0Vgy]xPs<}6nmr ^tw*]H7_B|3Dƾy"u}2RobQ5<vL䥇H~UhTRx"7W^W#Ѷ3|zo9*AQl9=Rvly%L"]6Rn
+N;CaW ɼ2.:P~5	44
+:N ^RvS H{GDTx;>FԟpdU#r{FCU$TA63_k͝>BQ^H1PC~h
+"TqnᆟɟV/>	d(a.>(3]
+Zk'X	ToݯjJ]1cow]ƈ6oDs}.?Zltʂ>wR0K
+kFjiS&&IkAXtbpirrȸ,PzKھq  _[R|7R5V)Zɤ uP6EL0wVQ.Y)VWyzڙTcd88Fe3n*2%i@y^/HI|gz0, 6y"!~:y{)P[3eW-a:>ʨi[C	*nl=?3ԛeO"ǁĜ_*2ֽ_WԂ)g)݆h7gy&ߞ茤fEE9{W%P9!2*NQk :ɳzAN୓Y$7 ًgĂb]ȼB rQ;"Vdi&Ḣt.]t9
+J\Aȝ{^OayN[b?,(,I"lk?MdH"2/ꫯFb\GjZjֈ? cûХ~5plMY2pSYN$HF=io#HJfRߪU&bwSL\Z]NҨ:["*XAP&5$Hy*\cp0\VO0Aw!V:wVQclc@8lD+C1؃2ЎS)hDSM^U"9O&`Dv̈́]*=8.";xM ДE_pXva	[ .2@5>Ek ǽ4qed26x+8uz"L5GvrA@L% rRDpxPl+:et_k`a 3`66 )[#RJ۾^⼍ﻫ_P%QKǢ}60$T+		ݓPxse5ODʠW#0IXHjs=Z{[~)$l9Z*UEG~mݟ!!Mm'KXz"ܐFFh,y<۶+@"ePd""yI3q{i
+9AhV7RD1]dXɪT>#HUC'Aip!ݑ=jZ,(2)d'e	a|3=?&W1WLҏ&*6xgqff Ղ0UEG8W6G5̊y,m̊l4r@]7Mj,mhQlv`==Z*H/:l⩇`I&	)Cg"	ĒΔ@{d=uxw&\ lX1P_wjs'Z>$oUf"f[Q0֪dYx
+U"e!l';H=v'!6GV6I!˨D?sK06}i{!^4ȋvrSUؽ3MF)m)f dUVDA$7-(7 9(>zFgهm^MvK,'3!Mx4y@IݠM<tTnT$P$03}sƛԟq<Xrո|LO69'giCSt+pAlePT|؏8mA_/}Z4>)O/.3ImR<w7"CE82[H={^'&aE6Jl-?ntR~lS<kjy7t+Tmy7LTZN#OYF:ʳ]mD<<DWuld[(?-cL_1Jj)'v%G 	bYj$+Jc/&Ȍo5٭?~&5@ӁPf]K-rK=GCIim!2yCMHE7	+d@68@vobi3:pYZ۫,hm'֜_E +fu݃,mF\GN+冒}aA`~
+`[ԃJjE){&!w n̓^0Fwud	)'g'2fu7pk&XX ,)l`BH!a
+aF*jh++$8)fȤfpTZ3ejo|^3XN>Ta瀙IGʥ(SNF4519i=T>V`+ͭ,3@+ b&toAk]W~ -VfBl}1FM"Uެnasgmjl-$}>IHeY C`[ne&TYKLY?ߚ	!\+%Z"]ox- pT^*"0hTK\0MB5.PJ?}W*Ut[!fɟ+1Ĕ QJB~Իb!J^ dW$NlZXJn$26^``tnb&tuAk]W~ f5Э|z+O4Y|L6z^a{ίjVj?y:R`qwv$JOOp#Lʕm,(X2oUhp 1=}Y)6@aqh;S0_QHM+>H"WR%l_f#]E.H+"R-_WM$V/Jꋜvi^%UUy:(eڲg8Q4TVgh[|ӂmRԬGҲ9ϬjMWtU͜,$iQSD?QPak,3a_yILy=z9؇[o0=qԇ0鲶9rD$f(Zi~r@OUU2
+~ӛ޴ٍ9ns2ČW	]z$aSb@/4552i#l8 ?m :rͭMԙбu`yֲDA2
+bū"o:Y-b>Zu5x0ɔƽMYJtX
+$F;mٔt`9dyL`MY=TSu0>z$sӲ#tXV73ypr223ˢ*&F9W__Q#TmNN
+"IFt`J9l)=&>zrv^5MKwʀϵWD2"17kgQ^L~vr+Jh"R\v9ɀß
+HcB>3Sx؁]ۼjVPrO0(HoX^
+<#rHHH`Kv< n'hOƷSZώptW6cCl"[bhD⬫l$ Ùtő89j(+49[>206Vr6NFARYΧ'8;4j/(hm~7Zgo"mg,/Kr%J2+p(UyugTH)yB<
+
+u7l_5&S# F̄6˟3@3}p_W{@kJDV^"l3Ψg3,RcT;guEUD}*j2D~/Xt8%n-B~d]*aw}ˊ3Cp>O^(^??W3(
+Z(X	4`Jjp! mDG,GϷ|˷h**< Z7Z'L@k"i|uh?SӑkJspҹ53a|%P&|]ޞW3R{+^`⏳Xj?m
+G~GH#UǏ2%3cѠ8e̛4oSEWM'b> ǊD4y$Kh20eTӠ9Iw}~AS^aF.3}W|:J<Rà5Qu	[vR?[KU']Ɋ!CyOJjsgTa31#dUBasHTsR}3|RAF""%I^L_Tͺxq.")u!SJW<3K`22@B֦ 
+K(	ԊjSmzTНXTVP6ɍI\8x@6HHmsĶ6"O_!4o6b-4=YjffKط
+C
+cѝysY"E&Ô&i54m+ѾT͞,oFý*Q2a3Lsەvl93G	0ǧGL)'. _gb*y/h``[;l>f.Z(`	E/E?ݑvd_s5؞F5tf^_.uYP_~ZBF~?`RdZ.5x6aZIk\@V0_&%Τ΄6Y5ZkK*ZY=8lƉś ?1UW]8^mk@?*(r<*^ ;I}U'sZ_y_W6(̸hJ`lXFτ6˙JL>nw	Ae4Y>4F1(;0HEMGёWK5ۅbdȠ)o׮gzƈO]ªb'rGrc3vm̒ʢ+v&<h17KQ@r2u&tvAkX~%@~ԾSWv,"CZԐ2J],LvE)v?i-TT{2JFG{p`uxu[Ȣ	~K^"nm	6 sZ>$`H9_$P$P$%{S.@ @ʴ;JR`S~}E|X|[ʋ=ϗũ5J#^UQ(A$R5ejQCf}6eN82 6eE#E!ٮk]w(.()Zϩ6%{Nn֘|8gqI{衇`HIZ}Y"ڂ6(ȝ3:;JQ\<C^1g1nBQ夓N~胛of/<yYfB+-)2v_uD$!+3NTܪn9Sq;SeHOcm<y؏Oe^crH"⊸	}Tѥ.~ֿ7t+f>XD	0 3L-kp,au]8S@LRgBLMx!u|QHtGn9n$`ouNHjdҟ	^'ЇNNQ9IF^l Lh"#ƥ*ؚY"Ze0|cTBC80}c#aO:Ļ>^,(Ō%9-c1,J­cַC>M4Bo?c:e3xhjXQmriV`WO}CWGD=yfx{uf_} ZT:5^~sD$gTerU֚lBS9Bbk؉ V˩27@d+fBxbd`tlm$5-//xhU½0I]pwn~iW+.~攋#]pۻcBdm,(X:{, <>Nle5pCm]Bk"jRa<_*r(""2Օ[. $2~`dˀ[FLA:Hlwlc	 n$pzڌ"nZZO-?	TMܟݼ60q`Y0UD5:D䝩>Y"ܮ
+:S5U Wj@qUw\AhHmYG!P*#,NnZ?Lx9?/	0_o&bQe׿Nٵ4y8rKs׍Bj:\5JSYU(qGUvU"1ez2RE,*|,1% p!	VGc9\s-rxe(UX6΄f^H`Idrܟ:X%@V7FZL=xA5ktD Уlt>l >Cjˑ_tE<I>	g=w7dJ܋Բ/cȎ>Fm$jY>:ȋAP<(=(LLzWf{iHH``(]9@5iB
+4b%n_emo|ܮ,$*~름wT3P%E/DfR˶BGOPuS!C~臤vrWaӭ4((R`yIej1DF FN)T3+aű\
+s5MomZ\d2*GmUٓ#U,IHpH[Vgw]ܸdb%4$U Ey1"""]	P.@X"NN:7T!"?LG
+HܝLF6J$#&dS/euΐw(殪FO(B2y8y}@բJls#QMہNiC8"`q+v	f;Kz	\5o!:ʏ $%,Zeqb9 p9Gbq&mVdwg)uYm{dg:-X؏&z3ܜt	%2zE0Y\?S.yg
+`	"[U"+iő R:1eѤUm#v*.v@zŃHfʐ??h5Q.4 X4ޣJz,e>SU3*XJ}a6SgB.::>䨫
+cU%rt u2OQ|+88!u0ف[\s&ER҉(_zBhvy?KYye{ďgHĮh<m()1 ~'uiHH`h]/;Yl])>8 jPg\!`0rE5S"J(0@=4~Ru&?JoeXkbx=uq^31<a3@ӭ4ԺXf/28j"12Fu
+[bk]n>	lV5!#2n~9ה5E\nEpx@[p`ac2H~N#@V1&	 bNg|贫8xZB=U兏YTxK ~f`p/+' ֡'46ty8ll{#Y>@g=6kl(P}NU6:;[$ruI*Rq1]DwPl4X9`?luG.jZ7VN`
+DۮЇrЁt֒U.&Tjw}㊉mC>Ujzj,"bcD+Jfx)92|KkuR׾&Ek;E7\4Q$)@{ݖ=վF3$P&üWO~G`itʅcHnz __1ͶtmDI QIҭö([LguMJJZ$I$h8HCLMb2쿩I=uH +#7B&H㤙pLPdim6(Ԝ=':髃'7/(ǽJ;cTV57nvA"P*LvH	NU
+~nnnnqu&OwOb9Oδ!d]NjswQd"]27  Q5[LB;)Qk:q&T픃HL<0v[nzCJC)\/]Pݝ` / i?"	s.7H]Ҳʚ "X{%K߈˾Mv
+BCLo6)["Zow>lO{4shJcI 먺&ZsZ U}63[Cy[Xb<#J*LRM"k10iw@TgYd<%-ʰ"IR
+֬5\@)Hn<HOBpI@:% $h&k$YITD55ơC+ !8	֌OKDсcELH#GR}%״Vӊqr.*
+	rJIxAvFk]X0hrIc%#;9+ŵ'vBkhb~|لY,u+N@,IWL7mӷǒ\ZԲ]3 ͣXɷ>!&Ae4$uQ%P~|H^JƾFgBN9XdXCCh[[8ٸڄNqr	%g+Xk=@vxы^1-&C	(%f4zo*ZKZp9a @DTѵk<U&wQ5 Ei77R߲TXqƤrυk`Ws<N	Ȭ/<=Su^.'C
+UtkOwO3=I@Z͍=k]1U ZЦ<X??o3a<IF|
+!YNtV-q`woS9cEbx{s"diiHH`FP:oO갚U"~X)7sq1IZb`%5.h+'
+<\cʖOz6y]=%,	ЇxczXsfEe{7_3!N
+3|B41~?,1hlMj&@U} r8!lo<#؁߀ԕ=YSF@dlOꞅOĺO'\a 12UZN}0hR,RR.U`H[Fl'ͥ^=Ll	dY0ۓڠ$<NtHHY-BOxms=XWK`LFDt0|m1@ʄp OdN4r<Lp_&n$V=;(FE8*@¤BddV?vjatkh\BeI/W$|ASDkLvAkF:};)r>p@ɹ?'F,1A>|{S.Ǣ /)7,Lvh[(`q@ސIvjA>ˊI5.3<|Bry$Lhjj^(a^+{ol%٧RrM1  Nm+  @ IDAT`2	!b{jIRZ*cLsqSϿ]*)iY?/fY%TB.R٫Gun:(_CZ
+#=+S6Qv)i&6{-HEDhV淃
+ɂ+(aqpAw,	ĠT ! 
+&*'W%*yo{>T$|\o 'cJ_ 6a%_4?$9 8	%Ʃ	.詪Q	d-3!嚹HL<LU.!&f/5"$vi9>"vpA6Zbi&	#"Ut˂S^%)&_tL!0+TFr#;Ǵa;s#+WGտx&~&dКC+.w"1{	|u1Udu|U9+hR'`f`~+k"GI!JFO=aLKHǓ
+ϴPRm7J|TUD7,-K$Wm%G	\55&lhnO9-	eO1~N>6`56o,T.UĚd|_d	.R$()^ֆfs:6j8=f
+Xh\bl!ǲ{M	X2ISU;)%]?&JhͱR{yE7?הY$Z1`4+g	W[6UP.\P;h3Z$/9_M*4\Ud,u#-@x	V̢`FCy ػ|6OĈռ$P&üWCo[-XpB5ﰸtǜA$}	6wR}:pL[!Da4˦,62U϶(<dse ^"aP<  r2_b:顢nv;!7Q4HL/%̈́}؄+S;쁴ЫPQފ	*aړCsr'	xo=Y^ko!+3)t:u39o?^'	`| Ikgo:1T8,g3yl&
+ֆV5fXZ_W
+lYX)($Ery-,Gv~pS.>;{.;/SD". m^e)$&O<^Iǲ!UNdŢBj ")"rvoP}ݎoG'c+H.".,>3
+|S)PnJ|M	L_5+x*VaT']prs؎ZH45"暪2$CRQLND2v^.~衇T
+`P6CN EzF[u  h۹v?{gxG3Kf[;dWiHH`?у0)\/M}Q=m}!Vdvm<%o͢щr7;+=_jCU^tkvw&0),)&WA}d1xQю.v7	#͖+7%09&d0c 
+ἕDqU;`x	 2|Fkob *B(>18r2!Jq{챔3,jϠh息[|>8<W3A'@8Bҽ6$u\<dVSE}f`|p	WtgL<4ؠP2]<h"&g fj(&2$eAW &I8DGrfpa#,>C]"=̰'x/>&:eݥcmLM趪c[x,Bz7=+hHb	dyAwkAUF.РK"-UpZ)E4RIʅ3L3mͣGMy@,'4 .lՓӴJEEH s/p%(N%MUE墢rEYj$485V'8bBOdp,P/_ƄP>
+9.}'DiC2Q`~PЪTW!/{̨13
+1R *lұ`41N=sOv#uJ3~_Fd0YIJWtIRikX/|ndɠv`$.KqIZ$l'R,o#o~!juY5&5Nnl>7|D5>FR""JJצ@$_`Vfӥ[59RӑRgyݨܦ8]wBMT$'ŭ^oYg3z$nE*j1L*bp2[L2I o8<&/I?{嗛Q2;MU[__nT$F>Qlva@WhTDj	$|09=ܣ%{bS9\9v%hcD`ꪫu1^%N@0I<:+$7GQZ-.ZzPK
+r~R.8RoWdIƦ	YȐ6ZHwC=)NW$k#!T)@S$ ?E8(Fhs&Iz˂fm` l܈0?ٚTۮSaPME1Lh؍6BJ-l Rj>ySD9))rECZ6hOyyqԪO>VdW}
+uCƷt%`{@Q$%a
+:`OS0\6(gZ+3^ƁPbTdCצd*lwO
+lj-	,O\2jǅY-5b'E%-es
+S۾Kh0oAG
+yodOcJ
+fȬ<C21Wkl',5L#1>RכѮ18RaP
+a֥]3NAiK*"](9d/&214QD$>?nHuS!#L*-
+y^j
+94z:cZUX[)C(.C"Q
+Ϻm+Xx*lm>OzsG1 EC	=)ڙǻ*c56\ÙG:"LU7􁁙Oj1ddq;Yּ2Wg1rkGM8.Ԙ5$^Rھ9ڵ ܲL[5[v\8ZbYOS.0jڱev5lUmWO 0tFIN` l Q]Tzq&dCh	UGt	w)Be21t2isrwZT/8!hmA(\sYg٤TZJ8@
+_	"\ZȧNҲ@/9mxɬ/ǫzҗ(U,4"pYAk)_e 0OKǮE/9f_lT5\j$aHo6
+tqn&Chj1v_H`lATxA`\;ڄ+&iRI@%{FEк :(+kK؇moV2$wZE	m[jbQ <J[Gʧ̏1%D99YO$lM+%`"Az1[jye>l+Kvc%PVĞpVR8`b	08U~:WDpB~cVFuUF+[H /6:K^Y!
+uhyy?h8a[GLɄVO)@ f6^/(Xx "dGbd+Go(mhoj"b;up,X'8 `|t9&kjc?K .f!3KWLNjsY,z{v
+t^(45-aohL5H`[yrY`UV䤓NM&BRя<ɝcK.X,|OvWg:F9LA H~7~K9F&aI
+V(K]kITTZªBD5͒ZۼLl]e2	V?S1 ?(SlCragEվ{=|Җ*X	5{<YY,05`zX-l#`8YI %"0=OUʨas^?q,h_#TsK:\ dkp<f] lz@ 8r;rɌf!71X'm{ͷPV$y
+Jd;Wԉ8i#΀/tlpy@@"њ߲2xkA
+C.=)V1m>rլÏ؏1RĂLbY5od̏"T"s^?c2cTx2&}زv&9Y>%Kǒ4f`ǥ^j-[zɽw[.Z#Nk ""[Q;пt;8S0˖pR
+Q x|;Ϟ`a첐E\˧bg<%Z gdFu.//𦉧	^ڄ\[$P$P+x"J/"9):Ca 2bܓ@WR'Eh(BqHOE p	9p{;F'|2NrTDzqZ^]E0rCe	|W&rFu< Mb.(=pyuԀ
+V;nc{ Mһ.ϔ/nw*\8h}Ex]r6b|BjHq	T*}B`YR.}Eq)xBű"<4Cv	][~;A	0ҮK\iR7b鲌cdXUP$,2V
+Bݰ aPQ<1"4oy=$,H٢7ʯH4@	֪|m:dOqsQ1?	Y^bkflc[t=		)È&!&Vz*{Gsl͢3'x"GZPL>p3?%R/4~\d"ap(m~6;BwddpU2L0;SF1M^e&6XNWe2mj`:cl6zRȞYGTɤjOQ͘~_}q/Z<Bj!0^Փe38<o~H|K_1S92Az)"T*x.j&8Ǝ]	oͱcgLݞzUߐX'gu^J 8$CY\Z]8xNz4 YeۂskȯKh:e3:s	 >& 'Մ锽4EEK|3GWU\,/rp;澡j(t#p1cY5/|/0_W 	=0$ñ8=cެ6~t"b)'땑	U}vUδ@	십q0M_!xU\ ׾5aB<(Ȗ+d~֨Iğhjk-Z`#)<{'VQP 8=˛gTaEWyr\$P&\~6֤#AI̞zU`RAo9xQ.h.ҊWFX
+$-}ίQ0Mi%:˂>1E"nBPR0Dns,\?VѰM{ȑ#CIn h ="6*W;	F-'$L|~qX*[vFEPk'Q,CzT~Inm{PZl3)}PH@,,^-bk~.-ͣǀk-p@""""M	 k)yf'ip7)'rqII5tfPTTͱjlCXhbKA`ސ0{ 1lJ@	mFK\3PZl;RQh4]@eOG?<N`[0 pqxjR8z(3j4t @/ΗZ "
+Qn֕VLPd;?NÅ&]b1&b@`{-""}#R s~)VdsdBj""J ()v?#@`[% 6ynZ	]:8@{g~g?. 	gȢ(#b[oƑrE2D![A'  /5cΔӚ7"f[)bnP@ti 3.U[\z;og	{؀- 6뚄4>^w|Zo7
+S*LlѶA[+2>7Q,Tj~+_
+QS`("TqBDZτ1eHLe<Q@bK6LJFF$ S.zYޠ@TuɶVYPsLz{4^eA-b$BOdk Tmt`
+1&AaӼiF$in\[YZD΄l87ۑt:(jmq<wIWr?s?+5C=b)JYauR"U _7Py.){2kM	ū6ea0?7Tl$XT,#xah,i6T\D|kP2gp*f NfPDq+5͗wAaP,/PY,诼JMK%@zc7s?5Xul-X߾%[wms ַGqrpՀCH)<7I8OrB?y˭K\h rYmЫ.oZjQ.ïYB}K[v`Ek(@!n+޺ډDp O|aifBbx 
+)œVUXBj_e$RJ0?@`&B $V <ȦM:V57vEuABDuRCelg5h[,jo(+≈[vK
+1EDXQxj62xV{#$kr.5{+,54/A<@n*
+e+5d~zIõғ/u-<,2V4=2|A[JBBr	Y^,*QB0|Rwu_I[XtJy%l,6 FZ(K~4ʊP83TDDH+c Z2$3j^۵6;3!׈֋X
+Z5#@*@z"xn{Blq7	XY#$[':.>R/ K"% W	<쳑3uGMms->h*(Ƿ6{U)
+6ǲEWFW$P$NhR. @,NHjjw!EoZkGop@=Xh<3FeT9ɖx2ȗVȭ*6w@65WZo$5٬¯6EOv0{,弙TE4JS"uݔzWj$К]&λ&ѩ<|]&.Cʢ茤)#T:!5KVk[2g@k1U `WZP)<~b$XӁ][*		LVXvTcPQ."!AAu8j8
+ҹkĶWU-!Lt`QwpGT̼#CR),]bofeijZ8lgy&){0xM8L98DZfWfRi@[c7x"HТ.h~y/7V?.^]ÏK1"yJrԌcգ]5G*ѹگR6!zRR `֖oz}Wr`i`0jkP8@ x;	0+ŵx(X6S_:N]fBsIL=ꪫ05(O<2ByY,"l܃4
+*~-Z'(Tm-W^y%faW\r;6vAz#\(5ne'ySHnkgD5E;16>)gܠL/DЍEPnzWep<^[~HQX%)q8:r&dIv@k`ɶ*X2Exy'bˎ}bL3!@bzf:о:c/}v_qu
+ (txGRslKcYmc@/5GߞSN9L@`ߖEEE*31
+r)'Pv"Gj3Ա$R䁦 
+wnsCs
+)8
+|XjLHS.hj8y%&0gaѪp lնYN6K`
+A,\5y"d{Wx7<V=w9#<[:e(Sit_ᦛn }*Y}z@Kw" ?fM'.~(9{)4f^͍oV+}hrA"b79ɷ׼ƚ3qvL@82fSc˩d*\mWk;#ƭGI+xI'QXJZ
+KɖCx>߱ոWo*7aU){?lgw	&9Y>%@/zΣim҂RlDe^`Qd I+daE-P"֙pАRlI>O0*՟ {Lj⢜paBdm4x~?Tfm|n)jnXۉvhnCL5#IL),zlj+6C=dS@%g>.ƚWn7Ա\#%`⥗^u_jqj3fP)er1z-Ea0Z{}N<laq (-*ۉ	9ʹBigm6NH Y	m3Ձ.b{8fc)	V/5=B+Fb?RёjzkF,/_5Ѱ~n<HTfdS~$crHH`ۿk(}Ȋʊ0Cq"d}ZN$6]52SdT\k4hRĶ߮<+(=`UBdRSgi V&6ʠ)+*`9a2(տ.]$Pbkt,"kҶ	A/抎@Iw e|k"e~slԬKaxRT́5~!9A\rp\l[#Rnʍ( B&_m@:%[ZdH<wpl!:d;εfPO%)81鵻ZD0#x$Sd&Xh(櫰h[1(4M!a3
+Nk'	 U'	pLZP"ڃu[P0(GZ8jNZh U,\[?Ku]Dr["q}IK0p  6{-QxA ÞӹIB~6 6F*fv"/h7"/Ke2yrd_
+}Hh"YԲcS\?j(!@ruԕ(	`y{	,U/UzKVz3EX>ְoWeQ&xUtzϽ28,1-<
+#71~(e/W~'$̄/.hY>ۖP+-:9lꀭhRPYOG`!ah*8֋llaPuڤ'jbGXy<u0j՜d'Y@BM'VCJR$3a	/_We2m6FHgx3	QJa(_8}gB U*뮻DDBN\]~Q{rnj)0mc&(ʤd"Dk&mqZ<[{
+Fnv2Px/1<Edּ21N13!֛E](%C2\̞FekkTo+k/^
+^`$1h7pfNv)7]܂VdhZ8be-P] `-@cqhHJ O*%9Tjn|[$P$N	wǎ7c-( ŖqQY H)aMfGJJ^ϠIw3 -qr&L`I!?hJnDW*TI6Kl-'-m@U pg^;ojzqCpO4ƼwihP@&o˿4rCTsV-Qr7	qĩzm)#k~+YQۛz@ <wb4bI	Yn]diݟ}ʅNQr^iq/A9Zç?zzGMU;3ѼbƁ5\At((  ! _4( 2dI!Ũ)Q(N{uU>uo>콿{^l=5)v5n	IaCd^@	"tB#C%TT(Hbΰ}yP۞1Xit*''W]+Y2e+	bj jK\:P5%6>KXz1*o|(8]"(1q*Vmdfmm:"V+t.	1/o,
+6K)p+N#Kv0j-M҇C|~| ^j_eGE1#-8iYb{{+n&LdH?Z\j%8f];5D^rHg¨!ƸfAP=#%Xsj$WQf2ب@ڶ(60%0`R8;+hxDOEd%-Raz9tL[lfsRjk
+ɆZRPrH$iDG{t:I&#R׬>LtʼDoO bƩNǃ4QWG.G*T5Y" LCGcޣIe"#J wj_ܚG-|K4}C1łUfΨA#:3i	&9|6$z^Y폢~ڢ0&uR&J?*;?AB D|n,"f̣6p?	fg^at󨝯%Fھcj^r%;i4"8wp%dvGKd;_;,ADQ"+-Vp|5oׇZGvJo9D ͩj|LHПwE_k*Mt,boBd}c'rE>R[T`5? ,(YqLsơ}t*LD*x@1ƀز='yj`<y[$?Rk^~PPPkU?	 j4j*&l3L(Мk?xS#TCCKJӺ䉶bʅ<Q JFAAPtA@L*'Q2^G=|kV+a#b2¥ڔZfB'F@Nq4T}kk0'PcpIǀplO:$,w=	`;āofe$yy}&%p_9<Z5;l{̠?Άb-⋷#ښop1ǔm>&$8$\7&?ur/%2~&~P9TɅ;Ҡ5_fk55aKF HdDJњ8%"Csя~TDsKjϪ~c!9d0mIbqө(n,LM-T}Á*EW_ :$v4p9llPDmʡ%tdlXX],½fo}ǢgscHV5P%uW7N^+'U]pR(dpR?2HuA=(zOƟy/˩t0ڗƋӰe2"2Vi')g}v]Z[dmIbz:UM ֊h
+!j
+9O\ρX,kv[48
+[hkT57JXe>].I>kzb2`KS:@O Hp#«+A*εiefBƳr!aWD46qOUcm8J1Đ52BLli3A2xa:1@1#22sԬ^-TOR8gVYDuՓ{$WhAaLjYNŭȲeЬ\m_|qO2n	w#4zCf,btN3j%p(Ze3s`70Ex0X<HrhfKʴ)6H~)|s,Lk˦uJ6"G_ha_ mi	٦$+ K]2t|1XqJlm:cak#\9?2:I  o&ᱽ&Ԩ<l%P CZlb}cko@F)Bx
+f1¨!]
+,a3ܐ_T;+K` 0\%(`#
+i]jqͺ Un	>ڷ6XY:W<'&˜x#$%f 籴EU#H>nweb"HYY5)l44K
+E@!\No)lDdQբ644)
+qUrHBz;tHGZG dn>Coҗkt[niU-Ba3&F-jpvއlpA3!;vSfsk!,Չ`NDG"<M* ]4*Զfdi9.x-L8G|&\[?ҖNXl)k>+ 8E{!@^{uRzYM1Ǝ%+,)9պml&hU%#t@&VAz>P"Jlȹh\:$pHVʪS+)Kdہ@Zp=v2P4DpP1	}L\6/+vs1fh{-w*fVX1n |nϿcgB]Jm[<:m5jU9to|%&,s*=RaX5B&b]*#LH2Bf%'at}VcA@}d祣zD &BGUc[n0,O͝o@N#VMKİ"e0b!4bmV[Xz>ĪJQR.vK_RfO4o|8lW*leEV|1v2;٥ b_wuX!7uOY]"S80c&uIvR 3ۗxncV8qD)+G<[]zj-Uz	J*nP0a\VSXhSj]cA"<-0]+Wi#PkWԇR"(h+I[oD`"H7Eap:q`SXPy GIJZ"!Z>FNtN6\jev۔:-ikmFaőcy#̞6,Bg8&̅lL`E\HQr@J݁täpnNUkGWašSXx)U	5Ϊ>hqU7"eڥO9ݤ&
+I~^W̯]-\#Qv5^3a|yɰN-%Mb
+#Hx"ǃpY/h3VE-ș/;3*r
+4pe:=l[NN'k83:"2d˧,LĪ1vI:b?&NL$l!	><L誫XR[jUan#P
+I)aUUͷ.2i#Y]X&mt69jpoM-j/Y_4ָ zI[TMQ>69T8`\:zp|&*H4>;mP"$UU yD/HCa# (39[O.Բ RUYҚ1PRֲx"}| oY8~RH>aR2x2ۉ.+ӟ4F:E˾ȆC58UUC"+EQč;oI/)1~A:96?dSj뉴p @bh8|#V82!bOd&FS(7XMhq.>|pM=T{aEr96R3g*{koT>%xTΟdHHo)4ab\ c"LH-i.jY}$8EY%"\Ba*QP+c[M#wťFU7*THmBfuIFۉ.!)$qm`6̔58c\sMy20R|99֟-^|b;r[RZ*l^6SxxQ	aCaTU\z*'ix}dǨfwŒ5z%!zNѦ~0/Q-t<ՠA	#*jE*E]QSq"zF¡|~)8Ls"/e.2CW[Gk-FrQUKjK1
+냡S4}`d3EW6PLEa4BTL򋓍oL#)VI=y:i
+~,]lroҏ|#8{mfBOLmC0_"
+f66o%  @ IDAT;合&Ldb-lgx \Q(lѪ.5CQBlu*rOgDݥV <Bǵ8YcM:@E@M K&FG=(b
+i ƸnùAX6"|ٸWsf@bx8mc$u^Ca/$O>'[OoY}veNHa}/F_g<HoÑ#X
+q C2Lc80dh(z"@=L7;oe.9i?H"!|z_&t7iO?t5Ǎo"$X0QGNTj7zMfH>zmt)ΫA,w.=BJr!̹cB;s7;g*0?Myx8&1y2\|ccc;ǧ91bf=h?[[!X1ƪjP|3PD4"V.j0"wۏ5)r"܀ݣi|rA/!7"j|Ā0$EIM!'C8W-kxf3a6@N>NP[-sד#=Ab&Tf	':]R{oF^SАz<h2<uRX2
+IacR\ĩ}HR.%9>~oЦꤶ6\Yy:,BxŘ3<͇;͏N]rEO< 5#|lk
+X+S;#EYEB}xc@xDB	sޅ{N`	bB c1;b&tlWdHgb]Cb@o}+"ٺ}'3	h-L	E	aqq[Sdc0K#ZZTXf,͓f@;$mg(Ei87Cc
+uQd.K[\s
+a0Ͱ`
+WYxoҁ}P.\!&)?LİEȆ>l%& MayMM~`eDWiB{1/آ/r}#ͮb(	#FJ6BN2vWs,yH8oɡ%, 7x9v[L icM`Yzꩄ(eM+*6>+b-&-TQP]$UV33O񠕹.$ ( IGL3Jgϧ# aPlvm?υ]=%}k+"HĪѲHr-Vaߚ[	/9oZh=MGRI'¹ٷ6G[W+QKE(_m 1홐E3t-7Ns3UP"m۠1I8TKѺg
+t3a]@NE!scHL51,N)\b&II4i,]yNO9e	LAN^sw!Nf[f 	57H5& 
+V'{c	m;8քиɬ*	]+oy):^q	nʨޤ#9DjtwsxՌ3ҺVN\aW-fz~}x(dc^+Cp3X"x,jII r>L$sԉ@"0)(7bmZ%Ҡpaz%rf{U'2]w}-8l8~o(5dUҙUs8dd~c&kʾEc_[*zl44d;S7N@ֺT}-)"8?)Rsgs6-=ܓS-NAߚkٷp_fĭ9H'
+gϙ` c5`aEZA(fl
+eB9i h_Vp  9D .He/b	r~_>]}MdL
+bOty'f!CoQ/]H+Rc#f=#Dvzury!HȽ"t6QLlӵ<JvRƄ[cyg=5qw+S+_v ֬8e?||%ׄߟejVbz-8͵Xa̿܀`t=k4}o@vi(0ke6
+-?R47HVODSc G۳썘<K.	WK@N~}+?
+~,Wb.p͜D*T\/L$d-Cs¤h- <<x0CT!ޢm/H{Rmё9bYiFtm>DFL?yޚB[rE
+
+^)+57/6^cPg_)"̼v "0HA>69!kMk>hՁ[|7?`{{wT;T9'BDZ#iզ:b&tއl'dɋx7H4k|.,$5pYɪEL٘D'Q%BX>{xXۃ`'h22I@Dd~"L5n~c6e6HrP 󇽃mOzLoaǚgBf鼻6h:lDښ?E2I66DFPƃcY}Jk-7iVGHŋ+[Z,PWG`ntȵ<"s.J) H.&om8l;hvW\m{z,Ifn-"2zbdUa=PմV[5oQ#Bȝ>KB6QK0<M&-; hR.dS<TZ}0d'4l۳8H-S 0hm-<SD`"m4,2v}jI/՚gSqC$-nirH80?G%@k@a? fF%9J68:0k]Er
+3!_"aelO$iXIbݧcI&3!(2 e݀?`
+IasiU`b3%E]9ˢ~P6y="8HXl2C8v&tHh,Im+8=zw8)o;fmA1ӕMVøtꎏ6)09k|Bfm%H)iTo9g  3$&$_$L}Q.HERs/b)fȃ-JsnDHKYff)P?"9^-h2u՗%rѐ&bhcwpkN6ZƸ4ID30(74i<dlֱUȷ͂UhO}J	g8Kqkt6)ϪCX+!-?,_t+2 tI,4Ov5xw+2_6)8'\ꙍ=~w#.LL}0$"h?}ƱPiкPCH>LgNLڙY'7կ~(Eph5Kߩ@΢KfLH^H. YBEil|$l+04N&isǮ* Fyh٤-ňfB.'֘jHSGo'W\qeŋeZ<Y5xr<G[k@W'fj/y[}CrlzYHAN@:F jt6qoڤ3yR#a__{}ƊO{F1'\?옉N볓)
+ 6D&26OV F[q;#$rǝw.Ѳj`'G)1!Cs5τ\[lLc18Ź1+4R/y9"Ȅ <C'a}K7鯎%F$8HvMQ%H){7;yGh︦}	S?+o99zwO eMQjtAK
+[pY@
+.D F |f/F?Nlj6skh442ˮ vߦmmͳj4`\!/>[I 07g٫3,ǼvH[1v?^}@ޕ8-mOy
+b+?ĢUUFY'5#SFsw$#x[lRs6Lrԉ@"05!\Dɥo|	1(M~n4FWl^}{Q0gbL=҇N܉v
+3#)-'%!rU&9L{ۧQp&m%x+9^
+|.ٲUYrͺx6fnZYO{j㤧^ve_0H%W_/Tϋ#eLP9y(@5NQzQt6o%^{m=X,.&	Cr2Elih>SuIWN]sރb&;qB|#Xz1 Dy2\uU>&=>D!aplVfv423SJz=\ӛgBƒZiAgYG,?x6DN">}F+>]ۉ1x~X,Bg;Y h(AUPA!g<v$ORXEM_!
+dq*$]!@v)hF "\S:v ēv-M2&1/uYWKOr;~k_$jt-.sO4b?}GOL3'3T76^;r1nƝ!ӧ»]9%]~Fe||42څtv1=t-/XY3.FpRոRM[( ?b D=Bxd3rD#,/&MDM{;21Os!JnKw'atvv̀k!^rQ^A3mT*NOI	h?&á8P:ϴ(f Z+qkd$qrjH Pr8q7Yirs>),tD$ɖ.]p+-!THɕJK_GaoX6hnkRiav΄$[^89
+:S.T2iHdy䑲&$h~Pgm4!a(d SK*5p6oj4O]wc!>`	9575ۏrV㧵e/{{<v~nk	w#!nOZ@!52?x?oJW:<*,4;Xnw6_5OۇG"2nY6_:$A{"EV^W)*-l:9)홨py6oǼcM&I{9(l΄a3'ʼwyD'isX]m 81;#T*)('FRǎq5d':#3_zn(J%H{Zo?1ʁ1qCǚgBC:B!BR $0Ay8-4do{E-4|;񬡝<4R SqH;,yGmt7TOAVAaY@qqF`BoQw``.DR##0Vf"t :,ps} }x
+g-p݈  =X':]^+0Kv=`%aqi@O{#	VH?in҃1`u]X#R-dS,!yHHK# b))l;kVbr0*)Y>"N!^H)3$Umܢ ,?j<5EbfKUÎ4կ~BBª7&	sO>bdX >
+Ek`B#15LDX3<P?GI!IUUjK氖#Zo235(!D3`6H10Ax!B	lZz֛	3iO5:=O+}uvu
+}UfaBjkU4:ȌȤ$BY=KNwOon)dnFJvY#ԍT80e|H3{o)+ق\jM4q3飗N	d|ÊvcVT"1d%Xa|cXD;^DQFƈ2ϧ/H?l FaE$n,n1ۉ`4C =8?|=O7)52nm<?}H1W(aESNN0Ko;O&6OtCyB@n1䍧x).fsgozӛ]0ݡ5$df͍{^I~pG9q=Xr@"05r.3$;%Ep>0tPHƉvJ(l\FV>}d{@qnĉN1d99|K>CoLzZ3 @":"ylj[>pRʋ'MRhW5,]\OӉIr:dCe=!J>@w	OÍ-BtWyR6,KS5r#Rͯ[Җ>&1FOC()߱3j|n΄*r2,z).A[O [:{>lIuHni\GRs!PS;t4+"-<aA1mcSȷ-jfLRر^=y&t>j,}2f؈#rIZ'금c)uiqkhalPl1lm6<{/[$BtDDZ( 7>:-Rdm=|s#8X(AAZc*lldƍ4l4,{)"Z^Jy*l{(8jgJ$r턥 c5(VT,n*$4JfaQۄjRr)l~2Bj;s<kAjVi,AW+3fBZ9lAW_)@QȤf(j*f(v
+Ha#	ihqQ+x)TH8[ґ+l4+`CU"'VоٕAw[c$ThQ5w3$+	byښC@ґPX	՘f~o2#8laԩ5+)u|[C۱X*T{x-VČmuQTؖܦ¶Wֻ5,)yhS"t[[6Yv]PM)(߯Yߙ" Er5Y?רHO$ns6: 8.UHCy31}S gi6JaB)w*5	 P\?8A~xG<iw4ՉfB{yzdXwgg/FjF'N]$[H{>pO@Q!ӡݔ
+mk=%|;!1QM<K˥B)bP|8m&EocFvULE7zd$ocp`6R^ +{n%~
+Y8"W[5{9cjL8*[1U9o"ةLzѼ?P$ Q0c@P:hҾ|}6ٍ
+&:G'"[xG?l8$zի[9|n	sR>hQdX>8!\¥3"RƻO+bΎNݢJ5sk#]o2oH$8lKJ4dBwCVky>e$~Z?f~̮a[o&}U-vu"b_ת(Q(?,,uտWy=V(USO=ǵwmJnO>d9ݿeEЭ{,،[&EB@UD#
+A;`RVޣs-gh'{Rޡ		Bs%; s@"0z׻?|N_/-k %5E(0̩d 8x䑳O$9޷(>`';cI:Z$dZS"+=)GE{8Ҋڏq9gEIW֍>jk{+eH,]k~9hT5צԚkt:Y85	܂7EIH">w.xkMLD-4Ktulhm9ƭ3
+O-gq=8N~Vg,>	-3o/{˸X!l^.zJY*tAh̈́*r2,*֝!͑ŪXWC̎ࢱOL`,L!CCA9ը1w5LߟyQ)gc@$t^/:%~n=%Y5̄RˋƲvlg1o_6FemRu,W0Z%]!p'2̴ir-,p)ވs8IGUmicVI(uoh`Fuzg<t=H{.1[#&/w3ߚ_Y" Rp8@HD+TlքeG|SpWZ`;wފ%RP8hn+;,1nv^??iP[$>b>BcaBڕ}f@'A*Χ7<UFt2TBnRP
+;
+kLmHIhڊsEY|EDac[ESFT*Jx4@b2TWy݀sč?LB-QlBUkh$JD`,v~hleW"%C΍TNBj+PPM9ZzRO ~8MWٓ~֚_ %MoloB
+Uј59Ѧev-FŽx*iWf!F4QtrN~~ã~$,#[:[DKv>̈́-2gr2Y<.hʌDeKj¥33%"!u0mf/qRȊ-Gf210ل~l?lGԊ*=OWۓ63J[75;h!'O/YJo~󛲌.zA__0-4åd{
+1/et"vOJ2j$~'||89D )pw"tA3}BMdﵴ.K+Aƿ32Θx=Z'-ϳ
+E$+Yk",#kv4YFʸ\(iT5˜JҢqп(ϝBR9Q~BGHx,#@nމHe>cj6[Wd7&36a83}@E3+3}yVrK|%\[nDeYtFFb+T5N]Tav#95Ld~vrPJmmP{?xQjQP^D3ʵg?=zWI`곭r:Hs^s4>__.0*W3)Ø $aDdpQqA'qn	޻m$_"u6i!,G<TDLgYA 'B`R>CV~L2K[{˕z;)^$)QJ\#
+zϧNG{~MHn"{AUsҚ#q1n=hnvFb~#4'ǥR٩EH+v3avcLmmv6ښ%L%GLASQaF8e5&IƲ	F=Yh(1qcSIJD-l385;3BA2E]{bHz/]ȔEzݳ,)y~&a9-s meN2ba>}og0>"wLdCq,yD Fє.f=oNZEҶgըG;è*͒nX'^+W&TA[o&TtyM9O:S٦1X,4Iw,wm2y4KBפ0Jh'd{Ge#_Xm([TmчR	 xo$[P@)?TZ<x#%?-|ȱ$|Bf̫Ͻf=F<9ϱϧ'{
+!&JH'Hog>3GLLCNgP`- s~FTl(HH.NQ=]-0a JyoK7۪"Ʒ>!"n!(pL;V=IwqAN#$f9G:ԶmK鈆|'zb7U 0FC#*f`	@Bpx*^č4mh3av}Ȗ{@N- 	&y,l*?/}KmL Ř0& Qrmv"a@NK֛qfq_4gs4d`16(l16ԘvW^o&̪Sy~#@}}?숥Wd?=(Th,.gd"\k6ZI7aboMCrVn4j>Qaq 	Nljy^'@"9ӃUH.4{9vpmeGg'{+	- mw<ae<Z%gf]#(fi\#l~XR4(I|9^eg¨Xs
+ϞA̓8LNHdnV]b`eۄGZ^?ea[I}L6Hf`bSifE̱@Gz袺ϝȷ<Fj3*MBs~~km$݈j?9^6=:ơ8G=o~sd_bX}4(Ҭ=-akb^ F#lңM 4\0Ɇ$壥?T5HW?Z5(p"q"GZZE˙0S@NNAXOxgp#='0+ۙpG5V/|MdF'vF %vۡDRq/yB'bϴ-é9:f;5=nC(91Zl2eFk BrJ2NaWG"gqԸSIY¬ș]
+',,Ҋ8n4@hڠjq뭷0?/޵ )i rymP(`Ds3va%)TZTV 	M:,s~e6b Ji)5~v8l6'ȸG?4LY~FZ,~2.8lr*}k&du@IbK;jIiE3{I 
+ԝ;)	|K;*ur2b]vJ+q`fqFլtxy
+HcnTq~`W"ᦒj<RwD(Dȡ%C\-Ud?cD+^
+Ƶ=}-#wXW9v"AK+駟>n,#t;I`֘bm?4G{mf{!O$d$"~5b?gk/HdbZ)(k%C ,Wsv1:-nqrI7as h錸2i4n!FƸwQxlg[sW:,>rс$(xJf^=:u oi	 uZ|k$L UΞGo52ӏ̈́$_89
+6,9GZe 5??V|	$*yte9MCo3!	
+mjkNr<lB:O~f/Ȧ{TJ.lS{M1j+
+3Zj,&bPfkAN'>Yk"QxpTEaRyn$F#q18!ZF+j-q,F*+K^%Mޤ++@ 6N8ᄂ	
+ǽPWy$ְ#ko)qs\0/&moŦ%/q>+݇!o}[(liQv>6G<6Tp-23!"& vh=ƒڌzj4.=JըYaӍРO^
+UM#]uM"qPBU+Ke!VdQZ7]`Ԡ@WND HCQ[[CU~Æ7NaCUgo+Wб/OXDif
+=/YM0U쥞e*ŏjb"H˖
+[;T!q
+d&&IOD S_q u1i(A,hJ$2O)Ŝs]>n"r2LWo+fmMϞτPd4FZjbǞ;ohcJY&@RU[5τ<TU5nԂRa;蠃ⳳ5.}hcpDa%&ak_BUda-UMHBLȈa[Vz@"zVc8 pE^LNfIX@gtrWT5jZ@,1lͷ[Gdy=vZ[3M]XC KŮzaH"\JjbZ.kZ)>һ%1lDI\oE[zj~j-Ѵ"RسJm,IX5?6DİMNo"X1bzվu,bՄǃN)lU袋`˫U+11l}{kpu?aZFϊ"½dвWѸlUGQ@۔ !$@ab-&u5<kUՌQ<ƅɑ2FWSf9s<|Dd~V.iE,
+[gBj?/b0:+	3l<ʹjǫ_j'"0nzֳ$E\A@ rR(͡b1lV& eJm75:֬UafB_OҦ]I qԣep$NhBC(,MFP/ޛ
+W2}I'UKFE[9\UK["N-ǬIALF02U(wԧ>ys^9ىigTzvSK@NxM}wy<N9/6I⫆FLp1@/ْK8ft,YfliV\5YF#f)vКXN5Bs=9N{M~71t|
+T]lFglӕڷtuDv(#G;l	q+8/]d*Ein۷)JG:H:8G#VUαB\YV'>OyS\r%\)
+)@y8H<!р[~$U#a-G-Yz-cVC>GM=bD+>n86!JZ,t5 jJZciBQrlt	 1$&q&!39leSYmö́̿BT5U~"u{Tv֧v;(o?яb-" Ƃ|Gm=o5ySМfNX)y8l^#U4߾Nj;i'Yr2,Kxk[F?>$@ /9& -8f0-ytV"%'Ag=֜|#Pl0lXuHqg)В_)c͕Xs&ptPM.E?~mm:owN82|k|n[|_mnoaf
+y_]7shFyPv~ۣhzfzF$<lӫ6yK""&;M}|^X²)O
+rc+rG4>(v 3ae]l~ȫV
+%.|k|&{:OuZ^j,t	QUxzQ4/|aMU-j>x[Ҧ6)z0G="@a,eL(8Y$! G2oJZ R6SUbG$rE<ikb"lx疅 9:Pfa(>*ImmQȯs/ )lەWP,=BFjjFn1lAEzղ=b@Ja7v[sY|-9sQfgΫ
+ێ;hUt!l֦LİicDmlKE[eHa&Ukxe3ᮩJmmj&ah1זAo:(x+_q\hkcH+"#DZ>Ȑ%H-m"$-`?oYQMD.T5	ZL	!4%/y	ԾPl{pSQ%7>60y<GD =mTjd˵3]jr:cG"]749ȥ^iE$.IG2JZ5$i+MDG"(ynsՑB/fq F[=yΘ/$g)SbEH+b#WgI:"߷?|[uKe{	<:TبgVd!KA
+[>FU'JVjTF[RT5R9䄬f{{LlpɰtlT5?D)τwGq҇lvk_Q@MU̵EacG'CUUk{;%Uبj~2fߠGVqt&Y5=nC(1 Ԓv2V$xqd YG9tD\̿b\[r]YҀ'ڟ'Q=r=k*HF3@#w-W"%rbu4v5a!.<H)Ц{NWkUK}l6b4H|6-"3GjqK'
+ۨ7+l2cmB~5)|\ޕD E`TU:T`*lal!h5~KJ:vmGUp*l}xqɄ#ͿxOɑ"?ڪ2!eq	R1ֵeıԾukoV>ǃ:ˋݫvb<!oUգ-=UEBD	0(ՌE'4jL  IDATf8̙/}KQ2W7ՙyr!aWV>Z׽tz9>_pV=q{P<38cef
+>1v-dsj?Kdg?pGk_v>{K#=k)|S*6V>0s42.]sWvجJ習5`]z/e:qeÎq,AIs@+DP?i~~lsV2_8smi!$@"$!fhCnH^GcR$V/2Ang$K{Cg]YL@f/ȁ>χoR''\dzЃ8t[rO?]~'=IhLhwyվoYowەy ,k# αmNLD HZ" Yg% i)%g}fmVy{w.~}cp 0O-*D`:nEeyLߝ]FKyBUa~]D5%RVIJ{\I #ej3a-@NxE΄c2j'?GE9ʜ?&Yv j*3X7a֛	>p5֪k
+3[R/W 6lo})
+$U3G
+VMaޕ$@"0~tN;Lgzժ`H2Vk6)Ip&1DҫV'?ndBn}p҇b/׽cS(,1Y!'ETޛD H) 	14HemLSn_ޝ -A 7Fy@OX5rr,}?g{2^HT+XFU0bjuD]1lU5gBWg;˅@Nz_m΄aؖ)##]r6ګ>"ӜźdX5iH"m,Y%֛	3c2!g@-iEͧo!a."gO;ߏ·iE8$戂K7wV$bPLww'&@"PJZfk \wu[m~w~UI+"'36jD`:[7py(EUw'|xj#27('tRWU55dHlY"gjXSܵ{:moj@"$ˈ@MU3]HǨJ7Y"k|!8V^T5JD_WD*D`:q@UUUhk.Ba[ϣ>WǠWǊltxN uJ*l㨪w-Pa[o&NY1r2z897w<)lr_|U+㪪j
+yK@s^	iV~*_8/n-tw[
+tt
+v>4HD`h=}ꩧjp-*H&B`оTU55oUP{~fG~cMTYgpIGWnCD HV)@Vn
+8
+</Hmm"r[Fw.^G{͟گm^//3ay=zwLXw:.N8ᕯ|l"ZrGdj 0e!՘6rik;Ck%HTy&,в"aRV~΄U}Sdxc{{x7dUK,i~v޶Ȯtl'$׿^KZ"/D HA!׿5ytmԹ7B v~r9٣-Ii?^晰ZcьA 'u΄ DDoxj7ޠ
+
+ϥMoOmg|UUyr㎱3a9]
+mLXd8c|;ߩ6*}]f||pSη6>y'j<$@"*ۿ#<:VHmC0ikm</zы
+2WUmfª=UC 'C~̙0W?:d8}+_)roPXL`S[ȃ{ikm<ڏ{u押sLXձjd2؏9G^wӝW%@ՙ06ڼ!g\rE*\ uD HF`>w饗ӒzCKmmӗ.HK̐\Wsq@ea{pșJoscM);>8ͽ]k3a=OmmSN9xjշv7־-s=3~9<)|;o[o3a)FLX᪫:vi'J 6ۮLCR[ȫ=C=CbE[(W^G?zQp@駟o{ۊ즛nzғd~S'@"$@{$~C?~+^eoO|biZLHm-N֦.(֨j첋$_׷mns@Z7oƿۿ?Pո\}ٷW"$@"tMι{1.wA#
+ߚۮ=;#A"p_&I#hKۢoF\U%Q\׾j-{ۓuvv/"ZNxgob5[gL+g}z-ۆea4aLUN)@{K(lOt{=rYj'CP/-AzBj{;}͡Bvv 'V	Ml@`fBò@amp|;Wm6,pɯD HD HD X,{>=HD HD Hf2H3>m"$@"$@"$A`/2h>8d}f~_*HX>j#t[snst'HPC# (٥^Jw]3
+xGIŪ%,TԵ~nsS"ǄV&m^_կ~[mUmtsm2,QXDvi}s-W_}=y1/G׼fteeao1گ;|%31/V|]!PEm07%nD\yf0w}凜,Q|_RX.[lWyTG<4X:om|teea4Rk%9@>arC| οBA]n[C=t>o򶷽>v	/vOY a#t̨c.jQ.)?w<?6Nȹoh77'>\rIN~ʰۢ,Tů4j;C9d8H|NB\[Pvw-˷\cT`PTH]O~΋s|#W3W	v?OjԶ/~7 s,
+g֬|!۹1:ZS +ʿ5Xf.kµ_1nf1;%bzİ5t7Rң$24|BT1g)l4y6lc3=yu=Rˌ
+\9C}s~Cwb&5n?0@.^a>6lńk`]kx>eeb /Lop>}0y"]{;R'>	wY.#8"83,(sF=+"!yH8FSPAtbʉbt,b2ZBC^otư|k%+~.rvJ-okr|ߏG2ZZ':buaQpc~D}9UpR8rY11-b8cϑB2FUV]\քe
+$aey4xpdo&z8cϑB |&~AC'g|47D)F(CKXUD[
+xT뮻.:W[Te|U$A`Yq aB܂P0N:	R!dpc[a??~fho┤	caOF8Xӷ6$=38da9Ƃ5CsY(;=q"~EruxqbطsVZ^7*r-8|CF@!ĐA9]0`r.c!Z
+vªߍ+nAfM5T[D HD HD HF`XYF)oLD HD HD`6gq@"$@"$@"B V0eD HD HD H@jks<$@"$@"$@+*Y)HD ~Qyn ئn?|mo@"$,Ȝ@5LD X~~{solͦMq 6qӱ~abWd9D H"Z_Jv)HD'o|G<g?yN%@"[9D H@M?_~M7~CzAv¶\r͗6*Ny-EWD"$<Hmm(3D HVot}_Ձa.na/⍛y~[/]O.񊁑ID 
+l7HD`ct?#Uv{}W=n睟Ћ6mn'v}v~ՙ۴K?HD hB sB6%@"$-^wYpiwpƫ.ĦMxfocݬ_"$@" )$@"$ܢRG~yimr/GMnG{r @sm"$@"iSjk9D H![;ͦ?E_~]7~Ė-'@"RXיID wgr_Wk|W?i->ozHAD HC [[,OD H:C߽nyjj%@"8G$@"$@"$ˈ@ƭ-[>'@"$@"$#a"$@"$@",#?uELL$p    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/NodeCountersTable.pdf ns-3.20/src/netanim/doc/figures/NodeCountersTable.pdf
--- ns-3.19/src/netanim/doc/figures/NodeCountersTable.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NodeCountersTable.pdf	2014-06-17 10:33:13.887996008 -0700
@@ -0,0 +1,308 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 786 538]
+/CropBox [0 0 786 538]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+786 0 0 538 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+31
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 786
+/Height 538
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x[tW[{ߏ=vwHPN'>''I'ݝnsq".AC#HX#lSFvYl#6]	 .
+-U%ɺ[J.-4C!Us͵jͥ5.AAQzArqAUO(=~ E9BiS,J H.fyPZ <G(zEh&&&Ng{N.?>|%<G?5}T?:]/"q: sҪXbٻwwZIiflC	~;F	
+FlQݙCOvEB!)A~zDi 
+Ҫ'+px>(]q3ǯXB]J?h[[Ç^={
+6@9ͧyxxXiB0V0bq_۵C8|A G&x<Ǐ8.#JQX@D .w@GYoo
+y(=~{ޒ.Z?^~=1^Y!`f3g?\MPv,?pc,+Ca~`pIt9<30V0btL_kt?]/"qhBL}>fs:9>A]QKk
+!>p8R`aju"z@0o6
+iv.w}
+5'Ν[[\qʕZ	QZRM}}}[0n˾}nܸQC+V+˲9a/,C _׈l55>m NǺf'߃[]Xr"<F,x']m֟]p(5yg'&9K)N37t2۸)\_,Y^{o.r|)QA!M۷M&SL~AFltҘZ| `A<jQTjJJl˔'1n.UL*Fed]"q] <?~TN;|acyR~ɿW|Ǒ@@tv~_ve^:r||޽{O<aJ2@iqK5˿~¤jIAlHGa#21Od(|$?^irsǊgJ8h%޽{!Aغu+/`hg'Ri(XjjA>VtTt4u9&H}RX!e=~2݄g_j,CnbjBԄZo/4*&-ܐ\^'96PZjЊ=QrLBC)/5Dф޺uk׮]Y+Dx-*."Wgk0'Lg,1A,kƓz)dR3j[q-	[`9|:p#0x,MMMazۯ^0uܺoy6{ 
+[QEOOOGtV8P{F Q.¤{):eչB[+_;JO&~voJ;H9ѤaBbm6;]x;we^z'NK`/,s y][SS{j S\XΘ'j͝SM5	;FzC}ĭS@55[Hq-b8mԣx`#RY4\`lsQ{@58?%s`ri>Ǎwwsw(C,Sx*2MTۨV="$Z2*5n+,XxI7<~DbMjC)p<db8B4!;vf,*FH:Tr!:*VYثSkVFתӚlVC$M>-$4AFkI6ZoC-MLkRŤfBVrҙYqj&9K̏
+O05Ys>WӏfKf<^^޺uyn\mѷ7_,ml߼YP⌵Bu8^dO9cYvjj*6`){늣8*V5%XL_}RxL]_OxU|_=3229Xɲg
+猚tU ?oQZC$޽ƀxy>IKKK=%b㝽ݝQz'jۈ9|{za"|j'^d855;{Dԟۗ>2.r4#M>9O~gsoͶ]:?l?c\[7MTMO]wz'0V0b/JOZ[IU7TKUe/AIL$M;uLhJ:Tz;ɀ*:aF;f/4j]TGxFc!]
+YuEmIZby^+JKjl6Qfx-{%jTS,&#Db*` g?lpeyk*8w[G1nLu̪~7v;wss-Iݍ3߅G]GM?kz@Oo3`ơыG6v}h@|[;8
+1v={G-CMI-SJ=IPWk58Z|o_coqGnyn'СCy=Dt-^O/x;uA^}Ŀ_l)xUwzf`[9<r
+W~xwԽ@jj롦C[=[2rtW{4[!\tibb"``_ ?JbUSʄ|Q6CK:|Ϣ_%LBuq%L[B+?Wz՗^zׁWBAp{]jܙLjaIiLU?P#ny=[5Z(-O>dƍUUUg}&湘477K=,geIkDMv^_+zǢɮ55޸qܹr@j;0:{оW,;NQPk};OL*-ɷKhܾMz!mR2֭kݽ{;!\t```r饾&dۣkdS*jfA|1nWs;\uqj!EQ}PH&N37<zG &xkĥLɭ-΋GH|:|KJ_4y-D_bedDфo߾pv>/0ګw2w¾kU{dCPq-J=Wk#5*0B-7jB
+
+}V}VFx]ݿSkҥU5!p:sNBN±îo|W;pkʭ^ad@z3Ly}ڴx19l:[~K뛆o~/g3y1aAw"|-[wL|_dgS}lgς(z`0 ?QѣGAiqTjJ0dySQwJ&SO0c42oyKͰ>o8uy,ar7(~֖o_O؜7ݻM,:Ƽ{'o<sai8z&sYC.LTM^3ծff)Wh%", >}?P尝brI-z"[. ǸOXQsg"ZzԄt< ^6gzjj<Tnn훚̵Kc)_4tr+PrZ[j8^*[]m-m"f&*jX!ݥQȶi 1ikț_,,îe6%K$1O̤:Y/c"hXVb]8Ъ	}+e}tD/j͖(})ɑ!vA#DbzͯJ|=>z+3IVgS0tE۵;a wuF+Խ¬!k`F7s%hZ[7\XbiK!^wufiaV޿\D|
+/]qYW\xDRM\퓞NPMA~;Fc._|!>>/v郍-/BIѴFϑs%	/aI5EwyA{G`=] '=!w{dhΝ;t%G6`R8d8qPZRM~jJ)L0T7=Alg60;\,}aX,ulc33	ɽ[~ۅK1\}7GH}C'LCqH&XFٷoP	FQ1U켓x@B JEX(@eKao>	h $QM~R%e2J9?7N(?MM蛾gvEIR&l|9s6~ny<~v3QM7RI'w͆k/߾s{r-{F'X!;Er!!Ē`bf`Asڕz Zɬz%"oaKjq\7cZgwAd>%]|R|%z3u+1Yrn4#gKI; QMG!<K:|=N P\	ePyҹaVߍ
+xMe_,g~ʾ׷kJw]Bsab	{Gڏo'Jg}@]ĭSr&ÖH^LN۝}P^E#Kgl'XH_Ưn<I,\s
+{ƇG<7wuwg5is亻vDخ]T6hOE6bܙ|&ֲ2Zlz7	/\-}6l;/z`K3pp㠴8ZD5?Sb!MQM)&݋ْ[@|r-ǋ;8s`@ғ6恿}=6ٖ=#SG:sRr5)~aKl~vL9qOaɜꍸj*Fe,WZ(-R<H k:Lykbͳjj\vLܼ~{>/ߑs:4MܺjC)Vmu8pN$AΑK縛KGaAutsa:.67%wyt΄IfGy3hV7G.97@~! X|i8BTw=~/C&],$~[PݹrU,m/Gb)RLٟ<R]r%$u-Xy|ABH+˦.^K ݝ+-No;ڍ{$hFΖ(}Iɑ!vA#Dbzƍm۶MD3>Y76Oܞ펶@`lfnf3oX	ùcxj(Je9#8#Bluh73wTxmjnf\ώxl][C,/oM>>yL4n%7C=fGL7Pp3^ub(ol=im<C.PM7n]/Ǖ0$CB|毧{o܈oH:hy2ɻ	Ώ *yuϟ:|p.|y GP 2x8(-%ejͧ_3]ITv';zKoN0`;ܽP='8|9b0{i{j2Yg9M6Ք\S?o
+.r؛briߟoor 9Neż=lW/R"1CD͉j5rnR\%楣=~sRTk%j&.I5U f{6}4%a`rik[L::ڀo:L2PalOL4m&Zo/OH&Ĳqx.9v۷ F[c͟izZ3"Mc3d@;:SзRҷQPke#7692rDߖWK"qhBLƶnݚC7;7lLXkv֭
+pi[hjy웝ekC=qւ6oj兞qW+k%Nҭ?#.~=k`!V]ͬF24;iX;4O*dDZ .cr|;FPMgpjyCvNs~D5m8;㦞X`/AE˓I/6}97s=>%0r8&EK>JV7tpp㠴
+ݻw?-&"K0_~ڔ2ȕ3<șރ9ˣ=I3/HZrm?qpC%ۏ^)]2}JN*ǝ.|mKϞ=tg)zMmz$i,uڵ	qDN5|]V-^_LTMypbxb~%=CyX(S5^ȶ;Gdmcd]Jel5몋76wdzU>5lm_̺b#ɷx[W05mjlZqtE1.d bUb
+lٲ%jTFFFR/ޡd>_~:'Bit\Q+Qadg`-%_?׿5?)qA\F
+ҥKwN`&tuq7q/?ϿϹGF_IWHz$rO6/3l}w䓃m޿?p`PZeERM5A!(xI9C$϶3>ŶFvd$i	K_mh;у_6$M'uJBB/l4+buMpƈ1EB)y[̽翘:u
+Gf(;ђ Xswop.մxZ+$fR/ɃsW}bk2_C0Ӿ<_l/92r\5A4!@>	_}ƍ/l'/td_7|gsϝhh9SK'NXˁ+Gk㊳NP.HW^S5%+}X28ʥ<~C9aj:e7+<|,8Bawiz?Q5Ykx>~:RXxx׿ɓjRZP`r9nxT\qф7oFմß*UUU'NH|iNss'+Ǐ_[Z={,p{,3JbUW,-{AB`wJEX(=zz67<UN	F,t]s:&*ȑTu)ݢ c7ߤA\#244JM8A9{,3JbUW,g>	Kwsss+f(,&U:A"JCyNT]#SJ'dedDф~嗏?>t2
+! R8׮];/rƍ"s1 T8*V5)=~Ųo߾&[408uuua/,s;+~IimR5Xҳo:wF6d; 	1x<ÅBOiŋ6˲^Ν; _؆(8#J\USJW,w\%UM_d}\8=x@ڀ(`hϝNgss3<0>0J0V0bk|w_Ǟީ)"qhBL\pÇ)#ˏDrY* :;;ϟ?ԩG:tm(rثtK(j0Q5)=~Ųo߾&[ljj_å(r6>Ν;q1$;0>0J0V.#8K큎Ϗ.Ցinlk_Լ ^5DфzHy)D2inmm(rVBGTڵk-Kb=q\I $`V>|E0::aaJM>!i%Zt<;{l;v.r]/LG&2LW555#RS Dҏ 8͔b=w)%_AHǏ߻wm+	lC	^GBqw[;({A vA#DbqʕvDVDbq#H(-EFNeJPJwq_;ֻӽ;NዲDb8B4<7(zEC\,>ve|QA +A#V=Ţ! sҪX?A\(sADiS,J H.N#  y5  J߭)Mz3q# &AA|@Մ  AAU  H>jBATM  	AA$P5! &AA|@Մ  AAU  H>jBATM  	AA$P5! &AA|@Մ  AAR4::z%ŲCWz  HAjrfff	AAU绺/JAAʂFd63ef.ć{$NЌliUyc.vH{݄ÇAPz  HeAj40T{dUM!a\h$C*btSkWV3L)v/  T4&јih;TXW
+$5jD2v&oԌTPa; RYP<KkZ>hú4nzcû7}cSMMG?KsC]'E)kn}SӦU̚?o[Q\fw?O\mt`tl U7!xw褿~^7z~/=>&AYf(UMN;?4_z9Fk.Kn;`^Qsyۺ~x_"}?B]KL~UsW_h\sj0S^R־^gU_wb_w0a/XACo5d;>&AYf(UM~p
+sK]⾩W%#%3=u}b?2]XxTu3JWff2+?G Wz30	JgWs~LTz2	6.O]*f¤!sPaḍY 8>&AYf(UMO>}90N>]׷y/2ۛx=o0kv:'VH˖5	oQW.h`wJS}F- 	AAJU?ѣ)t&<3CSK[̶wME'Z?!6SSFPM;:BbGFt&cMmg`wfs+A+SǠ=湇s33ssScGԖQ5! 2Cj )3̛45LϲuAi۶^6Vki@s
+ٸkVh+7ɐR߬PYMjDh&lzV3̶66P[3=-՛|m̛Co=hu}0;B+F&RtkĮ6	AAK5of_sN"`4FV9y6҈{(XM@Rj:Z*dPMciv^ӊ7kDm:۲1Uɖ]Ϭ&	VokHfP5! <WsMYaZI@>~h```hd:[i^	s^2x!^'}=TM e>_TCՄ  J@jzQ0,Ɖ{^t 
+U ,3Ǐ)=x 	AAUo߾M4t_AQ59seهÇAPz  HeAj8v([n*8d8p8| T4wls>"8d8p8| T4{p28J&AY~(UM  &AA|@Մ  AAU  H>jBATM  	AA$P5! &AA|@Մ  AAF5  ҦШ0 ʢb 	A:PzDAմ|)݅RFc)qX.ҋ% 壷W.4+NrpՕ^,AP5-XqdP5!85èҽ G<6cF2y]gmئ?ҨTjE/bڴZћ<G[5j=b	f}ΔvEaVTU:3e!cA7'-sw@8`u&{LUjճx$͊HfAczk`	y^o^,AP5e$,l:ܰ7)B4ɟ9~V{Kn&-E#|5igB4pLVa1{WK)-'1T6MF`Hrpآaz2"Hvj2Ud(9TS62b&OnXdl'م#6+"⬬sqVZÅTn"4GLAVlY</5nz㍏>Z[!iT4i.}q4ś咵wsw/fkFFi߰n*8ifw=g7e7vmK1_8G2h9W~6uqӺd$F0̆S#Gٍy&\}\?7svc1%wޅf#|4aV%hC֭#3ҋ% ޳YYq1kk>}I9[0<ض>?H%khzwo*ó3"Ə	Bcgk`jsy~S{Ay!Oo|a@OvˣEծEN{{{=d>IMg<wܞatW>VCly_np`MA,8+| 888վ]-nb Bjz,0+қ`f͕@`Jf+
+]u+Y-6-CޜN #	@_^/̽ ]f5 >7XxӺ΅G$`}.!֏]
+M[W3[o:`ι0\*0d"L52wFBL},FoM] qJ|VH]0Wd^3PAVhY6j2NKofZ~yzzJfU\ݹf櫉|_?H3utt;'i򐹷HW}߿Mݳy^h>#üw?+I*_?rA=}q\üc_FxNt":(?2dF>b͗|}nh-\'<74\[ʝӏrNfYmŏ"}RW^,AhUM[YQ+Ho|mխmSCA۶+jvgV40u]DoCM70+|9M00-̽%Gl?g;?x8Fvg2hZhsthF6fIkYh{;Vǒ#bٖcıJcV8#Ӣg>nc7{լ`4,>bZhjge~JmmJ/ r֭gV'6A]+<)ck'&R6f$#wN'NkNS{cgiBhSmַ{ض1nG9'0InK1C͵m$fۮ6w-"Ei1hJ7ފu#9jxsg+IB2[0J?vlҋ% &s+B>&!Wbz[112Xn4	舰L#<HkyGx(O	t~33"b BjRzؖB[[](Uoi4V2a e].4+Nr0]BIUӲq}Ph8e29tA$JU? G
+^,AhUMTJ/ p<ؠtJ[La9GtA*M	AմlеIED
+.T8JKBj등3z]~d^TM["H)!^;͛m6;gs7ɧ~aBBA -;8o(XvOzB~޻ Yb~jzteyQ5k,ou ҦjϢ8&4ΞY8js|ZɾGUЈ!%"	O#QDQuИdȔX++:UXȣM,C+_c)q@Մ (-mJ"^}/3*&Zkp>"	=," *{ɪ)uXtU*QJAH+gqGn6ſCd@b-P=UF!	zmd[g	1MCAN8IED
+.T8JK\:5èR:*FJ o$,TjUq)d͢JBnP?>ѫICi)LzYBl-B\Z:I2AնM(+-fd^TM["H)!&,ΣM֭[ak o)Ԍ*L/W/'sPM1Em.
+H$x 
+u[#@N1j[:UAaͰ!_rsc&}X&UV+R(-mJi2={f-w o)sTqpUKgxWM-WD,D3KeJF-&Z˱&mQBKgO8DdoR4EX&UV+R(-mJt>I&c5'K t/ùj[kJD"!?Gd>'jTim,$]&
+Nv	 ;aTI[9"8jBDv6%Rёn#KyxK鞇]Hr])d!c"{5עV*t:kµ~jc**l"Ai7)/CO4ɑeyQ5k,ou ҦPl2[0[% Rl+=	"	BIWmv2&&ɋBnC`bp8u5&OtLBݨ5"b-3'@-|[Wm"`#3|PGxe9>SeyQ5k,ou Ҧ<7U0dRMDutVjӉјc_MUgZK͔xkuCQA\^a(EpjH^8jBDv6%QMŐQ5_y!QвAT8@rH( _`h8e2M	T58meL2/&zNWpQXٔJUS{{ ޖZ$jXtA*M)T5ݿ_A opt-eyQ5k,ou ʦPr,!ӵIED
+.T8JKBjX/|K< H(-mJIZ-ƊS&㰜#\Lu ҦjZ6Z$jXtA*M	T5yeeL2/&zNWpQZڔJUSoo6$ϱ`^k/+qaBbIFrKАA*98oOJ8`H R)A+Xt}|QZڔTMYTg,<Dg,B9tz'#eye2Xc8n2.~NxJϋMc=TiϬYR㰬V Ҧ<YjZKxIt@SiLۦg	8)rL2oâ막>/[p^֤ѧqM g$<#aE{@lCo'&g綊4yNA*M	yTStfvpvd-oIWM^sè٨
+R;O*
+USy eTI)[pXH3&7GXѧ685QEm1%=Lyc,ou>>R(-mJr=ѿ{F=z`gR1U|1Z[K]&
+C&:{L`"?DB~	 `LuV̞ZW{3]%UV H)!15U۸RЩI C	P5x)eQM	{%4xx%R>5aBJ~Њ5:]p6%Rt:$l%I뵺Bo)p:ږpTMt'ͭD"!?G.lH	@-Y؈ޟKZV ҦP:::!w5jXC[J<$bgB&r60P5ar7j
+Y4D&Fjr	?6BBn/qXVcyA
+GiiSB(UMc6FWzyxlE0XrcԤ6 &:5IqܸwFܚk!0X>ywG%Zgc$&:A:
+,ω H)!ρjjڴ:8kU<IKU]xwҏn<sRMjxb؉_IW=MUaRk-+C䫲њn"پaЊ5:]p6%9PMœQ5_y![@eeL2o錗ܠ/?|a)LU )!6-!ӵIk,ou ʦPeLײ_&UV+R(lJ	2x[Ck/̋^cy\pV6Rմ;`eL2/&zNWpQZڔJU/|᫜_JAEiiSB(UMJψ@ײ_Poi4V2b\p6%UӲAײ_&UV+R(-mJO-t-eyQ5k,ou ҦPz{{eL6o~/g7~jf7H&ǲ{XXvpnsHY힌-U(eyQ5k,ou ҦjϢ8&ΞRBmc\4bd_#V2C,B>Fm'H#2?%W)̋^cy\p6%PM^QV5fdPMA
+z6IySC Sl;iُxt3)lO DC^'/xUk	IED
+.T8JK KαE'* lNy}-.Bꫵ	[ɴPS$ħǪsIndJ {PljQkiIED
+.T8JKBjr\b^|!~sYO+U=98oT<f"۸`Cξȉ+u9,hҫUJ]e=u[pZKL2/&zNWpQZڔJUSWW?}}=rVx@[J:U\ ARHaoMdNPM^Kx:bwX䂧*lH6<$),Nd^TM["H)!&$P_'R\S-Er.I5y/ENjr-SmvݜY}XXjk-rk}NLU )!f/h/3a^qЁy.T"W1k;T&G$_$~0VOھ嵨UjJ%]%/P53e2M	T59(dx9TYm@[J"|"!D2{PjUUArѲ#,-)tn*py0Iv@hB)̋^cy\p6%~4h?zSPєA5Ap#KcI-Ur˨qK:k_ZPTPsJkJd^TM["H)!ρjȈP`ʮp/(V)lهB^Z{K8jBDv6%R& e8d2ɼ5:]E
+GaeSJ(UM2x[Ck/̋^cy\pV6Rt}-!ӵIED
+.T8
++RBj*Lײ_&UV+R(-mJIv`MU/  )!&gRk/4+Nrp1
+.T8JKi٠k/̋^cy\p6%R'cg2ɼ5:]E
+GiiSB(UM2v&7lv֛afZ$Cײ_&W.úĒClGህrG㤺
+	[HcyA
+GiiSBP5gQMQ\=U<hZk/+qZEzʌQD6]bH-P>ې[M
+2?ܦXcyA
+GiiSB'YOs'ނ%58qCl,2F v6/veL2oâR6O DC^+}q@ylCo'u%=
+Pc<7Ha6HF$Cu>>R(-mJs"U<m`ZSkӽyU
+.2A&OڄܭеI-8dبNc"Gl-qj9ژ@=9&7ٰ&JB$Wu>>R(-mJr=Kw捏`=+=rAό!x(98o4<f^k/+qTG*'Mz5*uAj+fSٳ#`$^&rU, H)!<>t0xKCJȌd3"еIK5R-~uVm;,z"$x%N.,
+t-R<	P5RT8JKBjr:ObX?`&<	v1̮o)p:)aTIo8Ixį_ENjeZܢt+XodW@8
+63&9A
+GiiSB(UM'veeto)Ԩk W1k;ȉj#˨Z$D5йcJՓ/v
+I'i GTt}|QZڔJUᘍx 4obm0=[ -{FvCk"_=A(5骍v~~>H>1ZqsrGeL25IE
+nnJk*CAHxӁF!Iv
+<[{TMU Ҧ<iA>ۘյB)j[⏤ċ{ɏj&C*rQ$0.ܭIg"	D+&^Җ*$I$΂:]p6%yRMK&jAB TeeL2o	s:DH	n$ aw
++bgrP5!";JKBjjkkq22]~d^|V+R(lJ	]A opt-eyQ5k,ou ʦP߿/ e8d2ɼ5:]E
+GaeSJ(UMZ`qZ$jXtA*M	T5t@$_6%RդX
+t-Fc)qX.:]E
+GiiSBP5-t-eyQ5k,ou ҦPd쌼޲Aײ_&UV+R(-mJWdrvz306mw|Zɱ-߆w>|XvO0B.eۭv!]<$jXtA*M	A4E5qFMA*=Eo*#h+ٗ<{FH|gDx g|$~Crblς)̋^cy\p6%PM!ɠ
+"j
+:@|m&ӳgoVRyo"G^+aUKc9TLE<pSSi*ΝXVmTYIED
+.T8JK<&h4 jA	؃C{%aSsKQM!Y*dbͬ"vISMk=֫Bդe2M	T5\gqZV=l逷Ok+3-٬?~1;~Ա4SUޘXY*oza
+d\5esRz!H&E(q@Մ (-mJi{%@ީ{Z(-{jAsUK<صObr&sj
+ɩ!rIGkm[URO90eV3,c-Af':L.-/̋^cy\p6%Rt:Y?xP l%rWo)pږ-"3O0><UxLlZm! Un7gAߴ6gT۵*05a.c[k9sYl5z'wteyQ5k,ou ҦP:::⏐ƶ=-!t-{ctkB&Uw^\zd\1ʤduP"㵨UjJZʺp{ȪD4̵hRfλZ+N&AdGiiSB(UMc6FaYegt/"=	&r	BIWm mȏT:?
+6racY{^$.BN9!ylۺj[ҥy01nRj'Z	)=Oo$jXtA*M	yTHS)
+MT<$WU$;~Lsbͻ!PMD(iQڬzMU{oE-r9sZ\!dP5!";JK&I:#P`ʮp/vw/ `~:(h~u	(̋^cy\p6%R& e8d2ɼ5:]E
+GaeSJ(UM2x[Ck/̋^cy\pV6Rt}-!ӵIED
+.T8
++RBj*Lײ_&UV+R(-mJIv`MU/  )!&gRk/4+Nrp1
+.T8JKi٠k/̋^cy\p6%R'cg2ɼ5:]E
+GiiSB(UM2v&7lv֛^ n
+]~d^~rxҭMC{vrmV.L|FZV ҦjϢ8#STg͇**#h+t-eye2X%~IDPNϤ!r֩97~Њ5:]p6%PMaWiT*ޙ) Z<W&4[IFB_{Z$m:,*Qh4q8 9	yV|5#>0߹Qƃ& H)!σj
+{ 5VgVeLjK6z&"``R4XN͡j*Gc,cFKQ36AjO84g-5_PsMcyA
+GiiSB(UM.Y#o0<\M
+tyPSjAv$`8y/g Y_Z$d"JGm
+e-R1lHfGa,nQOYUzN#4ڤӑy΍bNA*M	T5uuu=
+ìZ<X㧅RЩ,gP_1ŮjXfeL2\ɜJӕrvxOU[%Ir@mv.1=sXcyA
+GiiSB(UMNIW5;5'R\S-HdD$;deL22&MP8RZ%W4Y]MwD$hFZV ҦP:::⏐s%ikʝBR!9U]zDN5%\r4kdeL2򨦰V!&v>jتL4{L֝|FZV ҦPl&-üȬi-ҽ`#߷H5D=A(5骍v|SCdѹpPW}t-ey彮)$@`A%wJkE	$~W[1:GO~Cg=7~Њ5:]p6%9PMBækHVobBES{⯫LI?meL2\RE.U
+e--puQN#"T<EDvLլsnk,ou>>R(-mJs>VLYU.\$S2ɼDpOF
+	?<e2M	T58meL2/>^cy\pV6R. e8d2ɼ5:]E
+GaeSJ(UMߗq22]~d^TM["H)%o-8pt-eyQ5k,ou ҦPdd|_R: /JKBjRzF,zK8,S"H)!2ɼ5:]E
+GiiSB(UM}}}2vF^o٠k/̋^cy\p6%R+cgy{9fgncۭv!4(9úOo
+|@bp2w(³6
+=NOI92ɼ5:]E
+GiiSBP5gQMq*=pbjP{nGZ#*Cr4.:ʝlYyCAlҳ?\=-IO2ɼ5:]E
+GiiSB$8L:^ =d) `ZI@zŠ$O!Ӳ:,*If<p"g7G"ѱLE+yN>)0S:8X*<V|D"|d^TM["H)!ϓj2VYWM^35UCL$2k@$D&]	χyX8B	tՃ#."l6km¼]oL|d^TM["H)!&,0gR١˘!Z[C]6-9%XjGkMNi=I1Ȃ]ި{ɑ3Wg'hz:_;_b'c拻vC+<=[嬸ޕTԶھڬ֫O̴ܨ!oʿ=G2|"2P[̜tls25fV"H65ԚNOO_-#?ejwHnųbUciqn'4fD<ƚ%M}}"BC/ [-'eCG+2u(OFaMՑ
+ߐ	n0AZotrrrw/B5+(/ou$um:Lw{~G5%6]ѤW[oK
+s#gXՠȫFVToUhMp&ոrxM G#gAߜ&t$ycS-I:TYהydMRJqן.֔#vq[JbŕY\-eRJkڦyњMqVjMe]T8鋋7P<4|LVoT/!Ga_6PzK6߰i㺦+\V_QI!I,R`X.ȖNxa>eiFI{4SՅoȋ7mrX -ͰӇ
+~|ҴĚTHn4ԋ?I[1]v^3w)ׁkr#Oӕ&*$W(f-,i_YhMp&ոrxMkړDȒ(0[qq8()YCF^&lj\i9զFZJ auyњMqp6:jM+vS7dEk69El5]^^2NVߐ	n0AZgfwXNVߐ	n0AZo'h8 ȶVjM?onBNC5OrX -Z7dEk69E[mj5=}aa
+X~CF^&lj\i9զFZӓ'OfUnaC摩v2
+"vmnlxi6]|"0ZWdckv;ͯ=&A[mji;ۉDɖ:$@rQ4detiHE{(7Inh_c#tÛbwTWu	k|69jS#7ÚKw;n_1|,Ģd*FɇUQq}HCF޽s҆=TrΧ34ȟӽmsO QR JHTT'SGJeͿG?=!p-(ߢ46l H65r) (閥Ʋ-nMJF=5c=:v{hMN.9m9$S:tؚy`Le9'ɕI4UpPHBUy<Q6AEiRil&A[mj5O+?OzGHnP**q.,:0
+NhMN.՘DPYtN2镵%6iHvYFX[$D(EAKmWM?3'#}ɉ\m|69jS#@Ռ_o7_B8d	$.\	M2؊fD9
+62n!#/+kR+4#tbRǌtzu.ɩ\Ȣ3C͉Ȕ{'=+/uds@lUZ;TLS%T䣂WК-VjM'''/K?>y;Br[(ޒ~eoym#9k*a#;:X~CFޚ)BfP-/LɊʀ:RǙoRWN 㼴XW-uT80lǏO<)ur o0䰾>rxM GMw7o~S|G/.v܄P</SN5U5eޠ#v:d,W_w)2bM[,H2j'Cs֔$AFBR_+?WAԃ4&)s:SњК-VjMe]L[» Oۂ;Br[(^t2idyj+7tʰ/|(-2]T^c-zS`;^c.hQ3H~<}'B[ЈiI_m^OfWo!veIAZo`M?ާ?iMc:\fC((~fc.N5b1]4T;)]xNBŒ6̕tx'@W&N҂iè}&A[mj&XEٳgjk"dIA|+2|G<0W-'0k)YGRhM0Pk:::bX	$2n!#/C7mrX -	Pk:>>fX	$2n!#/Z`a5.fS'@a%pʰhMp&ոr8M o-2n!#/Z`a5.jS#@9O>q Am65Ԛx"XN̝!kxAZooȋ7mrX -Pkz)°mhMp&ոrxM 'O0,̪"1ôe)LBȳ2,oY覷Hy`Ww6yX4ydm25fV"H654^aM|#84#s;s{r6nuUC%g>6ң˭QD#EN}r]-$yњMqVXJ;=ۼuXSbѭ\z2]:|2*j[@n?-m+6?*+BtYet9ڊ8//U8O}3K\t5dEk69E[mjXSlmv%2!1s,rݚ=;&bڦ+vduՈE(7}d֔8d5 :ҡ;&1uGmj\D2ou{hMhH=5!jS#@? !-~f&)Q1j vtz#;ܼn?UTrfY@Q5.m6yOJ*^Owv`L5)*3L(L;5q!ք sxM WSn	?8*~_ՎgŪ8ȕ銠f9/Ɏ7kR֔8䯾擧jOıDe4Whze;M=CSP	V--oȋ7mrX -Pk:99y9OKIu/wP%sM}c-,MOM/YSΚ25us@+~IG9I#gXՠȫ$gvqqm#9k*yH͕5dEk69E[mj5=zz/~)v݄P<zpz/T+W(*?5tMMYSb#R?}q[SJ^G/y	WwtjNC	AVjMe]L?xKxO}A=mAPw~#$AcFfBgT/!Ga_68O^fi)tǦ뚮.;p+)0DP,_d\vbKhGB'{Ke5dEk69E[mjXӋzo:g]i5f:C2g^wc7zWA'xkI	kB~GgW<RhLZW꫋b&A[mjXSy(*k"dIA}\!V,0|7.-`4КaotttİHn8eX~CF^&lj\i9ͦNZ1J auyњMqp6:jM+vS7dEk69El5zoauyњMqVjM!}2>&?xlo&w*-`4Y$ոrxM5X~CF^&lj\i9զFZӧOmn7dEk69E[mj5=yaaVigK^LBȳݰr u-ڶqinKvL`?Y7;'ew0`ͯ=&A[mjij+qh.ScoQ]`uy:pFQJGAӭk|&N`HCYhȮ469jS#7ǚrԗĞ1u;$Ģ{d*ݽwd*v=nX~CF޽s҆BaG[knNWӝmsO'Z5U)t+jy&*&mo#5$ObnSچT`a}}V֔8q)L2Psݚ|u{2jƒndT; oȻw0Y%s57O/.fxY`ds]%8tR|j4d<d46l H65Ԛ^{w"ս/O\?ߝ^mxDe:fFu6ɣZ%:wz#;L72n!#/T!Jԙ4h&QyI3a6NlȽ<8G[EcWDwKmW>3i%Y%Q;6)jD=4mrX_i9զFZy>w/_@)#/~B8d	$.\qe:z4˱~1ڛ2&bMC2[vdyNKE&M]:(c+C J>$9D:)uR]-ݡ}&A[mj5'>{(ww;>.=#|CM^P%sM}cz\t) ;o[5iЅMK^UM1F.i:Ht?W--v8FVyn}&A[mj5=zha#g/|~VoϞP<TSMuM*lTei	VߐkJ5ɜb-<]QݝP:b#OD{ܩdE>Msp`a}}VjMe]!};ۂQpq'.Br[(^rLԦK_KQeؗ̀._^fiх袵Ml5ktMbY1bxĄ6u$mRxp`w"(RNHRyZ7斆ńd4dfIhЅMd[!o0䰾>rxMk:?}(RV/~q5p9Mbo3to*wQh)2&<]u:)@+g	\%męW7lI@ϮfYw)mC*m`a}}V1tgςa%QaqyGt㭚
+`uyN((YIQirr='Rߡaք sxM #@r;)2>tp&ոr8M c@r;)25fV"Hl6uԚ.//V oȋ7mrX -	Pk58eX~CF^&lj\i9զFZsH|  [mj5D	J1;C>a5.jS#hMVߐ	n0AZoSa*`uyњMqVjMO<aXUEci+Seayx3k,l7\Mn/.IahiϲدD)c/.cCF^&lj\i9զFК+ɑ5H~eόoz~Yd͑ĩv(v*((nWg(\ߡ;ZsӐz@kB9զFn5/UH͌b5%u'U9-<nF*oirOn#VqJtcY9רJ)N6\mH}ˡ=Ժy.B<q,.q\
+mWڝNiH=5!jS#7s!SxFzJ@vm
+sݚ|PǞ馽SrTG:YFf2ݲn?UDtd1`H:6UnO$EņRkȋ7mrX -Pk:;;{=gݽ{ý/_?9[@r[(^l'%kEq'#"Wb/9I~t$6}<`p50L\mDK	b*8x^$+f25fV"H65ԚNOO_ |1 <p^BXG/%b:DMЕz3oM#LKT:8pnR!y¡mF:;,FXyњMqVjM'''/
+wz$-k餤8O<)u\?=I.g(FkW:%,,-<Mʅ*7:Q4^ICF^&lj\i9զFZӣG6{9Q;}v&t$yZ_
+jk*<0JNԺi*'e5EVc;QSh+N)+ӵOoP̝Z 65Ԛ,˺'OGუbHnC^i
+%2&bA%ed)Yy$邦%io褘.7~q,]S]ku%3&ElZi#,J{CӐz@kB9զFn5>w~WY!0GuBCG*~61]bn$S^cMzjH;-g+w+yy	.u2iqcF^&lj\i9զFn5Rk"dIA@Q%[jn?#nwBRiDIyi!s!ք sxM #@r;)25fV"Hl6uԚV oȋ7mrX -	PkdX	$2n!#/Z`a5.fS'@i	NVߐ	n0AZo'h8 ȶVjM?onBNC5OrX -Z7dEk69E[mj5=}aa
+X~CF^&lj\i9զFZӓ'OfUnaKfcnX^:n!#/,l7FE0sh-n%Y4yPoTihGhg0䰾>rxM5WX#W(FT_mW"txӻ22
+bmӋ͗+V[^Ɏ tbߚdE!o0䰾>rxMkQ_
+r9Z;ݑfoZ[brz2aqdiQVSƎo&ҐwܷaO,vI%Q論^D>6G['i{tdq4N+Ia>N}[*7P݋ԗ}íJېJc69jS#7s!:N1.
+/{0׭W`ر'stioIn(3GF#3`g{*qޚ2|VyM'DA[{%ldMR`E*jeL$F?46l H65Ԛ^{w"Cӽ/O{½}z$yJGgSQK*$yDJ%'ڼ/n!#/TR˝4hL'NqM)&ԕH"v<EWVFbFb+S%>q:q0+M.mC*m`a}}VjMHq(q~k?~-ΫgūAv<vD-=uitKMBbiڠ+Ѷ(c+Cڐ#'6P8lr*Oֱ5Fu9[ơ;*LAkBkB[mj5'>{(wǳcGtgdoT>2aMq3*x)tHz+.N=*׉"<U*}qr&k39jS#@ѣGɽ\&ً2R'6БQv7UTSu]S1sKgК<gM+;̴,M;Ls9jJJu)RyΝ].aZ*m	&ѣD;پ}&A[mj5Yu1Oh?۟w{0b-$A/4Om^nQN IE,)7tk*%YzZ7qtYhH<}'ʏDO2c"X&[*S( Gcg;!o0䰾>rxMk:?}(s њt9P/2:4mTbn$*X~CF^VDEN/JvJD64CWqv-䫻5du7wZzWھl H65rciZ!K0x-$(9
+n!#o}e󍗧q%	GbE4"GddC	AVjMGGG+vS7d}Mqp6:jM+vS7dEk69El5]^^2NVߐ	n0AZgִv oȋ7mrX -Pkb|4{@d[xM &ޟ7VSi!s!p'9E[mj`25fV"H65Ԛ>}ʰ0ls[n!#/Z`a5.jS#@ɓ'*wL0mM87\gg]8\:wJBG7lJb6YXvXb]K{3Ӑz@kB9զFК+ɑ{bs9p]VwN7F:_n1c}VWW3R˽=b[9ؕ!#/Z`a5.jS#7ǚrԗt:ݾjm!nInEH8/cdǕJ˲KW/6"h,s҆BJKGvS*3gDh.x}VyBO<)wF+lu/gB-۔vSkz0wRhM0ȍ,u!&LR|[fsݚ|DǞLզ׉Tf˺T%"K?8tzz"$ݑG3OۦtjMNC	AVjMgggg|woAw%=۟Kɿ^mxN33I_XEL^i]s?"*9%ٝ^mK]%ۮ֫m}VY5QIzJ
+S=r4tL\Hק25fV"H65ԚNOO_ |1իpw2ZHnųbUcI\(4Vt)kI]bM/SK>u&1l2wih҅⩯-!#/Z`a5.jS#@<CA8HkIG//Br[(ޒqtF1gm>]N֔bL)j7ŵHq`؎d5)kDBO		-ZLѐ	n0AZoѣ^|NF; O/~s/O;_b&t$yT>
+jd76/Śrr$鈢x=QY렺eQ)Vn.N`4КaodY<@n/ۂ}[]P<4YtFf/~ʰ/M*De㺦+qɼj+J
+Ly U0UtVI24:VgiltL&`yњMqV1t~P=
+ٔt~5\8iPCُI[^&HRW,`ڥ@ϮU]pWp:;շrY`+7j.Ԛ̝Z 65rcϟ={<ҚYA'^~!!ZX#5dEk69E[mj51NVߐ	n0AZgt||̰Hn8eX~CF^&lj\i9ͦNZ%J auyњMqp6:jM_ oȋ7mrX -Pkb|4{@d[xM &ޟ7VSi!s!p'9E[mj`25fV"H65Ԛ>}ʰ0ls[n!#/Z`a5.jS#@ɓ'*wL0mq/w7deE톕kѶn%G Yz-Smh~69jS#hMݫHܘ9I\퇻X~CF^Fޣ{MCSi8qj{j=Oǣo0䰾>rxMkQ_Zغhݡm*̒K;8wU{Ȯlӛ'e%ædoؒVߐwܷadđ_Ǚ͋eT,yԘ{ZC>46l H65r#)=GvT@UGI65j')ci57f> n!#JTF&h DE~Tk>46l H65Ԛ^{w"⽳/
+·o	w)AT
+ԋ7:n!#/TR.4O(N<TDt0jB_][Sjojǣo0䰾>rxM W|}$8_L#?/^mP<k(YC9Jho:]
+n!#/+kR+49)%G];ZS]FdKWھl H65ԚNNN^=;c}A{2=P>_nP%sMr.oEOo[5i60b!16B2ՆG+m`a}}VjM=ZH2^?.wk7#-ϣp:k*tںk3o[5Z
+\HU?k:2Smx4fAZodY<@na@	>)|qBРGf6]"^B*þlNđ船9
+n!#/uM]A)^ہP4<|@)xG+m`a}}V1t~P=
+Z!0GɪC׭Υ#1n!#/+kUSGһRgjReR,ncQ\-jǣo0䰾>rxMkڇDȒ(0Nw<2DQQ2ZDΘjr=5!jS#@a%pʰ`a5.fS'@a%pʰhMp&ոr8M K@r;)25fV"Hl6uԚbNVߐ	n0AZo'h8 ȶVjM?onBNC5OrX -Z7dEk69E[mj5=}aa
+X~CF^&lj\i9զFZӓ'OfUnaM^6k,l7YyXN|W̷DnX}=mRHӲZ<2u3\vφhMp&ոrxM5WX#wgdCs^b[H+;eut2i캷!9\<e*WW
+7Җ:z25fV"H65rs)G}i	Xj)Ҩ`8Ͷ[ŒK$v2Гq^Ȟۇ+սx
+uiߕe~[ڰݬk:meT*В*婣>DfyМ7%R5q!ք sxMkBQ1I%%YeIpgkUbB{bTٴnQK<WOU25zk_#$v䌥؅2UdhmzΠȓ3pZ/RhM0Pk:;;{=gݽ{ξ,u'_B?%ꪠ@9#rs@L#m\۴OۭSHrk(C㈮JгUSOlaB	&A[mj5k#Ax>}0[s;/^P<k(4H,MAkBB_4մΚԊ5t5Eֈ^Ӝ8LWi"Q;[44ФLy-kȋ7mrX -Pk:99y9O|P<Y&:۷?|r-$-΄R^-εoʚ6 /.)^<tcB6ב׵M޵5dEk69E[mj5=zha#u?X	mx^ B{*Rތf+sU֚־*kJr|<ż`@N%LRJ87舝QrAPaCF^&lj\i9զFZeYAiHHûw%~`_P<4|LVorTe3L+4߬i~q]Sg5V<	B[м8s)WNH24gXf`9B'{.Ԛ̝Z 65rc!Q^<շg+/v1,C_e55o)&G4GM׼,ZQq9X7@89f蕻sbBC	AV1tsB)l5$
+ W-X8[S魗S'J(OcZ(ުoTZiH=5!jS#@a%pʰhMp&ոr8M c@r;)25fV"Hl6uԚ.//V oȋ7mrX -	Pk58eX~CF^&lj\i9զFZsH|  [mj5D	J1;C>a5.jS#hMVߐ	n0AZoSa*`uyњMqVjMO<aXUEciJI#lm.ȳ2,j$(ZreMFE0bz4*oLsGbg0䰾>rxM5WX#w"hl_,].sn7#-z*m\ivگ4iF/2Gil.^ߴo0䰾>rxMkQ_P6J$z2tdm{^Lީ nzX~CF޽s҆bο2[fAǞN7g-KW-sѭ 39x!}̧>46Ĺ= H65r#)=GbFGH==X_4{2AKM{gбwz5{*[5P*֔yOmgGU_|WW&ɗ_Pil&A[mj5ճ޽E{g_ou?뵐GHťQ.t:Q1,1dH622
+N+ki>jMsњz+uc:(t+obO1KS*L;5q &Zh7t6fAZotzzjpQ­_ׯCr[(5#-<6nooʚԪ5%QQ;WWjǁSԕ۱!UmFE"|N\SJcB/}&A[mj5'>{(wCbMwgJg?#/Br[(ޒQB	=%,L7-l7d2S5۝XwFo\=9.OY",M,dHg k99<=$m]چTھl H65Ԛ=z܋ω}ُ(?nBGr[(GGtLqrgzNVL~-EԚo[5+v:"eH5"۴4' k[=9Sʴ"8yjۣbSULX56J7mrX_i9զFZeYAiH?v@'ZHnC^Vi
+PU}&S
+,mq҂uyٮk]/WRGƝ4ψ
+Q).fSHF'T'̲3\cǱIK2,K~P$2Ћ,5;ѺvǦWھl H65rc {NoOn߷Ë]iLlP/f^wc,ղm<eX~CF^VD^JfkŒ60$-w++̬r^Sh6fAZocM9σVX!K0xՂN|Q%Ocڠi,0Z҈rKXhH=5!jS#@a%pʰ`a5.fS'@a%pʰhMp&ոr8M K@r;)25fV"Hl6uԚbNVߐ	n0AZo'h8 ȶVjM?onBNC5OrX -Z7dEk69E[mj5=}aa
+X~CF^&lj\i9զFZӓ'OfUnaM_hþ%k,lUlYWHbBM6t]7~jۧڹ7#;&A[mji{%\,0vɊ6n?d< #s T;xUK1}6zސ`4КaocM?KX7][bWz2]n:g}nP^D%g7}KJ98ΰSx!ZWr<ϥ8^87kjA"N[jި`4КaoaMY9*YR0&I.vViZHnd'=^'Gī#!YcqΚ\4Up0y_ylHFΤB+CI6ڱ7*;&A[mj5ճ޽Eٗo-mxNTR*!jQ&Oyu*]*9W$*SKeQ%gWء%$#6<'28qި7$;&A[mj5k#Axz2|	B8#w+V]8tD֤V)FIdt׳̣ľn;6*ԥ:Z*cFxTs!ք sxM g;㗛!-o\Sߘ̗J_/i5\m8].<r0Kl:SȫEΰ(Iwӗ6ڽ7$;&A[mj5=zha#Ě>{1;gAߜo	mxTSMuMoN@4)'Jy
+{$Ζ֔4[j;^jVd}vbӼ.VJ^"ToR̝Z 65Ԛ,˺'OɟP;}q$Ar4Om^S/Q(H,vEMq]S]aqO#'&ufDfeI`ӈ">0DP,_d\v0_j25fV"H65rchһGSk:}[IkS!r4ԋߙם.휼-&pX֣+&y7]`IqʟW[xW+f+RmCCF^&lj\i9զFn5Rk"dIAR4
+0J]N~Rfxo4ljȋ7mrX -Pk:::bX	$2n!#/Z`a5.fS'@a%pʰhMp&ոr8M K@r;)25fV"Hl6uԚNauyњMqVjM!}2>&?xlo&w*-`4Y$ոrxM5X~CF^&lj\i9զFZӧOmn7dEk69E[mj5=yaaVi/-%mE[mo*8<?5]77XzH䰮W	569jS#hM-SŻtF{dEVߐQpg	ama`;JuG<8qZNlWvep`a}}V9֔L&~߸ȒK$4ГqtۑW̠[vt/S_0.{羥{b.J9'8R!ENJRFž7m"OD$bғmc
+[046l H65r#)=GcStfA,m4pݚ|u{27KM{Ēxu$۩w7d;8Us"M%8:ԓMأi&UU#L];j'/dJc69jS#@ݿw-2;'nzK'|B'*Ӂ.%j*dV_F[vo(8-~*$*YTQry☖?ئF=r]vyĦq#y-&eԪ@Q#rs@^HmH69jS#@<_{	;&z9W!-AHbyeJnЫv}+3N,:9Ԝ8LWFg~E^y-FZRjD:2תKHdCiRiM -Pk:99y9O|P<~'O~r-$-ksP鋓5\S笉jBvW.NQCb\O2UobG/
+OLhcћ_iM -PkzFr/>'cӝ^ owob&t$yt-N:T]ה9]q MuXS8І÷\9/OU#*>	OůF*L_iM -Pk,b~ ?O%4P-zBР#LV8KҰ/U:4
+<%U2]TKX\^ռ8^^?pS`nSHKSǱL4(IcVgil?ӂl6fAZocMݣ.[%%o}v&B`fRzTӹ7s+=
+n!#/+kztn ^Kݹ5j%mRñ30uPj.mH69jS#7ƚ"xٳM´ښYAƫ(0*7d/8)oV8(?Ґz@kB9զFZJ auyq:lj\i9ͦNZ1J auyњMqp6:jM+vS7dEk69El5}Ś2n!#/Z`a5.jS#@9O>q Am65Ԛx"XN̝!kxAZooȋ7mrX -Pkz)°mhMp&ոrxM 'O0,ܲ̚ȳpVۿ.kaZ_fK7[*m88c4Кao:kuicޭXϿKJʶ((d'vtHj*KǙ#
+׸jvciw:s!ք sxMkQ_mXJ;=۬<ˬ)-m+lfuK%qd@sqjtW%$cwHSSS	=98ohyX]+Ԛ̝Z 65r#)=GvV	MC-S%N ᆝYS붦%JTn?CǞN	NNv&UdT0وh$*Uiw:s!ք sxM 3zvݻ ;8-q';yۊb
+N}ִ]44(Lf<qL˟nlӫq=iyqGq^9*M3]ϑɱT̝Z 65ԚNOO_ |A;~pTIxj-$,귦zUL];Қ,dJ)Βм]d;s!ք sxM g>c\IU/Br[QLnTC(+h1*I^}RMfNCu3TAFъ\25fV"H65Ԛ=z܋eG(W/7/MHn+yxkJ.K9F#et4gm#U4i?R:׃K{CӐz@kB9զFZeYAiH% Ϟ ;XmE1'+jܻPR RRAidxضLkyY8t T	5(ъߠ7$;&A[mjXCAxt%Ϸ?/6ƚtպ%RzWwTݬ|IǞҙ,nI*+7q[dɥ&EoR̝Z 65rcϞi5dn?0$>ɪTyhUCF^&lj\i9զFZJ auyњMqp6:jM+vS7dEk69El5]^^2NVߐ	n0AZgkpʰhMp&ոrxM &>GAPkx`u;b0wR}j\i9զFКn!#/Z`a5.jS#@ӧ6U25fV"H65Ԛ<y°0kr"v]2[	n!#/eMoE˰*'gq`an^!LWYg0䰾>rxM5YSݤk"y_o-t&5KH=.9?}Mߛ$[*vsgJ7mrX_i9զFn5EtNw{Ơto,2k}K;uk"yގZmzԕT8O}	du51H -<4P-T<2`Ng4,b@њ_oǕ-8dhyp?Ěb=4'{ ԸgКX%A[mj5۟I?'?+|?G}Ak!(f=z;^;lZOxl
+5La>̀qh̠sR0$9jS#@Ք8?5}p?n=pWݏ_ZmE1y	&qH3?S;qHx_SCyI$;M=Cs(b1Tʊ卯}&A[mj5#y^;gI·&/Ar[QL
+庎:?Χާk5nD^eIL?\Gr\6U޲5fAZoѣ=.w@||~6}*Hn+t37YuNGEq8QfsD>N^t$ԫ?5Qy2/*ͨM -Pk,bw{0wὣ"8z]䶢/xqezJgv.Ao`Uk+dʫy
+-Wھl H65r*ʿ[֣
+8<z;l@VW40NRu&wս]`]a$A[mjX*Ϟ=6&2BQ%0|d&A[mj51NVߐ5!&Al53NVߐ	n0AZgtyyɰHn8eX~CF^&lj\i9ͦNZW9)25fV"H65ԚCd|M~jS#@'MTZiH=IqVAk:hMp&ոrxM O2,Voȋ7mrX -Pkz	¬-<פOnջay4tuMn:m0LU@IУgsoi:˴|MioF0wRhM0Zx5:^Z]valOnJ7QUo>PV^jrNw
+T25dEk69E[mjfXShNGtG}XRm.2k}K]ʒ}RSVm4n`b4gѨ!7THJ9Y:*Mx8 cOˎE2H$kNyњMqV֔:	rLDOf&t-v]fMtVA\mMKDYӪwB)u'ٓ7J©29Yi:emnh$>^DAqJoLҩptjMNC	AVjMggg'o}R>	~W߻{Q{g_mE1S:+QVWu[tbICG4<qLkʖ#&QHe^K]85-KSu4'GҵyњMqVjM|[8GūVZgMt]4.C!/e'%JS=5Ԝ82gC [-fE2`G
+goȋ7mrX -Pk:99y9GXo>|LgFHn+yxkt|[lu^)51*tHcWNVwnћ-;*/<[w7t\hH=5!jS#@ѣGW{]/?_[˽\&ً͛БV֔ꃮ鈔ottZ9oD2*X\ߕEiiN GmK91W5nȋ7mrX -Pk,bw{0<FHn+9Yq4<T}^gdMsR]+٠42<u
+lMq`РSTybKtH'4B޸`dEİH0=ϝdn9Ր	n0AZo`Mܿ]pA)JݣIS=V jwWKݹ5yD
+]8Kxy¯Y八OC	AVִ?%((_19'[ܸMK1;&A[mj51NVߐ	n0AZgt||̰Hn8eX~CF^&lj\i9ͦNZ%J auyњMqp6:jM&#8eX~CF^&lj\i9զFZsH|  [mj5D	J1;C>a5.jS#hMVߐ	n0AZoSa*`uyњMqVjMO<aX5egᚴc׶#Y
+n!#/ki&9Xm,luݠ-8WJ#xQsl H654^gMN)V}FΞ;41ne;Q*Rk}oqܢ]hcWj[CAYخCWvQfAZoaM:ivYS[ڰ'c$<Tއ4d;xI;&DHu<uݶOzvNST	mEH2*w+vL.u/gW/A46l H65r)t:aZIǲ_?0ˬC֔d0;"ZS+wAlo<	iHPb{TMGG!kjM2O.ZSil&A[mj5۟I?'׎|z$L9elUuњ ϵ#&Q#(mcʩsNuȳlr鼔6<Ϭ)H\i)ڦWھl H65ԚNOO_M_go	>;( ֿ (їBu(	RCZTPmвI B%*CAݪ[AܙlKJz{7f=iwg*Ҭ55>8֏CԦJhIL8:uBƯp=Ob/Tip @)ZmrDPk{fӵ^ҖDhm	khigŻz׎trimD8
++='Qܚ\8F7˸D?hg[\ T&Gr'/n]'/BkKh&X`+rZQ.ap<[<cK4&ɨ}sqK6ζX? 8EMjM	W$yDQW[S%4sszzWi3IX?Q	==L v;lکe{kie9U&Y9&zM,WBoӜ`֖mmq~> PqV ִեXɥ?,l!jM*ɍS,;|L`A6~bwME{ѐ昙T'f8Y*]p hɑ`MlMY"i$#o~ސ2gmwz
+B++q k  sVԚvww3<sbK2:tg[\S䉠ѣX`Mg[\S䉠trrAW_Ilչ Pq
+6<Ԛy8,i$#/Xs69"5e='_  X&G#>NgjSpGxbu. T&GN%yζX hA0d[[bK25mq: *Nj#Zӳg2lLJm6-n`^BWMfVry2t]7M q38KXIlչ PqVkYSght8ofר$"8t/a={F̖\y3`IF^&q-.V@)ZmrbXkYfFs3]˲\o1ˬ) Mi]c-+Fa{&%*):}Knmݰ͂Z
+YUxEzC1X+Z0Eϴl3
+mjk\8%9`M  dNj#B|\)FM>7f5=*$kٞlUߖN촿d/5<Y0+Ub=3O2sBii-D[*}.y%yζX hAӧ'voKl'zO},݌nKThm	ٔhM!lꦃQ*ɧ^x'(Qa&IfPVTE.5eٴS_׳֚KncS[{V)q k  sVԚMxW߰W͖umo|A!y.Z[B3k	GXҽypZ5u*)uj=d	1KeiMmaoru2J25mq: *Nj#Zc6ӂkϽhXkt|
+-i Hov^!Vxv]9}{zS:UƮ]jVgPM6?11Ϭxõ[{V)q k  sVԚkȝu'/_N'S%43њN5heֵ&bnTر:Ӓ5=&];mb`<5z]4׋O^l*$np\ 8EMjM	W$yDQWBkKh8Mh!*MpF#%iK-Ӷ-0M<4k2IG*Uc$ :sn&[M1VeO<_SH9b'ժ'6dk78bu. TU
+endstream
+endobj
+9 0 obj
+49372
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 73
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x\s$WDpWn\_Du&ǎ`^$ZKR}+r̪ʬ}SI{j-mKӅ(=|/}$[()RŢJ"𜪪uq\B\y^*T*WznjUM6^뚦IvpT(
+o|߼h'?կ~5>uMju]sX,))뚪v:4ڝNլVFsL\U(/\%T6y5b*XlBhX=TԒr'PLϕ%Z0ݻ}>E}~`fUqt]59AHB>Q$qjjvmݳmNe8 8.m>QH2o_❷ߞzlscsn~ɲ6dǫ++NO b,g0rvved2	]nml~eZZ
+}\<PU gOݿZֶ>Z?|3>Ӎ͕d?-zW	N,[ڎ H.=:.oյijrukm%Ox[C^^~Igh(q Գ٭}pwmsff3<%ˀyn~P;ηmG?~o~>taanqٝX֖\B=Q~NTb,܎#	nN1H,p\h2ΌR)V}y|!xb!Nkk{nB֘[T"T2'Ȳ(+JP,U<'2Odt~0Á`'ŅEh4i3@|@ |p l6w+?/K=SNaRT$Ɓ(p8%y<z` hz}>/P0w##%[J9Lv=J{1 Vv0]e׽ٹ(N<<F1)J: 6/*ќI;;oQ@޽g4ϻe`^y~s`0b2p{n/z] 6]^?2UDBA4NOO(`0pqѹ4AЮt pQ_(&9l4_*Zwa:&>a.aUMYЩuvBQos/5B&8]=P$Xz>x(Ўzn1g8ɖ~gm{cɧ+[+nsyiy{1B0ERQuAHdstgtaNԻzp@";_KA+^/M/V;zT΃NC#x~SdIy`ھ6	mhp B,d|^7ia E^OONЎ]D "4^k6ۢ`xl[n7Vwx<һVfԪSXv4__HHhgյ,{&:VLJ$D.ùyavnlK	n,8~ܖe2_ʧEg<=~ %^=^KH`84G6C]Ӧia.s*3v]Bq#x"s<:&X+Pa"q,`?¡8<SOCJ8FڃUs)6tͩ~u?K:e4L2ZUSf1F"|.G8%RAKfld&.MUՠ@M{8j!ЉN6 RQt@7z  PS[$I% ^ō˲rcx>0dJ4#+g@ ( yzk {|4F}ˆ5KSARH+MիԶ˫VEу-U߮p!oҽ"C|Xhj,h" .8SDE\i!</Ap9N G0F!Q3d3 \ V8CoYԣ!%YUh3N3#2r,G{vc43[s~x1NbΘ:4g ŀpB}7z?Kllcmr̓q)Y]7w}z&V86J:PHyUny$=HVGe$ʋ(W$EQT	DJ.ݩ|ZΈQϧ6w)闶ZE}63O;;VJu8V,ъZv$AcD:$
+w{q@!8F-xD\K$S,B&c Zށ\1`p+DCB&d+ 2x/ 4|N"錏5(7y8bQa4Co4>$3ӋIYWJE>%e5#["L5IIԴQZT8"Ɋqf<iOd zwK劢J"&PCLdӜ?tJ%WSe\$E=%h[h..o-VGXèWg>{ց}`·w~B</_𞙡#t,Zn@c["mFR'a\xh!44c<EclO3Q`l1fVOV@XY2ǫUB a QO^.I_S.qSRDolo,DeA3tݷ9
+jTzKP&j>Jl+B#bXЪUt	iz]XX,h8{k#
+PG&@eYx"Y7V?ӥ>xxxI ZJ1"oI&".~gbr"fb^?ō6M2#%(kZ$ʅp" Z>Hisq#jhɖuDMn4D|5^u3CyܘZd>=3o*fB?ݕ6̃{=x!p0nD郀svӪB5q*hH6z}ĭd7nJ-kj{mͤ:$ȥ.'DKxպVq[9;֊ ټg9Nϧ#XnGS'@~u:63#)Jӥ<q6셋gtM)K
+L:)(B!N2/mB^A	p[8@"A9Lg\jvz3cG<$e,=?8ٱo]>-0=8XĲi&MK %0Z._,YufTe/|>HIRTݞ[VTw=s{<ejPh^Jh$#~`pk<EmdO'ƺ@l'3B3̣Oe	&|33VuK6wowmM}BER2Qix ZȲ\Ѫ:OLcV%#sˊi*JAK0v;ٹeXA+mYӓDԳo
+3ZqD<Laղ333HIVR>lczV+rÁ`hS9/2F$BA_!aMM'nDT%"qމ{^MM/ǕD&݅i&
+4\fX.%ӹrKe&U.AIf G˖=jmy{ݭ?!IPjK
+IIZuZFbaIrcZF+È!\F2{nt|VfqȽ?q[X|xw,!n@^QF
+dWZ/bVuYzr9)I9ZwL)zU95&l$/I	fӺ Dͷv7:sU
+R1fRL,ɥw E+F)^Rh$|>|qrq^δf55muieyºeiϦ'4wn5DA`fkcM|3=Bt,W|j],TEΧS$^`{x<zO#O?zلvì@K<з=zH
+4)ۮ1(CV[I8R9e]_r|xpgbtFk_s?k߸#pn^H5WyzݮWvϢj_|Ѝn4rLl˲ѓOv(&] %csaŽR*K3-GGK[dHN+0%yI[avk	L5VhuMxt2oLbE\1,*	%u:L6y<`(Sa\2G¥ZFi)\|ai/L3̠kO=YH_I^1jUޣ~ՠV%3ɴ!r#荰+ězŤIKF嚺85J}Y^RFaH(h*rf]P!},/ꖕd"
+≸qdw8v/7uuRSӪZIʀ'RȂ=ȷt*˕b<_`wo[?Z-IhFjшE\TXay
+޻yh>ƜZs/[d^TeaȲ%Zi s$q,7ֱ(B&%_+`I-Erzۚ&b&ᘾif~Y{mX͍Cz\NookE̎RoLXFYx*͚{As8h7LZn_o.ϳevos~2#{U
+VѪZRR郴
+PшTABa2z!NhCn#IdbL7
+@CfQ=_\SuQE#!yGdul>~`?;̱1	v"
+endstream
+endobj
+12 0 obj
+5462
+endobj
+13 0 obj
+endobj
+14 0 obj
+5462
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+5462
+endobj
+17 0 obj
+<<
+/Title (NodeCountersTable)
+/CreationDate (D:20140209184655)
+/ModDate (D:20140209184655)
+/Producer (ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000300 00000 n 
+0000000383 00000 n 
+0000000401 00000 n 
+0000000439 00000 n 
+0000000460 00000 n 
+0000050014 00000 n 
+0000050035 00000 n 
+0000050062 00000 n 
+0000055665 00000 n 
+0000055686 00000 n 
+0000055702 00000 n 
+0000055723 00000 n 
+0000055745 00000 n 
+0000055766 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+55950
+%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/NodeCountersTable.png ns-3.20/src/netanim/doc/figures/NodeCountersTable.png
--- ns-3.19/src/netanim/doc/figures/NodeCountersTable.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/NodeCountersTable.png	2014-06-17 10:33:13.888996000 -0700
@@ -0,0 +1,315 @@
+PNG
+
+   IHDR       ;E  QiCCPICC Profile  X	Yy8U\yysD\5u	i0BIRX4I	"
+ D2|={s^{{}'EE R-=< x H1QF6A^xo?
+ Xq (
+ HCQm-6	 8- hI$J0 .0: r$l	x!\DMb)D+D
+cI	[/EDx,%K#|A_f27tx?p@@2 !67 Q GVο+eoprPI!VpN`CPAds+X*C zȮv3@ &iSM9!&-Jb>D1ߴ#b ڒ'mjgKHm6f~.ADQ7l'Fo7nI4&ON*y
+%mߌW3ca' 6!o?r\| @ VM$,@""!Ov[ Ri+jZF!U0Z?3Ù,q8?75Q`ǆa?`oϱߒRr
+%ۂ	(BE?<	:c80<@-1@!6ۿ?|Z2꿵c?o)֐A oNMt݌n Bt#}w|;{shGZiFi_[ISaQ	rpUBV
+rB*Jj l< ,8ni hok4	 @_8!	YXJܖ8|`0/ Q mR@3gvAA:'ipP4V	AxFalLY0UAaEADET-D1ClGEH$IBRL$9\B*my#/7YAQ(6?JBQ(oT0*JCGEQnsjh:4Z-Bў 4CkMp9OÊĸ`1ј,9L 3y|XY
+ce[Lbp8$N~P^\<w׏{[xYOS||~ ?ACG#HBcNIIBGSEsfffVV֞66m)mSIU3AGp&	g	5aNNn Yktg7?N_NH =Tqb%A! CC= gFZFqF#]y7212I0030ffZbfeVfg`bb~<͂g`1c	`Ic)aigyǊfe5agMe-e`dñIYe]eeggaWcweg/`>8qccӈ3(g 2/!W WW-sn!n30lq=<x:xxxuyy3xoC9+[o0'0#*/Hl(.d$.tVм0p%^UIZqQhhh輘XXKqZq-3]n%$%$$%%ǤRRRRϤqZadP22!22OeQdrX9mHbayzy#8j7
+
+6
+)
+
+=)++**(oWNQnR"RLjz@QZuVu[mM1M_Ba-6-,Xmc?u4t:7tVNot;==%	}!}_$beSFFFW>+So/3o6005c1s1;g\<ؼ|Bb}KeUv?v>gFƆbdn{vN.Ү[ٟwtvaGʎI]NN>NUNߝO8Hĺ2zV.M+s {4z=]=<v<sK+k[;.]0|nb}||HbҒ_߼ À܀@ `S3!!y!sd9PТ0p߈ۑ,av%5}:zbM)Abclp+{(M~\A܏={n3G$$MJ4Oo[pRrқ}F.Go; z AɄ')J)9)nMii8TΐNI>{HQգGed<T\z|Lcǃ8q$dɡlĜwlO
+f.9(O-L왉6gO毝9h/e\$_dqX8WWԵ2̲
+ǊU|U'Qձ3W]5X#_s6{uC7oԺYS'^WxVF=RP?0{&ݦ[w77e{^ڽĖQZ[ߵ?{AouN.z<XqCFw}zϭ'Onj?|اԿހ@`3g{OLeуcرqW|_KИM[;y6!oJprZey|ΏQs韘?~\KϼW׍oYjmKKG|_]Ϯ=kMmDllD(   @  ?9"#b3L.`@J@%0BҜ%(a^e 22dNa:ykG7 `=nQXTtK9bRr!}T`Z2W:uk猆;LnXdXXN!8qt:sIw=vƽȣܳvgWwۮNnߧAaр~B-ÂD\۽Iъf/a q&	O`U)	+69v4"pfiVױ/'O:fgt2v?3wγLa"ËjKE.{QV,j2_Z{|:[Ɠ<oJF+ӎ{@Aww={Tҭ=ՓDDo>~g
+~>&hy胱_MM,y]{Iye_^N?iX7{}ڧkT_m~QkpYݕ5_ppDF"Ga,*5	Vmp߂N5hz	st0 #IYővcۈgUiqAK}"xu%vJHΗ)- J!E1\QYMUeJ&&Z:@n6/=	/MGٌthH30\dooig`/@tXSsKkŝiSKܛcuY{	Ѡסa/#^F3$e6fϛ (W!Ic~.)i7ua8ᑹ/X'5rO֞r䳜(+t;OWtT1{EiOU$ͮ\M)6sxS~_Cvc;#w*?` s]>N{+T{{s!a:/G=_N(^{r߇is.}QbW5s%	N1qE(5Tjmn(aj6;nKK3M{OKoCbgd"2YV4%cGt&"%wT%"%$Jݒ= '$w_(*Z*)(k+QTT}vB]_}V㌦'|m3y]݅mEz6z?K6(*&uff	Vw66mivDg;UPN0Fb]>xQB5}}_-+_Az!d,y&I	޻d)xR[ئ=	.Z{ڃ,<)it>I:r''sZ];+YB9E%bJI^ieʕUg{Zo݊0|INX-lln?m#	=<OwU:>kz2&M$uş75@I1 nlR9 U gmH	X]?,	5>+p1ESM9A`4]CMއ@? i|bm&"N	W[h44մ(Z/;~B*yvӻ݉c~3ь+Lǐ,R,fBs8d8pprmŏ*.
+Êu* [!*/'Y%eZ!˪{Ԝ545~i:9{<e/n@kQq[f-n[޶~ݺʦ]=+;N)/Uo]>;}CI~Y\φs
+ϊh%J9s*NjOl|g"^j~ɜ)i,09FpNUnQޝ|/gvmTWzsâh}Q㭦'[a]\]7|=z0UDۜ?tN}_.gx¼jo9Y<<; T`d#u0G٠bQEGEۡQ\Wvc1CX:6[]ipwXGhh,z'
+ѳ_ ZY,l[9G'{/:M>*:d!Ka&QrQ8=<iY'^ZlE*O45ij7ҽ^~AaQqӇfS?ml2wwpsnwt);aW7H_|/M}BF"#-w.j$'!49i_{9Sz$O;Z)UxDA`NYglΎ]>v	Gϲ'U-WjjUݨ+jjrlV2~XG.O~45ec<5ĵV&#ӧ>rf-}vr~~{rğ+k6طƟhcGC$
+t!_Ṏ5<ǩBF8U{y
+q%?@ISBAM`')ӍЧՉELlL̹,¬غ/qέ#ʷA_UNZLT\DdԈ̆R!";j4*Z>ud01eggI۞cVn}fGo2WS_=vy:%%}
+L$GvFFDDQc$O:ǁ/SSJ=rdq֥ȉrNK<%?ܻB//V*tpz%ӕjI9y+~1N]{m4;:WV<v!<xo0a(rDѸqW'xTGY9_L~υJ\F{~_v]a+!+}k~k:k~cF5^1LX  zjz	L6 9̛nNՏF٧  iTXtXML:com.adobe.xmp     <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:exif="http://ns.adobe.com/exif/1.0/">
+         <exif:PixelXDimension>786</exif:PixelXDimension>
+         <exif:PixelYDimension>538</exif:PixelYDimension>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+ԇ  @ IDATx\G8tTPQ,Ā&`THT0Q4%(F,'v1ņƖV,XT@D98xq3o޼ٹ=	 BĤU7Hx$	Ao$6	 B HN$f@wl5PQ6hǠYH 	m
+@I:MAH@ Z. @ ^^w֗/_x<%fyVMMMI555۵k׾}{===%b,~TTsy1*t4uXjqUt}J_uosGIٳLPrt~uN$%kϔހ~mbHIӘ,nSiiiQQQNNYI0UUq*LQ'}`muvyI6edddggÙb6qyhaaѱcGSS7K ==r&43-ڧdX߿+gs$$wނFUU\SSS!KaaadI*l)ʛKMϔͩJ~n6)Y'w6u2hP𙒓;w*&7|O>zNoRϷŋ/w}ݸqcn)g,F`j}uju4GGGq9:ccX\s
+Drc"ij<MByt*LueD¬zk).\}.A6QaZ+/uL#4.EgxW#SXj#`氜'+J,y[ܮA{ex
+`%P)-S}PVe;À6
+#7-s6|!	7(::I
+9N_^^kѤ_Ii⦜Z1mɑdh us 7/xOVVV~~f+h3Y3 #4_h3V޽{aHx$'N+8#`?%uiV~KL5B:\@YF̒ޕr?)BTpR	hT{HsްN~%ɏOa{A-F/+?Gy/4VxEFgQE
+{A"&Z\^SZR_OmoX!k2kJtwKךŞ]\a=$ūol_ՋȮJJ܇gwn^)nd&3\2:"]61u&ͯgЏFXަ/^4H^IɌh3|	!Xqj=K?)߭^]QZ*?R3` ceby%Ňb;@Nb&2mϞ_f0_
+IUmb۽{\$nve%\PϾt`ϫ~AHQS?{mRqeWkvU+W]	K
+**(imwget#`0`n	'aܝJ^#6MswSV`(A(AR1C@)6s1kX_AXrǶmIy2wocWݦ+`k58Lׯ_tA!<
+u*X2U:s0dripHgJ&+΂/ˤ\/榶i2&z)P,IbOq:MزRk':ac<j|4e&oŶ"0hXض6rs+=4VAFo&s~d>urpO-@]NK'<Z~$j~$ʥn3(ʍ~ꄳJգ
+7=WEM/Lg>́,{v7kl|ir"<]r"Oei^SٳayeN3C3dnb.h\lԀZ\dɫ@:zg/ӔkWaMEŪT#jDqqm-b_R?Vpv-jҡׂ7MZ=[F}u~]Ah4ym϶u+]p#~$6l`eeAaχ] c! $JNn/BjЯ~?U^?GXȾ}dw/ȿݲYۣ*HwMϘ(6ġ֫XZ.$k[,{ү^ڳgOq)bi,EK'(>T\8$5*HLy6.55ڳ)?5)Ik=є{~FWV#G^&`⒈ὬKsz-]Ý`Ns*ܖ(n7vXqnoC҆OXM$$QE;ػ^7cbTtT;gs$3AyMUo	;7߉P?@hӁMA>&u?Z;$_SןtgN1]=LBacSBxsBAA򫳙T@2#7r!k3,۱۷L#8pI#a>'L)',:'/
+=ubtZ#4*SF#	`8DrOmsm=?5J
+U°h}8ھ}Ac_&!a](QDAEz|B)ʋ7=7mTV:!9aoݗz={hv7iվG=:[tѵӓ'<Ym[gȔQ!@V*OIaDCJOqa$!]&%%H>a	౅$Y T
+likKԠ\AߝM"
+?M-%SH_CZ^K88?Fz8&`K<BQRV^^^n\G]Dr2%[>\@G"oq&r%Ǚ"R[3R'
+Cj)<u|nޟ<n?)$cX.HQR 1J~IF;6$ҩ*Mշ$TwF̀&O[A
+@,';퇽?m×ioSЮc&}=8/"	G/3;#QVO<ZNT|&WTCAQʅ,[q0-zϰ0vFjjj}gКRB}czPl̠_u',}&ӴE9ϩ^M<jj[#!6x,OfS6&}Ήִ<<#{!E<`J:xrxnY%324X)	H}|H}L$s^ճZ_^+7#28<'fğp}|͟yØ7nx˪s%Y.6_8_fKF LͻjOt%p޻E}OXٿ6#2)gS3} 7sY^ɓ'/_wʡG_sS+CmLľMMm,ͭ--a9
+aSC2l;u
+kt#K?VJmXܹ[Pv_JاTW2'crWV~	WM5ǎEv%J*j;*,>N(`K|VM gWx'y!d@ٚdZe؃2NpmGΠƃxQ8Mr[H
+]ľ@SCy1viˤI.A0P3v/c]%N7r4v~rӝ}np	0j΂/ItMvW3oݺ#i}v&1I,\g)/}Zsj&.eq#>_QMFM%%Jl]a1)2i&νM	ue&ƽy)9UU%iJI.&Ww	:qofޮv=cjףtfmAۦF*a(N]Ԣ{>nО(LVE]RkcE;W甩}ZԐJS7;;:L\)22v;޿sehF'az	EwQ=5kԺ]_>cY1szv^/?rFD,PZp>""soY2ujس/űNC).9
+Jx{t_Hk	Oǟ.]d6#CARHB!2K
+J^H$mN.ٸ［z#fui`k\d΄0X1]oca}Ws="K.l8؜~;M{obj.&͠G#kt<ǅ>﹛R<TyٛaS-Gq3(VDJ|su}YꕰųR}!2[m'j[}4,*уSdJ]$Qć̍iJմ;<oҬ#a߹Ǽ쿝T7?>𢐰ק-$87m;3T73~>{8Ztfg{}q+$4o׬{/9[=qS#;ϟ?O%+ shR9Ra\[.uN/q'+|ɸv#cه<Nhw(ǜ3~+`&GE'3 #1M~dfMձg.vkBf}b;`ΚzgD}V~vF=Օx'<h{WQ=巶NNYNGb5x~{"<[9=/FD8Z
+Np22&rIJC׌\'<,u5T^cK>MM-gؐ+מ}e?l.穙u$<*{nǂհij5jt6Į%LW.T\K	Bm/+raO;oQrtPEɲ  )YzI9UYN3&Cy(I$4h cZ3{iv^#A`}gףc	dZ
+#΃ײ*rt=:pkO2,ApSCiUv|j2-!C1`]5;p[w(%oҭZ\JfdE/t`X`daKHS伸~poR90tߝzOdou4jC6Bu1ӱ=ZX-anY:طa1P:TX(GIҴJ*>G2ΉIlCVrK,PTfVΙ9~5ifʋ57Wdi!cǎ+V5		qgd{D,#dim!,",N)ճ)|jhymD<~LÒ;縙ꌡpÒ獁z]ٓMF,uDZ@Fi#`QMa_oO[ۙҸ]d'iInOj`Rn٣Gp
+- $ax0):02aw
+ ̝;WJD)k..7;ߜXxjgoHbͳ7d6_26qɊ_/&Θ+렾!)T1c9u"<lBَ_{DcҰ1Eg97Y1ou F=pxoizffNa l`9aO'tڻ> {	(`B5~SpȔhń ,JFɢoA%Ex:yj_<]Lښ=ɽhpj]@Ž:£zRmGE_-$]Fv$ڡEWH-\Hʠ]&Q4
+vTuH{ի8O7֤$E2ty*\)J%\Q5)J3dVWI?-Y}gXn9֋Z-4;C%=_ىUe)W	:皆hHIe֫EobJȫdPZ=lZ^YEu+Q:̣&\[ɤQt*@p[V˜K&LE1^*>w<5gWLcs !vt
+E7g轟QZ	k1GAMe * q_?MLF46jdNt:9Eep	bW誥H!XݬtojXvߒ7e<$6jJ*Rl)Ӈ#aD'`=ҙ,wY!,ܽQhc
+RԹD`O&y,UΊŘO'Omo{?
+Gh/":8:O q@9BֺZtpy5:R	୹ըcm5.NX7nK\|$!gpa;///IKqٳ%S;Wq]6C|!pJj@xmJ* J'x0,TS0jRC<ك6̵|#z"D4ѲS+^q!4f]_CAE.i״J=zM1̕ЎP&7=%<PLQO/_2+[$3C1PW!.1@>5A̾jQзUjf=?7kQURԕrkA`wfy,blk,`񻙑Ĭ㛚)lYŧ6S1;ڐWvzEQ͸Bqpw6G-4)]5xԌ;ڱRSfwH=w_MO]>sС 
+odR P6(pj!f/[*٩ՎT]gW)R
+W-^.W~_ͬkj>Mo>NBȻo½u}&1k?|&4"jBV8DŨD/ٜ	Jfd;q7'Mv%G^L:&9ekF%g6ևr(eu~GGbGT
+0>+7UY4O^W$o		R/ƨ%􀦒RKҏ,[XLW3o9/?;==zAJyYQ']ѦF-4)l&@\FHC\4( xe"$*}k`	w=JZ]~Rf`V= XqqUdp]*GF@^?mwKjL2;NW2Ka,Xj4MfmTTXUg!$ʼ@1/9:=3ouǈ2Jvv#21j椞WB6/gxXQ&fsvr_h 
+m/܍L vE?pȕnz6S&X-WhC
+h}N7ʩ8sA7Ĥkw6mAUvĺL: VGk:!6qJq!fq)JΕ en{hV~~q}L(#b4"a5\CXI^<{5h2$}`˗99Cp8pf]Q%/`Tj%wDr#%<=2	̘7L'ѿlCB/(y~w`¥7>d<~hΕH2J)Lx5qe3 |K)I<kN.X(Ԇ~flڂq;0^Q>bV}8jvwlV #-j1$Kw0T#"\v<[/j^xx;i}pd.S>+N=nT/WʐU^Wq{ݛR}3ܼnj*JǖFNw%UweB[_`.C4|QXjmA-Q/<JH)u59}_9b}{Vqv&P[MvZB,
+YMـ=ɖ7zmU3^}aV0`J cʆ7xDrk \@u6VZF\ެ!>4fx`$Jbs=|kYTE\@J3
+\!uΜ'KFC7.d?ɂ_wȿQ+X	WNVr2Lhv<#/oQX W*mHVI'lڐ lh+NdS@JXVf.g?b1p֬T2<S\ī":&z"Idgbh̔ݮgu:
++"g׿íЄm3]?1jHEMVLSu,WW_@]|յ-B#PST
+iLIBNm!*ǟͰRA3,,9~?ug;VpTE؏S9wa*YwpsZ/^[_fQg)b̉N.bFF-|w!?B^d7̨P6@yRގ!cl.?BZ+,2=ĩ-c+]Y~y\>|AT|:O+t,-MkR!s&qH2ڎ3V8#Ox`4yW֘M|}xQ"155bTIPBaXU15uCWs,MVERkw45Rtԯ_?X!'$L2;莕9])V-*{̫M:\/].oVsOw׬<zY&45j ]ˊTV YsG.CtD]>	<*|/j%@$PaBp`VɘZH¯IjX:T5viɵ%l:Tk
+|DDS;BO^%KvԄ=Nemk.R&V<bp/ʏ,d*!.Gsqg;H9-dj"xON追arX_H {݅_?LeSd
+ Q[Om)NW7d?GtZX\iPRNma˓x+EHgXniVQ%5Z`yyig,g雚3TUe`¼"R3dή	yT4xFdZFٌ<V[zgeVϹ53dDrLox32"5x |~65mPH &oXяR'F:<6ڲeu,x|!:	`ZCSYiPd?Qt?\܊|puۛ&얌ݮI;ewI%O>p9Srae&&=aZ{>?Z᫋n|"FzXXU#S!E%+G5dMYAN1`t07KXoENN1UPV-oÍ té%33<%2ދvYv<ixd}?޽1$/~Y__L>|?KJN*mj XħuA)iS2#?ʫ|_u51}IW#kLFͭlCC>>>TA|f<]j:3yZfVVL)F2CRKÕkXfȬ_^N،oCEd-kT`B1rP0EBy7ϕʉ-3%r0L
+|-Q|3g6HgRPO2i] VrsSʴ:gdKz3^&T4l0M
+HP]Խ5u`K8֜zN3'Io4^W/46u6AڶAߝX"b.0}}}a	B Y@K+9.ܐTpMS|@
+2 pf.?J1uFP&?eo^{ھp͚54U
+g}a<!СCXpg=ߤ_,7gHB8WF}pzM W)wTBСC322$!d
+H@	N~SNeGkM'
+gdjE67L$pkJwB	̀uc^x{5LH6\ ,<Cfp7pK)dD"5Z*lA%~)>cE
++"ˬ<)_ W dଁiACjo}T[J2 + |MC2!7J00z~zQCH xA`-|p{ۂi
+W:u*@n%%%ﳁہ'
+8Ȑv!mt2vHT(+*`nSptڣG\C p%ܮ]uu	8E*]`܌)NS /)(2jƃ~ha{xcQ
+zzS[O<rVpժ 3Z oA.%dZ+|#U-8,"l[kmzjxq`84޽{5{A$?_
++yXXMMM}X6{Ԁ~p0Kmb\Crz,FV'ifI{vb!PRV[P\R±45@ݹsk\8h=UKk)"+x斱AQ'п$ PbpER"Yj p;Wd-\`ΆcO!`E|&[[[fX#-C *$L8eviu_~C" Y۱کZ\\Nr;x=P	.pYE/Ӫ\Zu^pg^0WR  KZ~yu~9)QZxNtЅԖphLx;j})ahxup7-xHE
+L"UjL_n! a?8LZЛ1	ݦQZ @M#s|ai#xN}ZRBΏnD@K@c}H 	4 MH 	b6b	 &Po, @H 	 7 ^ f[ @H 	 &~XI
+Tpll,X6pX@H 	 $rZ 2V @H 	6^6 $ @-@ ݦU $ @m MmH 	 $@@ cH 	 $@[ nS[El@H 	 $mjX@H 	 $zۀ @H 	 tZ 2V @H 	6^6 $ @-@ ݦU $ @m MmH 	 $@@ cH 	 $@[ nS[El@H 	 $mjX@H 	 $zۀ @H 	 tZ 2V @H 	6^6 $ @-@ ݦU $ @m -4m!//ٳgeeemeu]v:u255C @H 	6	>ÇmllyThG $
+@I:LreVX* +AH 	 $ 65 VxYAE}ʥrʉ@n:RM;s|ܔ5c.UWW&[Λ?T]sXi[S#$^)*UR̙3RIx @H@5ۤ TBKy~x`pHL9gV(J\XaHp*MHBB$!
+ˋxʸMCmYx @H@ۤ aBuuđDT%d G#\Q]=mPG-1:Y֞&=TT{TlZ!
+@H 	 E _@Z/8G>R.w{]W+c˦y$)|δeBaY:Aw&qcYTjѱesv/cz^DG,[$[OU
+5Ud RG<SGvFW>'Z@=˛ɝƳ2: }ZGf $&РUmQ@ P:T	ywVY;Qgٯ~SF|>sU?ZO}Tlh,KL.S'Ze)92Os4t~H+s^kN΄jjщ6Jⷙ|ûƛrj?7~>Z'>0.9zg;Ώb2A]]yi"x @*C &
+!@Q|VU#OF,6g
+yjLvc۰>ͮV,bD綠,~yxWt;Np|aPۗ1?pօe8tBunOxjסo[JKPs:C7O"gVK.PM7m 5'_XZFR!Ƒ @H 	tT;(c&YZM׳?'>!6TBF3/sf^U{4RV}FZ2TŢ3bbhHKJ)|Y]-U	Hj yZBF)pJ1զꗩwru/2Pr1k$0 @H@Um
+ Vt.x*B$/Tp	If32(V+ocޙgN.7R¥JcDn:-#X"ߞ)xtѷH|P
+@H 	  MVxJX$B=~FOisώЛݣy|/mOHL+oFJy[mTtQCj͊;դϫ /\ғһ;Zʎ
+kтE lmYU|'bg1/+Lx+=VZk[W͊PAYE[K;.܉ׁ㖟eo@+$pqF @H 	n믍 ˜_M/ת3u7%݃;?(Ft'+d}%QwlQ}vӯ\zwi̦tt%M,NV!RgZz*#Gmt6a@LCŔ	h1]ώ8	 $ZaiíB^^^/ڤ.6k,MXp嘴yDTeY:}>ugJZQ%:F ZZTcϔqׂS@PZR#!ڤ믿N6M: @H 	~uώFWz9RcYvnBFV#SKqQM=:b	QDiH? @H 	$tT[m2M=ٖIZܠ]~EH 	 $65+)˸Me߿^Rt^5aԏ @M!/ h
+/lj}+EM4 $ h~L255k3Z,3ihh@B5"$  Mu"jQΝ;'''CvvvFFJn]-QYQQQZZZff%-Q+ց @Hm77f?{r%uƅ(OٜE= c@H 	 E ݦE^q,>b6gBm"6	 $Z7tToP.A @H 	t8 @H 	 $P/6
+!$ @H &H 	 $ t	 @H 	 $n$ @H 	ԋ MBH 	 $ @	 @H 	 $E ݦzaB!$ @H 	ۄc 	 $ @"nS0@H 	 $m1 @H 	 zߤڿՅ!$ @"nSpra//W^V*(((P%s$j%jEH 	 $ $n$7;wYukQu@5BkRX\^! $mR~ieVUWW"dmk~}5fyM,.S PM6fUH 	 $@IĉP/ښxjts,8qNp,όӷO-	UOܔ>A0NK
+pS	塯A}|_R6nOm( <4ΑRzHTJG)=*.NEEr"(Tj@I٭3ɓi؄,ؓ'~
+s4h03*݀:r6\w蒹鉑xס25gϞz'M:̴ܨazOPeqye"y|/v{rOqOg??QGXv%*#O~xӴ+&<Rg(ڰ^}#ӕ@s+:5?	)M70:Xy*xWKUnVUU*Mhg;N];ZP7y/yMore؂߼u+t~XRHRR`cG͉XɧLF\.*"kkZLZNnVe9O!>azgB:3䲉N:Bdn'7v^ \FV^~TC	7BYaw}5EE4QZc?ecp;HwUTUkv<h(O`;ۺk&#Fj!&;RQ(sn$Wc~N~B<d	;Aӭ#:F\leq.:D^B҃LzDH_aZmܚ)U6nyENU?>|7"?>JnCOH[=1'^an"gzoFo8;8Xܟ  @ IDATQh:GeUUCZ=}ǷsH5DFXiiĊ]iĤ.+
+VooweqUNd!3'.xg?})HM#?n^Y*ɏ7HM
+X[Q
+QW	qu:HYm_C#uSMf:r/ W_Y&!-cx6ǦGHiI)qV]QQTp]߁A`(I,(^Be/gt~@IFJ
+m@@]롒jcb|Ky_zٛHtiEq}?'Z%}׮>[mqN"ܜxBV	IjfaUyt)(ڲ
+rS9Ɉ;Gs%:LVWP.U[VO9agt\V`OyͻG;&tŢ.wPqJ 0'O6nmVfK7	TpnMBl;[ّ1D%|66º]M"-gttJY͌415@`TjR4)\ⴾ
++K/@-C@|i갖	n&KJ*2j&J.cсʬʙ2_ۢS1⒇MN[R^N{[5~Vypd<vʘM'cn2nIM쵀5w\G|Ct?<GSL+ؓn*a74{=w#9#ݣj
+dY1e8$B*WvA S(ɦc.'u0c&̺b/RDe4%F^nhTVV5YVHWG2Q@+# 2۲\
+~5C]VA%˫&|r+ytLiGut%?ss"age%Uy,X9i|p2I8}OQbk)G7_!2ǿAgV^F!,#S#Y$#\Utuքiqё=@.-#lwdc;c}v26*޶~!֚T(de2LɎFcEyJ.of5=[w\tgSûoN;o8msu7%EcXrT𵻐}p;-	춫1 .uуLۭ2)xj_U<2 &RɃ6@	$:mpa),owu:fP°۞[``fQQѳ`^Qٵt[ηqZݰVXD%>Y:F&H"٣~;Ӛ\鐛aKSI{3Xye/;ՂU#癡r]X}4O	MEBSmQQy~aw7cTJkYma:@O@-??_lP)	6ۍk/+e^ݻinyYE|#K7ldmӅԢtM%}S}ӚXaҢRQ(\
+EyE\e}4 SKSAP3EYE
+QY
+4RITLF*G@ҡrTh+4d4)IJquMJOQܠ)66~2\A%)jڡJ՝ZM]3]Xl
+eD
+uKff
+5V8*%? h;um/_cK[@jQ5A6nbqyjt/M|H"~a4jhh|QU,jdmknJMQ5fy8M,.S PMNE[ޙrvauoY[Z#,
+jLAH@eۤ2]!2$&&FO$ql$#nם_kz?4cԦi5
+F%FhYM)eML_"_ $ZN^ V $ @o(tTܹӌ65f4U!$ hu!ud5miLMxM{PۻSbzr0n f&22VN|Roa7A:3Iz=dLd</4hvfFK&_PK߸WAb;QoTj[(kH~"$ /&͈T@VQecyʸ)T'SW7[+]`>o؆bJ?}H%"}5OVvA~;`Ysx}!kh;"{Jf:N"Cv8{KN|3!F @H 	4 >k+Oߘ\?[5gA{/n`MrύڷKu˧;ݞq
+"gZx('(;$M(
+0d8gBBfQM\>Ӵ-i异oB~?xx%L[L
+o&&78AH 	 7 M*}?j{Ƅ5`Dy&lߒTwTbom U,/T8e 8n(-->L #=
+r١갌ΚCG¹3̉=*HH 	 $ MAYun$x0^tX1P5S~o9aO'|ޝDf:MMpP w.Lҭɭo`f8hk7h)avyB>'3=%2tsauu}KLܡi$UNܴ_}F&SrLef'^O܍?o-¨$Łkeea( @H 	4 MJHyEWpvB%))dM'i<$*#NDNMR#b<g['
+mI]["iϡy0y,Cs+f ^Ncfmرd	Paq0Y!6x, @H@x;d"_'fI҂2%\jmrV\sk>W1pfs2m\].>ul]8>6!\b{88;	/KJ>30u7ĥef?u3 5^^&wR~8|xZkf}	 $,\mRGG6Jz˶Pې$S	w-8}E5ivy_p4IvsaflEǚ3؍jj>no(oxGyKɌ
+uJĽ$ h65fQYYɕ	3T$X}!~A>Z	d{x5@r)2M?d~vzLFBBp_6G;9Lu a;a.M'%r뢍D:ŦCS[V]	ظ52M^Ϯp`X*\R(Ԁ @o6|H
+[ev4n'{yAȲI3XQ,[gkw
+8Lٰ|B} ]C?;G^p_կ!|{vv~v~k"	z=ϴfˉIiíMz $ -A	t7湲`vvA9145'$$UmH*1S
+?xoOX`Bi'(?gFX[PLDY%ԳᔬS@*TH 	 $ Mꨯ٫5]6U:ֶf֍YL̖AH 	 $ mRd7g4CkEH 	 $sVz+׌mh^mhBH 	 $C:2T,4	 $O@-??BCӼZ5/EjhՌ-\>'(׌H 	43c hpI:#ؿP+7(mA6iJq(+S PMI5BH 	 $T M*%wiFW[3 @H 	:N~kmM[frl£lbcٗNO1J~r3og`+<"dq	p⣮g}.a˨֍	ܔ'w֬A$!Q$@'3bÆ v{u
+&=Nn
+V/4pYP X̼DTIlr~V=5F7[B.kĭ"){Rɡ)v߳wM'15+]d	 $&	C:U=<zic,`/<^ 흓Zb~nԾ>0o_  ?9ξax ҹB͇EK"gZx('(;$M($${Ó^ɓބL4cϟ0VeTC6,A%H 	 'nJ?儍TӏWYub燓nnr=p1av!wI?$՝-*G֩+?unv|X@ں4/	2EtL
+	d|n,n	I+gxxaeY-_fJ_$@'Ta7RUUckԓ?LJ㿜y<P{x	{b?w'ѩ|S(8?MEID?ffNa@о:aJ(271T}T)Ϯ<c9s"7GĠӈb-//	!K`i	s<kFjLAH 	-xSI6|dcꐛr8./O:dCiOrFyX,U$-aΕ]Se`lm@86 :Xƽz=n{20]D^BP0@ ҩ\'3M@P511;v{սfW~̶y3<.<qU9hPc4s^[Iۺ˥cAox؁^Ukf{5J, hmRG&T>dԔ?i?&BmC^{+ݻc*c!ИQS[I7e`םG^%!1^[g򸸜$B{T$Z M-ùTVVrE!11Ɂ;Te@*}!~A>Z	d{O]52EFU@m"s ~TuH.10a	
+r~M?w7ԇMk7H/f&ټWKzYe4qh7ix hpcJqstawLYSvk콼)5ˎ't2&܌{J,{R1#`@R9wɆz7L9aʆ왝M"NOoi't5woX<@H nJwn~y,/]PNmW8÷$ \
+)Kr5AA2K#%Y7aCf	iham,|fsYѴ?.*(V$A &f5:4YL*ck[)VGqklm`Df'[O:h0@H	ަftu)ͫCH 	 $Z/朡[/_~hOjkFP@H 	 VG ҩ\rfAH 	 $xj5>lc4bccE^^^-ܮ"5j憖R.x{k\$PH 	ڤr~^]dmknz6QCk 48W)H 	&ۤV!$ @*G &;w4MͫCUH 	 $Z|Hr]?6׌6զ-396Q611l55r3.(ҷEF73vb{OKI!n݌F 7=LhO'yk@H 	 WJ@jz5r!~ܞ|:O)7Ȑ"6{KNo؆bUAv^P?i-5v-rnRb;1 @Htp'/~g0j΂^9	^Jxx%L[L
+o&&s%'G^>7Bψ>4$8!ѻO'EHYϫӉR5bCH 	 $	7M}^b~%/65$GM րk7r癄R΍dN|xfe7!q^Cg}5AvAtMdp{BuJXu0WY(^ɽuoߎv#Vo	.CW)d
+ڤ5 ז<9>O992O4nv]OegT\5&4Gӥ=To    KA ܦTx54ңB|o8HgܙMݙ>~:|&;S]<ML(etѤU%رj`ׅߗcL2~mWOK
+l`Vp  @`q	x,n+=.%޳֧hc- t!4nExu0\2Xn?
+)@9ɞ^9g֒j16!XREс.4ǽDʏi=,SG^H"˙8
+    iۀ+ZЪIQ_ܚhS$;ʚ>P-pfKYeŬ5NƆB´5ךuI^ۈ
+ܫ!t805x[=>9>p(Uϙ+P    M!c7w?,.U%ixT>o.4[:tia}ybdGahmVÀ0˿|l"Nq6  @ ,)X۴Ԕŝlc/yRu|p끇cF?BHVP4Lt%uJ;'i4iSw9Oc&y)!˿/>GէRd'[oeҵʺG(^/> @  L MŵIV>҅gᙅLcg\QTƉDLIm.5ѸYRN@Mij4e
+r)I59/ok-QZq?."_t5-R!I9tA@   mZ|h57U]ٸhV{n̈ŎtN97WB.99$lAݼKcD&ݍjg9.K@   " iO*g"ɆG~9`6be3Vͨ/BvtmO*. @  Ms^MP&  @ *CSېD
+;@6
+U@    !9Sș   	_k"h;h0M\6Sx3J(@JwRt h ڴhhxZ;yeX70w(etǲB	 I 6渀U@    @ )ŋD6
+U@    !86t?O>ݔE:aj=f @Z}$W턮Wgh7RbYƝ~=WqeUY}kØ[b:kk5ߌP@  I ܦ9SL^U[yNL*ȿn)3ejԵNY#r㰈9'iO˼&s}<PQ.Bj{E/6TZ  [c2R&T%r6THDtVڎaݠ#yAjZ&ZJnFH La8ІPg;]!C+FBP|DgRиK	Ǒĳ8lNd&ׇ-   ۴˦}
+꿚0vPD qiђW֋WIM&Gba	_¿}x:R0reYwkR61zZEu@#VX!4*,C|QF
+H)3@eTP6ħTi?  rW#}ANe"V疟:9;݇Q5CC?U`y_݇\`ޫǎm
+}*U;.lD۟CCouvu-7*h'VjՎGOz)oq  wpBnݡI_{ߺ$Dٯz8G2FT&oS),\^Tg|v&*CXK2!	Yբk?(㣢]'q0!4f%e3dU2܁]f.oq%Lubז  X`Ix+2-Vn%}ihS$;j1}ox1gF{:V_J[0_Bu^664aښk:7 DC>.ɶ6~:upQ-ex!&L͐  w+6cGǓdG;1 B=õLD|筌#׷#*.Wa+g
+ד8nsԦm\dQDgd.꿸iz,M.j[i:P r#>55eq'><w;i{szB*fn8PDmȦk8(Sjx0~}}_ÑC<[ }
+Pw %ʏ)L}oRBv^~t	}xÑVYJY}E%%?WY,Ci!t@}#=@t&=yEcg\QTƉDL>m\S%ŏo4MjC)l#ʬu=xp;jcEesmMq(D1WU~]{MKԷkY|<9W$wº%5n3/
+UJ` @Sb(=7o_%
+a1ؑ rhPU,F){nޥǃƈv.BR#+
+Ďv.!I U#<8=U@  	rƉ*fSEgEɡ=@ nѥ1]/e!M:P%(Q Xy`mSȍT
+B  @`		Pf)(4T   Xv`.䆌L!g  @'j|||B/㮉D%)ئ]6+u. ؽ;= & Ѧ&6qɓ-~P.g#lt!XvB(@ 4	ڦ
+    96ܐ\xBFa
+   # nS>lBfӦ(OVvkЪN^혷p~W5鵃oޢӼ/:2,UI3Kʷ:S#$     "J.sKO$RJaѝN.ƷEqQuM3eܴ7'ּ_l^vYl̚O`+>3f牲Eo~D'@    & KF&U/08blFi{^ƺX9w_cC'%@h"5ңr战@b@?m17D[ОAկ~T-kFHY>GM'k6?Z%{qf6j{<߶A)q)r|(5ېV8ZϿ.Y@    & Ѧ-ᢲkkG_>bà@,%FUBjiF<ƈ]Z\/f$з'ə8M&ڔҝ5g~f)KqrM@    D ܦ[aoMαˏ_~yxk36Y'Gwg;C_GCl
+FG\^(A\}A:F>>z1<M]²SvjPozxeڮ<4LSD2e`RfT9T
+~	!d  @6Q ZdS`~so~)\Q("0y4#2E]޸^ϊmia'MWJ;]1ƫMZyqzI8|=y.]Z2ϞAk]g)+5\H>ZNj@    D ܦ[ariگ<bÇFO4WԛmdG q'xڌ\'n5_E_RhTJ磚_[sQ^tp`j\fpOwWGw>QD2e]VตL?Ml@  bM q:{~UgoqZUkd-:|ފ;4[}:Mfrf/c|<2^կJr>vas./_±Sjt=VNMg.R]v(#ٌS2@    	#,Eꗷ~ǕS?r3)E{s3k~*M^o("PG&J\TR {TQ@x~Ѩ tp~p/rP.r<[՗㼏v$Q*e¬cY 3PspRY>w][fW@9ct+/     M!Cљߍ?Vf󁅛Kcg\QTƉDLCYy@>,FfI0_+zD[T)YS )86@(Z3Xq?tK^Ӓ)-b]V)s'!;9    # n-m#՛+n~bCXaٰQHg0ｹcv^g0&<|!2rNݡ$Ɩ4v<f0ZØ"j{"K.	hv^~@Bd)MzGB   X p oqD/ZEƊEI*[_OΊ͞Śۢzw  @ *x.Ffj*Zm!@   ^BWrSvZm  @ ,;0IrC%@   j|||Rh4k"h;h0M\6Sx3J(@JwRt h hhxZ;yeX70w(etǲB	 I 6渀U@    @ )ŋD6
+U@    !86t??}?Kۄ/Y At,יIK,cþ%a-ѾMLcq_caq-ԦKw?l  26e쮦.WϚs$nBs|	NĈ:V^⹂P#`;Sn6K={IT+|Q}y̎rjdn๟
+[r Q, w#Q身ve!8ؠ2Qb섪Df[{
+	1b˙#gV<$/R0R@6j=+9ͼ%fu}H\&GRl=GLj!Prm0ڭ|X}n	  DB{-ŤT5?xW#ʊ]Ń&Y88?\]Шx";g7"T-͈w]Z[<w͂8\wz	i^Kējm7R!'ΊuY|7<>n@$ ѦwOVuos{~<sg6Y'Gwg{F:|X#beBU >J_=i}Ջ2l^˭h`>pHMeDre^f'?v**2<d`@n$ nSȍ:!S#:_o8vfC[wnExB.Rg]:%ږm[k
+i6X; ry{-Y5e⨬DҿP
+&9jG5KK3mqO³19(@n" nSȍ69zp鹘6=Ɏ@^>P-#ۭ+Hޙ~g"YtF!+5ES1ܶy&;-nJ3=c"?CUnG%lK $mZ4oe15bR7L`k[GܯoA`չ>סN Rpw7<f۴%ۺ۱ny;^w<dh@n$ nSȍԔœ6=~z?d&Jih?JZ碒YdН>Zgx6F(;Ka ϋJK~X&݇Ҥs;o3ܿki3dhkD{F'׺	X+%ExW2d +	xBweCS5a/uB~mjWq"ӹ[Oy@>,FfI0_+zD[KUT)ȉxF(~2Z~%O'eN|d4<Q4#-E}W=vhlA  =~g6t{XaٰQHgoehcv^g0&<<!2rNsВr؟.p`)<*z.qx|ݞ!Zdʱ>A-):@	. PC|q[q"7b{,@W-v25[bD}36UeCΈ&2gi*ó1	  pM!7ԫWS9(j9X` @  %$@/JLL{j0P  @`I2֖40   JAஉD%)ئ]6+u. ؽ;= & Q&6qɓ-~P.g#lt!XvB(@ 4	ڦ
+    96ܐ\xBFa
+   # t!7d9
+mM~PC\XOu?K^N$|[-,יIl)Әnd׻HNh5@lM~8ɽ_=oLgӎGR}X|㳩M>/A~
+   z6ݍ.WϚs$nBsD8<QYgPr1]zf)f7WXG1<.ʎ[C'$¼$6m'ӥ
+|f^&4xn T2А暑0ޫ2@    `.*W:Sʲp{'T%r6THDtM:ېVTaoΥ6j=+9!z{=GLjڡ˰>S^uh`3r>UE5g?mhWQc	؂(o    $6`pvzsN]_&KX;/'!q^`yfu]`ŦΔ{GЦǞUάZ$'KV% ay6++(v|~a'?@4v=ݱS
+3.  @ rO^'m}UUq*I ?0ϭ9~O_dAܝi7z]a.6M||8p{b~eDreY?L6!|'1b3;LvMYu8nk'?cժg*i  @ DK?c7nQ@t([Hrj R\UT~qڰpoyd % Mrnm)|D<v(pZIRh 5{U:MkfxX>S$<Jі*G	\#Ɠ, @  '>hٞ?(!璟mdG^QJb|{&լ1os|oye癙nJ3+E> ߛ 
+Nɛ#^#:Jy~,O⚕#h2;&?_dg@  A ܦF:WOCKhBkVܞ8fn%I壖ds1&lFT)I[{le_Xϳg0:l6#|_wՎ6zfؼ	Fd-F   R)e@'n-rGݶ4y#q@MmȦkL+-r"00s?o{
+![;ehktO4Z>/JV>g4)QU'JokF	tG1V6}%\E%G/vqIN    M(\U2nh+8Bm Bk
+YqXHbs.1|ҽfh|pZ'Hin)E2qEǼkiɔ
+Nϫ$='¯7${U=K"sv%Z @  kB!nb+cfÞ3bF#q:=iJf䜲琪|R#9b}j:H{#Q%,)#"SYGoMӶ   v("tʙ+Q_DcDk9-2  @`	K 9&VrP\O6 @  E_E&11¶Fa
+   # t!7d%|B,0   ]O`JhpD"w`"3l,bgP vΥR@`@TcWy'wd2˱o`Pn9B\"e+  B m
+q  @  # nSŋ)Zm  @ ,;0IrC6)rq6mAqbm<5| _S6Hp^;*i#`_LMb{i{Ԛ{6x$7v}?ljӃmv4X[`iyT,Zj@, X.<.eJ.rs觶yj4%v.lgʸ{sl'ӥ.|fф&s=4{#uuY1'}r#aVdZm2Jiqhd@  ETlve  @ IDAT &B}8L SҠ\pގN
+K}m^f&z0odBmPzpWrv3>o@f3F}:k~>^(Gܶ:\G&H]yLMjըnڇj'M*ӎcb)^m[yH^G=5E   B M!;4,qy=Hlvʛ?.b!ZRj:/^f/N.Br!fu]34++SwW>x_WTN3iUO)!fe	t)۹E_$h"n\c6@  K ܦ[OkZ{lgkԣ3k#3=F_Y,˹ͨr{>|1I}Ջ2K]o&;OgFana?ofXjG٩bOwd6.XL2~mWOKr5;T[>mڅUeJc(A  2	rJv<}N^B;|@t([Hrj7%NY)*F*Y|mX6dBZMh 5Gt+}ݧfiIxf-WU"ԑe7?GDQeflB[B B{ՂLZyqzq2v
+Ex[R0IG 	C+˦wh1=h4Z_'ӣMt֫@gd?$¿լC33啅L(5<˛H$6cBPFrdTzǦHO(ZPbN90qC5sSaӃ{5ukug;L^+BP6  ! n5)Ԃct墇0"e^qCU8\@y+qJֹ壖ds1AKQ=$I$UxZmY\Mtؼ^3"j>cݿ*&#1p uTmW:ܪrA@ m
+QX,."c@=>l}Qoڿ"ｹTLG
+|Ɓ"5WG&Jc>?3+ Ű5O Pt5#T[ڣMu_I$rQIQŋ]))B2VYw.+_b$y*W8>	vCO~6\8yoj 2U>  + M!=?>/C'+(]Kcg\QTƉDLCYy@>,FfIԂ͹.^t@"w:}dazJ]-Y8<5i麮%SZ*d\nTvz43,@"4`)>N~@WWF\ O ޅ=u7-6XaٰQl
+:Ȃ4Ca`%9B)EԏBa#]s.q֥3:5)M`^2*Ϗ*{A  PCܱr&RadVFh -Z0{
+ꉠ"&@`BndWrPr     KH_%4{%7HaFa
+   # t!7d4g
+9     w=U+F]DKAo4y³ߞYTB1 Tؽ#:A A MAuA:[N'[]>԰et>ǲB	 I 6渀U@    @ )ŋD6
+U@    !86t??mwCvpĹAᰈXf[b_LMbjUupnվdi3$oLgӎGR
+[ƴz.OL c+ۉo}@   @i^ؖ.sKO$R*y;e\)՛ΔqӒߜ4KW8NM%2]ir6UՓqillqSpZ04&H	[<Q͏ZT@    N ܦ35]]oSL
+K}m^#2Lt"C8e亷Uw%g7ッE5mR@m0Jȴmռ,N~hwsQgُK壼QqieȿJ    pCmdƺҋ8y/RG&KX΋W=2"nR8Ia9=䪷˛u2bzRfZhtڸiǕg`{/u_pLթ4F|J8}7Y8oZ#P   @`AmZƫ6|ossg6Y'Gwg@1z]#cDvu_s3#^!OfL%Ɉ<4-6]=~ی̎7]!/˰G0!vx	QJك7YNsQpS)M^@  JD	F*e>n/jz,#ߝc>181\&{FVcꎶ	iZ+;Zr	sxX뚤3HkũMCD[4G#^:Mkfxܳ&O ,)+5\H>ZNn@    B ܦ[Yr+>KQsG"ȷ3%x1d"ioFkE Ep%R字xr}[e8}_Ikn#*|˽nL_Ȧ+F0fNbZ-Dحe]VhL<eTt   "ղvtk/my/aݣ?wk}_D^=[I/)x9x/TxX@ ȧ,szpslDQڍ&>W!ڮh⽛)-fq51Svut
+|6b]04sJP   m,X}ԘvxvS_'xoB-fGݶ4y#q@MmȦkL+-ntEïe:P{%T\:B9cGcYnK LBUWqNsqZeqbT8fj@W{4-к$s2^ <"989s`
+c1   |	4_rK"Q@cg\QTƉDLCEy@>,FfI0M1wc7 
+[Z!x%}0NKx>ǼguJtK^Ӓ)-:PIz2ިptkyM
+ls*M4@   @~h%@kY}{j,VXa6a0#f;s{o.SvkبيQь=#Svw(z{v~%ج'őG!Kr.9$n߸e]=ͳ'y{ @    G`A?knO N8+btgYU>:+k6{"owvɥCf/m @ ܽMիj,0   z	^M%&&R=jQh@   $]͙B,0   ]O`JhpD"w`"3l,bgP vRC@`hSyGpd2˱t#lg!XvB(@ 4	ڦ
+    96ܐ\xBFa
+   # t!7d3" gӦn SIҹZ2iG|xENLr&(,יIL?\ݳ)ɂ-ԦK׎cIz,,:͙ur\e	mW_>[fI4% @`% i%\]
+!'!;}*)g;Sn6Kcd}2;x+=	M{*lhȉ'Q2yT*g$;ش1<t,)1b|L+k)+@ p0I6X%9uOߕ)H9w_ni*$dWX	C8,;΋.cTܕ݌f^DLZzvsO>DHؐrm0ڭ|X}QKOQaS=;|~Jxm-g`I,0XWDk) @`e )על6*o:PlzeW|ѢNj'kPD qiђW#y*qkIr&bd>!7reްӬ߿CEҜ$'H.[-J}Yxʎ.~]QgߘZ*	-hOqBs4]JnìoDZϢ1bw"2` @`۴XdF>zav~joz{U%+֝13}murqw&	|9tF2w|`WU.hόGqzݭp>ͤip)&"?of1Q~vXA4}wo.8NCܱA9Vg-kzZАU0:b(Z&AM]E	
+ӵx@  ;O ܦ;?y?awg[#˛/rVڰ17L	pL7"eD!ɞ8og~B#B&$%YAc#-1q"ZG3}fiIxf-WU"ԑeMWJ;]1!dj=,ʋSכH!>Nq	2ZjVH# Y  V8P
+2+D6s!3NX,ݎnbi~z)z+>3poBI{k,1g#|zC_*&UlH`p$vGv݉]ʎ
+ f$wLFl*;f0ש)H,QnCxӃ{5uk'8%ƑX]q鹿&!@ , Dj	LFJ3Ãxځׁe"B;oeqճS6È-%
+s5u0fZ_鴊ƈNGHuɾy;.YKbDF״g6tc
+d~:"p=V3'@1\  VpBnD,isgڍ>u~⇏n'n%T)M6SwÁ"o/7)8pXh_ot:GRp.F3yFЭXL7u"^>+:J
+d	X+%ExAWHT_4kE?]+G_QT}8ىz>֛}Y\6߭dН>Z6'+v@@ T0IF">[iS?	6bs­vθRhy@>,FfI0M1ws-
+vdι5 (>^A9mky]ٽ慎%ǴkIu]{MKTߏb
+RyՊeɝ]q?įrQVĉ<P| 'MdZ@`% i.޼C<uʾ}{=}
++̆=7fČbV9,F|)nllEhC%$9e-9Lh17ۮ;Ȕc}փ[(lS{pDe8ؒF,!#`r_cv^g"r޺@ d6:^_uEY_ݳٷySslVcGݺ~zCΈf{֓X  Mw>WrP6 @  B_#11BFa
+   # t!7d4g
+9     w=U+F]DKA)RMlVGGo5]  (!{w.%z@	 M MM8hKm4'[]R,GhA<BıtP@hM9.` @   rm
+!x"6QB@ @  eG &Bnr46t??\5_8٢Ǣpuzz	gS|,5_,/lk[J*ܙ,cþeya-c+x+kR
+a7w$B   4/l\HS+9\9"Lfn>Bvt_s߶3ejԳy洒	M
+[rIJM͞n啞Xҟ? "T"gW% @  Iq[Z)`N&]{=*,s֞BB&z{,io>S^nzAJ?oTܕ=z{>ġxqvp55V )}zni)Gq]W	Ǒĳ Ǝ.WR;T?~Id  @ , Do-.6'VLtXVSO͚Ay],a.hT^Z'/B% Met%<7Zfu]lFhz	BW>pV<(~]1y?SXC^N
+jRγ\OvEpq)"xWc/8Oe@   0'mW#}MktL'v)V;
+??T}T[{Mݙ3ΡkhicծUvdJc(g2}Ջ2M/'>SEBrc4f>B&mVRzhBVYSV1M]({`.3   <	4Op'Ӷߝm9ЧNoj]SmQ("հ[lk5U(*\ے$[ZJLCaYZYhUu)CZTΚ"79WW@q[GCGZђUS&:ڳh[y%i
+  @`!e!Em"bGtşO~v͘mdG޺ń{¶sG!|DfZ_-&^hv+ٴɨMőS2W\~-ic#׍t2Kd.Wxj"   phS=		LvǖՎK61G５qV")'Pñ'X_(y;ֻ^ĈǝTqBg?dnx۴EDWr`M	  @"6Q:5SSS4Ws_jrX[i	!$+RlE߆l:Iz<$[kLtqφe?dhJk@֫0RR¯2Eܿ-h
+clADQd1zz<ud\9MvJ"NkwŒ, @  jc
+(-C{3a>4!sh+8_o-$-FfIɯ
+-V+dDϳ-f֒K"zElk<f2jkWY|[>4劸ez$DsErW)x[rV}rg2y>  @ , l!z@v	͛?5@͛s
+a1خeDt~ͣQn~~`of&<9eXBL9g=6Efp$v)G9c-+b]-)refy$I[ίQ @   @@%+8Q
++Mvy DgE]Y*PZLb3݋(5    m,]AVM   Y$&&RjQh@   $]͙B,0   ]O`JhpD"w`ml.}s{p Jލh2  Ѧɖew?(kc5,GhA<BıtP@hM9.` @   rm
+!x"6QB@ @  eG &BnIs46t??~\5_89#B*ufjۥ٤׎V"bb][Nh5@lM~8ɽ{B׫3iDg27}[gc+  V6pV;M]&5Hrs2JG%H!Iv\m:/5u,T*RX'$1Juʪ(_1rNMQʢ=Oqbo#mU3r@  O &$GzM.` -tPȹvkOS!!=FVbo>S^nzQ亐lփk ˧㨰 zسlǰϔW{h%FgM[}&~nhCYlcFZbT~\.  + M!>]tQy9bӾCrہAyǥY,DK?\$/^%)E_$!ZrL !`Vc,WX$9'3={cHNKI4nv]ʦ!F|VOKnA,Ic܄sp>;}  pBnj/smNS"ߩDٮ[?n{#?V)3}murqw&ΡkhicծUvdJc(	9fwA||r{bO>lǹ;v5(^S|3w
+[~_жU%رj`ׅߗcg\jgH@ H6ܰ9?awg[#˛ګO:|~40?.z8G2FTäPZ&BeG.(a,2kI&;vvc*%?clK#b	ؘDAcaw8·16!$/)2>*Juf)Zw
+_7=l, @`X][]rEn#dwƠЪ-=o<a;JѦHv:e Ob½MEa۹#Y>V3y-sIU I/`8)H,QVfH	\u@N¾ؐik5g/IQw(t|@@  rÌdwlI.yU\o4CgA̚ӯ{Iw8~}+M:'Pñ'4C^˞90c?f6Zq³z]\č@$62\EM[R?$ǯ`]z;}c{Ɨ@  I ܦ֩)K@ĿYkP/tX[@?x&@!ᠤNŋ{6Z,od?.C+rZyQvrFgOQ>!zyQZIkswC<+iu*	BHȏ)L}oRBϚYʦ7/քlc"TXxM4%@ ,2wLa["\xp@}Z<W3=p{QOcg\QTƉDL6=m\S%B_'Z N+pV\Ɉ$K[9#5BH/5vyՊeb7ssy"ejŋΝnkZ2B;c6&]\/okppfF&o}[N,tC@ `s~o7,XaٰQH":ʨh7??f0Z7EW%$99^hlIjˎcn'#[똛|]d]zH1]B3J13F΀Mk d  + M!7WWʬTYέYѷ@r3vzȳ6iC>#蚵 X`mST
+B  @`		Pf)(4T   Xv`.䆌L!g  @'j|||Bh4k"h;h06E
+iJݾf %vv	 ' Ѧɖew?(kc5,GhA<BıtP@hM9.` @   rm
+!x"6QB@ @  eG &Bnr46t?￟mL{egBxD;ҿ]X3S^47>
+936FVR26Kka%|l΋&}<16mN_sp  @`?Xˍ.WϚs$nBsDsS,=O=g^
+&c;Sn6Kޙ'4o9Jl[kmS$4zU5|ugFUrb    pI($GUg<])2%'TӄDf[{
+	1Ǝ.WR;T?~\sAU]yYrϷ=jECS9׻sJlsFjgU_}a0 #TU9vp}z!~  @ PA &*(._sBWڨ8J<P3q'v
+Mf-)0v^:/^JR])eY(^HTY]+[bSt#THH.jBs4]_gaZei"tD":{wi-BFFR    LKlH_|Keƥ_?{I=2a/Ʀk#3ϙ9}=u]鏂.OJ=?|djd,'="&So_ LeE&kxj>"vYW;u @  `	LVԧ;Mawm.oꁽg'O;[*dcqHrQ0Ӹ(WYfo+	moMSd9X:*FJGFӑ`KY|3G=榻P~&2C  B$B-+p<s!#H&7oL|'>*sz)ƽ>P-pglm+",z4{u.ߠ\TС]D#-a+Bo_lW-xe]^VbkIu:$]ZSGaJ IHb%$Mi;<y;8i-s˧=.%{Kڧ" УیF`k)W ש~9ƍ$9鍸@b$ 6	y-C`4mI`N!ݫ+sJ~۞	ʟo8vv~YȔ筌oYJkeא/49W|mj*nmX.顢r?m"kRe4z,MQ,s{X=g	 $Wm
+\
+MLLM)Ѡs'	S/6'c7sʩiڮ=y2(n ~Vd}5o?	GÝdi\tZ^qcoZ8]!-:(>h⨊~ ZJS)U% 
+N:ZOVpJ( @H ?a4 #EoG8U`4Vʥ/ȼB6	+UdȨMf$t4nun\Juʶ=UXiRN&]'@>y}n׫gzLJ1Bi,#y(͒H 	 $<%nBy##-fJρ|Y\6~zBXq:,k͎=#1Am4f;$LӬ)lxΪOoPV^+3B/ @H`62zs"g3ƝN<enUљ,wܖD#e4(7!$M>f,YBePmJ!$ PI(K6
+CUH 	 $.ϙ!$ 	.VR4sM<bR3ޞ5c.@صl<	 @ G|ϛ=cǚG.³YjX<ٕlĉBLAH7	&
+	 $ 96\?BFa
+	 $#t>eH9
+mNPTv07=9umJqilVr%x5(>e3C#ʗ|MCmƔ=+K?tRx{07@$_{=himj\98{q2KBb,_aė.7UŦKʃtT\.#&+NWR&cҡD*=1=H 'B*ڂAԴ;k˘8@)lUݍ*ދ]IIڦ3g:-AZjʩ~>q1M ?ƺg*lǻAV~Z6CY/iK|rxx >ځ!n~ǵr3$<J1~Ǌ2)Oc-:{5@\1c-!v ?,1_!0.ͬ:0 *3i@dPΠ1
+d#wRx{X'@*'nݺe5K,@jI6(vGgd6~gKk7-z }:<h6\{;5˹(^6r*>5(OcgshvhpX&:$ӫig$j:HwϱJ$6| p&/kWiyS֫Ȝ0ʖR*09<p|l%̉HG|2* ~'Ϝgcn~M	ik)=b	 { N\_[F̾`4yHn*o˔%1_)Fk\GY`rgxGd&.,#dgs	0Q04yB'ѨryD
+ogzx=B &h8iKs# ?
+{ $q.|eA SN2
+;.^əO_k[RDfiИ\ E~12|<O\>}qH 	!tw'&&tN&)}	m<@Tx%df U9"AU'OEZRx?e1wK$plyT:Oڡ/'xR97* [ 
+QmA<"ჷu+yV0:˿nw{܃4Vʥ/ܤB6	+UdSbG[8Agar>̨k%DXV6q_i^Kܔ~E98#)R~O}H 	sf	* }NrGڜ2<l\58HmFmF} #1cPާ4zКPu5<بסAװB-lH1$16\UfenUљ,wܖHob'7Nʍ"LBH 	,^v*;Zm>BH 	 $0|Bϣً(
+G6
+CUH 	 $.ϙ!$ 	Nn}hHR"7R'7Ej͞J\~x{{f֌H 	PB`.,$ mN?ok^@YϾCga!BfW>'
+1	 $k|_*$ @Hs]ry
+mV*$ @ N\#(i:mC}RkX|uKDZC]mllN,{V^fO[aLy`7w1`p4T}]8t9sf1\ÐM3UdSH 	 $'`E@@ZW 4S.=<sRu$X%m޶v	'Zm,l8CժNK4}'k4(klR=G19b2M6{r;ǮtTKűn~Ka	 $I;guJ*:ZqJsػRdK1qnSت6seUT?,nl8>Pc}▽;bқOSX_W} $rcc'ϔ(k$P?&ׂN^A|z! ٚDzJ:HQ5Ƒ @H 	xB &Oh݅:\z|wyhDo^+VXÅ}Fp1- wg*;]Ň4ո6J6tU_i+p9S
+/"ٱt#6Dǧ$aw4fdӹ /Z;<?&YvAH 	 $@	ϟTJ'@V#ݺu˚S{^ e	I%ɟ_a}:j;k7-:sE_+
+BGNU7>q< +sW4i6c6hS4"UQON8'k㬰r:=>6<8)(:jS#&ݩRNT4[^"$  6ym.Lޑ=o|G 0{SˋĿw/E8R*{#*!p!["I1q2\~b ̡UO7vdy-Rؐvwd:t=98	9dBA*_i,#F-pH 	 $fE ݦYaht]g0Ơn[~QF=T3K]GY`n#o6gBV3!ѫM:Um/8%X\Zr5Ӵ?[56Q?>Zʩ?U7yK\NьH 	 $<"nG0qtѴ%5q̰%KH?>wù˂@<oe8|N9")eNb%>NV[[;+z檧5~h'mb0ǤRe4zl
+=rМ/xXOQH 	 $<#ngĄ)$^W͉__x?ڷˍ S/6'7sʤ|  @ IDATiڮ=y2(n ~V <.߉*Vu^a4I.oX.UO`Sj_Iqh0&|EOD2O"VRHJK fŽ^8|e5@H 	 /	{)b@濔X^Nۻ"9b5՛~mxj r"*7^f3AwAV3=O&%EX462'G<aZrzƠ@ۖ7m5ͩɬj䄐%$D'#M\5N`sa0;`z5c	 $U6-o>2b(mu#WF>7 }Y\6~zBX%lHȢX߫ x p`lnFqdpS-b%8n|Z	e\8vE,KZ"eONix @H`65х3U3P(sKgwͦO/yۜU^[{h`<;=/LEH 	 9 k T.YBePmv-Ci$ @ OMgjQhBH 	 $$uy'K4	 $ևT*%-x.zrS$O凇gf͘ %v'J2TQ9QرcܕBͮTg#Nd]b
+@I 6fUH 	 $@D6
+CUH 	 $.#GQhtچ׀Hj>XvCF}nHՠhe
+)eÉl_h?߯1DtvHaWT}kօڵA{Q_רM~#$tYQsq9SK$OyRC ÒXKa=K8MjcZшN64،7P3-YyuY,s<;
+,t>9ƱXX!$[]jTSmAܑukzĹBNaڨn̕U^R9e!p[e,TxSJCe&ۮC@7g">SKM9532Y9ȞjrFXS%u235vvMՋWH 	 EF`ʏ"kۢhN)xtNlX`EkstyեiO(ngyy02W4_.w<EܝQ]Ň&gd<	-qImfU?ǥ|{xVwiU%N.dȞ2ѧ^eG:V2BXH 	 K G|oj[p]Qco?K̉OV7=[{w~_|"ؒlpmζ(3WWmqTTU p<D IT*^@s_ؕAֿqQ(@zN8ĭ;E}95ۖՔZt|>YA95qGeQѤCH 	,J6\Nq|7# _X/ٚ}۴#R݅SUQXeOcD%s@<.L 6ޏ^F94&}6<BF$kbV-3M16rAVTqTR)/GFu[G<SJ2wFHܭG$i5%cDP3H~zHru<!?u#$69u]g0ǠgoMږ_w;]GYഽ#2=`O o6gBVڰF&!	|2R;
+=Ac7#LSwI0#gͿ2(Ո*Rj40؁͎& }$ldeB|(>_$<0 $	h1qtѴ%%qB{J=/wsik.rQ<~rsD`SH`%>N 'L|rrr#y	e㺡5zȬ^g8!+0$mkyS[3Ly̓c^\cP}08nM7/<o$"&nuĄ)$OWG|^}Urqw$Tx%ܧr*EZ~O+) pwbJUu'5W8F9˻M H;+xeƶlsq]	岊CO%蠈94I:V~6S
+S]ʁmvPo[|H*[*t "'mX?@H`n	$D;)Yb~u|aY	M|狮/RݦN+R{ETn*Yz!ݕZA~rW<d1he^sk\%ɨu	#gj9ʶy0'.̴i@VuK),uͥ1<a9[*G9'nsUS9uD? ^hmo>2f=mW~{eg!(l^Bg,U{2r]yv57F޳˶3(TZ̴:l(0]R5z'K䅁PfcD7kUz`acH 	{hV#M/\{ yfө3CY3Mn?}{h`2pWP[5hn:K$#k|O,Ss $ @H'<yj0T @H`I:2F44	 $b JIx<<7PӪ-6{*5saY3"$@	]2)уJ k81ׄ=?~&;ּ~=v!vNX<lĉBLAH7	&
+	 $ 96\?BFa
+	 $#t>eH9
+mNPTv07=fp1XͶ=x5(>:m	ǀ~,SLZ\AkKOn/e @H 	PA &*(.4ԸjNi@Sa֨3ޟooxT6vR4(kl5
+̫UP!1N^A\xR";)I9((@H 	 *$ZRpPA\P$ԋɞX0&-r
+[F}wcbA3q[ezͅj>$Q:dq'nٻ#&➏u >Snd\4B^rRD&6l-jƁ:tԜR0 @H6QqrZ/!SRO(4&ТWt 7'4Fd:L΍a\RY%"/Tώم ':>tpy)lv)ĲU8U)V\hpvRS*$ @T@
+ nuEݾ珽MK̉ie^
+ȐL_^]um pEYO ^H	Q-	4$1o/x(Ycu|"PvgPy<Z#<Ln@I`cNʡJ"$  MpPn>7u(~?N)6rVQL&"~C"Rzִ2{q#kpAW"Ujw@!8qHڛjJ!iG*#4Rڒ
+Oo' H 	 $!K©Hh:#<eMnpRK]GYഽ#	@K:HqHkʸi &u7dUeGNgѼn؁͎JTÐ<+JMY"0 $  6QUqFӖcs߯4C٬eA SN2
+;Ig˅F^o4JSzΪ<SH?'mb0uʮc^
+\}k{rUUEm,>^&H 	 $"nU$)311s
+7b?mf&ڜ,}Ωiڮ=y2(n [ԊddGK^\RN=42ReYIqh0&|EODHӍ)%w&(DEE=?j8=MJr%m)%@H 	 
+	$0Jy]6ߦmX)+"xrl&讴W5h
+m3?)0e3⎿	ecY?[Ր	1-G\Kc2ys*TӮ(jSˋfϫ )Ɯm)S?VjƐ @H 	PMg/v7nn/qq+{q3
+6!{oȔ6fH֓CEǍvh,qSJQ&iuhO[l(0I2]=Vʞ$ @3rsP! yHLe4yU=k3BT:X	 $+\.,YBeP. @H 	UT>jCOQQQ6Zm @H 	,88Is]F33BH 	 $p]ȫi<oVOni=̬s ]K)QJ C84pS=~wv:J;ּ~=v!v욻_<ٕlĉBLAH7	&
+	 $ 96\?BFa
+	 $#t>et9
+mNPTv07=fp1Xۋ(l ݐëA,[A]_ًc\h_V?g{)u۵/'ly4>2Zv냿M߉eo$'`Q]M	HkS
+KNi@SaV`q">m8|v	'Zm,6BemZo
+RH窤!qyvseltR0&M]gQ r/gD+5$?,iˏT1$&t{}
+r9(GzQ\0&-r
+[F}wcbA#gʆ|(I:tƨ0[Io௰4}LqFX5crrdPg*VݥhyñO#B^\h~o@Ǘ8>PR$A &gR.=ZA47SH	ڷyͯ>aGӘ@_q>1p1"Pq-
+1:G%U)"ٱt#6DǧLNm.,fhѿ8R ХteSi_mxf9 wg*;]Ň4sx Xm%nuEݾ珽MfK̉+?~mů[1b/6⺶Is8ۢL3:$Wp䨕aT!@K6)hnL[0˽I9Ya>Q6IbM/vZ BR#½[O&*WmqTTU lMՈWH 	 EH 6\ZY_h}?~j`C?a˓v-z^?*zh)?C\sUQXe`D%sy=X(ZďrsH7&hY.|1{{g.*Zxu/) cQquDb8Y<P)h:	a9[QFa{V_I:8?dC$2e
+d!H 	m^69u]g0Ǡ@X7CCaHJcp,wm
+fRڏD2' - 	#i) X<WEp?[fiTe>	8B2J-TqfB@J̙!Imiys&q^׆%7
+4;9 (@ M>׷qu2$0'~u*,"HHu8pn*S )y+(pR;h0BTYc= 4>ʷ7X㵏SH?Fo<`0 (a8ݩnd #j[)M䊯[oFpIΑMQg"8!$>0 $:ybbBnWM t\į~	
+S/6n>MVyTmW<q7W
+jE
+qDeї.-cEד"~/W`LTl4( bzHBWWϘڢ"[)9́1JbAp<2 ywbJUu^0XKd$ pr+46#)knx ҭ'J^^f3AwAVWmlN4(Oj²BaZf޺LN`:0=~Rϱ.G"W\FliN-/Nv+OŬ3EL?ڮW<QcNfYF8 'nc##ۭ~s##:m_xrٸkq
+agalV
+FdJQ3Tօ2b`]$&223mǍOU+5ք2#Z`4
+E&#5ٝ)F=ԫ;4|ׄ[#zxb}WCdxL@ \Ìf3gZ(K9^tf(k7F(˺.B6};M3m	 $&%Kj,4	 $<	=f/檢(l(4U!$ Xpp續f>g @H'7::X!Ix<<7P&"y,6{)<L ]wԉ 84TgsYk>vy{dB,<#]FȺ*$| m~A @H 	 #nu)Zm @H 	,88Is]Y86ݐëAn)E΢.h{\	{(6Ҿ7V?{)U__.-]Y9*ťQV;5NI$ @@SbNzSXPȩ+鰩T\.JZgKFY}6~Is+sT`/(do{q2{%R!1:%@H 	 /$]W)8 gB\#5qk⎓1L1[Io௘3M-cB36wͅ +?-#M3Lj~9o(^J' >Sqڦ3g:-AZjR}0 @H{6yn^$uJhшyIUWtc"{lfV9xN
+ϯTgDӀ! )h/fK;ˣ4Zp/T Hj-yORA!@,:t.Z3611b^8M,lICH 	 $plMS	HnݲuHYBRo@w+<?.o=3@[n3f>5(O3n*׳94A;48,UI~f2BO^*af(mlHyEQCڬrYd'Qb	 $fG )7&6o|]5NśjW4_£k;cf]<iPh8L|f Qr",o(4AVM4Ľ#fYCH(]d)Z
+:*Μ#H 	 $0k8I7kT+6\'[3McPn}\8v}m`\jIuv7DcF^3()a?gNUX)
+enIk#[K9Uu#dg=4#$  M3ѹ+yqƯ% Ύ~tGܷӠܹ]iJ-~~E"s ݩfɀ>븗,=jhaz@+{r[3pM^4$  M޳#ɉ	SIFdnN}dC'	ɱO9u$ڦ9<3]
+jaD?5.Nv{VW#H3BT[tPR@xVT
+iUi	@Qch8֣
+$ @p_0,7=y0}?m5ٺ<ar2XKdFu],/!²[=sQꬁ+шm5ͩnh5r2yM_"{f 2NQ4heՌ_H 	 $'0M-CI;##-qR5kW/<8n\C	ZB{AkBf/,uQ+ےI3(T u[9Zft @H 	xMZ
+RLfTd&Q6y1fhNwh[)#eݸ`1$ @M޳#%KjQQ-@H 	 A'hEj0T @H`I:29Yh@H 	 {b@^e'Mx@Zuw+8<=nb"@صl<	 @ G|ϛ=cǚG.³YjX<ٕlĉBLAH7	&
+	 $ 96\?BFa
+	 $#nu9TBfЦw()Ub1L;vgB|J,Wsȱ5]"ѩSbd{aHtR:`	 $p@dM4]I91>S
+~tM1ŠK/eZш$~Qg|m_K@HD'S=N|441	 EJ &_!iˎĭ-]'J~hGjbd'0[Io<ASe]5e`qՓUj499|C'veu5Z9s>4SPA
+[NV1$"'nOwAqr]\y'3vy/^7uZ3.ͬQQ,\5j`R]noqlCB(m1"ӎT3뭦?˱8Ƒ @t|j[[K;ZJӉs=gOȏ+)ʺvf4_\Ѡ;&ڏ)feڞ,w^%Uɚ/?&NVK= 2MS&h,FJLBH`@zٴˏR_l9Ŏ{pgّ3ZQRtp˦Eh[+#$dǤ&6_ȈdMªe|  5)\JUk8e,&]H0 XmsmX2fɗxFJ	0(Gfv܍6\Ѡ#d6@-Hdt.i`Qw8!pFT;
+=J&)J:>^p3W{Ddܪm9M7^ $	\\H#ΤcǡeO)ןHQ7.,3f)I?~z(d2~42o_|WSYn. K֨>'cL"3p>ǀD44
+!ы	 $0ts'&&t:KK_֙7i+W m>9_|ݦnM&ܦDxk?:0"3Ľ9ltJQw^v-x]}bT8@I\O]YyBNE~}Hk-kse|6cCˑ @@SbZ Y@RYg/ИĈ$߿k4{着k?X
+\DqeMSCV`~Yd'!gΜK4`ۨ.Kca0ӣmH 	33^06'w^*3׮s׌F(RXkzmd1mKی㪡k7X)=[&똓CH 	m~3bc\ =8GH 	,f&%Tv
+| @H`	PGsUQQQ6Zm @H 	,88Is]F33BH 	 $p]R)iǛjk쵸[aq ]*DmH 	m#ޫ?{[mǎ5/}]mr׾"4lv%;q"S M7BH 	 $| M>%ϟ&jQhBH 	 $$u͠M7$jP|(]MG2guLWB|Jp"t	Zeϻ|˗`|tAu0o~8e7hL!,_Ht0tCΩ'._H{- @H 	xI R,%jI15Jl\W.3m3עHTKznJZg"QVME6-@h,J!PQALN-5[s<qs򭮙(~#$  Nym-;&VtW)8kKoCe& 
+7A%>z05(`*u)7}-rN)n>Tg
+zpw)rP:>A|Fɸ^#i,1Cg:|Ir)FL-eg:|fhTWAXpKL&`	 $ M>}'e޹w23awKzhшU[0.ͬM/fܘSL_Nr *69D4i/vG3i_ \_*ޟK1bNt|J(up-VUx^!0?<2VxN2H 	 $nK ݦ"d5-[
+|~?m}-Ĺu?6	b,&ӉOq:zqNɟEp_J\ū5_h΂~M3;	6S/iF8+ٰrFuz# A2e@&$7[Ti/to	\'@H 	 Y@i w6l㦔[jNB뻧 |_9
+9ǧ3qtt[6B.Sj>T|!#51#369,<'kw%td=vXȽvdy-RؐvwdbIjQQJ:SB-<#Ym1nX	H 	 $nCʖH`6Y*X2@}y:#<*uk܍6Fdβu'=RQ(t=&oƍ7'W(۟b{bIhbYwxLf\昦ߢ3ݛ	?|bZB\dqUX̢? @H 	xI &/͝qt&}?l,|Mi$/Ys2~Ep,8=+1zszp5k(Zɯ6K2bY]>Fo<`0 (an~1 !~][NWF3g8
+S @H`6m9/}F~Yg^gߤ\嫿n=4:)w$ڦ9(2̈́pKU0YNlRU?1hj6U'kzY6fw?	zsulUwP.8ZYKM tKL춞
+AH 	 NvO݅޾nAFY]Bd}ymr R$iٴmeY AV<Sjԭ_fnzp|䳣!5p%q98ýuYauaL\Ɍ3
+:yiSMMu񬶞2ǀ @H@ɧo=m#{XH߸}ddǍt6y~eУSdZ&Le/Q0c	dKpTRZ4;A5T:hd'@H 	 	D5Y3Y* ʨRuw0CYkh`mgk֎ @܀zy*;Zm>BH 	 $0|Bϣً(
+G6
+CUH 	 $.#ӓsfAH 	 $y~T*%Mx@Zuw+8<=nb"@ص(ZQ@QRy4;ּ~=v!}RBͮ|f#Nd]b
+@I 6fUH 	 $@D6
+CUH 	 $.^vsBڥp$Ls\Qu0o~8l:O&n}<e2ԖIw_X|aLy`.P5uPQ$"'`!\0]IoV]4<dv0ڴB#iZ64)ۄĕ'1;)VJb\i7"JI?,iˏ	7@H`I:_!iˎĭ-]:\S<lOܲwGLz9m٠=C+fyaqOǱgm5BFϔ9\h@gIat}Mg
+5F@g:jNBr+!IU 7/*6er_zb:EH 	,P6t'e޹w23awKkfVɦ3\n)r/9@M?KE c4Flva!OA!!WiG*U]T$V\hpZOS^F wg*;]Ň4z_6 $ MٓJj[[K;ZJӉs=.)m~[d:F~<YF>Ni"|4Ya[:IbiKԏ9M3'b,b%f\  '#F	\:rZ=RQiVpì4$ 5LPxKX7lIR@h9޾wK){0Ci,z>m0{	8-\UD>^R`r.J	_coO8=h^حe9ƝB<DD3--ͽ&	DH^ M>ˎM~+W>Ҳ㸦Xܬ>ݍ6\ &u7Veƅ\{8M$Tg{2Fj-S,-Ϫ70p047&gJx%nu-qt&+T)9aK5eϵ3c
+q&? h@ǟ?!La\;|2YWT-ַaH9bSeV\Y1~ $?t|'&&t ?_֙WUps[YDt-4Az,e^AHaD5=).rD HjUt<!B'蠈RCM ɩRiTtrSx\+T:h=ى`
+
+@H 0P=xoAS]B$Yk})m{iPa0hګ4kɓȊOY?[Ր	4]'6rN9YYcJmT%~liN-/N6OAARYӈNAP]y2))¬
+YaiRcH 	 EJ &=m#{,T/Ǎt6y~eУSdㅏڏ4jF&i[Mc%UCnױ}b
+&=h)g.AOjhl<r]0C#H 	,BsgTEQ
+,PӍPdohT.AH 	, :k*;Zm>BH 	 $0|Bϣً(
+G6
+CUH 	 $.ϙ!$ 	.VEj47T^hkqV!&"$@-],>R!$@=m,5ο7Kcw#kbw,5,Dhg6DU! $pmoZ @H 	t|KΟ?OMj0T @H`I:2r6͠M7$jP||tCΩ'._HۦRAk&[)eۈZy`w*SH{]&3-7V78yNpX2H 	 $ ފ.7UNV^ıA{	ǩ2;)t>$.ϖHg헶*PBMF$t>9^@X@F @H 	xB '<u7I[v$&nMLl"ёw65111UpTɻ>q1M%Z8[ʈt̀Ѩn惰t9]_񙸥B8Yǁӟ ՙ|n^?]ʁ7Sjs
+@*W_5 R7 #>Scgd;mYS4@H 	 /1(N\s_C1df>UWf~#?*')hŕȤqImfl:W+O$wUJO2 42]r99<IGHfQD2(	gy q pK|4;,Wpz1	 $Lm]#noU@/x;ik)M'w?m|JM[Y61!HĀ3xKBk\.M-3'b,?%Z$i?suT㿘RջQM;*iɮKj K&d 6q+9/qGerH 	 $<%{Jl[K5v_$)SԜboM0E~99.Д;}!w{)+4@RNpx:ȱz(;1TRR)n{St-69$%&ȪݭBwTEF6?ćF&N4za􄰎aq+Lz1 $ &	vmX2fɗxF-?Mȵ/ɲOZܬ>ݍ6ݾ
+qV3UJNt{2FjqNUX)
+e5qnS;gh4ĴdT|ڰ @H 	 ;!nӝP2љ/'|$S-!ݫ+sJ~۞	ʟoLv!qeDRA\XnSڞuqUAղa}ہp뼜TJ~`d[¾!Y&/v1O{/Uc5NU S&l7@H 	 	$Z`bbBey}fr
+?<N|pC@;ˈ6wɦ%۠/?p38?y[¬Gҋ 10   IDATDAۮH|:CMngD~skP/VWJWM[VlSUqosTE_Nx2?8~,+_@+ t#CǪ=ĢH 	 $p^ꥹO|    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/PacketStats.png ns-3.20/src/netanim/doc/figures/PacketStats.png
--- ns-3.19/src/netanim/doc/figures/PacketStats.png	2014-06-17 10:34:00.533635928 -0700
+++ ns-3.20/src/netanim/doc/figures/PacketStats.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,295 +0,0 @@
-PNG
-
-   IHDR  t     ^r  iCCPICC Profile  XY	8ןvk5N}ɾD]۵leIHTІd	6D|//|<39s9s_ n  
-'Ytt $	a!ږf࿖ yJ|< @0# B) <|
-$XAW`߸e{<ֺ0ݝ L$rh y`Vk|=`sylx%LwwZv1,$=iDTa6	[4],026ۣWXۉƶ;6S#=<ocovBy[0]2{<f^z0w )oXzl~?w8ӝXDWμ|0ni7`PZoI{Wzw
-5-Io2D: }IFZ!{%EXA ^Av{2zm, Af@<0=n	 C=ArD	?	D#,ņ@V(eʟ楿Z+G>w%&ex+uCNzAza0&]#d;  [Ȏ/Y^SxF/+?jcJ#F w>w&z>ӿkci!غ
-(:lg(&@Fi>P:j ޻]?xp𝍮C"hkqAr,؉_ֻ1bzZ` D$VP  D"P;P ZxzE>08غ 8
-ă dS(Ԁzp4vp``
-́E~5X!nHd!eH҇ kr| (R,(*.@5=4 }~"*!B(#[a"HE +[~b
-HJ$)TF"-NHo$	D +Wm^EN!(
-AI4B١PT"*UABFQӨe́G>(t: ]s	#Qw#Ɯ4`0ØYw,ˊǪc-pl:,
-v;]#$&%3 s""K&+ LI6Bl\\܂ܓ<$yy9
-0:-Q"(^Q|T$R,l|H9MNEO%FKLACu9Wjjj!j-j'pZI5<$1'MM	-O䴂ڴ.MOhtJZ&8.{{ҧWx~.OW0~Yˌь%SLH&!&c Lיƙ~2s2k3{1g0_ea^eagbbdi`cêϚ&fVvm]~CÚ#c;'!gY%.&.-.?|Nn<7;Fm "^e^^#||v|||)	$T,| *$, tLYh^EX8VNHHSQ9!1Xq8Q>>}A*MHPIhKDJILK2II&K6K~rʕz %  ]%R^D&YM括,AD\\܊|3c
-
-IWܔJ&-UtTTUUUU~VPW6_x|ԧ4x44kLijkVhhkyjUkӾIGZsSgUWU7AKg7Oo_?igcPgl`ge625504&/($RژΘ 8}yy08mR2Ҫꝵue:'m_ډEu;گ:99L:pߑ͑uwv~HЙCs
-㇅G~Jvspn^أcK($,zjy{.x{yVQ9[D%WV-/o84sGL	]&àa-%w B$"-b:R#$r->)=#> b*4~:A;B"؝ğ4wHQG'K'%KqHiKL=:fVNNJ8v88`\ٌL̾,鬂lBv	E'ssO*,;9tj<W3&7{[<θyT _P^HQQ8UdVrV쩳žc%:%<ύi]-,*yx**
-*1\TX[VURХZO!"8_׫o*qBSCV#hhpuMMWo(yskٷyűeդMmۗyK:;NvRtvn߉+kn={Z3<THQkr_sbTDIːP͑z?36<1+/"_l<
-*5IɊ7o:flf^f߆ݜK}G=y>-,n,},$gVH+_~M[w?lfլ+?F&v诶-ӭWہ!$ݫ oo \	  $|@O{HZDCQ]"l5>"$82).aYZ϶!ȽƫwFPFkQSKR[2βml
-ъcr*9KkԲ־g_l0o$ogi2h٨zڥٟwh:xǱǩPsjRSn.3O%/>ojUi>ub beB0sjhh))";sDgdNsxϘ8br&a4<)QdT4\:1/ً'fr^9՟۝zj~噳9)EqgcKJo*)_:|absէ/׼<[Rې|؛[b-
-mƷm=:;F{{PNHց5/?!CÏGFCꏱ}(|\^-{
-352]:=+3\;:?d/:,.-|)2J7^}3cVF#60b^cȲ((EiiEp
-x{ TJ^E6k{W/!qa_Eq}$Қ2GeS*)(U-ri`45"kt^Qxf,!0[YZZ~{aPu01搒3^jtwO-asث;WHG_1NHN+3*)Z+0De<>~,0Y-ONI	JuJ3L?{jL@֭'N>epZ2__G!s,E1x[⹩C*T.VU#/԰
-\ŠcWc5M7&o4C-tmrut)骽[]s7}+±?mՠ!ʡّǣן%&L?|~ۯ+'O
-	0.}Ņm=K?RU;ok?G6+@ (vT?:Yv#wzDDSF{.KaaL`Jg>r'.jn^7J{4"2vbqz%pJ2Nqrew&UTTՈs5*5ik`pǰɨ8$ԌہDK+ոE0[-;*	*j!C^Β?w&܋8M<缯8w1 0	}F:> B/K(XDlCܡxt|c¡Dtbc#GRSiR:`y7+?REɖSy<
-[g6>YXZce7KΟ^ZVuK	5/ש]Q7XtMs76nᚅZZNl?q΃rAKd?NLy6;\3htesx"Y^L|35Mey=z!qgGS0 T VpO  P`I
-@n@"N<q)ه9jp8_d!:]zЇ3,D)'!C^gx"PQ4-gdA	`f؃|̊49++y5'
-e!J. .**?Qc44gii}hGpbjza~	&1~fP6>qF\V<<y{*b<]E\DļHdHIIO|$VB-ʗUjU/5oQ՜Zס312fk*kpdbqҲ̪-}|}q?|ׅ٭}s:R@F`ŐSz$cTxt_,sK|Mvd7ic36srrqhi]t}[#eΝd[7XI^ON+Ͼy:ȷjY`+뷊׋6t6'Hh@	%`  ă\p	tq!JʠNh
-(@t"!鐪H/d.#u ЯޢY4t}Kc`
-b5E2)r%9Yo()(RiREF}FMIHGy>id^0ȳc-aec(c<|>&2BdBDnSАtʐn !o8SqP=6iihykשGz30e2?P`>jIcehdfj}	}ҹW*_+8N}M s/،reȟyd-/uezq,幪y[
-
-CK]LWpW\ܾ]ݳZ|uz'EOj1K_=x>~ٹM&MD~7ĕ/c_W3[\[?&V՞10o$|PqBð/@[&=BA@@ x6DQ5FB1LL1fˏ6aLȊUO>ϧXlSPPSwH\-㢫z]XL,7X،Yؗ8z9s%qxxUyyDEE]bIHKȤȣ*I+Z?t8])M͈h,+`lܾ>Z8wNGh=+}~࣡QgcLDBќԊtckWsN厞ZQlTfizCyѪjK5Fd_ox{BSMfVTBpgGW}wEo}'Nf%<>qyKW&/Nyψ̵ͮO[t+_^]}ǣռkS8qgaWٖV֛my B ` QN6^YCyz9{_L7Igg   	pHYs         IDATx|ǝ 7v0P;	@`iX'M5eic=89QZ(qEQ>bM#TQzH*S)R/Ml]dcl<Hٙ{=yϬ
- 0~Ll@j_yɖ@ )Jɖ@ @ PTT4m4JuuשT*J5m4 *
-z%$s} JJJJKKɞqa2zO=hygppppp>:sqd0L=Fa4;ww.\@+@ coM\	@;#oJM1v5î1>relkĹ׫Fd_x`w*O>DW'Dy	wmJ`{o_z(
-}MCX<a6hk?vh)J:-V82aȄ~a[)ܶ^:ОSfÇb25U\8<Jw`0[ע)Z}!>lFSv͕ {0qj_ڲS@(>q~ VhjzhJC`25TFRCGG],HҭBh",ӆTEEEE35J>UTXTTT*7MJww>p&R5tfckW_XfkiJ5׾RT*JRQ?wߗf-EEyC*􌼪ӽtPnE l@)Kmu~9?䟷`M|妊}4+]8CVR(8J¢¼MtFBP:r w#_K\ޅ_+*^:#mSj\YZ>8.fdԠaӹG<~+Rl߳h¼
-ၡB cP3?rwkK3}Ξ]l-م;~Z}㖯可*[h8O^iw
-{4~GϸOw.Uht;뱅kt7K*kc{[ϼwKre[?wYo5}f珝v//8{ӑƭkxi徏q~V%`xxhðfG;ߗ_]XV %_[G|kЁVm~Yk?a	zsO:z|Ŭynv~f^<񖂮#CCCz(Yíkⱏ,:ԑF4.G N{7{/Y5+:CRCN_&w?y_Jnh/~[Px}ŅQ7Gp:.ÃTxcU
-D>|c
-T(_aI,bhXBy^>9Ê#gahhh;qZU0O-%V z}5: h77/z/͋ʐ$AN_5 za>aIW 9N4	?mVOoXok|CCﾶ_U^ |Ozc7{TX@W~x8GCK4<<pݸy*,W1<fш@ \k/߇'J=
-EtwaaL_zV^ߙ]855FvczdwEUӇM_N'	`o7 PuxΟs{Ӥa@._{T V$qs(/?GM} *_O,uk?XApuJR?8x"p}pT0<xAWѰt:eш@ \k꓂0r&r[wq?g[w̑È.	Ñpd-c[kqbpp0]#p!(I岇7@k}_)XD~i[7P/0?
-gm?|Ӷ:'X^K̭K߬pg+[+ I0#0nwiKۗuk߻߬s|M3 E* /sXyo$_xj~Զ;g,s%o~Rp8RÃÀ8Fɂ*86#Sv9q4 hD 5<rGm}022˒耩^sfΜ9sc?b '	k|/fΜ9o,܆deы۾;_jW͜9s}:d,͙wY+s?3gΜ9g?Ԋ%]i^y8c%.dӫĝ1_Ѥ7sy5~Kj̨z޲'̹œQr4V#NٟԮ3gϸd5ܹs-'p30 :ujɒ%c{7A㻖3	51#3H?II&gܘ)ͥ?6eI/kdƍo̐r@ \]؟{wb#'2Q/bc-1&F<&V&gy#˭8'TN#i^AZFP%S;,|U#Ykӈ@ '[k뮻Zrc?4"B9ӧOϕ	aPw*c?4"i	r2t^Q@P=ʈBH'?i~M-Ť1ԟzL	@ ƙ	q'Ol	@*J~a@ 2$,L 8C+@ q@ 3Ĺ0ΐ!>ێ}_2źE-0$|ew1c_dpǌ9˿v~^W^?EUŢ俾!
-^?bk1z`t"3b5~du6 X{OF#uD! śo˰ROm	[-W+E(_\^رne^k2O=LOU۾ްe wb[C3[K|" [A3ylW?MSd.kUظ8/{z -_}/ hg^|A^X(t! waËuS^׵_@w}eŀpֳv{k;^s1J&,Tn15@kص eKGZs[OصcdI4.P*׽/-}VF?w*ѭ_j Zl~E+,U= Vy*%wOh3xOP_dBYThrضz7A9({kĿh^PigYM0Ol={6JHPHLs{q/hCٌZ 3E3`ZV0C kqz 5@3rʏ!73
-?HdV(=F
-`ri5 J:eEDe
-Ȕ33  }gJA$I
-q, 14=n[Aܒi1``i oFJ{L (N = JoZkLv_P mN.6ɯlNbS$)1˒ZZU[o5eE$%UE:gtz>Z#Iumw:M,4M,8@`#^챙Mieكie#'&rG5Φ<4nh$=$EkI#<De2={.8zNt\.˕\@ 9?;霫hmc32尣M4
- ZiݐLe?~3?\/ &U:(I4 @ɝ_ΞZ1[pfك)V"O0@kN/z$I2gsy2s!I|6= ;({2:=ҭ=#&T^@t=,:y2FjLDI34Npf`<'DX H; }k 5QT ItTJRPudiЖ4:2$yq}Pל0Ɔ,4hS:IWnNt)"@?c/&((*Էcj?~Q![399Q'Ng{U-<!+\=zO: DlK Vn5m.Ydɒ%b_{WgM	^`]8'8G FC}iҵjzay]vR(A u~7s`/E 5Km Pt;Dr9M}ے݇֪T*վ> BǾJy<YRCYrGvWT*Uo{sr%UDUzL7^A&pvd	jt\e3hxIE-8N\m ]q-m UXyŋrHWXR8RնjwlqQ\|m*U4")YFkbe%K*+lPGle[ݱp+8ӪTKw9MW%I$9׭](o_.7jlׯL(\ucm~XUhʔX4DTϾ (
-6oo9E8لF` S F<FD#{ ?pj }hi%۱U c4)n+ nc<
-'X6N*t^JŊsm׉.1WOuZдe *zȜG'=*8i 0f2>?]]~ ؾ&~ ]Ew5.s^
-wE] ȱi(`ifѰiO{{\Z~^rہ+Kwל }gl_ozp3Kf
-`
-жkj6O m:ܑ~5RA=f8`ZJy%:RSޢ@no%zjjNd	{ItƆf k-qԳ7ij۞FKQOVq삜檒4{3aa%w-@NݪD,r!ih-@ ah-$Np^Tb豰v -I$[V F,_.#لr7aaI
-i@gpf96s^69mReYcq &OH xe;=0gf'y* h-EQEZLU7$I",gMGG!N/{Iah Y~)I9Lہ)nJl3T v3łr 6i..$f811 `F41\16 b{ga L3`hΎ3aQ%K~ZNkh$dɴKO4]Gwݱ2=x~EECO~=@ M5-kvq[2*2B^1+ > ԥ++**=sTvlp&Az"U{ly0_>M~DoSCD >g?~k/eBŮC #,kfl᛹$zƽ~ <hSөSNNzL>R=>@!W=\L3 )^(=:p
-]4>sn%'+P)/EN|^]< DLGr Pmq(pi4lh{?j0 ?Z;G4+8qi˘X ~	plniiޓ|Q&K~$EABJ
-%9(I:}4]:ByUuVߡ* uA9tŏJ^.-_T=J(5x,7;%[.y
-0J	`0*n/Ңigze: Uaӆ\c{/61wqP/Zh:~2hv}#^իWkP0C斻>`> 1ܵ;,l75ŋ<uW.#$%K[g-i7 .*/[+v md΢`-Oj=iWԀ2snw?  G	JlۺzՌbd2MURk 0p!d@ X2	y&os-*DՅnWklXY 65<P'].WGFԋ4Ҷgv	:mE EG"B׉{l8Ek0U,Wͭ{W tKztbi2rK\Vlnip_ڷvx&Y7]7-v]uƍUv [C]FM5Eu
-B_pm}(T>-aup۲:ts<_(!tgr!زWz=`w}n}цF+K?z`aWWo_Xus ]Du^SkW]z_j* wa/1Pm]aup^շOT ~eК[77b~sUoܸqcǞyv"'h9/b#ʑ,F# X͜C}''<Ndl;1P?ĠL$"rLcbqo5w;豰|t}ϝ֥Ja.Sg6\{$-b^S:[듄=WZ=H"%v?9mIz,Dh53e$=I_:a5r-`bvِ|b+q!7`,0y[Wf{,':!t;~Enb9YF2Js1VܲR*#Ñ$I
-r-Sn^f}96"핕*@1&q)UϳxZh3EI&86{s$K(Qt5W!%a:y9W9\UcemŊcy3DhfkFGXEM~_74q'
-!yiG7}V)Fz',:vDhHXL
-G.#@^AIiq~ʣ@AIYZD"PPzAU6JX4;a/7TaAE"M9R]iӦTwy'}
-_и:?/.-׌).\qƴ_d7 Xm
-E+cxJ֔epijMYGZS<)Ϳ4՚ҹHS>U$Qff"$f[==:D"|2!.u8<;{aQNE rA+@ q@ 3j\2y	ԏa'd:mYᚠ8L    IDAT	g'"[@ >i̜9nHs7O&aSTT4o޼s} JJJJKKU/&DdK ¤kbtu?$o*$IdyI+SiD 2i+9yD 83!ɓ-@ W\oZ	@gs%a!Ε@ q8W@ u$a}du&[aI2>cƜ<8X}ۏsa:>~Eɿ,
-^?bk1z`t"39&#PJLbgcVkz& g51zk Ӥcc?ǉO/#=UZo]a.LI$1v*=nØ21zmz>jNfhJkvzHsٌZ̥d&F]FAьDQuX2͗>Zg09}a6Cbe;lӬe͞T}N0:{g(Uo{	^ZCb6`4Hfϲ:+F9Ɛzy]ј9"U=,7lNojנet&(<K&[9~x 4CfgtɓO'gAAkx,Z 4 ;,ٳ<_p!F"H$244444\`OOOehk0f%1`ZV0.y% kqz 5@3r.hu%I;g~ʑV}KhMm7:U4\#Vyi5 J:eEDeY ;z dXeHmv{ܶf3K2%b hzHy	 H$f]dyP mN.6ɯlNbS$)1˒ZZU[o5eE$%UE:gtz^$=$\vĂNdº 4 ;ڙcHR`봌2QzAݣgSz$=$EkI#q2Ur/Ź^b06]O:*|&iۘLLڃ&`mrwt9HC&J7g~ʑNMqWYu>Q`Prm,'9`9&Y`i*w<X9iH艒$I^ʜWcIAٓiV=#&b($J9mxDNޢ౑7.QҌ".*f)	t>Q=f 9lf-*R@HM$r(F+,U=H$996|*?b~l^3ڒ.2d5ǭZ5#C^sРM']\N\7AvDo:BR+jbegs7tve|;m'߹f~ʑF>IDq!"szL }$Jc񋷲4I,@4GA̹"n#\; (È;%9ES^P߲K3c٬I!BVʣI@@^x6:SϬ5~Q)(I5JP)A,mJ6_g_7{UK#W3X+{Y#0 yޜ0V}zJ1$}.VO$H_%ɳ:u$
-5$R$6,Zj+8Zd	q6A Y)j9\N**k xJL7jlׯLeE[^~[pv۾ԝr+-]2:u fȗٷ1 E uTm-'j<&@b (<fU^^Jp[d4n/\ O0Z0'AUSih>Wc FK?.q؎YOq;_ vkh  /
-]j:5E* v8rsTK[l`M[^( Yytң2ac0 c[X`/^ /?z#  7d9莺ƅvk_ᮻ+ 9T1;v`̢6|`s;,6i/ni
-SsC:`{Ղmtw) wjӋӝ\Rm4S vV}_[U`yo^ذlDJ/i~yrk_w(ػ
-SKM5x3ꛖu99%h4':
-^Y ԖePϺޤm{-F=[rJh
-Rޞ},+Wk h雷A[	E8- :=, $1y8.ʔ>a $I{ܭNgR hhw'lO9Ҩ7h,:
-Z{%l$483h9UOMXu6)Ť]\rfY <!3;ʫ
-"u{aѯ\eήH9Z)EDXxC$y-,K9ˈeK7Q*^;i `}R95@5%颧0i, /U!\#&)Ib٠,s9D{ !rL,&dX^aF\cK`Fsv$*Y#9.b(OBL{
-ʽ+ @hQ?{~xwt]t:Xe+._QQ5_E@S͂y]kz00z&[% uʊu8jۿ홠X&5斻)z\MǞ3	kS|W}W|~~4_iSNQ Qg?~k/eBB ,&,kfl[$zƽ~ <hSөSNNzL ֗ y= "Pb8 Oy$r@Br"4h|z9'8SO6KNW8nS _>:4$zQy> ̋p	X{- .۸P(hDhQӎk[HC2:z!>c\2&V4=g"_kvZ2cj4xqɒq	))t/'IU8\t<qh^$묾COUL.s!(>'vRnC)ӋڥjG	ڀ%fd_vKѸ+xR)>:Q/&wXjUiѴZ=2r ʪMװiCg]J^O]tp%EkMO-{߮oc0k?zjm {_]
-|6rhU>`> 1ܵ;,l75ŋ<uW.#$%K[g-i7 .*/[+v md΢`-Oj=iWԀ2snwB# 菷s=V};Am[W^Y,VƽJswޱ	zPۗ}qDT%ϝp\.MZU.=,7+D"a'V_pԷ	BoWՑq&^<{KбoP/.HD؀3Sq kmˎ#H68@=m*,Wͭ{W tKhRg@2rK\Vlnip_8z=Gݻ fvy;޴p`u7n^WilMuٺi4m+}bb/SH ^mlUF˯~8Ƣ·X`ˎ^Am}K23ܩvE,}]]}aww9-[FԹzM\]CK;vۺ}D ;@9ju^{'V>	R ݛ˫vBk~nHc=m\Wqƍ{h}t8pkob#ʑ,F# X͜Cw%>X/2FyԘu(bP&^RyL	e53=6./Ӻ]I2le~ʑ^}1`3m&sJS9ה.v3qէe33	8pvy&G h53e$=I_:a5r-`bv@%DDBD>E~skUuiҞ0?2t;~Enb9YF2Js@嵰VܲR*i)7/IRO>ޜFWX{ ŘlƥWK>)1koyU$,@͑,YG=B^K^u~srs4J[[ۊ+f$(*֌iư4ܿ#ovYiOB"4e#
-WG7}V)FvCfVH$EI;$"/@S\DB(eW?w	DA
-JJSu 
-Jʊ'#Bx\+x	zAhv6}B_ŚD
-4ٛr¥	EEEӦMST]wJRTӦMR ƽԱtu~qiY Mf-]\&Mqj2W"֭<ˋVp)7niF)-ԚLx,_Si5ss2k4&F*Bvcw<	YVOOD-o":LuKF% I &uqiiT!0J 85/'@ Wr#pm2!^DdK Uz1(@ 4~_LD==Ȗ@ Id&$I-5' SO@DΟ?$'@g&Ĺ<yr"%`B+ma@ \ː0@ q@ 3Ĺ0J 8Ν@ Lᶣop_bdC L4Iw]~̘/=z;\v1c/uUǇ_QU8XuWpU5^o9k&K-ɮs#w쨳q l{j]Da]o p7wTeXio6譖竕"]?^/./X.KzGve(,,x_̺,ڳzT\ =_[Q }'??ӰսW/U;4Cߔ:\Gvﲶ^̎o>_i  ݲr  fxŧ]њnq#lxѴn~~^i:_ 7+oXG3ߋuؾOU;mLkolr0LSڹ ]8 Y߮^Z&t~<Ԋ];Rm#H]owݻ\'nekQ1sǺԪLtW89_Q6
-Kh nkEI_6xb4ZnSCs6k.5~pUoPu9$o+ZCqxnpYVD3S7l&xgϞ͡	{A#=^f`L/ jZuJ X = sgtV~6Q)GZ9P
-  򲍍E1R kV J4nXț)PF_MhhPL93 w<AI C5Y-^o0@@{L (N = JoZkLv_P mN.6ɯlNbS$)1˒ZZU[o5eE$%UE:gtz>Z#Iumw:M,4M,8@`#^챙M9+,UN+!(=1a=q6cN&yL4`$)Z&O9d}ɨҗ{Y/\#H$Jt\ƞ9ιJ<0hyty=h&WxMJ<4`.s0n3?$IQw:Hk1р'J$94 Prm,'9`9&Y`0s>r%КƋ(I0{<$I>=V{t,[{bwF
- eMPHs67a[<6Rf:>%JQq33 E89'J7 H; }k 5QT ItTJRPudiЖ4:2$yq}Pל0Ɔ,4hS:IW%9W'$I1Qeik!sΕo5J2ڳC:2;m'߹f~ʑùZ&pwk 4DI1)k$*oei$^YE4M3vs$8N= 0bNɄend$)Ҵ<֛z HZ!d<Jd/%h~<\S8E-, $^ŚQmeinSꐶz8ٓZbBqẐ|X愉S! $)uzz&A/>+:u$
-5$R$6,Zj+8Zd	q6.P:o(.CgS2 ,7sM<-.-+rM!&p56WMnymۺñm6?Pwuvzote\|,U"_g v @QշGW jlcs'J(^ ;`3aN49| '-\*1 nf  `b8{S[(]W+Q?:q:>^[[,wWQ PE/Ge4 =`  l^]@^9gWwF @<9obs*@W}u\g׾]wGQ}W ?r쭩bw:,EmvY4lN_-[O·t'_y%w3RM/Nw&7sILV]{[}mUM	zaòY;ƄJ/i~yrk_w(ػ
-SKM5x3ꛖu99%h4':
-^Y ԖePϺޤm{-F=[rJ\C>ei 9G\>+YVJZ/}NnU&y _  ^`'x /*S*w4h[$Iq:6#K8\d~ʑe50/'\t gX_cm3j	.&KL8 '$rfq<ZyU!zY.`O09,<+uV9 )Gk<șoH$Et#gbl?&?
-qZE~9x' O
-5gXFȲ#MYaX@(_ɫ4e1Ǚ@'C)<FLS@AYsI` 0#BXM.(~
-k+,ȕklL3`hΎ3aQ%K~$E̙IȒiO!]rE~'ke5CKGn|t]t:XCkk>=P0 Q 4,(//1ŽoQ˨8˨Oyy D Xr P.\́Sڱ۞+K6!z}e?/b*o
-/^x&k?mjҩFDDJ13(_q˫
-}H    IDATZUqloNHnjMMN:uJ:u1trKu <[W[[F u\(s1]H <z9|f46p
-]4>sn%'+P)/EN|^]< DLGr Pmq(pi4liGѵd-ND!@	}V~1.m+U3@@ۯ5{p;-m15G8dɏȀ\ɄKrQ/]xieS_&Q#W]gz2Ap P ܹ;Z)IJ7^ءEKݣRÁwmyS/h\F)ԦȞ|L_4t{eUZ4lVϻ\j5lk 5W1plop%ۀ,P/Zh:~2hv}#^իWkP0C斻>`> 1ܵ;,l75ŋ<uW.#$%K[g-i7 .*/[+v md΢`-Oj=igԀ2snw{ʤH >t@x}NPfիWft#4q/o\r/kksঢ6oj ,}r\m6вrIa	^!	5@?@m&kxOz:\3)'٣]}[2}qQ> Dp$"t8Y0YV}eG[Yx[}O9y .lxD`)#g_4-mU斶.!zx ہw޽	`l?|hwMF]W]quպ&dPFSM}m]o;\`[J+-f-2ջtBXuܶm\ez<Js`,Zh|hl}n؇0Too;YWî޾z @-m#\m	T" _\cu5ۺB޽o  ]~G[U;5?nn˱6޸qu=4>DO85r^#Gh9ѕ#YFFA9'o폌wy'5fiS@kxia@sL壋x.|W[trW0 mt^qqƁEO*RQ=W.4gfp,!o[=L~XkgKuDϔyʞk$}!Ԇ]ۉfN?c5$>Й[Ϭ2	Gm]m=LW"Rd.iһs؎&gI()&>2X=rzLTtKglr=Zܼ$I=xsm^E++U=bL6eRޫ%g<g*LqmHQkPx!%a:y9W9\U	ӿHO@]\Z|9ֶ+VH/QU!BXEM~nyV?+}BHDtF?InJ(S,_|5+g=J䏢]GG=≵ u:^AEhf2EB((G/P$Rޔ.5N (**6mJT*J6m J@=44O+*)X:,c&_3..KTs5I+<0fuD\M[ڱ|<QkJ24,ӣqF)N)Ϳ4՚ҹp[՝:;]&IL`kH@Iu%4WKpM1ٕeb}*ߎ0YUX.Yڢr溳r7r#? o#'rre2Ǖ-rb_ҹ~|=s9Oo0,-Vhg9deǰd2o2VOVz¢Ѧ]4|ɒ$ˏn\a!J U⚖I ²<*@ ܜ,{C,@ +F	@ @o,d2b	@y*BFO[ɛՈ@ c?$G@ ,1\Ϝ9b	@.XJ~[@ 73d[@ %8W@ \	@Xbs%a.@ |
-GO;ǏVoھwO[8Oc]I[E&N4j4:2)\L6k4ȩ|rzfrT!P\@VF|pPĠŜj]B3ZRÅ'Uh4CjZ"5ZZs@޹IwG'_O[ޑיV1A<r0#]ܶgONyNi98 ̓:1xlNheOOZTl<rjC--f͏8ypBgFzƖCEY#ּCds;ۢҵ;Afjjl)HiHtsZ2vN̽==eΕul$/wbh.pbPzG3#bgF'[ǔ1+ǌ2vS斖CZ##6[fJMWZ-XϹNu<hP"[ӷv\r;=ֵT;fG߻s=~.1rƎS(g$\w)  ]Nas===n@<Sh
-wz"Qnȶ߶Grr*es(w́E8H._|!Drsݣ_⼿ĻP{?ӯ/. figdfN^Qf?ou>Bw Hkh#a׵߽hnp>n7V[SB:~VLv;5~\":ŴYG(yWGISNi[c#ѼE<Hi~ia$txvq_n}P|{zZNpa;W\{=;ﾼ/7/}nkV^tm[ci ?_Xy[Uk>՗>~}r9iS붷7ib}}9{ۿy]>
-
-_^ymkV^{Si >?4sm(U6qe-w/V y<ޛrҀ/ɲ,qsK('e'ʲ,ˉ  P9P SrI|2%JR#L lH(F+Bz 8©yp%9vo~"9A9~uYd8idYCv (GReY K(1 *=rp.V*|ٔH*uEw|zPj\gZ&?xЅEQ*(Kqro~$C mHe) ڡ}IeY9 g$_d1bsT&+Zv0yyp5מ9"s.؀$9/YrՑwѠr@ YZOj_ҭ/R\SʍR> +*WIyBTڮ%>y>'|d2̕+W\2U}j0+_(_AXQyǻ	Fz @\4O&<P A}si jZ/*"}ݿdU0=;9/oPP_'n]uKUsA#sz2L	{{|L cJlWػ;z]C>UO@^UTC2jWXBT:H@pln+UזID,<q˂xX*R/RU!392W,%6New/@{z{Oh[ mQ,xfp6iQicF  =r`ne`4fkpFљf&O5NhTɜr]P k0㿛ӺxFc,|cm [5k8сc#Kyq1f[sXw]B ~Uv#;2,r9WK ׬H\0	`͍NGM}nxN* 3=~ԩ#ݝh]^Ff|dxXC.w"\{Su,
-f޹~~u&^q 3Hvs_K`Z nq?4Fq'3 &^\V1¥jX
-covp z ~.^uld&LK%G@9٤vY qYƆ@\!r(<i;UOfԉ> D H6s:ǙLzj츻`(
-##ã3/T2Yp-@Ǟ;c6ϝ2 >:t1<_葿mG&V?. '>
-	j=xB>;n;0n=uNs=V5N6ru5-\91fM eZ߶/aFӺGFC)rc-o<g$V=K ?>]\z}?jXiX_a=
-ωA~OO<Ol{xxZKUME4'{ \y/HLXЯP(xfmj_5ݸT;3p٩s`f	xwP{Y Xs0M[6m\npɥ3cŚkn@bіy맭͌F%ǆ,4:[wǅrqk*~u%v{#H;l[ho]m%t_ 9rlNVXUQ\YGgz=m&ӳ}R|47^;i,jwl;㵸){4Z;nmh?4?z @ pj& \70h* + mor~'ŹmhL~{lw5ްXq[SSӖ7^z[>vrkѪbj:3K/~KabtfM3 X2% hK	>> /^ &>kT1
-0^zlzC: ?FرNPCU,J@۰r"`^x#1}'TJR[iǎ>f>.l@롟<OuNˠ'<N~F!#	 ?R9 <mxy൓?=
-S[Sl^ VOP݋nS!f@{@;}ær,g'K~~%<,*v`$9So6luzF$y  fUzSGBdnSU>=gϞ=+[_ei)yht?A.b!. L$&ټ%[:5I s 8	 ~Z |UʏQ B<Jvgr?p[u^E>9}|p_X\W&*dP(8M?p?5[Y kSOGxjSnJ/UXR(¥˹"kiՙ>bsaۨljv|Ύqnq[aWJѮ7Hl5TA{߶E_gk5Hs2\9! gwaQխY2&?]vb|^'tvjv_ŒZ6w[S'{_ ޓZ??	?k׮]0}o-)pwX;^ŤڃMEv!;m~T~vŪu:fpWj^M7:  OVVtar9AR~Y?ZK{rO3+tԩ;8X~`u{{ŀ8SbROkFl~VM}Ps]Y--,4G4@9,˼BS&/_),F= l>NŐgcm XWB/ ֓x"Ӡx<̮ӆlIIJ@|7ZTEKp(L
-L l%QBDJxK`%tp"O$Ɔ@6\d+g²,bDFD9	X@Br1t%V	#t!l `}8/b*ڕ*),I>ux鐍@Rr9}h2I 0E,' 5EOrN !%h:fS5H|*l%"i[PRH̄-JhjDQG| h⦐@bD+߀+bh4T G(T)I9=H\No(L|R?&9RtY5S E>X 8é9yY9EbX4s ,1%xQG@هdYa/a(Zx`$yQS 'U<j`02%9̔ToJicʽ%7Q|<,1= p
-aKQ<eʙ;p򩴏+J/^h1~29r]{G/i#NpݗF+*;;W,A@A)?7TNY 6ws1%M<ɧHdY.hT@[3Gy;ۣJ`=yb|seYe)Mo$]Xg\9ShPDn¹PDߞl@(SggU^J3 RbQ;",Q؜I))-1EԭRO>ǹrk+g]Z杫F\)=ţ<Δ^M2-Q9;
-EؼIT3^V:W,۷435C«ry2t"%ZP;T2ꆺ_2C}Eg҂ EIY]_eD	:C~cwļ33)QBJOJW{3B}LOtCmPK&-st}{ V[11{if:%Jnܴ0$@gX]kX5Nt5ZYʑN8g;8b-|ۼ^ ==,aGZIZƙ11T3%#[UeWgChf3j+hĪUnF}N9s- h4 W\EPk6PdjպXhP75֕PEIںv!,HJ4I*Tr@!7-r6_Ͳjr_;/ws}]C':~Ιa7DJ}Z-(#jC&@XvJ&3Zm~d~lRB>{h?',LhkuAhJ U⚖I ²<*@ ܜ,{C,@ +C@ *y7Cn2Z@ |<CI#Mgܹ%D    IDATxտjD ʱ#@ eqgΜY@ \,s%-L -L C+@ Kq@ ,1ĹhB >ңG7m߻c@X'ױ.夭"Z5Fl.dY5FxD>9=39rrL(.bzl +Ji>8Y|zbbaZABљC-Y)B*h4r5-I--]㋹gbPKZN,|gxxdx2uh~9m5-s=>m{Ow𑖃<ZZZ$\!knkGNM 3qEg4NW#3k5/"d"c;^4=2cz[TX{'3LX-)b.cBV՚@Ʈ'̹2N2#21Ւ3<Thîѩl11YQfu3#G`('m1c]Tк(|xMg򖳱|xSĕV)/D	EC }hy0qr`g@"р'!J9 H,LOJN)  ʙP3&P$ T(W\.& 7Z뛟s. ˲,0Ul똒<|'(G;~ݮ5ʑtP')_ ([vx'xeYSN
-S,Gtv4ù ->D9 {Ñ2ѠaY{6nM4 ZlC	l%23lD>-3`PogU2Q!; #ᆼvEPR$l4 ж@8
-üG-r"`S95.fm&EGnl?Vt  L.,4 =YON̕iyu3QF+ˉ,g=۪6\}>*#@9#IүP4vSEm6{fswՐU6QP6@!<Q^=P˩|G}O>$d2+W\rȹr.6tk0jkI&b\~2mIr" 6(|Nu/dJ8ʥ*G*
-Q9XhRqxJ;2	ʹcIEW$@ҟGkr"N$Ybd)GReY K(1 Z`i..;ƥ/I3./_QU͐,Ya p(Jee)Wϓdȑ_dHqRMI܊SeUSE`(LFWP!휇`*wE*\͵g~bRb dER+j՟WGEgWW%)8,W_ܧjIy)BF)a Uy-
-Qiʒ\kl&_<l"?wi xP]a@oݠ 4|E{`c5  d? V"nL&Ҥy'G9V33> ˵$íE4AAmgzXOߣoӓ`L0 3@fu7lߦ alVfѓ*"'0oUg6,@ZSvu8-4mIe>m2} ?ܟ'u;xYpݞ4A? UEjE*d&09]&tUQ0{Y,Y@ٿx~o4;1ZV$m|K/Y \$MZTn5}*Y1al<fmhO #6[F<omj4lfQtIY)[~@ۿ3: 8?9+k4ym^;Qhɩn=6ξZMGs jӗ5_İjA`sjvFxw<QeY1rX. rh{
-cJ V^|ܨtt܄0ā:B 2N?biqedG{5Tr|g1(75]pnB[}-"KFM3	r9FԞ \:_ Z w{nƠ8\6<10J.VR{Ϙ  vc#39gZ*1=:&oˢ06NQyv\/ƫ&oթk}M  	m@_k`uB3qw'>P0ӧGFG'f*V_dJKឯ[=w4[{m(;;19111>1-d |t>ncZ/
-y\#$QMط\  	=Ol}39X{|vv+azꀝzj4gլrǐj,5~h]z~۾M$"~GOo]ȹV:i4U/bIay/U+JZTxNΟx|*汜b%T϶vXj, ~8ΫĈ}@b"~oB!3{.vn[Wsl& =ѿs~0ܵ?N-0{L {XynԴirdנּM.e6Yv*m~
-XQ8i_QAj|lBujqp\(xJ`M[Wkn7/y;öE VB#76z1aU%պuT{Jza2=݇*UM,<H~a)ᵳ6j]⠶jh~ǆ;;^P"L^@u~~~ֆ͏C7 jn2Ix*V6?&wR{4 ?zyWcz?5555mi0}Gаusal- *.0ǹn? b
-|)4u:+s6	 Ryϵvg3 !7CLۺP驃{=vG˒E6x9:/y{;|I91RnڱcǣK1z7~j~}S2y}	0l~}?룟V5#	 ?R9 <mxy൓?=
-S[Sx?  d"n =l61lj><,B.~RDWw*v`$ʽ1> a3 \gI"]  2<`V?u$ mݿL; :yXsެ;}ٳ|ܼXuyK]vWX珋FT"Dro[[s$I 8Ü  <;W/ $i=pVJ,n
-UgYA߿.wm>,I
-߹jza^/IVDĻ~qԬoSzZK:
-prZZ}ufr\6*[_g[\GX Buw1 w代\]zc{ w{ga?pRgǜľne~ș9]{;GT{u6kV,x8>f׮]I_ڦ<,pCdyG=kƯY wkzG:AYgvڵx&oɊw083 hcRv!;m~T~vŪu:fpWj^P8o*t .J}C' Fsʃ݅~PܝfV
-S/wp<haRk>7pa-l4P?.V(
-EYe)᠀%`q^JBSP2yd1`q, 64nxlėqedv6d MJR*` : Ѣ`EKp(L
-L l%QBDJxK`%JG'b$/Ibl	cxUNd_,,%\'`f-JbŬҕP[%^ЅU E({8r@,Na}!P8rd瓜`J%eYN8( k(ʋ", 8(RL9^cq%R<JF#k	HZ%6T)3FnRD%)Q &%ں)$%#`.7 J±X4Fh<%>J(շ ,xJx `%2b'S"TGe	r]V=@y#qO< pjdstVNѨsyñX,, ,bFb	^/;o)%./^P*D/I$". O(+x%j83Gʹܽf2Wo~R}ro`l>_),ro/CCݟ0,@9s.S>qYeb"K-FO&Px(wb-./9?ǍBiW8GϮsU(,܈S8)f!.Ŕ4'."a.0*LE3-E	#ƼȝQ% p<c1>W9,˲X7PX.S3.Q)^@"B\(^"o~
-6XW8^"ggU^J3 RbQ+Ǘ9T_llΤ"Vܧjg\e9Tu.-aUz
-rTnGr?LH[<ʣ
-9jLY.o$QP͛J55ks?Dhkj?k`ttt%/LMЭm\0HIdStJC}%ΤAHTV->3#t
-*~y%gfRC}m]gF3SP[<TI}>F_0#VL^No/7-L	V*{df]꺪E\M#=3q{vq Z~y@zz*uYuN0-;hUAdjb33/VUY0#7 Bkڊ.ZD"jժ[nE|sSNr- 4 +W
-u5W (J\<,a0ry%VkhhXjXhP75֕PEIںF ,HJ4I*Tr@!7-r6_Ͳjr_;/ws}]C':~Ιa7DvqIhX^5!@ ,;mo%6d2ZM[fd~|=ҟO\&@X~uu BX4\	@Xbs%a*qMKr$zaY\pd@ nN{!@ Q@ м!7L-X@ >u~ʿФeV&kynx5"XI@ K̲83g,X@ Ź&&a!Ε@ %8W@ \	@Xbg!S՛ݱV@ ,?@rxp`fyS-FiLe
-2SǬFi<rj"9jll9&1=64T,>=1hn1ZfsנPġ欔Fcpl4`H}#P HwG'_O[ޑיV1A<r0#]ܶgONyNi98 ̓:1xlNheOOƻx2ZZ͚qFD|52#Vcˡ,k^ 2cGFkxQgNtmNf[
-5Rڳh=27]\V5;]soOOwse4w˝<d4ZGeb%g"31xІ]Sٌ鑃cbn1Zvl-:fFPNc\[UZmsKKɡu-Q`בBΌ-gcT+m?u.RJ&ɔ4B{; 'y PE v)**D	 DN3R.DT+*< :#h82Y<)U:@ (gBRΘC(7dc P\1bs(w hV:vo~"Ϲ 0,˲,/WcJVAdr$`)*9d@ٲK,)&.
-#"˲,hY8h,s1  [|NA r&  c#aeAòm6nh fbJaef|Zg:|΂v%ʲ4du"ܐ׮J* GB tS=eYNlʽa>FevͤvǊn pa W'I2-nb0a9Qcg[G\u](g4)P5
-y&T}f/l@.
-fa!
-ʦtR h?4s1'WV«8{9x裏>t:=;;'d2L&sʕ+W;W\(ge(\SN0[iSeL Dsv`}Y'SĹP.U9JWT9ŲE ^[ SAqNPΥMJUA٥s#N$Ybd)GReY K(1 Z`iŹXel3I1_6%g`]]<_4!YƁ) tvQ$Rܯܛ'ɐ#Ȑ> )[qj* L%* LP̯8]l@\pQJtqEZȻꪤ4꫕T5 )ݚ">U8Y(#J?oW!*mWYҒksUo-?/˲,&_C82_5*x5@9<ȿ޺A hF2?j  =Ƞ. ZC]^EE`LINr+ff} ԗkI/[uhju@0}&  3oS0`n6B+mlccccccss_!|WyO<Ӷ>Pvy:Wfy 5zioN*@@pln+UזID,<q˂xX*R/RU!392W,b*<{;_!>`Ѫǝ$m|K/Y \$MZTn5}*Y1al<fmhO #6[F<omj4lfQtIY)[~@ۿ3: 8?9+k4ym^;Qhɩn=6ξZMGf&-Hm{kfffچ%vڵDyfyǐ˹bp.. ^ @5+)rXyusFi49s¨{
-EL:u~w=Z5P}DH lv˿¹If\ :@/8 i$NAsE	0| ~lK{e tM.^o5,7;8MI = @i^:62sӣC}lR,,
-cC}m.M9q`}񪧉~[u{dsS" $x~9XPL&=5v	L~砗H    IDAT鑑щ*`cޱE
-NLNLLOL ۘB/`l#Dkm H`v}zÞ{C!sJIh7}Egゞ:`}'t5-\91fM eZ߶/aFӺGFC)8Wl[zu;}X $.~X}~`
--Ұ0+zz 󧃀#8y,z	7ճ % i:N *1s_ |?P(xfmj_5T3HKwϳS~7w%8 ~`65mmھ2{+~Kg~o^Ԭ\;wp3;O[˓;j'`+J4HmYht\3o]	<U  }J`%!=bGvضhѴ{J0Ar&ƽ\;&\DܹZWjcCIUz:Lgݽ/?@io>,%v6F9XVpw}kqShޱ.3vO;а~h~9  SMƽ"oa42@ъU V Ns۾; G4j,aW隣f㶦-o0}.젃`עUG;Cɳsw۳.]Ng ben&@]_>Op l| 5_fPc[j7=up0ǎut:zyYh چ/!g_%as?)"`WM;vx1q)fZyzf\>z^8y#j？A_Ogo2 ٱ, cݖۀ^;ӣ05կ̎7 	!x_{K6!f@{@;]ær,g'K~~%<,~oP{J NܻSo6luzF$y  fUk:SGBdnSU>mgϞ=+[_e)yht?A.b!. L$&ټ%[:5I s 8	 ~Z |UʏQ B<Jvgr?p[u^E>9}|rV~ap^ᚴAase `9dUVD[|Ļ~qԬoSzZK:
-prZZ}ufr\6*[_g[\GX Buw1 w代ju͆ Πoâۏص9}ݜ3s0vt-c?^ٵk.u@ji%P,az^}G"fQ?pk{YG:AYgvڵx&oɊw083 hcSѤqtȎ`w[]~ݦw>UڢW/[Mu@iohzD ]bNY_]8YzI}_ifP:rӏlns/pg*-l4P?.VP@,e9y :rA%4G4@9trebdY9 x6u%D)`=و/1'~;:mF?T t>7axE.["/Ph(MDIG4 [!KG'b$/Ibl	cx~p]P9ZXeY(Ѩޘ(>K4hYU_.f*ab.z  /EQLEibeYa}!P8rd瓜`J%eYN8( k(ʋ", 8(RL9^cq%R<JF#k	HZ%61j4/(ETi[8E11 `RBRA/-<BRD/EhSRS R} $ PR.#-p9x2%IxT HeSN7dcH9@g: 7bш Jʲ,<No$E1RvR"r%eYB ,$/Jr*`R"^B>Q1~\-oJic6jGe9P0bsݟ0,?Y$%\|*
-E.ZzMΡ\QTI[\80vuZKWTv |Yع*g	rrJY2pRC\)i9O>]E\L9aT%g@[3Gy;ۣJ`=yb|seYe)Mo$]Xg\9ShPDn¹PDߞ@pB)DϪ4dg 8BIĢ6W/sNrQ؜I))-1EԭRO>ǹrk+g]Z杫F\)=ţ<J+g$QP͛J55kshzZQ{eݾ}{K3SS<tk*/'#L'RҪ.L%SЭn[%s07.Yt&-BZzmQA3TP?~O+)=3%kTtT7H>Tѧ(A1չd҂8gOW'-(jjfSKIH)Atյ^(AWn5)*}{( SV[piAEرE*b&Sc<fKFxIƯ§̤gZCVtZ%UVr-sr[nh h\Rtfu}07yQTچyAͣ5ԭ/ٶZCCCnz5,Z7hu%/TQnqx,wR"Mssa
-7e'PyuWvq쪚=wlNk\_P)N-s&ziXyE>Qs_VJI öɌV_g2_,[mj2dvAtzz|'K.@ ,?ںstf!,@ ,1Ĺhe9dp,OJ82@ 7'K uvŊE(@ 
-hx君LC,@ :?P_hȲi+yY?7^or,$@ %fY3gC,@ \oflJ Cqw_@DL)J]+#;Җ#ŉ,m5߶±P=Zk`&z;8%&PlBPRL-w
-#hl֠[j9o EF&}>gϞ9g<gwP(
-JP(
-c\
-B	d'_m޹]7[
-4~wS}N[KdfY;͕fO;nP8wϮV7tZόZyNzb$tv%LfqȎ5)IΟb0t,Jvf^:VkhNY,/M8-	w*<{K/l|w80O8se?73=g)rodffbu<cXLVx(bq*T[sgFNLo`r>rNtѴz ҜIz"֤t_!><=(KoVma2`ca =:Ryxd`XFӄ"0`8& zL  B 
-baHEhyyeE h<		6/5JO-oݗD <syŖf
-<`057r "	:^laFE,,E s#H/X0H<$8\.  v\o0.
-~^m/#^  Q HI`N8 |F(p 8&ȋKUiW(7h>Ku&X)xDVxm*{=I>裏?8.,,\v-rׯ_~<J^".{k\A։ydk4Y7B|@&(Rh [ ^g" PB!D<NNa
-芖"z#5vJ,6JZQZ'W/\{`-P7qBn OBp*j+"p"kQBPJ| \v
-pOTT4a 0f"
-!D  cSAT!DUǒx	jY}cdgR5+9@eIUIcb,c^ 2Fp,#Vn%/Ԗdl -)
-\*"G9jU ާ !NG< BwTŉ<@5QZ/|ڂk:+;.&DN
-X_$D/,95 HI@yZRpU+ _rFΐ/ mPR(a u ND':Vo>RD,ǙJ	mU]@4攺,\߹ww׮]:}lgVLk漤sdu$\ ~> EɗqAw޿J6 ."pY_7 悯`0LNk=|5	l`2˙ɹu={,ξ56w借DW?o_"91v \\Q y f78|s,x5X gҾZ*_ l_`+cEY ީ}RFObw۩߸q.zy?POp۾) |u㭝.f7;ldLDX-рifZ5%r?tDv,וA#in87ٽ|@ʇav<nhh6fu ؼXn}_O?QPΜyUG@yi ZPGgv@<61NBP<41}ėqғ{>?pIc^i+plclo>=+wuwf/Wnpag>ߚu+ nݽwvq6mUw~"x
-9l`YZ޿@o4CA;{py;3ćS{֙+ S[8/O`l;'݆Ŭ^|:=9pLD*9yV\t9{d/(+DMpN}cpoVec2lT3λ5^gl8@ZWd+;;GS9X'|okms縻=pܬ/+ 6{Zw=>cg> antUCAQZ[w߿/+qp?é׆Ͼ
-w~PKCClkUݜ\V4c  8͓ z^!?-SW׋Iph͞zs5 >^\pvHS#~gҝI=kWJȞ#{Wa%&cfetnEO8As4wtb|7[\ua(Wmf ?=~;KN#'j,	![_bS= c󅿄7}fSjW슎ҧ8@"lEVt=l@ӞnCǎgv,9]ƎF_;aZ}BȁNhp{AvǱFմlپ#>ܧq܁pKK38"z"֮h>.GS6f wF4D<,b`)B5ts(\9PzPs-QH\RՀp8ŷ)Ub,)ɲ, GL+Z ؄ȩ)%Ry8h]kC;)O$E^eMP?B䨚˄)* Vjf/
-,/pH,-Id"\AT6 cX,D1)i$>Mm*`!a 7HIR:_4]Pk	5Ra RTڌ	QAADԴm'$#HȄ,ݙT*	IF@TYE(z,-+c͓m>wZʤ|^G4BH<..RdT|u{SEj)7myUɱSXW#x*r`+w4bXghv?Zsb(lQ"(&mE&%(Qlt,hAB~gC%>2IS]2fc])%Js1 T5rQ7ۯr< udx>hZ=!D|$0ŵIh}]ѪE0Nz ܕz,\Xi&''ۧyh~vVik{[gzurdZiZs`6is{[Ճޥg2-UD'Vl~vV[:y?k_{RP#~.;?4':tϥd&Sz.J6[zۗd275L.3(y0V߈ܠ3VESN2liiٰa`[_ڰa  xZ[۫PuYg4PXUi26'Z@C=F]Z>}_>ޖГ&-ޠܶvLAg'b:p٬F
-e0?fsFc9A.36rٕpڵoBFs덽NP(sP(
-eBP(ƨ5,&BP(kUsUӑ)
-Bt*Q[f)
-BY7n
-BP(믯FTzJ
-BA~@J~Jy`uB#
-BPVU	oj4KP(ʚ`U+ma
-B|)
-BYahpP(
-eBP(W
-BPVU(M ;yh}P(sSwZzX'3si0.lt 7{e0s3¹3}v2p~X}fjt:#-Sf2Fvt@HIpwdIG(cnd>d,_&l;ɌZ{ղ?Kg_zag<|Y0Cgp0˝NnVodffbu<cXLVx(bq*TRZ`fD&g.rn|is5@c4gR5):;WrGOk5 ȩd2kʗ[oU[|Xq. p^1q lrDc!/MBfxvs H(	0y  'B~ + ."M"Ǣ} {X$$(>=QZhvd٣),L0M-Hƣ΢[QQ/ƫ1h pn$	v]6 nE^ϫ=B: 0`8y]	L^GkdsjX޺QvzZLp    IDATi[}TgR*Z9GdՁזNޓ$飏>㏳µkr\.~+qyrj״lADСeu~-0M>P 	!TZ$C lx`B	0;U8)+Zp Դډ+(iFFiFIJ^pB	Y `<)BQ6	b}hy$"br)<mR!&T4a 0f"
-!D  ctUQ!WKG	jY}cdgR5+9@ei5aBW*EYʻM%2q:K^-	 .ZSU0!Dr ժO_iEA>Cx TXEqB[hFFiIz
-!)o	Qⶼ6	G,,r<H 0n;B$
-UkIU,. |!1 :CXXZ 8VU:n BIx8Yt 6HXH1?`%gR&ZW*&$VMt9ҘShpx ,{س	+E&qaصeոv0l΂57 ([;WV11wTt \~^UߥZ.~ 닾4\iϿ&MW^wL&`939z^Id1x| ,`oű0 g}:ǂk^e>{+u 1V '`l!0}Kr٩Nڟp*W7r`A똏yM&`ΤL6mU]"7CXO`r]*k+o76?x,|m-(
-nBy вl2oyG Si+bgJ!;s'WW#3SۏhAџT:1C=ws@0s_BJ}KOy\	$ҺƇna*m.L_[n t<ܗؽݽw.NAӦjOO>v8,Kkf`h0t}6cn65ogzpwo:s?}xjqe1i۟'va14GO)92uDh`GN*:]do
-Q\sy~7 IKd2ظxg wmk/ɃMq^yW|ɟvw(⏦sj=GObQaqw{ bY_W.l#z}<^̷}l?ܺ^ u̍Z?pᳯ{dg_0:,ZU7d i!?|>ǫmv= N~n sOUEB0te:@`CW?&|&*pyn?3/^Y}tgGO<'|ޕ{ZI)X'^P!fPMic7' йckcu;:l1jm.0G+I`63 ?uh%呓GE}_5Www^í}_>) pЫVvEGi=sC&@70sl41txv`r3aߜ_ƳsbG8pꇿGez/}<u[lپ#>ܧq܁pKՖ=o|LXկ<SN,r{4IQRkͭ8pDoBeld:
-W@$D{9޺'\~}5`=h$Gt-} pU(KJ,D7SVb6 6!!)r*bJ	~.C`#Z/z#~Cɤ~B!Q5Q	!RT J3<VͶ+nFl~8$T2zm\P±x,b4XD_ڍ6c M$)Gn/I}	M 
-)armF]R(ɠ "jڎ}QA$dBL*EXф$#_ |J=Ε,݃2y7Il~8
-WƦYBAwQ7o(_(gTQZCxNZu[prrՈK<KSV@Ԏ:Xwol>,\]9TdŤͲȤTv"
-\TKE4BijaDhvd(QR,Jȕ9b 0U	j.$+n_Px 8"|ѴzBH`k%9*
-	z0Nz ܕz,\6hn^6[[k9c<4?;+γ}:\2lmo90JôAf3YA֪LcSK{[[Y0oi7~מ<(uw}2ӣU&7?L(lm_@3\* K{[}#sDOZMY:deÆ[nQ!kÆ  +05o|)(pCs7VṶMfm>POs/ck۲G,3G*s7h4-}odܠ3VESVc@lVM
-
-yO9 BA4kVM
-ͭ7:Bh@ϕBP(W
-BPV״F
-BVUMGP(
-ɪDo5P(
-eM`ܸQ-(
-B,믿R+Q(
-y/&!f+)Z'#
-Ǣ?H3(
-BYaV%۫,BP(kU	)
-i>P(
-eBP(W
-BPV\)
-BYaWP(7;ܿf+CPoujOik_b9k`0㳹ҁig`0:
-NbV=[ONO,.ӽ}#%)sSSޑ%}#^su6>׹	20>:?Ne2#ilt?ٗ^~kpFad/p暡nfzRGvj*fq]'X-33133g*X.g. 3g9Q}UpZ'똍h|Lj&EgJ&ڜ}xZ{QBRɔT/z0r± ]B)b<fbz@ h,xiBo0n |D`  XO" XW ; \D/D<, /E^++ FHH9|iQ:}zhy>Yh@ :Sn +q!`+(efT˂j"Y 8?Cr. nl~n/rYi: 0`8y]	L^Gkdszyu)*
-%ҶgΤ=kUs0cՁזNޓ$飏>㏳µkr\.~+k*"b.5jh״lAչ$-׭-o h9oLQt\! @VD0Bx*N-E8ֺ~N\FI72J넺ʫ&ߣqBn OBp*j+"pX_( x!Z^(IH| \v
-pOT;v4U,MzEDEB$5AשAT!DUǒx	jY}cdgR5+9@e)U7"D}<[7.Fp,#Vn%/Ԗdl -LCQW9/V>e7Y_t:RcEqBQZ/,\+ڠ~Q/ \!$!p4!JܖtR"!R~pϲ,̃ c(T%W  H/| 8oTI`biQ ZV%=^ X\ZɢDRG(82Ѻ"VI4!16jQrhp-s^?q8S+=0ڲYjz;\N6XgA{̅[P| ɫJyt;T:Po?}*mcPR~-?E_x`.zdSW+;&`[QPyuw借DW?o_"91v \\Q y f78|s,x3=Ranw C_Q+nNZ06zsuNƥs˃ e~rTgO8ot90۠ouԼa&gR&ZOjL?6Ӫ.~c'rfڴ6 4e* W>lw@F#ɼ0 Lrz`MR3g:.z"Ց/0/={=12=3uھ8߹ML3s770d.M=g%t䞇-a$MYf1o^wr6!0|5_V @ǃ<}ݻ{{44m
-HDs>aـ&h@w;i30fSvg|3Wwq^c=?VwN>Y4u<zrH,͙#bUD;=rHWy"/~s^PVlYnjʊ1 6n*@]36B`m -䀫W2_b d{ZAѓ|XԶD؇swXlnK ~ȽmkW3mg [0|og ҧ .h}9zmz8ξ44>Vw5d i!?|>ǫmv= N~n sOUB0te:@`CW?&|&*pyn?3/Y}tgGO<'|ަ(ˤ|+Nӣ/O'bο4p6iK<pf@玭i"Ũn̣ݿQ$}'O:z|ɩryQBWױBy6Ŧz 	o̦'sBZuYx96ft:v<?;c9͙0vo7ڡbG8pꇿGe-/}<u/n7eO|>5󏃀8p,pt_Y}cgRDO~9t<C)N_[q"B	H10!H:u9Hr(uOIYIE($.jzH8[Am$rJt 1h%f`".7b .K)J: 6ٮ7&X4Q5Q	!RTMϴT[5GX0M_XZRD8赹rBmB@X,bRkKԦ^ 6 {$E] 	P<) `\!E|\Q0!J2(mD|dD	;JѺ"VE4!H*(:Rųs%_,<r7R&(X\UfB7\Jr/`~oXSSo򄫔ceFDPU]l17\5UeQؐvq6"w%KWf#c|Q'.'È>*iIzI7SDJ\(!WWB䘋T% 9 ~E@M$ !G	!z#^)LD[*&$exs7$:5 sWhp5,,,$[&''ۧyh~vVik{[gzurdZiZs`6is{=Jf3YA֪\ziljio~k6?;+-f=yQZ(7?L(lm_@3\* K{[}#sDOZMY:deÆ[nQ!kÆ  K͛T.:޾h^Cs+d֮hT9ڶ	#Vz4V7b>7LDUєUX'.hBglh,<`r&Pnc6_ok׮x
-e50[ou
-Bр+BP(+
-B0F5ieY6)
-BY+ʝLP(ʧUwj4KP(ʚq[P(
-BY_}5MҋWP(
-e_MBVS%zDPXiBP(+̪׷~{5P(
-eM*0BP>
-B04R(
-JP(
-C+BP(+q*
-&<O}y羃wle(޹N;m-K9g4Cs|6W:=2CgNح}#DO뵪:}9tZ'+=3o`0OT|Oޑ/O0ٙ՞j>׹	20>:?Ne2#B`O/}MgjZ9aZLUZ,B	gaB:,f9aGYr}dΌˍ8-U2OM[
-,΁
-Mju\!7;XK=Rjqp! KLg]}ǋΌXs%23gշ1,8xon8]n3#֮>dkmvⴥ0Vl״\mժ9n*{GƧKc:?ui7iHR"JeJ&ӊFUmzd> {t	u`9`k+!zYPD iOa8om]ѢBbLzm xLsN-D h<		6/][i]} <syŖf
-<`Fu`\9 [\Gci/0ߢ^v& p%g,ԩG_`$|nv6 ~v9᤬	)ªBbY<`{p̓D
-	QF, pTU)%%bu"p(qp Vv2RύH5Br.#v].78]9  6!# _*OWh:#_>U(B
-3ÝUW0.*(	oT5%Rk({m`醯6?ryC|9nSK2 X!Iu[BQĠNhZ{$}Gq6]XXvZ.rׯ_~zEpU:P ֓h,j״lADСMu~$C \缩K>eQQAҊ"SB$[rvΓp O;Bhbu&&]YSQ7qBªe<)BQ6	-DW' &k<A    IDAT/x|QH$bc>ȘT t,+:DIs%J"w2 ˤ*UJ*1 !VP颏`+w堃)-gq 
-,AъpB-bPwPp88*5_~5-W	SjӢ)R)}ACnVVǮ~K+բpN< BDHrtq,̥cp;,06q1Xݽ	 EW3o=v yϗ8/o1pԀƦͿS}gXP]${18LOY;%pjr{{l 7Cۻg̙CL;;;;;;,3uݽx!wCeŗ_9<.l67U$ =S=^4V`l£Ԧ&N!c LkŶG<㾩,bcA t46U<z8W}7WyTV ,\5p(n:x{,30ZnǻN6TyY,t c
-\Sd]Ns" ;~ :<3.d?35`0Lem.(Kzw> r& 4Vnf`F zu3 &՝˫Vե5Tצ.T2Z?5?^;Lkfqpa:`	`1jnl.&2@)L[;W :}3w/  .SmzTG4??rf7"_Mf4L&rfrn
- 8NOήͭw借DW?o_"91v \\Q y f78|s,x^gy#{u:`G6ǫ7 3_i_	S?9*mƳ 
-F M}] m1/S#;@x yULqyF4" ڿf!]Rݨ\ 		CFkT8N<x(y)LӉ'gv?sMek0h]΁%[\ |til0w3aь?yqw0L{ P2WN=W}|ټh8*jgw7Id#nV<xK}xryM5!ul,os0glx%Ѡԡ*WfZڄ&M$0?_] 60X(- +6^ۅAed
-߼	ΜaG5+^>ѵȍ&u3D ?B wN̥1`#O-l_	Þg;g{E|W7{g⿋}/N_y:K{޻o2Y<N`'b67}M[|fO_98jyYXik=d~fp떪be?	6s*S;:z\ OF;alؘ7Kx̦-u[4cn65ogzpwoYN>j_<}%UiI%wc3ۛ{+о;vqw	/ڿ-7u'z"/޾O~r H]{- DykuVF[ l]/Dzq};: Ɂ#;kίf;~,n}޽{m7ؾ'v>\Î-nD4-37_d2ظВ wmk/tH9Lq]9 }I ǾKW݇ ntNeScnڼ(1lW"b>ɗ_>KQ}~`0ysΧ{=֯QYc?e%uts8W=/p
-}ih}mS2P^D p	}?ʋ޻eS~ [e<2Q8Sv1 F~bu<AK5\+M/$g8;uvS cgrf@ $	Bي09zGq~p8;C{^Ժn5n/,'#.ǟd \&~o^:IQ2د?.c H`tO+%Q %EރGQRA/>z"Z}/l/:7U
-*ucgSK"_ʦ@K=r#4ݱBlBܱ:@d0>w`=_r%	fn>Byy 6O5U#7ӻeοKcQbX]Gteݏ F=mW#6xø.h:[x96ft:v<?;Z] r'?.
-/7geZnnݨPfAp8^8:/Am~}<pCY7p~QcA[/:Zd?prݳ
-<Ǝ~gn:3ֲb}ӺQ7Ǝ>D{Wlپ#>WGG?[x*L >XhǇy5`.Na1ޅۊ'恻s$WM%il;u6+6fU״i{VYHVTfA)DIy|Y2 	6ͭ8pDpL!^c> Hr  /$e%}_1"qNODཡh$hqQ:H$D7L$)h%ǒiYQ?ki&Ry8ӽ8x"%)ٟxgBUQq>G,?J	jbz9r5V3l)m ф$r:a+vi@yz騋PJH, bf!!$a 0hLe)%zy Q!&ӒNŢ!HLZ55*S$nCEjn+Jd5uEiY  65ۺr(5"-`!7$x<bb,V j G8VIz )Z<$xD*-K`+Kn$9Zql ?T ZD`T:X4R9$ˉ)lTA$4pDStT (^Aߊ+co~ro_~k7|S뚦|b0YR:yåmvJr/*C[D1Xa+$T?)鈖|9ގ)m_$[INCNR6jk|Y<{	
-r8UjpW,шWrF蒎luTlfk0 E|vÇRUBQahQ2{Jq$
-\i
-D`B
-E kw+I))Yx;,J)n'R%V}Y>P_ˇeW*	DG5T;/*Jz*|vf]F?L uԻ$ILLBT$/Quα$O)ZxZ-\U{L4}4?/<4?;+Ϋo:\2lmo90Jôm̍ڢsdҏ~מSO[)ϧe-ku.Mg~nVV`25[[k.LMuf3Y15o)sCsiYL[jf07ʽrs)Yys[7Ѯa#;?yz[qtH췏; dfWlڼme2"ȹ\Y*|FRL-~c>a.z\v>#hn؍,Yd2Ҳap-;6l `0 0^~}V-Fgչ1:4hnoo46FCh6[7 `[sZ>}_MLto>!/sRfkզܶDk^ƥMe=;5?έyΩ&s[TS՞adƦ#Z:p٬F
-e1i*3\.glԯvVmXvg|0f+ڵk+&BY}mmAdR(
-JP(
-cTVhBP(ªܹ
-B|:Y(x}F
-B	7.F)
-B믯FTz5P(
-_MBVS'~Q(=CyDP(
-*^f)
-BYJp-LP(O30BP(+
-B04R(
-JP(
-c\
-B	d'_m޹]7[
-4~wS}N[KdfY;͕fO;nvkHf1Szj;Nkl?f&G;-ɊuDό7#z=cnj8SwdM#d푝X_pZ,NKT&3kV`O/}MgjZ9aZLUZ,B	gaB:,f9aZyV}dΌˍ8-U2OM[
-,΁k:7`-Cnviz/:>KCNSj>={L xݙs|^fF683r4}-ۭ~vfUx]zN7mmZ5֍Ppo_tiLN=m\6W4IjQdY-jty뭷j!7 / 0%ԑ" +#n-& B^o۸{/d"Ղ-KI\پ/li:T?Llk7t8z2"8W
-4zf2wDh2{1AǅjP@H-w
-
-7^6%0^Hf? r)2ٳy<  <AsD3 ?#.㉖+Z:\@	4Gرم "fWZhvIEGn
-U#J] (gwbQKy(ЅР<g1  gbl6u|hq6+	t\.@;UyX n8̻X^A ;>Z8$4 @$#"E=3L[8s#RA p:].ӦȺ\.egb Bs `Iz*ȗ?p:J*dE+L1W~T|\})ʕQ(P^kPk yl=6?tz|!f.SSP hxcR(,^_8qv-裏$IrիWs\.qƍ7ʂ,4)A*
-)xչ$xVu>W AqK^`%Q+-QO	Y[t`(ibu&9&W3I>TJC(V,N*ȼpj0)"p:90Y|I4UrBEiˀqq3J2 =}z&#*rW-:d]\d	? /g2H/* ?>CI9Ŧ;Tzeئ׻AM-gq p4(No
-0[VQ%rB٠V>J\h@rңi7AM,O?S
-T2 iohPͨcWEjZX8'! `.M-{^$'BpE}ǻBC?  _h|0?37 [e_O!s3XƺD-c#0UޡdKL ]Q$Yh;;8&΅B  ?2	~W) }nbX,V{@vO7;Aͥҏ@ou{4И:?M/<J3"-6mc!g |i)i+SU%7ap6y
-ԵfNswu;Km`۾睜mJ,ݟ?S h1ij\`ǻ'u[`@̱Ǉ<2m:}`0כÓcd+isJ.\@C9 \?3F7=2`0؇gy5nvXW'{`ΔV_Df΢,ֵ&F˶;BRE҉!`ӚGڻXe)	0jl .$'? &ѝ- 5 Q_m]  ~j/u]}UFΜ>9pg9_W&.n1L&}`hb]J㽭s"Qn]Bp3BK2`n7 /y}[BiMg朔p୑џmU]o ̋_i^ಽy | P79oSϱ3`U
-r?4m~kpMtѷ^ol_GMF0/~x D0w8Y]\.;>F}dKa_9sdU)ov vop6p~tltttdt"pb}`g:vtQQgIӗB<7پ]maK|KN0nO=.Z}b?>8V`_}~լېn6/#k<+:}1Qݏ}yF"i5'ٵrU\*^, KT_^'oyaXe^_	ȎP][@YI!]-3D 2x oj~`:7!^][<=q{V3I$h.WL8;ral ԋ_(	 hyGͭ[n[&K'{O_-Wғ(~nF&C#S5.Ńv?~r$W;ks (;2ϖ<hA#Z_t p߯?= Ve/9:^bf jSz'tso?Jcܷ3ZCݦòsNj}jؽs@{67w;͛ 4FR_| M}9v2Z `%`{(٭,cY kq融ίf[4{KkkonSs{#n:uTov3ZU]S6 V*+ ,Nh?SwHS9ڥtq] _^jZA謷tRcb~>b	ktDw='T:uO|d`3[̍_LI5d)</2I?28nNNT~BzEi'x5:[׬Ϙ'Ȗ׬~oS*}nt uyi%hY?Z'׊i64* kq'>n UZ 9I0U{H:<YXh@<e˜'?aJE    IDATEOv[S6?1qputJj3dyBZB4 H}?g\(t"Рv=$fΝ?8SᴊnzCg?cx='ڷ7U
-*u'͟{6@ ėeԷXxa|ҿAx-|I3on vyA6+ݿfk?NIcQb1,:+5n~ U{in/_+HM>_ZT3I4il@ݖ67z
-n|_оgJ59ogo߾<4_KmO2F8޷]ck<fK{-t (ymbY5о̍B[7^:عG{W4Y"Ǟ)ףԣW\xZt& 񡮹o gsSX̩\z]ayPܟwoKϑ^4M/Oh 7wL;Hcν1*7*ukF|<%.VgAɊPp3YSat8QK0܊q HHs QS*Q21/ _PL R' 3r2zgf|Ÿ9=1/H8BgSb"\('Ler,ID}4 ֧\tR ǒ
-,ӽ8׻:K(gB'gtXNY.WSm<LN[USY4!e2TMLx	I7R:)
-$3AĒ)IJ
-n-&k*") I<, (r\^bJRX4di:VMuK'E܆J-+ɨԴ3He2D MͶ.
-YM$=GzXHN$bKdS aQ 'R,	+TtZ8/H2R2 xKIr.{uQ &2R2u DR3Z:Xf咊d^/L&Qv8BQ%c8I)#+(
-"PZͽ'WJrܹvNdnn>kڊRgK(yWQOxz,B9Sn"Y
-@$OIG-ϸvLibYl:eZuC3wpU6rU`f<XG#B\eJK*O`QA"=%~ 7-6
-ݜQ(	<|QQ2zrq$pr,@
-E fm)VU*]4T(w4{ْ(%] w8J,surfFR/6̔?V֌?Z:*iy3$}iU|>żl1fbvJfL)G_L vxջ$I 澻9=(H^c{Zӗ񦵚34n[j`ZTշ^\zBLkgO`Z4Kը
-mѹd:#d]ze fz_RGɉXWiŘ|&S}]st:#45+MN22`Z4lz"yuܛ 790կnM/`XNN2@f~{_ PNXzMӜƟMOӲ\CGM3\/dZMU~u>X\v2q`ѵEaŊ;PwX` `qFuAKolnQuEsljjjTh|MmZTݐ[jk̍ufaPEmM`v@T4,zߴ;?޵y^\Ω:sS]mGnƞa_g.ƺ*#
-pԢMPs[~Lj?nN͆icoØ.7_~}$4w2,yC~ϕ@ EW@ ״ԢM@ 
-5sUӑ	@=I|衇j,@ Kʕ.a@ n_n-M&Sh@ [ΓO>^j%oS>ߖ)zD I@ LMsj,@ KW@!	@XdHp%a!@ EW@ U- ;tꟅ]Yqmn2a~|w{ԝOγNzT`03cV`0X-V?c>5VMcG[-ណ#łѡG-GNȞ:d9f+ѓ*,m#=GN?Nv=389ݾ8>cgzٟɫ}<}cq	;~[`95:r#?l99:z~Ԁ*394104s&GtXbU+jJg]ѓxxC#3˪hZ=PәDO=ӡnݜNPf#g2rT2LJ5ug 7{P<H ˨2~ <, O4 heYeh'3Q>e|6 =BI]<apΠT(;?Xvhv_8 z>}f
-$`󫆕 P%VXCMO¨ј`L/|t\N `].qc :R5g|ڀ/SRx  G#AIHJQ$W;e L `(uu)*zZX}u3ogR%+Z	(!Q5A>H+W\z5NMM]~=r7nܸq,bAS ܑqqǪuЀWKwhYnly AqJ^`EQ+ifILfRг>;}qT	Yti-҅PEW3JY]1*Q8Ⲣ(JE N*ȼpj0xc\ٴc^ \
-"ORM "D< PudEQ;3T)]|LJdE+)4Yf1gp-{,v 0K=,((;q,!8¢]otuugu /q4a}Ǜ -2/&Mibnn~<~/,s,s[ڍM!s3X@TQ",M~B! rc?>nnNbX,=0ko.-5g) S2yN qN }gX-̎O >iZuFհjr.?WZ9 xou{4Xev`F7Ȁ`Nc!ΤDF@fʻ:qb$ ~ |Ҥ TKYpkiݹMtm6@8?I'ΆMkV]{73%B͕D d9_~gxMx.n?4pz7L{Jq Q_m] UҥQZȀjm96UҦV9(.f!j{%0i }}޾-!ؚ Wk؏;yؾi@cYF߫}RBûN3r7 #O|uc;V_|Lϯ2p&%DJ4`Zyיj&0#tzk+_5<$kAg{Ji)d OCBy<а2̫
-٫7 mwp[Uv=ƴt.G=x}gXjw+sk#)	@QZp8~ҁ[^Fwh.WL8;ral ԋś; - (ݺusMFUkfN򽀷i&_^ixr[@զTW?Nz~nF&C#/|sPkq融9DD4qǞ{E @ї |4*.E-l?q'v4/pdrUt ,Nh?׼.rK/1yhܸy6s{K89pA[mG!(kO. RzgBg&cA516nܶmێgoq'?-#Co|kzv[`xN~ .'i*?e*1htƙ2yMI͔.{zNi ǽa§A vޓqWo>u&ED,]ј<N+?}^h=R6j45Ȁg/GSs.Q|=Y ?̊gyamuu[,@d0ҿAx-\$[יK[swQ'ܓPg?W^yA钖LR@0۹W8|jFv>.-mg}]B6anKy|k4gAhߝ}`2=}`\\zIԯS
-C^o%)M5|8ж,57Zؓ=jgo߾<4_gz=|nʙX	  [#nk3;aa'@ɊPpEEE< 'T2LCs+NML !)RM'("4eI(/(J&a |r ˉ9`1#X<%e2Ȼ x1.#&(h^H$⬬<8%&	Er	1517U3Tob<d9z 0EQ2Quc:( pj:VLI:+	^  Racs
-sqc.bX,&aԂҤS)`E	i `=DRRb<s9TYZ4c9vYݭK	:)
-$EyGj:Vk>8"(p&euEDk&ZN.2#Rf"0V\	^+	>2 W|2IQ8 tqhQE8YrIy܁tC]tœfK+~,O1%]_;G=/i-,.5RNJ"w ABwb<Iax5vˈnjvIEQ\,HdʃdbN
- U!Eؒ@r ޛfEbu+  /o:V虏$x hs&-U<sǛ;0~a:Eejްr3mݺU&}:􄘒67:0LiIJ.;904?_o|cjFie7il^6}*\HfdL榙1'۾<&frdZL/Ѳzjg^d6z"4`Z}"bCCÊ+wܡ~Պ+  7n,
-?<[:FsS3g056-3J5<YҗaAK6t	3
-)eMCU1y9E,oфyaL-$5R\XG7Mbf?&@Fscǐa!s%a!@ Eƨ5-.h@ BM\td@ nOjzZ4K r[@Xw}&Z4K -'MEQn)>,/=CyD "SzܹZ4K &|0@ ngca@ \	@XdHp%a!@ E8wpgwWVoܺsۦ[@um=a1xn@nX`0#FO;y::O>;2xؑV}(AzH`btvKǑ!;zNj6 e6Of>c)io?rz,qbLϗ=?yt?=cu`95:r#?VsrtdOhUfrhc`hLLŶ&VՔCE9:4>"n84Rk[=PәDO=ӑ8e6r&#}L%ɤQS?pvpyñ 
-Σa 0!q lz XDS	fYeYf|BA)\:Sg -gKU?@(ʱcef% 'EB4{T  _5dr/p ,q(:RjzF=4(Pd:3]H4q6+pr9m4 u\NH֜jLIi* P>'")E8
-T^픗ζ2c 0օ֥3 icՙϼIz"h%  Gͺ=>#I\rl6;55u\.nܸqƍ*AMpG
-6qv'd
-)xвp:q( 8y#,3Wd&%p =3GbxBV$/]q$ty>EՌ2Aq&n:@D=4ˊ(a ;("6(-hOireR}bSe U0`X*) \
-f0 |1G Ȋ(wf,lSV_ߙ'bɊVRړi#bZX8'! `*S(0w*g'BpE}ǻBC?  _h|0?37 [e_(>MTTy_2YXH7<'BfpʁH5^^lr\.~B! rc?>nnNbX,=0ko.-5g) S2yN qN }gX-̎O >iZuFհjr.?WZ9 xou{4XadaTz}I4LJD늨h`dnk&0'F B+M
-B׺֝;D͍ P*D:q6lZ:ڻXe)	0jl .$'? ;[ kuQvU9Cmmͽfz8wm tۯՌr&sMV]b0LCĭih~yND7?
-uY}npB(rI_ >o_yK?=+/Z<NovX jԀPnv~Fƥ\v| Hಽy |4_xNW0Sj3)'V;>T3р[ۭ]	U&y-#v{a+<6CaJ. xkP-44kK#-uh8uվ]O1+1fK6oeDvt
-yJP?jf%鋃!Sބ{wmyʕ|_;?~igG.zxp' 6`[7nnݺhдj- LAv?ؽ6 _֤++@XW+=TgIyśPO9H  IDATGol~܄JVO]ˎGI
-"j"ظc=֢]t ҿ/ }G2I"̝-~mе{`d(M&3
-&u	g Tvc ]\%~U87of}naI>_1.=hhZ;Pemv8ڭ;C:-7QZƘs,⍏|AώxS"/34 MgCO>Zmw8.} 8C~Z&i/zD0\wѽsjL@<e>}nt ̧zV_יtEc̓[;Ypy1ĆJyڄ3֤uM-nn}fA%O^X{6@ eԷXxa˃p#p[/|I3
-O'S~ho%-ʇ~w`0s+p
-__wswՌrD_XHWHu dc궴?pǷoXHs<;=}`\\zIԯS
-C^o#M5|8жHqL֬kcOAx_~nپ}v:)g'bN_<' hn}섅Q %+rCEVEɤĔA/v&[q"n`	Ibn<IEQ)OTGļ ~AQ2a'.' XNɨ 덩I))D ŋw1!Fy'@B"gee)1H.
-Odfftc@q_L.fN
-`XRS7БX9[XQ%U7Qr  G,?Sm)ʔ8Fl~_$LWP&sX<b1A%= ҤS)`E	i `=DRRb<s9TYZ4c9vYݭK	:)
-$EyGDr=5Yp?Q82Ѻ"j"ZQĈ5-' h?e)sP3wFt{+Ns]\])-U|Lk+J9
-'y.::(qUT 'APNB;)ϴޔ;nxҬuxҏg{cJP-:XwݗE6}iRUeQؐFPIId7HNTQeIax5vˈnjvIEQ\,HdʃdbN
- ŗS#wa;t1 &Y8C /o:V虏$x hs&-%@yr7%:w`B)+Er+MTf[j`ZT!3JN.=!䆵͍'S0nn~NN22L5M<إyQZT~0il^8=*&'&SiqI6;/d\z"Si^3,:V/kаb
-pw_qb
- ƍ0W0g"~,1zuYg477<`kl[gjFiswobZwYve*̟y9E,oфyaL-$5R\XG7Mbf?&@Fscǐa!s%a!@ Eƨ5-.h@ BM\td@ nOjzZ4K r[@Xw}&Z4K -'MEQn)>,/=CyD "SzܹZ4K &|0@ ngca@ \	@XdHp%a!@ E8wpgwWVoܺsۦ[@um=a1xn@nX`0#FO;y::O>;2xؑV}(AzH`btvKǑ!;zNj6 Cm8trt>dGzۏno?zf<qr}p:}r;-mO^#kOCݪeȩё=q[A{ѓ=Tɡ31=zZޮXYTS_bJ*'M_䞣C3G;(.i@u3Og2=KW@Oz~hvs:C.. 6o8\yԑ" ##.-Qd6 ?xX hJ=,˲,ЌO
-M]g, 'Z(I'L4);?Xvhv_ * vG>}f
-$`󫆕 P%VXCMO¨ј`L/|t\N `].qc :15X_4  (F^\H*v `g[1 J["΀Wg>v&eX(oP5Z裏$IrիWs\.qƍ7ʂ,4yi`ՍVpMyhƫ%;,\N Π8%/-$1I	@68QGe1KF ]8ZU@W3J˄HQݧ[}TQC(v @(2oڲ FX ,W6-%iJ ˔,+H&@K-%`&p("xgƒ߁6kUI)z"h%Q=&p:8,es{ bQ4d,!8¢]otuugu /q4a}Ǜ -2/&Mibnn~<~/,s,s[ڍM!s3X@TQMHu1G2Ivwp,L @xdȍίR@j);YbXVk{y0fg?(۾l+ L],Lw89a0;>̦iA0MUê[x?\ir |n} VN'q;Ccn~l^|#}88Ѻ"j$隉+Fĉ,JP-eu7QUCn@ZxlM֬V? gG*LI Psep!>1 ֝- 5e(k鉪0Mjkh5+Źk>3D~u TKjF6<{[Ȣxo+o~s@=P }޾>ozVlM_y+͵Ryǝ<lߴM,Oh>T'
-KWs} qg'e{e zhNӱZ}`>W8z"j%0L5:pyѕpYaNho:Hg6K4|H ^:?)g+*Z-uh8uվ]O1 <>jw+sk#)	@QZdG8(#o˭d11FΏ_wblّ#g^,,	 hyGͭ[nb44ZH5wrO-v8ȗ5
-J3`B6կp`67w571`l~܄JVO]ˎGl,Eϙ &;c-/h  ̇ Qq._I9v2wGieLf +WM }몯5p@Kp7n޶ܞÒ}b\zn~yw.b?@6K KV!{[(L]`O2{:</2I?2=99HS-kPdFl] np7䐟kڞ`Jy==4 i^V0Q Wv}OW@_O8Y7:"z"hLyrk'Ο>/F|4U)OP5dMhZO
--ߍ-hh	gV<kSb"ٖ-jÍ]o.`%غ\*̟~?YLe?a vv
-]Md*_on vyA6nQZ<O W.16<u؇-m,Ҝ6}wzf9AMOm߾ǿD?}?VTWy/mͤa/a?dG<۷og>.G3r&z"s< ڂJ)O9
-R)4V"n`	Ibn<IEQ)OTGļ ~AQ2a'& XNɨ 덩&bH"b E3bBND"!S[i@9HڨP|5KF`[tS z0>̙du6JQ 't"E`GH/ Eb)IJ09t幸j1cX,Q,&JQ /(JM &Q፦ʺ$Zܬ]%ɰ g@"<#	e5Yp?Q82Ѻ"j"ZQĈ5-' h?e)sP3wFt{+Ns]\)9vǱ\5|Z$b`qЬ(]E<i+APNB;)tG(w 6Pa]YiG
-Kا1%]7AY./$ -nН`o+@tpb|Rk~kC9^2]RtQ1r*(@]$]͎ę8d`}yCֱzE|$PEK3)o5(Q3{)1 YT)+7֭[5MK0mnׯKO)amsL䲓yM3}.CՌRB(GɉdFTonisNc2h&HeTzbo-W|Lf'b)N,.(644X`0qW\X` `qƢKcs1Z4g<󀱮inQQ%&zKQN){nhnewZVR˙T/by&c@`j&@lh,<r:#nc6iׯ__6	B-0+>$+@ 	@ ,2F5iqE@ ,jr窦#p{R(CբY@ ƕ+~߂@ B0h7LբY@ n9O>xoh2(rMY~7/__s~!<"aIp=w\-%aIp¶-    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/PacketTimeline.pdf ns-3.20/src/netanim/doc/figures/PacketTimeline.pdf
--- ns-3.19/src/netanim/doc/figures/PacketTimeline.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/PacketTimeline.pdf	2014-06-17 10:33:13.896995938 -0700
@@ -0,0 +1,233 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 518 300]
+/CropBox [0 0 518 300]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+518 0 0 300 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+31
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 518
+/Height 300
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+xyϮ/*uSnBR8JuqU)%u-qt58%`}>3I6fv̮16̎,_ڱ /e} 	P	E   P E   P E   P E   P E   P qP_3Na-{۬qSuy|7-plʯjz͢"LbҜ1S_mΰϛiWqu[1hٻ.lg땯s^#Ǹ=\r\7x)ĸs.f@.bl5A*4~ENmWNݗ7klذavܻw/7 9#HNM[bGhC?z1Z/h6a)A_cGs^IO]|W|$IZ,ݻIIIz.]Ne˖= 9x),0&;48E`ѡF&&篷zc]ʍEd֬z ZYfHӉ6v\?oѬIB_|ƍ:tŇ{n5 ^fSf&$?Y:(GI9k*R"8D/IXI! :	Fgrxk7tlF-?ߴ7QbŎ;iӦ/& *"^#Ec$Όvn~CC6t@Kn4Y-	"IO[GRh`.$
+&"m *.IҩS֬Y3f̘VZ(Q"8p۷o' 	#Ί`G6O=	4u<&K	[lwNtV\C@:{ II3LsY]YnďvX־}֪U+99lٲڵ0aΝ;ѣD 'Tz
+4UDI67gQ`r@dBG((`ݷ3UX0DQNcAew̙3֭?~|6mJ.7owy_~sݷnJ 
+U(Bߊ|x9u+N^i$๑򑚠)K!7(O?V<kC_H$S^RЛ	ECi%/Ubx"	|
+Ot:۷o߿:u@*U>;vڵkYE"w 	YG$f6ZI<SmOY9)"^K)5{|gkdQAQ
+{}?VyGRybߍ-a6C	M{)5I+Ys*|w^rjW\z?;wݻ_7 IǊ]\P4KEHE\Y?vR܂,)@ǪE)p.)DAþl3b)iftΝwN8߀A4ȟ?[l9j(qIIo#3PU;y/fؘH~@dXN:I{,eĩMbȶxSc2kJq9[GwXR%dDT^Gfڹs+RT LjJ~bԅCفCɋ"cBtE9dH<Γi\SB@Y,k޽{إG^z"E#FXbűc߿ 0yl5lIys>xcK^xh#x*tÓ2k%bn[^	?W$q̊[.ǶmۦMֵkתUɓuhK[<" GbG%V&i,(i,)mv]Rqzb]hfP`kՠ黅~嗛4ig-]âP " *݌_:Ф,6I}b&LRE&mLǫ	#+U(a</`JΝ;gΜ٣Gի##RJ;w<y?q'P?ϢSy?4T,$IEg䊼
+]N.BU<Vd6Bx9Ƥ+"I'O\zQZlYx
+4h`~ܹȵ" Y(5F7,2Mx/*ԍiqZ\qMhcܲA˅wX1]XETi+B~Ag0]͒_N[ʕСz~7l  g"e5f+ 	5qM8Hz0!צFMs:NrK~.tZ%Ç,~cǎJ*/ԭ[|;}@ ,ll>IC
+%)u_"M$C˳j4^h8b:w(އRl,&d"|+7oܻwy;͛tm۶?~uΜ97" GUe4P2x+vhAҤAdI4#@g4[Nf#f1t:IwIT8it2(+撏MFo=ztܹO0]ve˖MNN]v߾}V={%(~T|,MQ+J'+$Vmг$~)b=6AD4!mtzSy 3e0:GWs,\pϗ/_ɒ%[j5f̘5k֜:uÇ~'x =e([X+auQK[DABg0,/~ڦQF~sGt0lJbp9k	$r,29V.lڴ ;VX1O<5jիٳwuڵD3P?9\jbeVE3Z"V
+&hr9ra)R$py~!]WQVU>J9xŋڸq_|hѢ-ZW\y$2qPc,|_3mșVk:'A_nP'~WYN4uBmz-1?騝L9bӏ'&mXXAQn[?bSĉk:b3w^^=a7`?~܄.\,3pԦXׁ]̙d޿IUuvcR֟|0o5lO] =]k޹YTpA1nOF<\.rQL(S]NEӢD?|AQcY(C0r׬jI\ë6v%'W+uY%ΪW	(n&AnZ2&R!VuY	<&x<v}ذa͚5+$ӴiSɴlٲ#Gz$9cė8"tX#3E@4EW͗s$c@Le-k][mذan͠BˑJNUE)̘DĬv]ʕ+۷o1c`jHTGM2e͗/_N<x),01&^'	ҋKD4_E5s\"Ldr]s۴;.B3C3 iY<)rƎ漌SPUBRvCp:Qqv]{)9˗9r`줛x=5EF`J:5'NXjȑ#{｢E⋍52dȢEhKrOF VYGXi%'Mn"t۔{k.#?}Y
+<\re2y=|F	˗/7J2i'F%*D_r\@}S^jօ%+{G*dP	/X3,:u8׮]駟̙ӻw5k&%%UP?8qƍ/\;;琐>xiM3%r[s(#,,< f|5Z5Y\~%h60sQ\OprAE;2k4V<M&͚]ddkrx%1NeVgBBgcҝQ%pVo4[N
+Y
+Pµ̵p}lnݺuɒ%_^,X %%EWxY1Ag?i<<0G;l؊A)>%$R?e7)@xLI^2iKD譡bh.ze}6e˖E\Jhp+q%p(%ⰙM
+S[?ן|	8ЇRL^_8NLQ"N[=~٥u=}67GtG+f{hZë:ų䥬pҰC	(@G׌"J[s9m^R0hJX/>G9UH+aszN ~CZ2FH/jݻƍ~rPT?C06ӤtZmh!Q%["YրA"%rlyAQ@wm}yExLc	:}6'1֩n 8Ûksx3.:M}HXuש	nڿPn|ꫭ[6ӧsp?{%f6ZIU\6'݉WuV&t0ZM#O*AEfǺݴQCQ/6utXn&}$@NoFE3
+'+1lr!,GZb{zD];'NJxHb6!lѣGϟ߸qĉ;tP|5k{Μ9E!.odN"ΊW`y)c.ejD01^
+Q7=fLVi"ƴuRcQ(K+<Uo<va˖-SNQrɓ7޽b!Iի~=S';wߢEҰa
++V9rի$f>l6D3 !xf2dķ#fJBiaaAVFx=ZN6_`OZ/z)fN*.]y)StܹrHZ`9s;DߠP" @L2tA_312baVv胫eUSb7ECx/2. 7!xџ}N{.ܬY3˗/?z}	A ڧ}$Qv<K?U>QV|*ȹp#<k?;h"*wM<HX,ݺuV_K.ӦMۺu:uj>P?c=7暑;.Iia(K+HWyt,Y^]eѣǛ5j(ûiӦ.$A6W\9bĈ͛+/Rƍ?%K:tH}-tcƌɞ Azn/Ui2zLkxh!Kt1aj@oVJ,/_>%w)))oNw5k֬={III+VرI\.ŋ}i^^:ys|8tgYSrq`hȺJL0@}X԰޾}֮];999û~zM$v͚5G~K(?4f/j(l24#WP@<EnoZL2tú(cC֖v[Xm6<w޼y{yf<> ׯٳgܹ}U2"ʖ-۾}{4mذܹs	nd4lذQFYo  g"e5uliYZtLa?<-DY4gG贶̂96`"Ͱ>^߿nݺ/;vXMHϜ9vqƵiӦtHy8|һNf̘Qp+VdxP@rFs(M߮s[Vws:Nz
+r9\E_D~d9HݿZ~=zǢrx+MHۇ B:u@*U
+$,>һ'NV><E ԏJA!:>/˅ڕt.)SxA)!YvڏC҆|lq8I&lx\,VhЇo0]N̟hsxG9ѣG^wÆhll߾}r咒jժէOs޽O/޿ȑEݶm[&" GU$KST􇈦N+͸@;iЄfHch4[иC	IcwTJ,yZk0fݥѕɓ'rxȝ;w~6hРϟxѣɓ'pnd?oP@4EY3Z^6L7^`E^.m;_hUO`n$GrxY^1ҿ$)9K.>|x.͹pr&MԩSJ*!#7ٳYvgܬ {FVɁҿ
+ ܠ#BT
+jNzʦpMJ.?mL˹V`7/8'}RF(No6moLxo׮]sboݻZdɧ~ڤI^zW^i޼#VXqر%7n,R
+" '+@Z-\ۜsuF7*}qYMqvS>J>B.,-'NTt%p%;9hP9$HL#Z*n$HħOm6ϗW֭k֬yNP@pE6!{8 ;}xM˕L ]~.%>*ܚH/EQ%p~Ν;rx;u$G]|}]}gK.=|(XzZh:j*Pq;B>IJHRX@lDQ(RTs֭t8sx4h琫Wرc̙=z^:ʕ+wy?c(mum֬2:@ Db\674z?(-'^wڄ?)3DXe(Rjqݻw+W.99<`fգFjٲe(аa#Fj/Z4wܟmy*~ݮݶʶ؆xw*ۊZQ^:2z_s-q\L7?~#;er7r򧃛]3{$1C]Zצ/,ط~6>G~%S6iFGۛE+djYT)_3N{c)v0tC]kr1֭F>uor~vcc]s	r6sd%6rviǊ!-J).MX0#塽M˪.ymg}bۖ3UDF3}柖fdO6zR2uݮ_nXݩ۶f+U,R:{gQ¼F\likd}H6r% 6~dx:<
+hkH_
+q%p(r̦@ip;)Yvk>zܹs94_Uw޸#|RU`:qI%-5qpayŕREjqkNT	CExZtyb,gZ	6'a9>K]Z`<N˷oߎ-QS۶m+Zȑ#߿e\,#Eʋ# R7,M<8^Q']sKVRս(3'Jnktz#auyےŋE̝;w_T);X#3Y1Po)yxWr吱4$Iq^҆[ߺ81wpo*'hMV|9r	!{[Fά>MnsMʕݻ qV{LE<~	LeEC1ig0P/	S"؊@k EP/rcfEFĿ}~$iEٸqcK*Q=v&T/Fkn&MZz̈́@vL܋DCdBG( ^$j485ݻI#GbzXYf֭cU"ڰ|4:2.ChK+>RVXR(Bx*a%*ҥKgˣGV+یI:B)q6Jr+J^y֢פ	&tJElڀq!k!Lc *Xb^4f4o ՋGo֬Yݺu^o&YpeaJxil\a"Met4F"r@|@!EQ_}\fw}6nxy8w\:u5k.\xʔ)mFz9>=8.:Z?\(y~ر[~WˇokBzG}TJGf\U) P	7nػwyo͛^k۶No?$1gΜy뭷Lɔ5tP@" gϞ]~	z}2eFԮ]o߾h?#Iȍݽ{w6lؐA  AHIIYpի/_%Kjj̘1}ݯXOs+v͛4M/_gϞnʹE r(=p¦M+TTF^z͙3租~B#W^-\uB{*U
+,=P?@\x!C5jT@EhbȑV:qăΝrJ$I+VlĈtP@" ˗/oٲeʔ)JPP<yxݻϘ1ch;vXjǏgt(~@4x<vd25mυ
+Bv2?dN>=fX(~@+W cb Ȉ@D.]NdbS4iR~.D P 'N\?oѢEѢE_|F:t{c/ѣ9sҥA   pڵ~iٽzQ2"*TбcG 6mڔ믿V^m۶~CE C4ԯYf̘1Z*Yd|ׯ?pܾ};t08f+rRA ( <	<ٳj۷veʔi׮݄	֯_Y$hO>}.^abڸ56زMO-lc?y:UYZ6i۴e)\2{͢"|3zw9mߙB[o6r.߳wu#v3qϡowB[.EE8a#%/l?kܸqKwX=kܬ3y0vf8:k܈#M515'F TcVXw}H"lҤg}6{lW^/30EGh4bbJӤPM}ΤVK3ytRM8M*E-t* E m6}nݺUV-O<UVڵi?#UΉCQX1$㵲<nuȃ~nGv#ihU=,!4玴нX680K7\w2Y%&E #G,[u:.lÇ/_ѣF:ĉH):vx㤌
+55)MnleoP'MD+B7U5*'m(HF>+@" @L.]yf&Rʕ	j̙3wؑyMh_rehg|O9{t EC<twpNj[S$
+VMRA,I5Z;-]:kրJ2Zz!i" @jnE/bb{=n*0Yz7i$FoLE(>{L/,E3yr';olIUF_:ipSx6gL[@(|B޽
+׮]e.]ZP!tGEE(IoQ;K'70؉W)xURAq05r(۷kDgm۶zNy*!4<K!#QXRIPP1veSw0"4?=GeRUE rh~~ܹ6L0]ve˖MNNVz4[={<t?XhQٜs)ΊKVJL\Vv[WNSu(6L¯qWAMQv)̵kgw*r8lի̝9Yp<@\[n7F;３7oҥKif֭;sL̆Od} )S3?2ΊU4nl(|iYG+
+-=):M;(Xw|*h`e9' 8k׎7hGPN$Hۇ">wT^Oe*ݝ=ޝr!Wb. E O\>}jժ\lۣoÆΝKy1c-y,*E " jÇN
+U.QDf_2!۫^^>
+E *û$%%UX1ԕŋ413},3A  sUFt,P@xʿ;7iҤA)P@" Ϛ?s3f0ZVnGM2%{ӧg;l	P?G]|aÚ5kVp_~iӦ&iٲeGw^1Eր" xB~[N6k׮:2U֭[7BKP@" 
+4O>|%K>&M,XW^i޼#VXqEP@" q܏?8yN:UT	 իWٳYv_%sE ¹s΁7lذ@ŋoٲQɓ'%Iz| PG?~ƍ;СC'''[W_}EQ}P@"<W0nݺ{W[n=vO^P@"b	pY_2e͛O{޸M(~@r7oDyИF~4kH" ]ߞ]Qhీ" !ӧOcǎ^}^xnݺ_`V
+EA\~}_}[o%''/_CΟ?@E (j$ɓc-[,^x4h0xowI=P@"߿sYf7LJJTRN&M{>!dP@"$?~|ʕ#Fh޼+K/5iO?]dɡC.r9I:]k " !n\r$Iҽ{jժɓ_ҥ˴iӶnݺmސ`rKM-3h:l&D# PgĽ{<ϲeL&SӦM4klذavѣ I9xÿ(YVJ~A"#>@ |-[NGUR o`1c/c*r&.h4OTF#3X1H8'O(~@ݻw<xC6n_,Zh->UV8qϺx,jC=ͧR$:c{HB" !\xrѱcǊ+&%%ըQW^g޵k׵kҟ"xXFNiG
+Whkt6OxyN6Ai, 9P@"Ν;f4hP_D̘1k֬ڽyW{yױu{fmH@ O
+(~@Rp^wÆԾ}r!VZ};w={_:X*3yMwE˭;V/ڢEB`y/@qP;yrE8x`[n۷o1uyJ*զMqƭ]eL*(",`K4E-fݣ(جA~jߢLDΉ^4È̇ :$?L   'Qt2vD#Ϝ9nݺǷm۶ty}w7|}͈DZѺWXue#g3Bid$)Qw;|ĻiV BpȊ7Vwpk#?t." 'ۊk׮%J|g*lxƍj۷vII)oc5Ν˴"@ۍ&fh-4ˁBv|hgXhB&rUyYK:O-&XIdB@ E{СCK,IQTo_3ͭZB7/_z8p¯0	LL>87tH^fʇv	wpmX|&V¬_S:46+XB(~"9rRJݺuK`-駟̙ӻw5k&%%UP?8qM.\2xN(sq딋D0^Z{<k1^Oф<FtQ/Tcd)Ws(~h*ND׮];$aիW9+VX5j4dȐE4(b8؈  9c^BF>v:&%tI֚~%Ao"l'xY
+g쌟qcvI<f3a/6@ EE8{oݼysk;fΜ٣GV'Oʕ+wyʔ)7otu]^v;vT1p);Eia9YDjG.oPN//eqn9ox8jE  b (*4gq?vˇ)R_t}ҥK9"7\f
+ϜYvx`	o8"i1j1xTf66E{9
+%(G&偔b1" 'sEzj˖-kժu̙m۶ӧwڵjժ@֭ڃiBF>N
+qp!\yHϣ%14YrgY ;j	@v E O&~z4cG_'/Ehh~f]'Ld#f&%,h
+[i#8JG
+T
+2c/D Iń/V-iA̄p!=-N@ SnݺգG
+*d#ҥK7o<yrΝ+W:̙3wfPB#>$*>I	)Y04DYƣ_%YbJET}nrPH$a8*  " '"ٳW_4h14M/ZhȐ!6,P@b{QFg|Z;
+2:*f!7)	~^YJ|:BB @ >|xŷoߞ.\ظqĉ?
+֐+652jNO;T.@nD*od0)[x+ͱ.%\=h?gIf;] "?~jժ:u
+y픔0^z+Yd֭ͣtU*]Od:5XM]BQ}0;TeLaJp323	
+E 
+M0aڴi
+Zjٳgׯ_k׮L2ɵklۼU6	tpr#TⴛKȟs dQtL),<z`+݇Xl)hLq`2 H8qP{`f?XT/z)\v=}4e̗V|Љ]? ]O}:D?^K_E''/V.@Mvǿ.pdŚ/G|г}&m&z<wv~?ܹ&oݿ]f5=/.ca-jzrWg,*eLyl捙Vx#'_,Etm';h]C[WWe?xZ]=cmj{8Aii+îrg\*>Ɉx-:򳡖󿣷>阏jUjÆN^~WrDWҷk}Zwt1C[B4۴;;75}E{c{P%qS.ư˸t(olڜC$f!J/7b HX].iɗ>#itfWT&V8h cEnO uF,Ț~bDOLܥ~5`ގ#=2EJ6D,* ?'c?|rwR i4MV.68W/'9\c+<$Ii\!4,qܞ΅2Dwc<yO[(;CpǕ~N^4?Si|Y=%(&!c>ɎEނhC8l'rDf%A#;BB!9%n@;Ɉ-<#
+٤Qf',oBykP/0ϨnA\S}[^۷oX&3>z4!p $z$>ST\AE:-4V(wtЉdxp&٩mr`5P+	dIr 9[l)Z#7|Q&	!WƘ;8̈́Yb\@sMKE>٠w캀9:D$^_PF	%JӨ[hBp>'YBx']֮]jK˟$	>&}hf:PjӅD [ԣa6#~L-vfE`9FH}H}"N+Ŗpy9TN%&F>N)X odày"U([j&'Xjgh4`c+"\`!EL~'"JUy+>P G&+B`J/AOm#+Q!Q8}rciӅvY>PFnJ_ rQdD?3f(T} S"xX ϔ%Be;M~zW:[Qְ#<.H9,yGai
+(yDWÖvax:D8  kҝq{bJ9rdѢEnݚ bAv.]h4޹s'ѷ 9P@dC |e˖=p@ 3 E OAaӦME  (~Dܹs  (~P  "E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P E   P qP'3U8{6زYSvX?12?G6rUsS&3M{&n8:<N]:eK_m^>Ԗ[ѥn硽;?ؘvo\Î-Go}75Ю[7/\ۍ4Ο2{-&`-lWXN[R͢"y$AXIՄ/
+ZhH>H%xư8WS>jmt?8tXמ5ѽEyw|G޿? 9x#|RA6!1^'	ҋ||MbM܃=6iQh;~`
+qh	
+ذxX)GZc;+[
+;2NZm`@xrl۶mݺuVZ<yVڵkiӦmݺCl_r tx/OD1ijcEZS}I'\ FʣˢSK[kB+,Y9dcVX1b.RM4O,YrСw& *%F)ę=TCU),01>Z[p/X؛$xHo7ʃG8^dT T}?n٤Lr9O\^a톀N޲CO>Ӯ={III*UԩӤI\.$ Y1Ag'0i<#th]cf}U"OcOnbС?#)ٿYf*9$u7%
+/MHY.`gAN<p8FݬaE^ɟ@d8pΝD 1Dؙlkn&Mcs3xD8́RNXWpFxE`5IB%##살</~4f@vWbz}{ܹs[o%''+W}{aѣD T~<j3)#\qZN-$~KS(фЀ&ݜfx#࿢F"cñL#Q4(*
+)xpLv"E!(N#>dYvڵƍkӦMR^x:u۷֭[~K uoRlfĿYk}"1AHr:+8_xPЅi-6hA977ʗ3@a<4<r"xѨKs3|mh"u~B:)P>&VARڸ2$M3pZ͛7n7$
+N޼yK.IƺuΜ9?$M@ߴ<.(S%@~x68H=$He\I|)OQP圈-a."磷G:ybߍ-a6C+trgb;91kz>?]ve˖MNNUV>}Νg#QU]#yw?:|QGJg| G!xf2dɊ"HQSQL%I1l!
+~=Z/2h"5ݾ.4~+Q?z5k֜:uÇ~J  &V<Rvy^opJjf*+7`gX_ɒ58y}رcǊ+ɓ7ٳٳwuڵD P@dRT3.ahv`5.Lh#r+x'efqMvSRʪ8,u`:ݻJ_Lcظq_|W^i޼#V\y$m P jؒ(<}tK^xj6#x*tÓ2k%9 '0(tߺuiӺtz*FjݺuX,$I^r%:< MFm\D.@YP֣5Y\S`t,b&usn}k֬YBSәLe˖9r޽{	P@<UEp5p,6I}e&L㚢lJCd]_%&hsy z^W^ݱcǌ3VEFDʕ;w<eʔ͛7_t)E ϳ&L4AO8,95툝E5I>\=X1yɉѷV+<FaV^=r{Xb
+hذ!C-ZDȝ" (HYM:<fC,Za\qE쀢qPЄ0i,t*G1!:^0M&ol9sݻf͚III˗'NqC YMq츦@G1c\RGINvREV,PQ<KM_=;2`u֯j|֭;`߿_wuP?	TkÐBlJG;zHSt(rZ/p,hSGԀ
+/7(]ʠ߸qc޽_'|o͛^_|ߠ(~T|^K I.՘.j媌ax0)A|ҠQ{fIwCEhr{ࣜ$'heQȳh石g"-@tL2H#R @?#I{	$P@\!X"WOF^6-ڠgICSv04FVY2&I:6%wYӲ.9DFGN/_`ի/_%Knl6w+x E ONSXpse([X+auQKD\;rO"1琗%l@fXg1`˲Jѣ.lܸqĉ~a
+j֬ٻw9sOhH<['Nbtleo2aa#~ݮm=c;3Wo3]y^PVgwɵ[F|/hf8f/ԙ}Py뮍S?aAQ>bjt);r3k?Z5x۹[~.X4|g5yDJmcGv,[yۉ~{a{_.Z2{fQf`랋mhKu>hH^Lp\zIu\o,k&f|s/>O}ig9euٸʫ45t	_?|heKsE:pY&sFڶeKN?8tͯ}]Zӿێ;_4vָCon{5n?iلҍc~a{{вwn!k$'F<\.V٥Mci"-y΃vH*F[G:	#z}rةn裏^q I@8IɀP\I!9܎ʋóEy:Y"f%wޑ#G-[f26mp͚56lnx<P|#guIN(@&qDZ!5jh>GkG:"Je{hCO\o0<x1V
+mԨQQάM$+1f'ݴ/_N ̈́&JrY'pP֩|>$-Kx㍤_K.SNݲe˗/Ef>SMi$N"WlSa|h'/g _\([$xI}#2&.srƎ漌SPme׬އGB9*T9r	(8̡$J[1$pBzylZǏ_rޢEEK7:tŋ<xD@Rœ"ȶ@:]=gIJ[kOSx!5i"I_7\ٜ[^ܝË "MbFg=J>ҔfV;\{L74~]fϞݫW5j Xbǎ	شiŋ>Ĺϲ-sR%u*re-NǴ8|(IK	I	/Q|nE1{kT."P wFdL<1aosx˔)sxE֨:
+)&]dتLF~l8lfS 3Q	Genb IҩS֬Y3f̘VZ(Q"8pSRRn߾79"Ί`G׃(y⁞
+<iͬeֆ_! ;8,CزTFPfLҔH%X"Bo_`E#G^x!Jhp+I%pJ؜EfAP{%10ulp={X־}֮];99lٲڵ0aϝ;jA%ϵ	R]/:ہ6ѥd_e#{[!kqv֊xH@d`1}x.<=x+CEoݺꫯ>9UHXS?p9sfݺuǏo۶mҥq;o޼yn͛~rPTU}grY#h-=%AAGdxD\vXGNi6
+9E홈IB}yExeTZdIZPxڦuË櫹37J2i:=$S?+p۷o߿:ueWT>`ر=˲/.Il!ӊFDњ9IiNFWhtq$mFy%xYVC
+iH#Q`ttgY_3+f4hCr!he]kte/i,P\Jr,c#-(j8"Ufm -`KᖂL@-
+C2HofrLЖspdȤ>Ko.}oݺe26o<o޼cv5&&&11qɒ%ݻ\'n58{n%III0`@TTȑ#g͚S\\vʌ@RwqvI(;
+D^)L'ʻS$qT͉ke(er0`n?׌VP)<XKt8T6,Rp]xq߾}+Q׆)0bLzꢢWkaS?w&LXt^///w\.mrs	'x+YK:.N a!0BBnflꢋ"z-lčATZ!*]+Z6
+Ν=s̋ݻixO:4AB
+333N:d@qqqӧO_f͡C\44H_3/A^A]0VJW;*iX%9=̉'O{polٲ`q=={?~EӧO_&!2@7l~_3.g\KVܭs禞YSitი7(.JUÿ!NիW{I8[o:C_3Z6%77ɧCF>V<`gLҕq+MfIsI8^Z[=yϘr5jx0@ b{{ ?>,@|AQ]sΈ#&Mo5tGv!qhu0*10J+t+$kyK%&}T7}މ'4eeen
+h C֮];}8D2dԩDvKrXgϞvj칐 fKT~SP*Lkc_c}=]|0	k[%V3W,Xp5FAW䡆7, nyy^_t	zݵkǏM&g̘qƍBh	F`tUrTZ!*]tc&ۭ Ům<^m^jx7l`45@4XZ\\3k֬#GFGG0`ૻ{n[kjjwц/ #@-Q0r[tJA=tm,bW^&!&@*84#8R
+Fodjxr?«7,wxt	<w}<)ZQYxqC*!#@-#4*]WB܃װw6m)]i4t6$a
+ʆV*%CP
+K
+V9*Wûn:0?YG\~Dpׯ q.99z q_7x⩩ÆX, !|X+]ޯ \1Wߩ]m]$4سu&]eDTd%:Թ-'Y4*k+ݵG{ lشދҥ]lΝ۹s?ѣF={F9r5;>;;;@F>n3aƀ-vw5``G^v &0ԫnpULf#f4$i?Sx1GHd윅KL]jxÅ7omڴiܹ/bΝ3iҤ˗o߾w/]4n80+
+x d#!7sYiTf	_Ezn+=JIaCw\|ވƅݫRL2x:>|ƌ}Ç]քkޣG
+BpF QZx^3۝1m8nŴrI$zx48Zʱc`JGFNv̘yY[޷~;4m	O8W_			ݺuի׫x⼼3g4zD *LNNŃ gn(Qv58'*p#VIME=LAԍ	Y֭[y\۶qZjڴiO?4 gywQ(^r%Ĺ>J%BNG3B@.#Pt]+ӹSՌ7&	Vûf7Ν;fY-\W^_V(|O?T 466vl?kGg؋j30<5@Q4F'pƯ;y|۶m\K/$oV^-b1 z7\r}.^Xd̙ӿd/VQ։
+NTۘnPq4>'xPPfb-4)))aBܽ{b/Y$111&&[ncǎ7o^VVVǎݻwo{XaKg.nM۾\߆`Kޭ4eMC>qpH4S)$)GǬVQVV,Od@{C.Xo|0uW̔/۶jSvOnȷ/>蝗Łij #瓌eܽqld#JzەSEv %gxw:++<*_/,vydзU+T`mD8VPPΗ=޻+@T.Iüם/yvKI=< -U;cM9W$[O񠧧Im*[av-7oU#cs*_Hvf'9P̋2븥2w7tU^k&W$aBFiPzRn4܉W\=lcڳg4Gn9/eذaΝk<
+W_%iGnӭh`SZt+ZLeWK%SL.xO2o݉2-t6X#yjTZ5K0ʎD":-߼y۷ojx!߿Vյ^qL,qlz!0#GUldKģ1y=t,y.+PiEq-PN%RJxsΌ}u着*7**5.\OHHtukHm"gx6=t0L!H"aUZw)y^ybJ3fHͤ0a&O=h<&xF #>'p7QDV$2ɑ555<?4o;Ė-[Ȕ[ʌYSfv2ORhE"&z6nԱ6.S}`c2p
+p40mpHҸ
+Ka)ס#i	=YY˿i3<&0l%ӸGL0 \\@9oGaa!/_0#9Q֜ZI	"fϤK3e7Ft6LF~yZ.E4 #@4Bkxm6966$1a#gU5(^i5)	]"qF3EZLrΪߥH2L"RE9Uj5h&	" Z</<{57o>qDMMMq
+# ׿(Z1^qdV<	e^$H1PLrKYJ@RE0 jv?Ϝ9sQQQJMMسgOF3Auuu>}@zz|v	^	t	$tѐ#!" {;v jRRR߾};w<f̘7rrBAqqq~o߾B0  2pt:=_̙3g;vJ+VعsٳgwuL# WA #xG<s/ k;vέWl?w%7d2Dƍ%%%7nLKK{:uO$%%)ʂ_~7ի Րs!#@ "ϟ߳gOFFFJJG1s̜ ܌oWUU5tP		6lx7\
+endstream
+endobj
+9 0 obj
+26598
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 61
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x[WIK7=q'6؀̍q2[%n	}KuU%dan$=˧W#3""Yyp38`Y+,'\mQ(
+A8`:ZWJTBQ$i3"z5xOI45IJ~ VUT,.=͆j}4==Dc#7d1*tɕ*FutlzK*r%bx)8`N
+Y"F5[Ũ|<cљxd=;ցHm;<z#Έ)U<~~/sdx<H$J3'tS,+rut:JL@(dk6^ncl/ίmPdes4ɾ^biiY8]T*A[^D?z9x[MX8zGtj=p-Ou@?m&Ud0zj+zf^
+:0/eQ^5YZ[=QR	7G^C]N->iTl֎otsqEj]nO"eAφ4n`'A7;$ϔs-]
+)F2iKc+qR>[]+F&GzC㲱B,mm^k=#bi"_p8HVH8H@CEwFX#-5pXclxӛ?hywܬ"]OMd#/KJ,bd2aXBx5{=~sW9 べm2@?`0Jp.awLڥeΠ>QKlP[e*KJټwqzFdV9h(IJ(%nmVAKGGGN,LPZ3jCj
+̹LeάCtYYCaDptvQ`	{uKկ74`	DXΈ!rA ObSJzP(hr$q.[^*Eughub9u[EＯ˙lAdk?:Vg`ptyeiQq..-#-Er ΅b?<<Dnd*	rB!LX<5 }؂L+,%*hv`Hh8Ҭ#%=3cɖuZZ&ʠ1*^p֞c/({~Tpڧ	&H9T`D*:v`6"yi~A15SkIJLO}~\\+Teͭ`25r]>qvLLWKNI,Җ\"SP3jhѡr|beaeZ&O3'akw[fƨkП>IPid0:\Bd	#x+k F!qنlb۲_wnѺW(AR5๪^lac,su;J6ra(	!NAтw
+38;*^Ng(LX0dRTh<FNTi,Ƃro7,eQ5xq\XTth4s`(VVj_T]]=RōlcέZ3{T?tL.{9r]fXs*5;¤=DfF*69hAɀ.)P㠔XR9:jje*$+!t*n}*%zREz@$PD49<Nhww<Uo2"TT5,9<R17 FUɕk//l!3DB<FJI]
++Cc-0Xxd%U.?
+³%hbAN:zy֍_|?߽{74oֺ{D2
+\uA,l.w5\.lIb{ƩT]eP?LGk|7qG$qG4qr oZR@_=YƧbyR#⋗$&l6ߟH$On/ 7Hg.sygZѫ[.^~L&PF 3Erފ6ԃ0K}t%Hzo3~WdUZ8FkKZp&U79PDT#ӮTMOM=xx^[_WrioDsOǋt$*Ng|~ M[ۻfj/)~嵍%iLB-Z7<زI.Di8\.C!ۣjۓ#]tڼjI؄lc]R֦2)p0m\UC=Ծ
+\T:ʂRiuډ)rnnxtrٔl	==ӊ}StR櫟?ԍ
+98)l%*DRid+xFuݾ?36>98_hwvԀȧdh0z_Ε#0Gs2 ERbL/!x$0dτYi5:;jbjyllEͫ<ˏ7IJIכH q\(qbII4[+`-Wzr,+'_݇^ut>Md|hQzwopdLN@=+8IlH(s;\L4-l$ebPpK˻-Zs̖֡qxZ'-gR>w]|F*3zW)ѻJUgR~wGQtFIk,,Vw1w{;JWbbgS#Kb^sO!)4IG5Fd<o--4VVsӳsrKR,iLySf4|\|IHeT=!&[x<W?;_~wow(*Mfᑿ_6=yޯ7h0ʕJíbbe_5w&[*p('poA[['𫵍EՊ#FőI|jlgJ>ro t{6xk_uųuiE/΂-~5֨T*$) ⴢvu+frՎjsی?<	BK-0ɤ	\_/etTL9n"ebN)*|,c}5Y!Xr̳+;JI8ѫ5_P641>"ϟ>~104>:Atosf"|R(1C01!IF#<j޸[KV95Fx]_Z_Y^_N`1T@G{S11SX"0#m.B2l*SǱt<G4뫪'JټĔJ}y}mmʝ=ZgfkK*"L Q~)$1Pw{x)sD[15128wށ[w~sn4,m>kǇ4kׯ+{z_,ENLJRl1qUppYW\YQep,JNl1jz}XX.5zr.eP8JjM-,lzIvvWnI1
+a_sv~a~f;ŵM+j9PSō~Y$ɷkH*B㡐(2@Vk1[@^]AT)c&iԨQ#tC!7_~E^npmvյ5^<M3cֲ޽=-Fvh.#33CDlo`cR˼ELdZ_p@c'#''up|B>33}_3={߾{^CѩnO,` =JV"ۈAXcdUWVz*6*6x
+a%_$*U$/a`"
+:/Vx_dqq$u=%Jءłqjap[FD_[ݪd3_?wn612c"G@C IUUA/T,0" )KDZpZl&57Tkm;[«c'jiU흖Ϭ.(ޑUIi/LSe֛@N0!$Hȉ"(@b$P%(j`
+R:q"YL/-,2T6=<fI%Nb` M:Y.nԸlo&!wvN'qB>1>:.{V	&'\]ah&<L7"LVKЂZ@iVs</+hÂ^v7',ˤb>_(*c|>HRtK6JX㏿?rvծe_C uz'ɶ6	B>ֱ$ 
+endstream
+endobj
+12 0 obj
+4882
+endobj
+13 0 obj
+endobj
+14 0 obj
+4882
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+4882
+endobj
+17 0 obj
+<<
+/Title (PacketTimeline)
+/CreationDate (D:20140209185445)
+/ModDate (D:20140209185445)
+/Producer (ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000300 00000 n 
+0000000383 00000 n 
+0000000401 00000 n 
+0000000439 00000 n 
+0000000460 00000 n 
+0000027240 00000 n 
+0000027261 00000 n 
+0000027288 00000 n 
+0000032311 00000 n 
+0000032332 00000 n 
+0000032348 00000 n 
+0000032369 00000 n 
+0000032391 00000 n 
+0000032412 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+32593
+%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/PacketTimeline.png ns-3.20/src/netanim/doc/figures/PacketTimeline.png
--- ns-3.19/src/netanim/doc/figures/PacketTimeline.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/PacketTimeline.png	2014-06-17 10:33:13.897995931 -0700
@@ -0,0 +1,155 @@
+PNG
+
+   IHDR    ,   7:  QiCCPICC Profile  X	Yy8U\yysD\5u	i0BIRX4I	"
+ D2|={s^{{}'EE R-=< x H1QF6A^xo?
+ Xq (
+ HCQm-6	 8- hI$J0 .0: r$l	x!\DMb)D+D
+cI	[/EDx,%K#|A_f27tx?p@@2 !67 Q GVο+eoprPI!VpN`CPAds+X*C zȮv3@ &iSM9!&-Jb>D1ߴ#b ڒ'mjgKHm6f~.ADQ7l'Fo7nI4&ON*y
+%mߌW3ca' 6!o?r\| @ VM$,@""!Ov[ Ri+jZF!U0Z?3Ù,q8?75Q`ǆa?`oϱߒRr
+%ۂ	(BE?<	:c80<@-1@!6ۿ?|Z2꿵c?o)֐A oNMt݌n Bt#}w|;{shGZiFi_[ISaQ	rpUBV
+rB*Jj l< ,8ni hok4	 @_8!	YXJܖ8|`0/ Q mR@3gvAA:'ipP4V	AxFalLY0UAaEADET-D1ClGEH$IBRL$9\B*my#/7YAQ(6?JBQ(oT0*JCGEQnsjh:4Z-Bў 4CkMp9OÊĸ`1ј,9L 3y|XY
+ce[Lbp8$N~P^\<w׏{[xYOS||~ ?ACG#HBcNIIBGSEsfffVV֞66m)mSIU3AGp&	g	5aNNn Yktg7?N_NH =Tqb%A! CC= gFZFqF#]y7212I0030ffZbfeVfg`bb~<͂g`1c	`Ic)aigyǊfe5agMe-e`dñIYe]eeggaWcweg/`>8qccӈ3(g 2/!W WW-sn!n30lq=<x:xxxuyy3xoC9+[o0'0#*/Hl(.d$.tVм0p%^UIZqQhhh輘XXKqZq-3]n%$%$$%%ǤRRRRϤqZadP22!22OeQdrX9mHbayzy#8j7
+
+6
+)
+
+=)++**(oWNQnR"RLjz@QZuVu[mM1M_Ba-6-,Xmc?u4t:7tVNot;==%	}!}_$beSFFFW>+So/3o6005c1s1;g\<ؼ|Bb}KeUv?v>gFƆbdn{vN.Ү[ٟwtvaGʎI]NN>NUNߝO8Hĺ2zV.M+s {4z=]=<v<sK+k[;.]0|nb}||HbҒ_߼ À܀@ `S3!!y!sd9PТ0p߈ۑ,av%5}:zbM)Abclp+{(M~\A܏={n3G$$MJ4Oo[pRrқ}F.Go; z AɄ')J)9)nMii8TΐNI>{HQգGed<T\z|Lcǃ8q$dɡlĜwlO
+f.9(O-L왉6gO毝9h/e\$_dqX8WWԵ2̲
+ǊU|U'Qձ3W]5X#_s6{uC7oԺYS'^WxVF=RP?0{&ݦ[w77e{^ڽĖQZ[ߵ?{AouN.z<XqCFw}zϭ'Onj?|اԿހ@`3g{OLeуcرqW|_KИM[;y6!oJprZey|ΏQs韘?~\KϼW׍oYjmKKG|_]Ϯ=kMmDllD(   @  ?9"#b3L.`@J@%0BҜ%(a^e 22dNa:ykG7 `=nQXTtK9bRr!}T`Z2W:uk猆;LnXdXXN!8qt:sIw=vƽȣܳvgWwۮNnߧAaр~B-ÂD\۽Iъf/a q&	O`U)	+69v4"pfiVױ/'O:fgt2v?3wγLa"ËjKE.{QV,j2_Z{|:[Ɠ<oJF+ӎ{@Aww={Tҭ=ՓDDo>~g
+~>&hy胱_MM,y]{Iye_^N?iX7{}ڧkT_m~QkpYݕ5_ppDF"Ga,*5	Vmp߂N5hz	st0 #IYővcۈgUiqAK}"xu%vJHΗ)- J!E1\QYMUeJ&&Z:@n6/=	/MGٌthH30\dooig`/@tXSsKkŝiSKܛcuY{	Ѡסa/#^F3$e6fϛ (W!Ic~.)i7ua8ᑹ/X'5rO֞r䳜(+t;OWtT1{EiOU$ͮ\M)6sxS~_Cvc;#w*?` s]>N{+T{{s!a:/G=_N(^{r߇is.}QbW5s%	N1qE(5Tjmn(aj6;nKK3M{OKoCbgd"2YV4%cGt&"%wT%"%$Jݒ= '$w_(*Z*)(k+QTT}vB]_}V㌦'|m3y]݅mEz6z?K6(*&uff	Vw66mivDg;UPN0Fb]>xQB5}}_-+_Az!d,y&I	޻d)xR[ئ=	.Z{ڃ,<)it>I:r''sZ];+YB9E%bJI^ieʕUg{Zo݊0|INX-lln?m#	=<OwU:>kz2&M$uş75@I1 nlR9 U gmH	X]?,	5>+p1ESM9A`4]CMއ@? i|bm&"N	W[h44մ(Z/;~B*yvӻ݉c~3ь+Lǐ,R,fBs8d8pprmŏ*.
+Êu* [!*/'Y%eZ!˪{Ԝ545~i:9{<e/n@kQq[f-n[޶~ݺʦ]=+;N)/Uo]>;}CI~Y\φs
+ϊh%J9s*NjOl|g"^j~ɜ)i,09FpNUnQޝ|/gvmTWzsâh}Q㭦'[a]\]7|=z0UDۜ?tN}_.gx¼jo9Y<<; T`d#u0G٠bQEGEۡQ\Wvc1CX:6[]ipwXGhh,z'
+ѳ_ ZY,l[9G'{/:M>*:d!Ka&QrQ8=<iY'^ZlE*O45ij7ҽ^~AaQqӇfS?ml2wwpsnwt);aW7H_|/M}BF"#-w.j$'!49i_{9Sz$O;Z)UxDA`NYglΎ]>v	Gϲ'U-WjjUݨ+jjrlV2~XG.O~45ec<5ĵV&#ӧ>rf-}vr~~{rğ+k6طƟhcGC$
+t!_Ṏ5<ǩBF8U{y
+q%?@ISBAM`')ӍЧՉELlL̹,¬غ/qέ#ʷA_UNZLT\DdԈ̆R!";j4*Z>ud01eggI۞cVn}fGo2WS_=vy:%%}
+L$GvFFDDQc$O:ǁ/SSJ=rdq֥ȉrNK<%?ܻB//V*tpz%ӕjI9y+~1N]{m4;:WV<v!<xo0a(rDѸqW'xTGY9_L~υJ\F{~_v]a+!+}k~k:k~cF5^1LX  zjz	L6 9̛nNՏF٧  iTXtXML:com.adobe.xmp     <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:exif="http://ns.adobe.com/exif/1.0/">
+         <exif:PixelXDimension>518</exif:PixelXDimension>
+         <exif:PixelYDimension>300</exif:PixelYDimension>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+O  @ IDATx]\TTHPPAX2L[,C- ,B2/Ї&Tz12BeM(
+*
+
+vY>T\a}˜sf9<jkkYҒ%KP?nAY*B4 ^!裏FBxa.\`@CUB "	FXiP !@ CP: !@%DҠB0"	FuB0J$cA !`DA !`I0J"B$!B( `E!RMotVTԴ<#!Cez21mר:$"pauKάS;
+"jͩ"ޏ<?p\r!CX[j
+$qMmfauKIEg-(8xݡ9TZs/OgFJ2<f;LSʊ=q>Lr/BG3${_vvRȫV\H\rDΝziĈ=P&u\x͟t}i)IkWs`frluShI]P9]^a AlN~=IhT́cڛ&hoFk?ŋop3{WbrP k׮/ɓ`.hȑ#߱O':w$^(E<f&3&z)1)I[z^\*0wZEт 8jNmjWb&H--I-פ#_[\AJDJJJAA-zӔ)SWǭ5ʽՓO>w<xPP4B!tbE9
+nRBk*.uF5)Nqs`L#U)iJY2Z..sAoӯ@e^	GkfeǱ,bzT*ཙϚUako(ּ4hO8P2B.]Bi{DɚW]]ک??954*se²@VZWϢ|#;uP_Jƅ#Lh1?"Kʌ0S!	gYv4K	s}^r֭[g̘qյk׎?KHHؿ˗4!F
+o^𧸘HGGJT3coNTa3ꆧߔXNG$"fVWf֋#ͽD@~K_=~	2B|E3Bq^G$,2Ǘ]EC=b+ver\ɢ?cݺuGׯ(ggN:nJBhϰwt4nMNm bAʀyv_dYyX>܍JL4ǎil'ԯ';T=",;s2Amn5df|c0%iOʷVe7dԼzÆTUU6/!@!l8|,R]ǡ84TͺBY|Ȗa'|,mvyޢP}gNᕒ! =ǘձ_1ߨkK}ހqz^I`,P8;V!J,|Ν;#,S_,rW)~!o޽uCM!CHȘ<1z5Γ	dAމXk?4?$S&0]VwM);xe1=*,	br]td2JrKKg(|.Skpu34g|ꆢʓâb&N'VM_p >>6 "_$JmMme:2wBNhݾ7M?TWS-K_Vwn/s:%_0>kC!iR=?7hەSe\,8[nCv4t`!<0FG-FO;K^\GʷŸV%HdcEZ&2R`fg]V)W[KJȩO3or˘ P$I:)oD)"Aľ7
+=Ztbfҁuh@mG,4͋˪-)lUTZ&4f[BHBȽH(0EV%ɚS0IQD3e*3h&IR,_	>U$ݤknBlRaݫWVV#"fZbΝ;+++umPhW\pW^uW=4o>&;)=0X'UJLÏY&B];L&W-ESL'&eOҶnE.HLn4$H`oV%a`s	SX>Ѽ!-i
+Hvc4!3|piE:Ct Z$tSW	&6n3ߍgHabnT;ԩNK͙Fej<%ꫜsr_;[i71v(	`=ӼW!m+177~"oafL*,;v,_E<Q{ŖVٍ:F@;GHB;@PbdeV'N&sjcŪ;$l[#4H!)h(q3MPa:޶[Z5~o0Mac7XsiɨaGiR~_v:^m#<%'Ds^ۏsM]_`Y|#Tnw1LʥILɊAe9pKs_l[2@U{68A<wlʂ_&DC:Q6~[zuQQoMFYm )b=tǻGͦc~WUd$Qr'`3vMJ]8&OfB]+@1ׁC; !~4w7w_\W*駟~7nxaـ.Ӵid2ٚ5kƎ{yy͟?n9rrr\+m@s렶ݑ0sG0?))vP Ƭ+̢éýd	ygPt`heOy|ƉAf!;ٿ%zY䈨]@Ш_G b֧nW%!7~7Fͦ	:!LJRC<]u: Tl'pN~8HoM.KlP{0+T%ֱyLLl5()s̱ivc3{NZ,.7ʧQ}7VDyD􈀂kW_oTQP];$9K dɫbB=-dy5Mׯŋyp#IVGtW[%KPz-)LeIX4gFM̓Jds5DAce3iKN6Ϩ]ZO*<oƸɐHrvӣMyUiXk*U.25E&Pºwl/B< !6aJW[ Vu, ШJGnjb8f/).VD`(Ț?A?OdGB%=i(g&Q2$(rɷ:ښ׻E˿߼@AU3YI;Zٹh聲dĈ̫8`5SAǟ|^}UQz㏿_C]SS]w 11*oX9a0$\"eit^]
+"$y'#@;?VrM,fgDU3JreFldkQ|P~+/΍s6as񰟼>cω~992d昐TE_x4.ݞN#u>CRSeB~8t @$%(Q;O;}*Auv/Ae@6Òf}aU1#^qgC}f8?M̴XRh7}UmǄ,M0H&O8- 8WzSֶgHʋa];VTC $2Noyy9̪uDGX]a :$E 7|S*23g?4;fko}͙at&A`W^Qqzsx6uuvԄ_^㲰dx[95p}ꢂ)s[z6v`ϢI"@fX^Db۶mЅB aj AD$⺩u=Dh̭@+ٟOwHe!q友Ͻ6㕍wT7tjjڙ<.cnk*T [}Sw{V"74_c7xpA}wWˇ?JwWq7{0v췢uq5mkꚚ3O9s|\YUշOҿ h<>:Pe蛼!Gʊ,ܛ5)sr^΍/S	7㵺dCwg8/~/**벩3ܹ+;I/IW2;Z.{v8$XbEb}yy܁1I#YfuҺͤ|#Ȩ 	cag!/H+w	Ֆ벫y%(e
+e]0`,As.KejTͿ'׮]C\R~_H#PN⡇C6m?܍kU0%αUq'nZSUg{LjM=UFPA8<K9G)FSXq_;+onnЙvTM/+y҂=y~ܷ].;E/
+)X
+R$*[u2QwwiF}j1xʲRs|EE/00^~'j2jO܍s;"	Q)Y_}Q(N&ZUԣE8RrA)F#e	hQ9/I2QlD˥IwI3jkcΣ})b񢈲bIj\_n,H,yd_y\oh̘1u!,QUn
+5PGS\)㌸LCTk]C!b[)R"
+ATXTKFtdeH*7 Jbׯ_aӦM,xgΒFHB$SKW |·" B`,8Ⱥ'	XbGNU&T*[OG1u'Ut!\RC ::a4@J*[`qJ6j_]g}vP'Ν_ٳ\滫UK%9Ԥ`F`*^ri,&S	3'wԺp?zVpfKsW|.7ϫde²jY\nIºM^se`_̞=]a1XX#=uqRhڌ$|[Ua}5Jnϔe%w	RIFfNJraS	4 <V\º}լ+P8hI&VsHgIܖKxM_k_~o٭[7#ŋC+	8ܴ*L+s#5,&0<XoX$M>C|"Q"bz\Y(82>)5pmC4D'2ݐ(7###N
+I5b©_HHpפt"p7$GkMKsK[\z9{sbtpJX|4 K͔b|caUxz Ѫ}Ii<}8A*3y)L.!pH2DJDt643)O Q4-tfMڛ_7;zܹ#F褣 +Eݗi4-si308ac+7wf-:Zp8uA8d3q8ث֍l!LɊ/aD˫򒒒@0VHZ}(BR%VY&dS[*5lMAJ6D(![1GU^"tL8LyRqF<Iim}Fn uQ[D麮smxdyǒt(X~7oָq\Ţ>x8r֌-S^Yz|LBjz.xGu|
+]V껆	[ǏFEE`;lt~8vr7h]5M|,RݕǱlfD,v~H,xOm̳,TƇ1d\t΃m&[Td~2t^ean5TU3,F_ӀmOpUjU՞s=d}Q>ʚyhXZI9ڍy0݊ըyo<riVHxF(
+<=gfcۻ/<2$???IPnw8!Px~(N~8Z	;k5-^^<@8IP0XDsK{2P!i}=p
+]gz6SL6IѐXScmJ8י#μJ0:6{nB-,w(q9畴	
+bʼaY1]g{f^OW#?~W^^Zb>8tyeƩ55gN<.e8xy~ kTݺG6o[Ȅ J:ʍԫ)ݺ}"PٸeNq)1%iՅ81V\$ӎXZeSP[Z#VhdcIa$tecI|ˇ>/	7P̍ 0yӷZev,2©
+4\AZI'J8Ѵ k6«(<~S?ҥK_~i`ỹٳMխy;j&)|X!T$_~P"lrr2(J0^Mfj*ʫʬ;WT3kfwt"{9o|y,KdLΖAMɿqBj4DS0s=֚m#m­i;Q$z`BXsKxSx]\?VDdqi4g3eA dm%u	ɱΝYjrkcU~{qk]ݾ@ ]B`ηqzѭgepW3;މŭoCW;$&>s|fΔ{؏jPi:aOMSn^<Hv/ra,DZ䆨U;Gd	cwFj^}i3&c.}S7MZ
+B"-m?$s}b|frGqqq'N@KD5S;4q`J
+}vBP@vھt~EFj}pQB&ظ-L|7a3tw2LM TK͙^#kgС%ꫜsr_;[*N(B9C,8Miޫd9&H?Ё۱Sf=u2%\_B~
+{C{ `ߎk~8,vܹb
+,uvvO*{+30'tNҖ%Жhӽn ̬L?*̝o\x'Uw m2埏	^$OpQk<Mr~\QEcns3U)MښjwxrojRs8ڢDydu1n9n\Tcǰ_»	{,$8o ?#UV!:w~rc9qĠ [xC$^]#`fhJ5iqnvZ+b,`#qss-[+Be$pKaa<n@{?ﾏ	>4{n!Yv-~ӧ3_~Iy0k,ʍW_֝:"{ԙ;mt!~*7RRR.7%H^ΌUdao*Ss-އd?'K9Ǜ*VKspYx̠qӚ<eߒ=L[ ;e/f|qMyk8}"Aּm<I`:ld`-w޽:-.--&Lw}m콛y$!`RRRet+sшKqg/⋗oq닪&-
+#v-tTS[F5v&H;kͽ#dWaVvX <AH7noee%63.&&&X}#+|x;Pnp)m3/F
+ޑP(|WaCW4yu}!P^b#UރY*s+s-f!<EOu^|YɘX11b]oTc(#:SGQ<-?.ڍoδr\>	[8qcSg#\.5/#8dmmȐ5o0RA!ذa~zH ϽK}`go+W=z4 AA'Ic@@c)F]UⰈpI&DayPi,@ޱc^ՙ|30~y3P}f[2IaLW_ˋƬK]q@(d݀rJ:|C&WU \ΚKּfp@x";:
+S{<n.HBN	IZP1yETe5gm.dRz;TkTV&]G'c$i2nO.p:$L_TRk*U.L]&>reitmvvŪSf%p N"m`g O;V
+Ԩ <>La[IhGIh@ꊢܢnc}xgF#
+7Z[=c<u\cuM̩?c-G-Xrxۈ^1\{~uX8y06#?#oeWqiB^1G5nŊYQe\	OxuD)7t$ܤfDӍGF1+Du)ot>DݹGISwҦU;ypdP'S'qC͡z{y Q|>Aj,H-V<M=VLFG!yumE[^^{(8Ul!8 Px|3fL$轉ZCBh"A,q>|j aR>b|טxļHft9kF>$ڎ	Y65*\RW/Do$q͘B angLPRPBVi*c15-9wʻӳQGȚW;̎:BHw:GpxaQd%BK'[}/QGS*23g?4;fujo}`V[ʚgN>rpo#=N_4ާ dݩ$bd Fԗ2aUa*R$v|lٌ/v|s`>MּUg͋Un>jּ܀"^CHќ9s3رcNF kC	"p_Fȓ0䰅bXU5! BHNuEv&
+r-|#b25-rc.jN<XCuW?sıB\
+N+IRp,~oeC Af9s'|"!/LA ^7:M]JP.iBXXغu<}FӞ:HP(%B) Kh:;?{I
+RDA,q`@/pF1IaTA/t/:W<'N;WMh.<Jq>Z((>	Kf5FZ>/,aF n'Ȝ{xa082 4Buo%
+Yʫm]̘xck_L#mbMhU)T&.ȑY|X&5dּ{@	ҤI"v3Db͚5 O_{5G<(Ѿ`kLLY^|v:!<=uz kV(_⿐{WzQ^9Ϙ?}c߈[+>"q氮ϥqE&EPq#V_9sۻg$o?2M]CL4eM}8}t	Rqm1qj.9]p& 폣S<o_A=N7^ъֆ}k-%	7:^IwJqn<i1t䀤+CENOk5'/{@zu=1n!~vqmP"7οBu=<7f,gS>׷&;s_؊w7=@kS?H1m}C/<n[uO|93g&x>d AGV(gO%yPS1/VV`Y ѹSg]yzueg=ojH`]{GyӞ4T4{AxYE\IUX|v~$	9IUY,'-&AL1/ A\]
+N)oN܁B.9K
+k5ReR@RI$>t(UKr)	!($Iu!-h˖-+y~Ǡ'Ĥa-S  39{n[RiTg1QTaFJ$.7rQcҋ3>fT5N;"sOU*rS+H %O3mc!W-+I꾭UfpXdz#Yz|LBjznaYN'JU%͈\]QaQo>7oMin#"" osm"@gn4Z8^5YTo#9Z
+zӑu蚔׀}'׸q;_Z-ׁvDsEʂђpqX~~vGӻe	Eӏ1in<riVHuI(
+<=g~mEZ/"=Ix(111eͫk{ｗ?zyy%w4vV;3-CdM.bUe.LRX>s4B-VJvĉ^Lq	^/Znr?Y:_&ݦ p+fqqjyMM'9&/c& $3kV5gx9p ܣ(;޴꜈iR\alc/fNޜx
+-fbaD{AȪ*,:,&IX1S*-23 F L,|t{
+|y67{t	5TE]ZBL:[[Îbd%&&:hIٽ-AԿ`2jށYV޾=Oqn,ΑWFۏ^f%&C僽4kNCmZݬt 	c4e3;v5}[BC۲0M_~@u]޶I#`ap9&Y7@(h	\HB5)6Η0yQr=(m[BL"\LB/]&xIyk.N8N>8pe x/!=޵ !	b"c/׼:Oz'y'N6T:l&T|]9ĥ%޻~.u+w09qFkm}D	B+ *AƧ/bzfUXTV=CcޛZbq2Ppt {n9|͞=ի!@ǷV94$hdZz,}ZY߹e|I{|@!Zb?6!L\7+14cΖKC# ЈF
+_u~8xRԩSkga87՟]xx8TxRxڬ(V0k{j**d*eEUWi#5Tj"@n/oܸ/IEMMHkD.ܡso cpn{BNv+xfʘ?x3!@7G j@z饗R.])"_>S?Mvg@nB ;={$Pa	j9<@$=~QG99b|׈˃6#tGBhG`C@fH/-ဳ0 O{`gk@$KKN${{-L=>u~86oތ@pNntp3׊C,3?@;4	Cq	&5E$ tH@%%$S3@!p(2 Pjʝ@4 hJhsW^`ڊ"	&5E$ho)?5!D k4·@l___" yxx@6[nNI.!@4iԩ<q(},񋭆B a|kkTz)u$M@+#]t={v킳&J4h@MmfH^}՟~iӦM`jݶJIh!PT ` g@ Uc :zj*
+P$nboq?C:h%-_nQ嗈$+*I@  395PhH{$_a(t+ f;23TT;xF5hXHaQ-B Z޽{O$Q8~8(6_(S	CÇ<x񮱱@I]x":G$0ܨ!@aG)x:)֯_#h1DPPг>[EEEܳ;wQ 7NTGL9Wh#`L<̟kڿʏ+,**LKqYQa}b[v57[k)IZʬBCp.s/z_~+"НݜF;]uygVHÞ]ZJ̕fg>;]:5uGXygkM󺰱^TyNpկJuW]:rEYYOߞrPDCH:+dhT uGyVAB1Dz揆-I񅦤=nri5>z1f|uLHŖ9f6e-N}pŖghЮ~soBjT},B8=2e˖<BJރkzz:sɰt6+XkEYg*'?4nS/ۧŬg79YZTMY3lg3ɨuCX}:u\+_
+<Kƅ ,uhd b
+X=lAܦ"̛BG$(zFή[BNI~j[3ΘΏS07LMO^˫ySJݺ,sp{j֘,Je	B矚#ηA @[GB5)..n֬Yw?;"	=K"QRaV<9֧Z)Vrj~ۿv
+IŹK&-٨)lj+|kݾ,c;k !ཨ2 ^T1C?b^TA<@PСCw8IkmBMYcڛqԠX)+M~ۿ|5evfN^ڟ,LΝnpbVS>o,ޔ !оox2ZAӧOGFj	-
+-4[lC8\9Unwn9gK߯4Ojԣxqӓ}̘WQ䪾c>n֬9cY+_VmY:iiA !о@ Ȁ."_LLGdz77ZwGzm=u&ۇ5fJ9D̟wHߦ'&=y)+x)cehʉ>g%YķO !@om1JA!XYa*k`*#[KwtoCHZs)46_>4![ID+7m+ztiնT	iz06eLoA4?~~s'kLm%( !Жd2B4fL([7ntG ƍӝo݌!$Lj*;Tv5%7<~\9A
+3:'cKz']R|D`+`ĖmpikA՚b=e'!@sI /Lhas]v`nYM9tmiUC8X,~t%5I3zP)=]G9i6a4eBw\d `ŋgϞ܊ܖ6loԒ*wS p5vmr~x',E	BKH'믿x=]߶IAsttD'>moOZrW*C@# ÇAk05H  o;Bp볥KbĴfo$F!!@	|0K~=裘Ǐ?o<L=
+ZmL$D pylt D%C{~Lkҹ;틯-B$%BhG4X  :Fd`&4=:t(Fq
+{.5M @v   N0fAήow2ݶ жxBe\=v #4}$0Uյ5Ln [CB}QpYY|*Gֶ:ވHiDʕ+ 	Pgh$ώ>`&=p.!p?=#ZBÇ4`ƌ 6ݳDA !*r 6p
+A?S(tgDlu; |D#p<tġ=h}&=q/!
+O _Aˋ`mof
+{  !p;`v	}FPuu5}$www{}EH"H	C 3> Ԝ  @ IDATc<xױprrjcr\W@! j:<p>Ҙ1c"ݻ]N"	{3!p@h0}p&`7l?>n{? p?ѧ{m <-t5=tS?%,M}[7$'B!gfd=!	 #A;J~Rѣ͗w=sR^*YȻIύzMh>u4 \^g}w;?
+M	z3CLP%UY7Tl{mBHiFӧy}P:u
+<fmE%R7~*9K3옜[#X`jB?|vIR0-,_V뎵 I8;(
+B=(A-Zѝ.l߻pBn LQ`-3Y(/>`PDhP+֢q٫U16YYsdLpXQ"	w!@&p
+/
+?14`ڴiݻ;EAaC٘WVV[XYiAӃ	ўVE0,`7q;Q~.|dD Ix6! <HG` FЌyGݺ,5X)njה1k)Kߺ1syxR7Kůq3fΛ$
+41y(0C$|4 Á/
+h{3gX[[Sl0<\&9
+D,kܘ):U2L)9y#/ΉXpd;vR&!A~@Ix@1?ޱF"M O @T ^//]᛹.?l3z\ל<Ur~K_.&̹7,Lh"OCvGHDIcy|`pqY4Nn<`pj)=IxP|wMMͼyI# }Fg.B~zFvUufN?ɝ;D	{E!^RMs0aLȚc o%#3I\A5E)狛8<D'9U$Q|O.L{?u-ӟ"	cP޵k|m-YuҥKX; P#/\6b7w'?&9T*ge%iYNI%f[uPG;ZץO0vTs$/=$azEI}'&7>}]k`<7*T}@ >1l_FDDݸq4esǏ3@cЉЃJR9|Dmrett>+ĚGݥq9u,6uq_>L
+L
+fԅ^.QZ^!2Xy<(ݕQߚ2XY}&6>4HvދҎzE]!Xnnn@@+ ŋSЀ@&S|kOX9d_9׭gi7:Gfh'GT$&$$ck'd5l︗jVx3x>dta]}(twx֊YxjfaO7:K4BHB#@#8_~W_}8m!.,,&@(nر!!!
+\.𝰏lI)T89iķʠ:}
+G,#͏ZYSS}tCV΍_ = `)Gj|I䧏a'6_\'-%9.ZY}W;sN0Ouom쳐ArA@MILB,vvu=1fdBdت9Ct/߬ctv;	A!%̥{|,+Oxzd_ݻ|9/ei$¢ яqaReU=}+3&.J{`Hs}NCTL<$Q;EH"F!			QQQo극~:8?: >O>6bΘXiED,8n5{,-$sQ>13#w<0WCpx#;hǴ쇁eTO'L8YOlG%~~ّ1>IhmD=8w\PPЅ;l0h\' oqq1b4wߵZ?TQəz0C"K9瓠e..4H&$M"_ȳkfk&*rAH^crXܖ7]	pT޻cmr 67;j9>*}@5 	yH3󉊫'NzD@+!eofBزezŋ3T*9«.]E4CF?8ڵ+dV>/ePϾ8^h&Y$w_uh(!˯TzEuՎ_5MK^h)$&;cwcѿ_[ޔ_Wm 6nkO?ݩ鋂-naraSLnO>AuגVg90&}{f<,S=8e@06/da_N(lbr".,U73S+vCnlǖIZ
+m 6nW z=$ݺƏիWu>BBx^<?'D=	Q[
+c?5[9q*<pĂ'jZ[-Mh5w561j^Vl`l
+?ѴAۆ[GW2@!@$͠#@`pg<L\ii)}-#(?O;;9׷EMgAuk-\^I=O͵f|BcP	g3~o6`+>lDWQlBh̜|,S"31rۯ9r֫GBF Foz1u#6hcկye~בqGt.?xXv*reiZ + ;Nڽ&8>/˯C/%ـc$y:X
+יoj eC}X؉25sl\|5z},!Бܑ:K}+?O>쳬>矇?;[[o?Kzu_l?p^ϥ-d²jΥe`*ʚ{T1ۑB7T#'c	LUY
+µO::&ə;LI5W]
+S#YV`w
+j+8d7AyB#ĹhLlr]@Pk@\eժ/m95޽zpu//]_!O\~~`}E>Y]GD݇{}аݮ]Su=ny^U.؟~ݐ[6٪eCAuyU^?J]Zjʗ/.ج~=!gn{sHraXr
+'E'#C׋ˆ>G[8>ԾSҠGRw2}C@UsնauKIߝotQVIo߸6pcm{Y_|~_ӷ|ϺiBʹ7?I^ݓP/Ï/職Ȱ'_2?ZrܶK=Nŧ-m_|kyN_:g>|t7"~kh7irtE:UFrәqAKd]lWWƔ#+*ٕ~{^;v-I0(/J2rUVSUK3bqNquJTqFq1E%RTVWX!EBw@"ǋp؄xq\ad2PHNEKHͨ(7I+LPQEJ0ZKU\V/Ŧ]NUY[Xv:!ݴoG5B_]ɮ,z?|I/4$K<1DΙm~u@\v`YΥ"I(
+.TWmAE*[P}#wWʩYl]+˪3I>~~MK^s^Lbِb4AZg'Wbba^+ݭz*poƥa~)OthZHI41Xi(2db'cHcB/D	e9(*2nx!NV(dX!֭ksfEX֖eĢl|n .PjB⻹+)q˳aƝd bjiS, O6UiޔxL)Ի*K
+GwK3>SR5vd	WL||'k4E߿)X+25DAh~~꣮a	f`pDZQ-@DqӰ`<Zt^,tT&A%߰S#fSim|Yd孞dm=>Wi&k	w !p$xYY֤]e,j.wwoJ6$s7Ed5ϝw%; $ru54+VXIzh0RuwOGE&!"̙3?X_TM!Nx!wU[9	ED0V-B]!@wDכ
+1C_T#So<sm|zLg:kjJR/Y2c,3QL*ϥ,ycLYX3'M="zx`sK#&yqީS`DdY-8Lxj8'P?ܫ$Y-^+H A p8}}m&aO[6$bO5V"74#IRԘmMss4#s
+VY=qLti8.g@mgXpbkݻ7+e7&ZZڏY˂ISbhCWs6jgcE n@3ܟo.+ ҔY{ddd̈́'0I%ʒ]^dWywX2'Nso&#;W,NkٳI}#)&ziH-.V}Z6# `Ȃ[#!fuZe'o~DsF0ܮ p[?iuH+7H7$IC,doNFuxe,0Iϲjڈ.BSi֛(iEkRLN6q9xz;߉ =v MOE=V\^[+Vt`n.F$ZN$?:.L=3s*8ab8H|2'δ#SWφ`unJG?Ʉ1ʂ<D%gk'zjRlN51`tԿf3$	]0y:w`___۶mڵkݝvԁR	@'鶤K,AI߶pUEUfjmkWpfuj93sT̟dvp<^!6-=$#ڦM֭[x8-BeBGŋV 1`p5ܢ]S͞E#t@D˗#άYP/@c(h_x}zcxyyAEUR8aH4B}#@$}?w0JA5D"tUx< B"@$K
+.短5B7CH͐]k_}F {4 B EHQ=B "	FHi@ !@ Cz !@DҀB0"	"GB0:$# !`(DE !`tI0GJ"BP$#B `tDI09G!@$) C `(rT CH=R!@"@$P!@F {4 B EHQ=B "	FHi@ !@ Cz !@DҀB0"	"GB0:$# !`(DE !`tI0GJ"BP$#B `tDI09G!@$) C `(rT CH=R!@"@$P!@F {4 B EHQ=B "	FHi@ !@ Cz !@DҀB0"	"GB0:$# !`(DE !`tI0GJ"BP$#B `tDI09G!@$) C `(rT CH=R!@"@$P!@F {4 B EHQ=B "	FHi@ !@ Cz !@DҀB0"	"GB0:$# !`(DE !`tI0GJ"BP$#B `tDI09GEUc9hhh%`긅XTmJ
+J򱭁掫`X*&Ph:DC2
+2::L>ޙ !w9ϽRz$[J/"@tJ:mGPz$[J/"@tJ:mGPz$[J/"@tJ:mGPz$[J/"@tJ:mGPz$[J/"@tJ:mGPz$[J/"@tJ:mGPz"'s_N`}Z"JK}||<==@O).AxE?aw뎒k'3f|DŁۚJ+ׇԢiEmԇjA#|&wȀ&vp^q슩߀!^Ab@FWrFz{{㒯Cz5)Rz}q[ow%	~٧yVy󞕏J5rm1v]WRV\|Pb?F\#+7u"lkT`&kD  PAas7˗LFʵ_*
+9N`9^U;88m҄	{Q:uGEv)ޖ,"D<51M=U54"FEuBDaNqlP R0
+Y,I@)*^#"Y\# @ԤKy̞J_kG߃AkViT9R/>כɶO٥KxaÆ۷^pqq8q}ݽ{bWN"-`V/JnZ]aT+!7fu褁fO|3|B/	rr-%_E'k+@krֿ#p$vm CA=C<	q}c[Nz =}'S/eySQDN4r[z;v<ʡj]VVVhhź7#D111[l)--5=)="	65ouf]myvN^uTPVk%o'ĬLrK&ӕ\,@b:WՠVp{ er"
+`PÁB̈W N֧Ï_l^0|sy9o őnnn@<sׯ߽{wmmmN"5m6^R2kGԜcHV/ܪ%gG#&*ZcQq1yL=JM+[?_=T+ʄGA YfDQ-AYD<AOeqE"i޾PqL
+g}Yup<]],H~afseeM}Ouh4"4i3t+:Cnut9o{]oMae%HQ١.6.JB!qNr5?8]9ӟibex4T;VaA4Gb'2DѕGT$>94$FJX+,ȅN69!.hϫT~͛;KA$FݧO~\PZ#u$A0*DHb/[80G3  [e?~wgiLWsQHh\M2g&FH]1gd|Bwoa*i޸\2(vn"´Gu
+M/6:4,,"Z+a :	H4	\D$*O'O[n-//[HB !63P(@3$\F>3WHHDpLcgJnS.5C)[UCWRX9ǗJ{g(/;%8Q%-# ;'u 6"n>e"߯x!"?f=?Қ;89GU<4k8B$nOO-]8ێu>Go߾6uFFk;ʕ+qCcǎےz8ґ)w	k׾l]=D,s*EiJL1|0YqU2IN)CQQe[ˈ89ψR*/f:kA Rs->bsNTMɨ+ϕUGƃdR^*֞4$XKU2Gҫo&̛7l%ggw/RjjjQQNG3[h pEhun}̺ҶwAMUbkug&79wi6\p>ԶV] !(	LqUVP(KWc)ݽKO;XiJa`$'p`\/K	ї/owX1غXUY}aWM\f3P]"3چcӠAlv`atS#_ ̯K`Z"` GX֮;+(#OQU._l}n?FKEm,TUrؽH,ۈ<BykTgӠĨ@Vnq9ǲm	oP.=)ZJU]3Ԅt YMLtT;q|FB,0ZیP 8vaS
+ӷ]kf@WiJ_B:CMsu5A	=͊01p"Q&eFcîͲ.^x!9d?~#kGE"@IBqjڰV_YF8CFg7ZѻK5W>t֢NCɦX%XQmҜ8guwhODt4"biַQyd6V9sYƻIIէN;LF>`S@wFw9ҹ6/b5;}kgEa`PbRiՎvTv?`1Zs[*8,9er$f͚l)>UcuspyFpRΈ(J]s%UG:kS	0uS50V9d'&jeTF2݆4T>!H`'zWo[oYs3y<_,yԴ{%&U>ܹsF6B
+nK$z!ۮh""@]C@0}sG`TW_h仹P("y=@r%p!s@S} 
+T[Ӣ/")ȁ;"sZcݾD57? taNAH~5qĈ3g\r%,!@Ν;Ν{?pԩPj
+oX\\~n8zBtog@GtdH<Moz`]N-'˃"%112;6k${Pv~5ʜJF%CNapN5p&k@Td5|CϰF;{L8DyC222(фv=."򉿋CѮ)]S:ԎWYsMQ!Pa܌-š	!vUA2Ҟ",k|n`8(VlhBay\D:?@֘]6TnFSo?L["!Ql{y"AYhSbE !6&z#o`i=?&S^<cP~ٔ+{3^g1iyR	cRdA^Vk\V*4لP+D*e,%P3I_~G}t^^^b8!!!''	xstLQX.뭗٧(-`	>,Z=uZETm5Y7n'Ʃ/g]>)pkrutCer,~5P9; 8qqH*Wvv~cKOPu|TS 6zMͩ/cC󮭮XS~PdKO<|+"p'˔q|`%ݧysV It3&f1	˒Y7D$=sZYEIF-׮DTxsd(YSʓAy`r	,$z1DD0M{>$Tkd/~z1+}OIe4JS$ *E}m@8_	3wXgKH@S5}v8MOt5Tz,h!KȪ팟t [B׆n̰( eP3)&5fgH~"S7Rc4mt)Mh4nk׮ӧOìں'|q"s-S@pp>BLo]yv1p>ř4YCY\q|%rpˌ (>fdai<qH3m(qkɂQP~l׊Q6dD	05UqCvv$vi0QO?zbn0~۽ѣHL 21KpDp!O~~s3Pt$8or?{#N_3<1).' dx9Gտ9vu^1	;cx}9:Gj$n<tlvjk~R{s~ϺTuոM&Z-'ّjhGrSEio~DY#fNUBgSCkoO^uXpyz0ďVıҽ[r wW}3ƺs.Z`i:| Plr3UN'~:gVP[VR~f[Ɂ-WtƝ;ozTug*09k^[w5Tp."yk*9djܥlW&7sW!ԧz1Fi6
+;,K|xt"slxF2LP?-@Χw"^&ڂU	wyȤsR)6IY:E,IFAl9R,Nf4i޳nVmuTX+MΖT31`OI_wٲe6mR(׮]fѩ䑬-P5|($29CWs*l̋bΪ7-.HiX֦cp돷or\Z6///99yѢEW,XaÆ??:;QB-.ȎQyfr}ji^hzsN듅$RVR)٤e/۠1LMDSқUyŐdY'("i6Q$h"54U)MoOv2јjlڳuɒ%X]Bwuu?]/2u*B#C9YAw&^Q+
+#-hAK226>?1yޤk745*|=k	!@´6.l#	|۶mo&sK8KO<ko=#	9lA x>HeXx;zDSdBux&,A 5UD(IhƱG@0e5Eͨj&nD:+gL3f27OgϞ=jԨN6-::zƍNQд,(IGl2akIdN^HkB$Ū*e%82>MSPiԨ7d?@zB(_|G册zR477׻ے[۴2DO߬Ey#݀p!#BH$k%'[NDY0	&8jq=#UwT#-fz&er"`$+B}	2BL)srWE7LȄ'Rﲲ[	>|p[1c
+Xf$`^ BWffPl3a{+)FjGD$M@XW8cT됿СO2b!N ն7y_{:8ݽ/);33:Oh$sLAt_\3+P!\)bi~&n&#\͗SyO
+W54\"ɼHHgN3W^ӵߕ̏}8M\'/>~YYYXq(k^'̦r[<!R4/BҎc驵SLҹ60V_rkaO6O_G!ίj!	f<&ܠH7AzA%:5=|7#]2իO1lHտmoX$Xx+;RՀ1i.OS#1çC/5jh7ҙh̾CCBIHhԪb&L3i$ߧzY󺺺2s9,Z[8Ou°Wkc,h'GBZZ8¤FЃ-S77߳k	}I@&m"WCpN~o{ڠ: "$1-3<\NH#+Xz|Uxt2{P8':3|)Iʽb$CDBɎpBaQ]^ Ш9|zda<6/^7B??=UtaoGܸ	:K5oCIf,p%G5/cDX<<)lhh?s$x<eWYsGq[BGuE%V(1"PnB*jH@8-Qr@0hUBg@J ʰh&4i2bĆ7C5Ɍ*^cjf
+e
+ѨW!H&rIz?y-*`#dPc=AsӪҘvLɤBiY`kV10"8&V+A,J5#xi#UHd3*MU3eSjJlK^
+V
+W4ymQqMx/*w9mDUUg[	"Ĥ.Ot'RB}L,b624/$]v)R3"K<aU!K9jySUC3Ip?1GV5j5ңr,EX[,vJBŢ_]/QW/fX(fJVhg":^QeOR
+*E(aәUxǦM0/n9|sU"{gϞ:G0BV}_vww]j0~u˹eZyx(C46\SyG6uQePPՙpOw X#ޜ|se]l7G:Kb	l_ɜ'4@B wp#q8YyܵWn/_n\(4lPZ1*vvC UsK]ĜȫqjtF^(R۷ٚ<m*k^smk,ۈr8~8'F=9{<;^bP+tmՏ"]*e4[;8D`KpHg؏Zl`O@sv+z@w%Dku2Dͼ
+ښJl8$|-[Qbd#m[X=sg-1{=jSXq9gnjFܸ5{1]~x
+(7Juf$/֠#0UfiYuL~ v%!
+"cw6}6lMf?VT3Z'B]Ux[W K
+Hc,>yK\œ~К<<)U,@3|¾SJb8;Smi[r@wlnv~NH#7ܝ3wEF2r{(Iǀn+Zћ/Ԯ)7<a6?!{+s-^Gv,Fqrcx
+*8,9e^M?~\T*T<4aV"L3w	sE
+Ƿ6\Hf/Jl#l	_Cru\Xb	Rp/ѦcN-dHG_K'Hcվ+YI|.L+ܷì9\DO*>YT6&LH?[b͛U	:b#\}zK?܀sۈ
+;Pnj _W@RURR G}{6{68"I>(!l%Rk=TF2˰Vm4){%)sx=P-!;"tG3b6EfȣhQVb)(i6ylk^01#qZvYf~M\#m#29wZ 	ͷݻwAvux;mF;ylu7KuZ"c<0h0Qm9aX>elW EdkwKĩPx}tBE_eNw%EYq	W
+D>NapKsaFZ\?@;-0zZcӎ5/<5a1y9
+Yue#rW]Bp+;q) G~8oޏݻO-7"4^&D1Dmʴyb YsЈDILx,WW̆&68rAkq3&TҪ iGT黦k@pb6jڙ/=%,{:ypΚ5[5~wbX  xIDAT+j {pঀjՙ;wr#**xGcǉׯ
+4z-h5]ѯqbW%NYJ#h38Oxf~)nDRYjG Mk':Yqi<cOb尴őiyʓgPYYMMM5/&~Z4s|rqqW^yX!~;w5kv	6]8`OTyiB5U#h˯P v
+pp&7_v|f`QhHV޾Зt*p0זߖ^bBb !.8C"g> 7>-6l4Bam|7Kş}$x,Љ)4П?S{qu$=2=$z,{;%غ),@^BpŊpt+P Yaĸ]o܉I&I Jee݀i!3ۢ,9pRYRY-ˣ~aYpQsSʒob$ɋrlk<ֹT>aF2_DKܚNL+󵧪~y6Ԛz'4۷L/d.x{MIK#zIh}uA,}^`p>'%MTwp}^M9[ᔣ7YUNDɚU|wدTp.Z>V>Ps,ּz[Qϵ流e5O! ƍ m(7F{U؝`RRcK-	IۻXW@tYBۓR}^Zr2;/|JuU y?P6I(.*YO*ƕN%C96Ba|^nztE&#DrsEƴi,KڊIp3 5޽{aMkt5ׯ_͛DC@5_ wUf{H26vw"K
+yzi"@CɉdKnK_[GEmNU,XY_C3+-=SD3W2QD
+KuIa*T!vs]E-Oz?C\}<EwΚb]vOk^<p<&j)ӠN@̺`༝l/--|JP1':E$q3ZMNNy6!Q}S㴳ls /aՕ;mʩ2[&u (Oծ#yJ{Wu0B%T+nyyygSJĚ{9ehPzE[HHNG=vzqFqj##E^	Y4,bx/34Ve&D <f+mOXƼP(Ȓ5Q6"riZkw㝏35-ek7^}>MUBSg1ǏbΖHL6mo7CI"FSBj[1	a3TBql:VW~^!򥜏%G'VpnJT-fFҥ4]rqIWߛ֚זHckVMq"vZć~MXg:MGG&?-S熡(|	@}P@Z p'g>1vq"/vjw|Yz4Q>99E'8\!x-gI؈o*oy>|oQI㱹<Sa@KZw7.Ԅvtp'SzϳG.Mz.=|Ds0f"#]={Jkhnhaܪz2㑠|5+*R47pؘgpCcGJ$u
+OWzAgxN?_>{'%$x.b$**75n?![2qnDL0nϘ1= ʽrWs|gM7gf7/c*>+T*d9~s޷ |P0~VR;y?ѡkL)"bN/n3T7mٕRf2BUp"МivV-@O+=\	(rʶM7IdiUcJ+UWX	XPULm6ĉvJLL7oJP2eҥKҊt:- g8_&8kE_(-uAv<,yo0T0K4ɤI!+a'I@RIeWS]TU&@Ԇ*FAuyLqG %	wF i4]*9yJF;]2@
+Gm;o^}{0J:k֬zkǎЬ[ `2 `q̊EI56aT8{|cvߢC'7=XUBm4uWG@Ó©6$L9QN"Co뎟P~<jMQtt,I$<pN"^tX  =͉F9~??9k^`BŋI?jTNGk^d;][۴2D[U3jhHG'/|3&8˗BJ?QPtNn.)9k
+,KZ)jKiE7@{R
+R̆3O"[YA~e͠*,"M[$bm8"(wk)2H8::-".WZzjhvI "	;``-K
+B&y33:NIz0J&e߶+wĬn|lR'"-bqb7YfDx@W(?E"Vrş@hU|;0cR(n@C5/ܺqvy-ds	EaUp^s>0T{ UxD/kqiוk\-O<&{*pR]̌ibex]"@"%OLLӻ$Ęݷo_Gy¤W_|Edd%Krrrvu$A0*DHb/[;0GRWKؑ<hrczILI1u׍QUTR ۻZhη#*((Z]>ΐ,\̵nZ3sDgԾ>=f>TBƝEYNh#*Yv]N/Pl_:Iw`KpJZ0G@vL,V2mhMI	FOq̻>!E"phߚh&@5gA[nA_F`An.92[ZyI#%ES=ROTzn}ڈ^|%y
+P`ו (+;^h>9oe;A@R;K
+ݪ aAS~sy	u
+:x5|nׯfe['x*6m%Oouuh7Pwj:juFjolӛ]܆ږml2f XӦ z'p~S>\q"kA-BٖB['> Su
+^i?D^P]ݭkmurޱzPOdR(! }ֻp=444p8NcƌMD"fl2a:zZ;oagGtGP(WWWD4C
+?	 #8e@Dt{|]pf:`y96sa=>ݾ ?E"@C̐ùWTTpDN|Ƞ26w8n; 66v%@D8
+1n;'JCE"pqq'	I*cΝk֬AjhBc!&#Fw 믿U:ec~    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/Persist.pdf ns-3.20/src/netanim/doc/figures/Persist.pdf
--- ns-3.19/src/netanim/doc/figures/Persist.pdf	2014-06-17 10:34:00.534635920 -0700
+++ ns-3.20/src/netanim/doc/figures/Persist.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,98 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*244ҳP0 B#0C@ ͌,-sҋ+L\ W
-endstream
-endobj
-4 0 obj
-   56
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 112.800003 24.799999 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 141
-   /Height 31
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xMWW7Y'vzUmhHiΤGOŢ5F16D8#`b)/0284*M_ "ΠP-˼{_j Ѥx٤xѤxޤI#P<PCHgrH$N}CHATm,˦R^D%ѳ:&2$ڨlRQIT\.!\4xJ(12?NxJvDzK1O_39XEH%QAz(gz&W#` v%Uy;wn^gKa
-F#z
-,<R;\dn`` ֌BDO:FnuױrFnU~k:~Ӊg; 7]m`FzJ 㹏ݔk RGߖҋ̎ݯlUR@Dy-6͞%vqh&W?K\G[턔&ϼR,XVezvI*(R5TDv6^FG^Am	h) 0vl*xnlwrolwۄ-%m8$}Ӆ;fAcccX,! ) Jj#Z'	u;D{ڈC\ T	|A\#Hŉ,$VutVkpffOSCSztJRR{oMΘNktT8"VeT;Mec۲:mPlY?힀af+u,.Wb~x'DUתC(%5s4M-d3ޏ0m.~z
-W0fRr2gŜixͺ,m!pjuM6EQ̳Sl9BĢ#uʹcUA5ER$w2`|Dg	c?D%%8C1;FEK">A
-8)-ėڿD;§D9vZErHA'<,S7Iv6b1@I)#&4/$B02JcT&Z;{7R@DZvHj^l}	%h6]jh15vY$;iL?IL9o EɈ#K=
-M&/T٠Ԧ`>iW!V;errRD%QF˲;H->ݢcgsJG*Z>$w9֯@ݢ8&1٘HJ3#I\,dvWi}Oaz+鎯֦lKy+b6n5ahhUQHATL,WjVx 
-탶EJEJ.-b|Z)LE+ty@^墨1#߯A
-(U`Sڴ^J i)-$9Oi%'fRL{#xY	$Zfam݂֩	$JX%q>5(
-@
-hp݋tj) J"iP(- ^"@
-(^p7xCHA,Fp8xCH'֤`4LFww 
-endstream
-endobj
-7 0 obj
-   1671
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000002388 00000 n 
-0000000169 00000 n 
-0000000015 00000 n 
-0000000148 00000 n 
-0000000482 00000 n 
-0000000269 00000 n 
-0000002365 00000 n 
-0000002453 00000 n 
-0000002580 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-2632
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/Persist.png ns-3.20/src/netanim/doc/figures/Persist.png
--- ns-3.19/src/netanim/doc/figures/Persist.png	2014-06-17 10:34:00.534635920 -0700
+++ ns-3.20/src/netanim/doc/figures/Persist.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,38 +0,0 @@
-PNG
-
-   IHDR         Uٺ  iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       IDAThyPUǿ6!𱉀 *BݗmLdf&ۙT'&ƙL:`2).#	F-
-Md"cEc}]N@@*y9|KB0Ͷ9&OO(aəOOs>=O6mppfq7Zf\hzFdۻChh6+$$e!OVUӅ϶YFh4QVZA?~9Ne|`Ytzcm-0  יf-BjΔT40>#klgsXO|^lݻ3;!Beeiڇ6Q=\o,Z
- Xg؊g^J1LK7=r-ek8[Rbؐ]rI l9r|PcgTÙgS;L>-93lnii1>3L'B,0ז&ֽdꝮt"|,oiߙRjhfATX/(swr#1NA.\.G5/6[%{qG >a
-Ecccddю(B'r]LD϶i\*|0TR^
-xTGqΒcom=Oޢ(J3ݧUH  ܵ#liA aQ@Ƿ(4߲B$1w	:.r6<ܑL+/z
- %/Y.FLBMM axvZ^^X(_|íG`ơw62|mϟڪ2kqQK!op?9|qف}>΍q^ <''n$;32@}iR{(mx`<W4T1.=۩N[^QS]{ZDdɢ[˫iKˏ8;޶isSVnnCWwWȈ/0?"-٥!}7`8n2nXgcsp?S)Bt^  :IO%&81??YJn]ٱcx^pR@ͪF݃C CFH nLKM4!<+a		D7 ˊk>Y u^ju|!jQ	-r@O39XV5V$ 葾p\/DQy^OD'$Ǟ?|J] E# y^$pX8x (87"Uxy8n@&ù9@x癰܄߸R44=ul4+X~1\4	o*ЇNBh)[J}ԆqcgP -ڇnByaޟo@ϐ@ !0jB c 2IPƯmo~rcuߩKCCCWZ5>7|{d5c2Lcw28/eL̿,UA"yq}kOaK#ZDnn*6 3Ǫ/.,W/`2Y\F
-ۗ:V #5f=Y[;D@ fjjV?TSSnF\pٜStz@SSSvvD^ەO˛GޮF"CgN6H!cMcCƅ35y;W XjK̡{s g-.'Jk;Q\`5JUӶK1zMi:))i|"83JASSSNNnU:V)u'mJg`+r.'Z1BQT]]]ZZG)i'7DLj'|fLN=92rNBHzzDK^>4m
-&{UdijuoooXX!D:ۊfju:]OO!$((HVK8˲(utt<{0,q~`YVRywAAQL&d&	iG3ӓ ~t@>    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/RoutingTables.pdf ns-3.20/src/netanim/doc/figures/RoutingTables.pdf
--- ns-3.19/src/netanim/doc/figures/RoutingTables.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/RoutingTables.pdf	2014-06-17 10:33:13.898995923 -0700
@@ -0,0 +1,279 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 1030 409]
+/CropBox [0 0 1030 409]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+1030 0 0 409 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+32
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1030
+/Height 409
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+xͮJp\sLzƐAܥjFkTRrU$u\Q#%Ā`la-Q՛{A                                                                                                                                      ?  ?@\ ?@0#  @ > f 1 >   0 | $pS'$w@AE(K.Ǿ8G?nɓ(8ۮ<>^<E!OC)'	<LʧNя5'oS8J CiCa?+O =o%IR^׳%Iw[Æ^ӃtE}]>,s5$2wZN={͠:wxR8MSRq)uJSGVP4ӶTM8jەOذoĒ+ޞ7TW뼁zuCj?%΁_"E940UUy;
+Ȧgh1	{]"),j47S\
+KcL'䅣A5˧j2gԖ͉v6M䍗eZvf;R\{Ëh)˱_3Uuq6T?Ҕe:`ZL?P>Pt#kR-EiPJ/jx7UT7[hnHKNuMw~QUcwɯ>в"8E{J-'9|dF+w@|VOyACić`L],>.Li,tZg{vm(	&vņ,:KmfL3rký&Ww\Ca-.dËG$=ȯԴ}v͎[6rTWvhr*+K_Ag]x%%NS!뒥G&XsVYUIgg[ɍ!L4嚇e4XUۺgqڳJ6/yN=q<uME^uS[Vm^ZiqF/isM0b+ސx1k=%||OoY9>]<)S!>X?K5~v!>XgtL:vhSe\Odۿj/]razrwdzuyԦ;>LCdwدtS@wd/iO3n<L=&y،UbOz~~ϰ?9x&}߳VUsc| 2R^Ҷ]Efc|Ư;9ynfG]KZh[m^Z|6HFÝl(gXo~ӋtT B7gtx͏̷_V~4#,{b}!>+Ό.~>'U6li|ؖSm?6M~WEygYq_g7U!$&rG7*.DƁrSl룣..ozw\.I6=wgǝV_Im\53rvo>eAR&P	:PrÜ:Jͽ{5񡘔Pއ	UC|o ~W >
+7#`x[qfPiC={|ڸt߳UI&&Pldz^=WUW:ؽフCҮU^|ϟ3kv_.mNi.k䥿SzXT!#9K'K($s xa&4/\ӣAcތJzGThG-xxWTF/LZuڐ?g:HL>Fo'1|eS@|^F
+2#__t0K]t	]tQF)&A[T~^$m7.>;A1L]>me=I:	H+#ڵwZ;9jVF;mgO
+ql8Ҫ[kNm;._U+3Tz|񁚑:ZطfXՆn
+o;ށgПܝ3|!LԖV ć`qly+/a`?H=J8s֘mN6o/N\4f3sIRaM3h75}w6.펯F7aTTD7l?!> ć>!3Jэh$?ݞ`6	3r>5{~||y(!9+=?~Gc{6-1o9Y]n>syWWIt*!19	v D h @@A|YF@ɺE||UW czsi!IwLys} 2łPxcx6-OzPW2f-)vFpnoH2&G62aNhJ_@  D R/0"P)6(/ܷ$i+kF_ziÿ	)oc
+oe2Ps:|ZрzkMP]ηdIZŗ2SEI%;^UT7-ӃG站YMOr6AmF)]p
+NKZδmTPnS~e2Q`VNݨaʿز+,7gSjNaq0P`:U<bd.2{+ >ććgeL%,dWqW'/9mz9V3oȏjh#PәZqɔ͈͗8?@zqe?)w_{'LbZQ0Ƈ	!JBi6vtV	s=VRWlZb惾:G>be!? ,8gLI.l㫥yq!OIc{w$x	A6ek3RL/(kq"_t"щYСmE{;!>@ >ćWѕRKƮYK6\[ZYИ	F==DUV=ڜlR跭Dp&|	Xufߕ"I{al7$B9>Ѧxth;촳t6wAϦ%ƞ{6żތu%?΁?TU@1|G~Q{ya}%gSY3>Fb<'Z%`-C|@|?/tXe||8YlWq|evK
+qkHu2ܙg*Ƒ&[Unߤu_ټ\&Gx':,\ gUoʏB⇒<?YwT~0_EdaF1nPPNRc::ٔ/\d4U^+6t,1>CC||͌TWy\_'IzH5:_w
+Ӌi>ΟC%g]ĳ2XnF)H7(^2V_a\MT%!sk@<0>n$?Uf^*MKYAtY'#T[ʙ+"ލ<NB
+8ٜ2Ȧ,P$ESyvǇd=HQ)%(x^@|?!3[1>!=J8M*ؿcPgV|m?,2[h[!WB͏lIK;)~ˠ,w
+h&u^j/6\WlZb4=&To*PˉW8<ꃧώglkkLgDݺc@wi8E3Gd] CdTx_r/TLKwt9]S0NQ6,KӴpSZa[m|.-튺^Q&IRF?NyXoWkyݴ~mx!!OC;C&4TO}$fZ]Z}{@|,>#ȓ
+,9~hH#9fcE_Ӂ2-=_.<i|D{ Meq5q|@$'	<?;ձ)	L=#mi-]yO.O(_, M \ X@@,>#ߪXho)O2Ub@' (Cio7Ż7NA~E;uu5y.qʁl8̭Euu毜ղt̍۩u[yLmL疖.yx| J^5Sw7k CVmġ =|v<O.svc$*=Ka*OU>MdvIky'>dM5vb#M7ot/<^";牭{~eAvޕ b=x.}N%XޤTL26,n޹e
+lUy3%|*EeGŒyt2ȲbdjkI(j\
+y]'io:m,vŋjl_BqEGZ_.=XulUymROh!>ćC|䌠,\h,:Y<玾:++4L>~-U?k//R4O]>͹&2#O/gA59_u?2'kK:^~WozJi[/_E"ȓ|.i~3t*&[a|d+/{M!%[gwTNܼ2]})h
+Yߘfuz4S^~͎&?"hv;$
+a:3Qp3lS$]i$ifS붞f{gwt7f~&<9>dB1yVEfQ[v,WSF&YDKAh5C|!>ćA´e39]\)~iyp}"VGE|e%NG1yތ/<ig'hvVz񏮳ۚ
+cVa1xk@sC+WdZG82_yc;vUu5Y.&^:hg"s>eµ<)!8f&_+X.'W}\ջ>x=ԢX%W\"Q#A<mUx_Uc9\6M9ύ}笮AI%Nɉ퇟Rgtkц .jćC|!3Mf̿<csw=l6e.v4dwUgi7SG4s̼<5YY7d
+hؖk82eU=40T6z?e~!-H"1sEP]SLptrIi,{(7/Hck嵃&dGNntț=; d,J2NuJiۛr5vH~2~7ܝ;^?S<7Ǉͨʶ/ ޿!>ćCgg%$	N6/`A4fGHUǇ_ny:J{K1y3=G6)PԀ@)U}b]%~ &<N`s~eնKǛM?QgA;]TyjuG7h$sZ~N0X_玷olOE9<_TM=m/ i6#bG#vp}&Ec+oq$ձnkyVSAӯFZ[2)="dZ9.F+Qd)a7>*A.ށkC|!>ĿB|̌`'(>`?T1zϹ;4܇*1z|A+j
+}>ɛsYf:2UNѶj
+B:22=9S_h`\e*:=&:ufbXyAai[nj޹i:Kc7/XT7w>e!D֛#buS˃\EWTǺM浰^WK?UDCJ/h6;TߴDrw@\KJ!>ćC'fI'0<4	~YvY^^<[8eay=lCvު>+^B}=EԔ,,Y@Ko</"'e)!#Fg㤗&c/rJvɛ̈́h:ćj7܌ 4|CSe\e_(-֚IJK"^7lѝQrɅ~qcj'aЇ/Ú᭛[5^U]3]C¸yt{{;߇>&$KzS_ 
+ć/ EeA&ё(^ʽFo/g
+CUլQ=`w%:i;!ɵ;s[5^Ĵ;`v߆/שlM<zy@dG߹/-ْuX3й_T >s!,?#_Fi%PU1[|XRkWQ|m$YJEGzZ·]CNNZj[5ZgJ',*<h/kV_~c6>G	nMzgہvC|avC|aY~F	*5E哝d6W&_1Um_^3\C.J̈ڢQ5H;#KP`Y2fjȒ(W_rx"V_iٹ^s@m\?чcT_lzƿ?UF!@7EeAI| *Vł1y&u7YeO(/'^/6lepy"0'Oj}Ǣ4a9~_dYDOgñ{{y|~%Y蚦Y]'j XB|S[ǺB`3{_YQd3됞jwT]=&rSԛw~FZ嬴Y/+qi%,;h:O?<䑷]3l/*l/*2_̈(bQ5$u_w{AUqVJa^3=x=O}<"P8̶?dx=۴ŌVcMV1g/,׀?]*RQ1xN7jxƿ_h8_h8fCꏏPc(aؖ2iM'0u
+ѓ=9RTU_QfS[#<s$)?Q6>=/q#oY%+v >	/&fOqtk<kEVӱfjaEv}8v5t7E[_yƿ_o(_o(w  @֚ǲ`w[A\2:-7W\v
+$iB ^V98Wi~yV==w.!O@A+ğ
+Ŀ)v@5YaFK0c[oӀ^DTScIvFꖋSKL*+<Pٷl-oT7"U՛>89/Naz͙oo5C@|6mǳ)Tr]]3e5-8`{E۷tewc\h-L=-NKvƚ<fzFk7[BG@|#>8uxv^A~c<'A͏ WH7W\vR {<jےTw:8TUɴ9~/.w!峼jćvBgA:xv^]ط(UYj_2SѸGh@^\K8#V=V%ey'>_Kq4D;x&-qN{܍9><&ᘔOhٛfţ<>@|@wWh-_`Fp';yW._sL}qu)ޠ7AF&0>n$fx= -AUlZDF0Kk
+vͿGΎmʮOfC'!>ĿW"@@Y}F0Wv^k|(2=ŕh+d(\<Nq 
+ys4(?Lk_c(yʷv<8'/`ׄCfGSu~+w >ć7I x@UYiFP'^Ǔγj|2R	=SR^р{S Щ|,񓪵y؉<d pXU%IMvm؏e|K2߮u
+ć9 >?z ʬ4#17A'g;7W\c2T+ɅS=8W5ϩi6|f_Z`<?R.[ ~y]t|͌   "?#/q>Gܧw;a09ݪG?ZiO'd4ϱ<ēM3Iti%l6?_;̓=wwRnJ麧pfv_Ώ_?	V@o3zKM-۶[zB`X[PlCqc	v[[jC.DK8%cxc~iFϐt͂g1[#N_m!-&tO<%f^ˀ5Bį$bF Kj/_^)d{`ZL4KѣHf
+okwAjC/oq	|	
+ߒ>~o6z5t+񋥽/m& knH,V{J&[Eegl+Q;RU]jԨl2ff7CΜF4_5-)GSFU.ybƷ2>ogu;dP-M*>vF9jzԳu2ˎg+8X{?7r()j< >ććg.O<9YS,d׬j]/*f.Nx\/G
+Oڝ#iy+ߦ;0Afj&eK~CiGa.>yt4qwǗ#Q1ə:_UlXrvܚNXϬs/YzdC);qwŢMVH^0Rkara{jd3Yݖa\筬c{+ō˰7dqTZ耺^^B~lEo%tUw{)@|?!3vFe@33ɆKS|kvص"m @
+ZnwsJ+6YX*g:U]3>&fVse<#H;PO!ISc<	Or{w*gZl\,F6cyPMC(;o#Iz#jօN=+ϗ;&EWع-אsؙoT$)n0\zhv\4	xW?/3tۊdmQ"(:g(ۤ*.: %r6ʎ<vn[<0X]E6];-6\,&GPi-lxehcyH?QYNw6Pǆd|\W4zJco4VN9ڇj`I[{1I񯛽ƇL5GZWƇ_!>< Ckf/MdAVj|`WU1_RF
+M,lX\r1Eh<lIo3	 L*;{yXpl1(;>x:9և\D!*Ͳ/Qx<Cg|]aZ89I<
+0e59Hp~} \yꎞ@!!'W{CvAv|ri¿Nss|v!!>@`Fd?cgW9vIߝCDXLͻI7<n$a!ĤS6N-{mc'Oh!h>5Ѻc@sꭧCaWU6^h^	_nTU'r,%e
+*=PV5!vAo\=[+ӚxE7w?k'JƗ< >ććYF0wo)<+蒫˓	E%6iCrE6L	g$O0ǐ\-UI"0&{#cugX%Y!n/VC'	(gF0̧ibpY"nk< @Y|F'X83yq!Mga`٘/k?=@qMeq5ӿkLu?ߏVۘ'nߒxSݮ<`z'n/&._, M \Fd
+,<2FT,?۹~SP%cP$qLysZNtski}{vP7KyV]X'6tS)yîO8įW?
+ğ3hU5F#:&I4@`OdlM}݈H5xTcw߿KE>;),6z[t#zPLB_E3<OlM-[_Ol,J<st9"T8MhIιʵlUyd`}Q.A'>vS k|~%,9j\8N<ъʪs;fAh0r`+m_{u)jOh!>ćC|@?/.".N嚇|ae,GaE)8ϣ,^hXXH_L>Ǭ9IXS]%ps+UJs"c!RiA3@pIkٍD0{ė&ipT;wlzY'n,z֬Il6[kv4)>tfSie,/{g+ț$ͬLZT{3_mv'aC.yF>*,2ڲ%y>/NE~VC >ćC|_/L[6#%R~f'z-bxT'YV¼Osʹӯɑ\?Z:9fӉ47a{Eł ^f".7dX{頝DcȆkyRARJoz7a}:ݖZ=|[)e{ Klζ*<*rI,vɩlؼx笮AI%Nɉ퇟RgtkEzw]}
+_ʃ?F!C|!>ć<61B7~W߷bG٬s0>B)BM=) Љۻ܈Hv;׏/+=ښlՉ{ƶ<0bwjjlS?q/iA6uoqɠ.dnиN*;>7=eF%0~ulMvdG;9ɍyg'b\YIkf|hT8vH~2~7ܝ;^?S<7ǇbwYO/ݿ!>ćCgg%ulK)=Pt?6͡}FvѠRU@eO{	4b_sh:רڝ,I=&<306*_VmMo$#۽'Jyls:h砋>o]$ϝj9]8wmc{-yv)N9]<}~3{^ʗ_vs*[o6~5ܒO!w6t_X
+'Ki!C7t1EC|?3#h tS<d>a硊z|$>|Z6+ߋι,oE۪G*q/7?<|9=9D'=TP4/96f8H*L{玗,oHȾb-*{S޼oK7G<릖;>-W+ϩz;W-|VIX-7͎*t67i]>'>ג kC|!>ć8yI;ޏb&~Oʴ~ac/_N˳~gsڌ v/pR;oU6H*읻Y~3߰9(hOr*U;,^fLCxpڀh:ćj7܌ 4|E62 p- @Ek/
+_fyKPeΪ(YڑVZF^Dt6Quӂ`fmU䠪Nr*X;;"r<KTUJ;_?̃Ie$Q4i 
+CڿE=)_f"@U}+n֯]EࣷɭkU
+N{[߿<cf7:>Q:_%}9ʢ
+ƗUTqZ5(ٯ"or#jxޒg4ʨԫ%mN ۇoTUu%.*z19
+\+tĿYC/KX~FJs(m~{InkbH^aa,֎<˯oBb#GqLI=A+%]ٵ>5ýopjP2UUoi>y흦\8e3[7۟W)@B3xC4V}>C7jh%2j9\CnŅsFOn]C<~[{UhłYT>Jvj3Ԍ,$Oe/U/y9%/(%iՠdj3÷MsSgj4%g8妴۠OHQ4n#":ҢC!>*V9z<Kԙ;$68/?>Lnh."Ό9|^iĎEunfܖn8~g/[XӪ\Jov%~UķNfW׷~e-uӻ;}Ǣ-M7feX!ۿUg'aJ={Ч!/MM牋+昿	~ >u[߭įu֞\ӓ"7!5ãhUt:qz[&B~gBZV̨'tUY>|N<hК;>U'(?jJ\Z9WUܠsb6b9 o"_ĿB|ʶWCoX}FjZѹN/VG{|H}\:(};7ZU!Wxe?xI/QUKz5ES(fإ'<Nq-A%WU/@Tl/s,-s
+Lgf/Ί5ބ,"QJET);eGv4"ڻۇC*1!K@^ ć_J3V<ISj-J㯖_^jIL<1RiVR$}FKkqۢM;u{i{zO(~oos[5,٫<_yh6d ɂ9$ѝΦtMrj$?ė^IwFU!kgj= >"VcY9v~k^ܷfg%Ufwܸ.Ӂw
+E )  D@| >fk%vh3	tw#b!ćE 
+BXaF^a?o	`GC!'ߪWUC|%,?#X-p#	o	C7j5]#pT' U	߄	C ~' >_f%	H0m\C|Ҷ[C_!=#X4H0lD7m+ ⿲-_ć_3AxuH0. >ć/{5@+H0-	H0lD f!ć
+{5@+z @!X?{_ - B| @D > YkFbaS$<<@Q%/
+3Ѫ@]-u3TZ{!47Tàc)-;h2AE}[J=?hлn;?P;8E޷nK^ ~y?>eOCϔuEIyI׌O51ۋ־ }TDZ 䴡؎GU-7faO`W[@fK?
+ćcğ=#༔`$H@í/p|kZxt_yIʩ:ZNUK ThgWm*N/" s3UYj?[rgKЊ W<2o)qyTR;8ECnN>{E!?m:|S+xtShoWC|G_O0̼΋
+B{V'0,(n8L{g*Ƒ.K.XU ThP8<rvͮk_ؖ;$t. >ć >>f'f	hq)Zp(
+PlKwf;;t<yq8j1,otx
+(1| !>!K@|1`Mʞn:+0iO]=W<:U/^U!J`xv=nHf >ćs |zS	x8^7GF#[V;8E7@@{̓#U=@GzE7o  "@ > Z3)
+#v$.PVucL]4H0K-aN;Y8N+$<٦1oZ}7KV@|S_t~g&I+(uo\>pzk2xp:Y˥`8K-aSOIijΖTQ7{mA8
+\E<C| ?h6~g/'5RD^k}	[;IzEkuvR7vpTA%ñ\o	C~xxJvY~|dmn$-}	B\!>_ CaAq/$fU^r[U`873騩R⦕яa6.'~Gws|H*&0_%@^!\!>g!װҌر!M'mznE;v~iuQO0KaO\UMӽ|my"4M7'mEp= >ğ-ć  _gCohj݅H0vG+d/vpgwQK0%0'.9ɒ^@}=gՉĳy%'>m C@|%>#`ȣ ;輴}ǭZ/Y*E1T~2o;8i]r	/qډ3ʼZ6ژM1%ǦlćCa	ct蕹P+Y*7M⎍$E0vpgEñ\o	Cu{[bT͢Ssn'<C|w* !>ğy!>ğć_J3Y!qgz`89Kg8*soĿS/"_3#   | kzȼvu&9w\ЍSw;x1)F*]%$t&a|t2
+-Y1*>mGnMo+s >ćW/ +z9}ȼ_Fʳ;I
+FsFSyz*{8н4TǖcqT"oý`8ڙi"z}os#d
+/YeT|oع_9_!~]ga_y*V=s7*H_A~i,zqwBƂ=S(5p)bVf*'vfje@arڴCCd
++Y3&>7Ɔg-u@7C|tgE49}rUj;{,n<U0c]Mۣh}wk<qS>ک%%"*?`8ڙyIʩ\-Ѽl'#P8 XF/~t !>@|XiF[wUIw܍
+z\	"S9Y*QXbvY*KmK;u.w<`8ڙ'S|aq"/?"0uLmkEX|!d1rau X.nB| x#h{,n<U3쬱Qp|ȼ+?	iz;@uWhlhg&\"KvO(~/zX?.>_? > X
+?/nE!;oc9w('S^rfϝo=^{ M]\!>.ՋbqI?[%l/5:`[_  >ć_4V9}7t\G09wE^`2v,aՊS4Q"+ngK|G|u<P2j|u:bؠu @|+ X4#xT~g)Y+)d{`8ڙy:җv2
+OOj(?	?_mF  x > YkF/.EE		-Y1*~qK 	ϟ `)kN}>H0|o>'C@|%fǶZXJu-<s>G3$2=S]Hg>ߜI0!_8 XɚQRk%
+s>G3`/6 P >#C@|c%[??^Ih!%V"?7#@a-o`Ձc%@E⏕2&~;u.w!@|:_0#t8Tiw. 	_+Y' E⏕YPgA|>#Ð~A]FZ?`( 1>@|/iyUgr@@| I0LM P>#C)@|OiX;/!s3	|H0''5ğ2'5û   | k`xc/!>5Ŀ[?j2fH0%|H0|s>'C@|%@G@|X~Fn!'wG%S@9	?+YcA?H0lƍ{ީ`( `!C p@A@|XiFú-ő$mte`Ձc%@E⏕//|x!jՄ^b@!?VO +Y' Eci)(Nbzp,aCC@|р<؏Vh`'2!P>#C)@|3nF4H0|$Ł
+OOj(w  @֚ E÷!>5Ŀ[?j2fH0%+u"W?ߜI0!_8 xɪ-_8 `i7s!>?V?3`X_~k_*H0H0!_8 X  p4#@a+dYtR;L_	H0\?VĿۿ_4 X.nB|'GCu`/⏕JV@	@|X}F		nJ P >c|1_4 >ć3#nF&0tAesXG|F!ćSb!>ğg܌i~j!{	 ,ğğP/RC!0ی  >@| >֌ 	]?rH0OH0d/n
+_,V `,V1.7s!>?^jgH0&eUx8]x	o$B|/dgE qJTm|kCC⏕l? J3$6	!4>?bOO_ 	H0\?VĿۿ_4 X.nB|'r)AσC$~	dğ ?VO 3O0/{Ix٨ P >c|1_4 >ć3#nFü}\Bݫo>]"P >#C)@|3nF4?5/C8RC!0@I@In3  @ > Z3$t8w#CO@GMbb;	a#qy$9`!C p@U[ # p,?#@a7X;#$;`!C p@5!_8~q[W@ |F!ćJ~ c{m	vŒC$+_/d!h|9ɱ]y`%@_4 X
+?/>>P ,w 	ć!>ğy!s3$y		Oć!s3	_ @I@I ''5û   | k`-Ϊ	o'$B|?j2dd/+`I0^#KdU֫M@{9	?/Y?3$vpʷ`/7s!>?V?3`gܦ+|$`( `!C p@A@|XiFæ-񉞾Ym^wW`Ձc%@E⏕//|xK[5~$"Kc%+  h@_4V||!d#ͅCC@|р<؏W^	"	Oć!s3	|u$Ł
+OOj(w  @֚ CvA!-Y5Ŀ[?j2fH0&fFCMd7s!>?^jgH0&GZ8%!	o$B|/dgE 1-\	}CC⏕l? J3$lqcmR_H0D@] Jvw><JG۹f;H0"Kc%+  h@_4V||!&?lI҂ʫA | !c h@|gG܌ 	Ma/ӫ/>r`(`! X@|?7#x`'d ,ğğP/RC!0ی  >@| >֌ 	-⨙Ώf>(i{yat_ɯWOs1-=9bӀ Ӏ 	ClplF{[^eWNc\2*64.6.,*7S$íZGވL/YO/YO3$veK];82TАN
+Av7ѝ6xuC|b1ժ>?VO+YEa	uA7UӨ~\@]?_˯WT'h<mk|h2b$(OH2/+ğ
+?V3?/
++`k%whVWMS0.o$ˢJga9~Ff:m6}۹ACkEkC.	kyM\v,hS<hbs⏕'E⏕'EfH0"
+|,<н /o%I?Y1TJQ%Lt;URvE1N\v<rvlSv<nzc%+  (@_V||aA3mf>3Ql/sdE\-i]wzq`voFnڻceI2y5O}uԫ?ć3C|?[fH0[TʷgsCշ4TfAdl	ݮ1?r{{45λ&p{*'ɮP1,CDO vOp@|C|_`%WkGleԪ[I{{fgIybn#ğğ $  n3  @ > Z3$uQQڍ+[Us<5%6͍i		I{,n
+?_ ݒZ!(0#@^çHmWEBe:Tyv͎)\s'ѯN3l<(pI>	;@@U[ 4 @@U[ 4 @,?#@^ yV5bj+WW^S`W*OZ3ncz:]~k,~+Y'⏕$6صy*09xVn/yabI.)\o`Wy~~0	m@AI@|c%[?Ҍ 		bǢ5𚇖n8~g[q-Lȳ1Kvu{*`Wו"?Ekn:O(¶O ~$!8@] ^3$^Hn'H&0f%.I9vHZȭ{2<v/l;9O+Y'aB+1W(c=K].=IFuOyMА1+t5߻iobtO0>;?}|*_ >ćO$2tN_(o|6Nwisx*pA?&NMbX >ğ!3t<ͧ$F[-.T7VğğP/ FC! ی  >@| >֌ 	-	v3jJo$	_/g_"<ƴlBoC7R( ݒ_ ݒ_V ~5>ݠ5wUuf<طhvoΧN-,*/SíD˷;KVm KVm 	EJ /WАN
+Av7VНۣO]x\!>^gnjUZԋ+YE⏕Ӂ;	U^__(H4ۣ<	2bJ~E⏕lOJ3$O0/u8NO,:|kgyltn歳{{4hνZ+Zra(OXkrfEA{^, X._ X._`Fk704WO_VfѐCC%$=na(MgniS%e\S0e#g6e'^xX@_ X
+?/
+`XjtC,yB(p[ (7|ݴw[rp?Q$'^g[gAj@|?_ >ćnF<4ZRoO2*CesHvYۣᆯq5qS9aNv݇a&n_M/R, >ć!>įBҌi`@yfaZu+p~o>CѰG.t#,ğğ $  n3  @ > Z3$hإ񅕌{#	Ӏ Ӏ 	k\D'o@!>ğ?^jğgH0|`XEAl 	O+YEa	w`;b8~ P ~v!ćӁ J~Ea'^ܰh$"p= X._ X._`Fk;.CY}3$"pU X
+?/
+dğgH0,
+Fz';yH0} C !>-s3$&:lO/<C	ć9~CsJ\H0' ?	?ی  >@| >֌ 	-1vc$=?9_ ݒ_V Aad=`CE⏗'Ea$Լe=ߜ`!t (@5:_p`x'UoHx+*#	O+ğ
+fH0O0;8^QC$+O+O`xmؑhmW#"	JV@@|Qc%+  (>#@aQuǀVeLOZCw >ğn/C?7#@k#]<CDCg C|?[fO!	Csϻ   | k`8آ*D`CO@i@|QwKV@i@|QXaF	㩂A!>ğ?^jğgH0|`8*8$9??C@|Qc%k t (,?# NX 	O+ğ
+fH0`8*H0Dz@] $ (@] $ (| 	nX 	JV@@|Qc%+  (>#@aQ6FTgA ;h7!sl N UY`(?;CY@|!?|JxF!X?	?@I@9@f @| >fH0lщbE!>E-YEa$ժVR_
+C!>ğ?^jğgH0|`DҘr^h5ߜ`!t (@5:_p`8`'rvAߟ`!t (@A@|QXiFCg
+t		H0\?Vğ?Vğ/ ډAV7H$"pU X
+?/
+dğgH0,
+5E_C ;h7!sl Na>vEg'B|?/C?7#xOI0f7V^H0' ?	?ی  >@| >֌ 	-n:F!>E-YEa&fFiwK1+H0|s~|!ćӁ KVm 	o^@!>ğ?VO3.kx	N0:_ X T (4#@x!'TIڇ|_C$+O+O`xQs%$"pU X
+?/
+dğgH0,
+uG'f=`( ?ć3w:	 }|V6nb6dc&n/AsMvof3-W[P0,(wo|"C!#o_ڊ2)6CM@Z 	~ڶ"  :HS+
+G3v2ҵ`z`mG o(z(8dO/
+m - zd<mÒ،w"|~
+- - jdP@B`x5fsO(.">?C|]ZP0,(Mj1`H9_5mU#_A|-~aE@ ͍Q0`( - jda4lN(Zwco0oķG|įw_mE@`x͟Ov`h]0D|7 W[T+CpC>
+P⛀@|mE  :tVsHg|9S0l9\0D|#c_ķVK
+f*鯝~fD|}_ķW -Կ"`XR0ȁb7;(/">	B+	CuНЀN|w_ķWLЊaQp&>lϧrOג)6FZ - j+/(3;n|C
+1o F o(F/!.Nً˰M`h#-~Ây;M.G_`h]0D|7 W[T#C_[zzMj@| o⷟ = >@A|Ԋ~xs'x`h\0D|#c_ķV3r(g9
+Tc
+a!#>oA|[E@`E/zf^ח`r`F& >o$w|kC)@
+ - jd_ķV_sqf;!&A|W_ķW|@|[A =zu )R0lWA|_52@|[h|E<pp{})@
+ >-W[P0L
+Kf0|Tm)@
+6CG|#
+-~Ae:R076C	M@Z 	~ڶ"  :HS+LPT sGH*X*f]ľYRtcYFPa*fO:ܡ^^TK,:>s?~uwl6׻>-n	.ug__<gķ/|E)`1`ug(GHS`Ϥ]2m?\w!P`
+$#qpzYFfSZKTTmg%	ofk6s,-z}o_#U&׈o"AU
+0{UhV5+0w^,ҍ#T@hМ݌+'y=߼1Un9TyY-QuR.mcO8T]Mg4eLnF+;Կ"~\0T#ޥ _PVl*|
+nBt#BQ7ڃD=xUndP	DI_oHֲv jVA|7whhENFR⽼*XپUews.ݨ<9\{;kx=e7Ip=,ߤaRʎJ?N¥=A6?E<h4϶Ǌ? >#c% 4"(JeUhͬ&m/ߐ|nb>?rg*>|ot=3H?s9Kjp'{qGYM]@տj9TYo<+G|7z,#)B+e/"Aݫ"ͶlVgQ.LSt㽦H7WEn;I(ڠTT,ޣg׫NjMeח6pNc*;? ># >]]ēI掠Elg坦r*D)̹o'/>x6)t7ݜg9Ҩ%NjI&jGwUxǡG|7|@|%ZdP1
+c>[WڗԴe
+yّC)'5xϨ@:}_/=)?KO6;+  AZdd^:{'Bw/KeNY!?R{9Ţw%7U:*s^̹*Gh~Ź}aJ)yMrwSnW_ZA|=pd $lwD?$PvUAY'CϾg){/'b2Om9rXKvt1UhNKd|=g-%߷:}4$Mx'-9^PbXG	oK._=2k\_ķWN_>s\g[ٹSW/zkD&XSx+7%Eߌnt1Uf<Z9G_moOU
+n}2qi]LEv7XZmHWL@|}_52A|[E IuއvU×ɊΝ*臺ŋ7He,n ֢d8٥~^\W(-v)
+f í9jΨ7яp5	\'
+:o:oFuA|[@|ԟ!.o2{B~z/QtUA_n7~UrYtOYxgs	N۹ Wrc
+aޝVo=à7)ξxy/BR{DOQUGl3o)&? o"xsބU;uU0L~:Ogˢ{yzuFO,שO#T*'?erw$Ę_mw'##w3YL]sVGzZnҡu>6nWCkί? >1o B+w!n˪ܥSo"=ߩ󦧳o{%E@GdC$//@B-Ҫ&Kww6x^xq9L]i콭܉"~#z3/Vd`GKJ >-W[$!p:\&(;wQ
+^T&_[>R9dJËL}?%UR窊FU,lvW;yg?/ql.uL`2F-ǲց@|GķVQuU@E3?G1%?mL*Yj^wo@>E@| o⷟ = >@A|Ԋ S0TB~GH*X*f]ľYRtcYFPa*fO:ܡ^^TK,:>s?rl6׻>-n	.ug__<gķ/|E)ʐ_1`ug(GHS`Ϥ]2m?\w!P`
+$#qpzYFfSZKTTmg%	ofk6s,-z}o_#U&׈o"Ae/sUhV5+0w^,ҍ#T@hМ݌+'y=߼1Un9TyY-QuR.mcO8T]Mg4eLnF+;Կ"~\0T#!TAYU:ڳ}3)wQ.*Ӎ`JF=fK౻bVC%U'^^_S6<_\5Pϖ͂Y!>WGߡA;?ܤ7@W=7W!bΥG0綝cvp>O[_`qc1	4LjVّ^P=I_^^z<҆CFٶXG|7{,#~WA*XپuoҍuT,'7[.L'ϒ-gfg:gI-QuR{$u/;𴩋hvZ6
+?~FE|7Wh|E,ES#{u]ٖ,ʅ>2)t
+0nt*m'>I6py}%CY{4#=Tz=I^89ѿfI~L^eGXßG|7GߡAR0x7)ѽ(mY.\w(6ݘ9WU&ޜS2#3z^DI^8=[_`2!8/##DC+1UAsg+XJ\L:#;2w(%Z/s['E|AG ~IF~gE  6 :HS+L0KgDeq)"\jz5X{^ndJ_en+=B9VUͯ8s}{>OvÁ9ų87t6_ZbjKA1A|=Xd:}da2$Ν*(끃d(9EutO^DLf0I{-QnPK~Nn4*<=:}Vf	_>%+*\9y2GsA|m_=2kP ˇb`{+;wꪠEO=x{aod" ;ݳ@n4*xތG+'H-si*ROB=[&a6\WxKK	F& >o$Nܮj/YѹSWPx}u5ޖEmBZ'ԏvk+vn1U"`uR;'^/8?<&DBBgA|ԟ!.o3mAf\_{!Ν*(ˍ῱ӯ=J.2+~5u.i;`J`LaU|2ߞ;,ûsj|C_gy&#/ECjI?
+5h4mҡu>wS2EdGSB|_5mVoB~ϛжs
+fɏTGlYt/oX): Vx*VLכ$dd~&2K8zJ_(t_S]VZ:*|h|t-G|}_52@|[h|E.wMzurYUt
+mUP";u~tMt$(_lpHvZPZqfc`|O՗=.)+[;1\pY?^o&݊hW)G|y#% >#~5[j+6VSe.JދKs@*Lix;=xu޼J\UѨ
+e<.j'O<>M`5L?2X:VЊ2Ν*h(Ƶp"ǿV}1!_b?\ H@} oM@Ӷ  AZP0|)ZA|=pd!(GsA|m_=2kP!2(F& >o -Կ"P0`X C[@|ԟ!.o3mC
+P0W|@|[@|W_ķ_XP0`- jd1o B+
+`h	_G|-C
+P0G|į#>' 4"Mj@| o⷟ = >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|  T >@A|R׊                                                                        Z2
+endstream
+endobj
+9 0 obj
+33160
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 42
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+xzV?֛W&ylmɶRԹ9D$  @`9NR%KUS[[%&w擃˗^=p{w/^W/_w/l?yׯ׻W_dĆaCt ._~g_ݽ,nnt^rqB9}|3t<(ItCӂHsBZ4CH'4d y-!91L¢uVh23vwL
+:zr	b޸y"QfY'"2%n^-Fw3_g'.Y{q񙌮鴦X"ǋe$%3 J .f>zl^Oƣ'9Fכf{˙)r
+&c	 	L!H箓s7ߞ=}tk*hS_l`n7׷s^_^ o@Z~p;Wx%sqxa//pr/νӃ'W#y?h_oa~`f8,zQ ގȨ۬?urwyyvv)bnd|Y0q	"H4}`ldY7b1_hy"['1pxu]![	\	1IU5J!z~wGp(#ZRQiQQh0DKFJ(!NlYVE"(vQI<{+.I`]9k@"QAiWͪѵtHRu@W9&Y.4MZMf(ѫSzRd''><Hd*M׳`\(55ddR-\4D<oDZy%<1iћZ8T$(
+JPS7j>[ݡB!*#dRjΦ9|P2l+),dRB<("%DYY~dH)JNkfרO`FEOrvJFVv廽3v	UKV#JIʴa2pE=́QyD"A)'<׻a!ਠt"e1zјLgu4t#5dQF{`fgs}QQyJr/b^%yB@NiU;lҫ͆l>/fe:PK"f\:XɚZdISQE)Kͩ6.Z1
+[f5\.t9]/k?_vs*eF73Y5E)VlN$KYxb\lO;N!dhubs>w.vJ٣YIKM
+|ia7[aٶX8'$/N2*bA<RtK v5,>@*r刘o1O˲jz"(
+)*i2a\(X&"D59ʨg!6AJ)Q)zcлr^-o6ۅ jް |n#I&Pcj,Jbi48#/S4&J}8  e;>W֛.=zaO~|:9zZ7T70iHY:y2u]%U3MwvojZV,Q̊b.VT%9I,HS-Űr4V Ep6HI^!xʈba@VUYP$]ʤGEP*jVdZ@z&Wi<ffÒ)լ|.CO~z4#__brŚI.]5RRp:+5%B?أkONbcsv1zv{ݗ'4O/=`烧Ң(/~~P)"jL%e+HT땳:"IgZ;D 	<|^N'4b?;<9>|ed%vV>x4T).:{ө(˶?uJcY@O<<jѥ :n??ꆘeYx+aemqntx)N WFЕϑzZmoVr`e./.\Ic޶?o/O=xoz^67%T]X+o^of hfӞ-fݭj[C	޿Zws뫿?<8:ÿurzoku~q-ֱ|
+3C;YoonPD8ܑJZO^oI~6?{qݟ?/=PPoPy%שw_mrޱP f:*7ND"9UƐl\k<Oq')n"@;4P&0㽷4
++pV	fz)4(et<iTp(_	df1B0fu&d
+B#jp+HN%M	4 2`(Jbaו7C!DR9=a~(r4a1S'r0FF$s:)=\AdT_,W3RV^O1(x]8ލ3^ r4.f:o48jՠz2/n	,-iCxv+R& -V=x85x6=泼xT@(]b)*4O!7ڨtRi2Tο140fw4:M^5q650F\&I%+^BPbȉ<	bʔ!Ki Q "4?\")bV6z]SjBI=#F J%Ed%Wji@db6V]H?AZ( Ujv
+_63pj	٩XDKҼ+v+[އQRDW\*lnB'务.כAH!afzDrO7eч{cTfVDb6[۵&$(Qm׫J)VAѫUd	erp:7M+km.;41ɦV e(~LzKv
+KDNKjYX_oy<*XGXHd`8vۭ~gXNgOћk/rDCq|dXSW%7ZP:ARޞ/6qOzt7D7|է,x$/V584ŜytL<Gvz=;Tଝ7@z+1A>E<>Kȴ3D(ܞKe_z480Ogөƃ^]vG} g73#!/Y((CiE$H0[EbX<T+#W.$p{-5~~/1$-cJp뻗|WGn+>u5;@2xW'w*"J3xchȴ?#J#^e2~@vF皜{4(p>"z>1HK=Rā`~<(o\(zQHh`(zNP3m|	ODG{2=;cY>JOZ#NR;av]K}	=*$c(J{P
+7˕MzZH~}CQyeg{i5!wу{~~HpTN |n\	L_<;`ZG?^J%br%Wr
+g?sBOXÀިUE"q%Ј?W~ewS@hSvȠi}^}v瞞G):3	prz1@0 @Ibza3}X?RN-YFF⼪ 8BJQGtAJB	8rkg$F<=XgbDFQ~Ȓ	XkBkYս8`pݿd@GUٲg^%'8H,$=B/0nE-M3锪&9՘-0u+g$߿Zbyp4U+d64S,qVr,A4DZL%`H97 x^sZJV\:E:F
+lE%5VlGIΘnz3lvzvѴ?^͆eerNd٢XQK5m	yY˵ri?gjཁ{;{nw[|{:t쵂fKl{T*#&1|2YLK)ƄTz2_,*;܆{l#JUNRJE3NKIwk,SD,FBHZmKI4}@NT=k)
+d$nךf0fn
+$EeI7N͍$ͨ*;?\qΝ[IfNg "%1,P]jl+NcX&V3'`Z00VƇ{&VN%8u$UgOgpB|t<^RhF4BF0<1Gv+KقIYˆ,jMѭhJ˂5:24tK΋CC3p>Do3n8  ^s9&kG+X|=^<}4A0o 8aPn>+cHUO@s]BwH+h,J%r.W}\>?-V-ʦN|;YIGޠ|8Q<Ž\<Ԙf/G-0:d`}ƣΰ?FXȃ=!|XLjÓ@Ov['i !RhAGobѓybcC"Qժϧӓ=E@ϋۗh<ru6`29	4yh-:%eH"qds_~Y !BzrXV..~{kS![&x]Fsvv{|x?z0:oF{?cJbHլ->~ҹx<tʅ<B1[tpu'/N #@h7:t"N%wIf N ͱ@rE'i.a%MWIBq2g6o^7聁7J8M^^zO`s=ع5<NPh]	"H&Q,si?^&C3M$!h.pbIعDj٣S?qǑR	1eڗz!ܬ6RiՌE#RFlL$Z 3upSU&3J :oXP72|XȨHӶDz:kjl\Ν[yU~o5Xhnkw;YWj#OigNXv\j]o4?D?д=+lKw˪HlUJG.AF$544u@0A;z\cL9v='L*IPFMx2dK-z7[IrX7MCI}9EˎcuF>SIdSL+j?^*:*'~"zwn$n.h!ӳx8g-7	QkӴm5c(eA*ed"ܲhb64),S5[-ǥRd;ɞ{pr,|^޻eΓj]b H295_ĒF8D7״+8'V#aK2LiYg<y+TԈ' z"2A,UVuF	fl;0mﵫݹZ	FR
+HUG0!(s? z1()݂BCɴMg^k	{BR}\\+5J^FȉE?׍b	J08ZCdAX**T!H6w:]I\	
+<h"5BZ+w
+h7c^s]N;WPsG'^
+(8mǏ!˗wehY1ߋZ&'./q,每q@ظ.hɱ,IhEP[VGj{|~=9<B"kۛۜ!\^a88=WC{^%ץ{<:}ӋgO7i#lF{lybCoD0^CφŠyno>~n(-у=.J_Š:2^p0byWn뇟<u||:;5aDDu}^a7O>W*pT+W3\JdK1fsOξGw +\DFc?2\*Wr X:_,^oF1hE?{HfnnnY嫯q_<c켞`$L^K_o<xχћt~EZJ2XIX\Vso4:bxh,@	P]oV(J~uYεg@&E@|mT*2+od'5HN<H(Q\:>f/j8(ӺW$*quBp8ZF#D'Ǿf=EN&djHRwQe,^oz؊KÈ)AKIe4CdZ%+ͧyRsnznۚ~DtSVfSTU*p"e&NY1Neش#hwɫن)*eKV=,D&%YkWIr,M3DIP-9oIq7Y;{|P$l m̜(%~\`ULr"VkN֪viZiܳ}R5%+-NA2eiNt)>'QNxNmuﹷV#-kAذ#IjS1+jUm4$e+l{,etp2S*·Y闸׭38ZΫ!IU vMf$*k77'hIG9f\NVo{;:7R2v>&DA+T)%pOr:x!fEhݐ$͢~(^c +(6[1A.WɮʡZL,MUrٴiI˝M|h2DL~_vfN7! D~`גÙ{A7.X&|8H1`,_~Cх9_;{}Aq$ {N휌s~?
+'sw/»Bq9WWsg r:](sp.+Kuo޽w>]{{;8_<~
+װ{>.v؇/~XEzz14`7o@Y<{?ކv<|>?r{{ǫN_eÇ4#盖Cߕvo
+endstream
+endobj
+12 0 obj
+8281
+endobj
+13 0 obj
+endobj
+14 0 obj
+8281
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+8281
+endobj
+17 0 obj
+<<
+/Title (RoutingTables)
+/CreationDate (D:20140209184404)
+/ModDate (D:20140209184404)
+/Producer (ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000302 00000 n 
+0000000386 00000 n 
+0000000404 00000 n 
+0000000442 00000 n 
+0000000463 00000 n 
+0000033806 00000 n 
+0000033827 00000 n 
+0000033854 00000 n 
+0000042276 00000 n 
+0000042297 00000 n 
+0000042313 00000 n 
+0000042334 00000 n 
+0000042356 00000 n 
+0000042377 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+42557
+%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/RoutingTables.png ns-3.20/src/netanim/doc/figures/RoutingTables.png
--- ns-3.19/src/netanim/doc/figures/RoutingTables.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/doc/figures/RoutingTables.png	2014-06-17 10:33:13.899995915 -0700
@@ -0,0 +1,281 @@
+PNG
+
+   IHDR       0  QiCCPICC Profile  X	Yy8U\yysD\5u	i0BIRX4I	"
+ D2|={s^{{}'EE R-=< x H1QF6A^xo?
+ Xq (
+ HCQm-6	 8- hI$J0 .0: r$l	x!\DMb)D+D
+cI	[/EDx,%K#|A_f27tx?p@@2 !67 Q GVο+eoprPI!VpN`CPAds+X*C zȮv3@ &iSM9!&-Jb>D1ߴ#b ڒ'mjgKHm6f~.ADQ7l'Fo7nI4&ON*y
+%mߌW3ca' 6!o?r\| @ VM$,@""!Ov[ Ri+jZF!U0Z?3Ù,q8?75Q`ǆa?`oϱߒRr
+%ۂ	(BE?<	:c80<@-1@!6ۿ?|Z2꿵c?o)֐A oNMt݌n Bt#}w|;{shGZiFi_[ISaQ	rpUBV
+rB*Jj l< ,8ni hok4	 @_8!	YXJܖ8|`0/ Q mR@3gvAA:'ipP4V	AxFalLY0UAaEADET-D1ClGEH$IBRL$9\B*my#/7YAQ(6?JBQ(oT0*JCGEQnsjh:4Z-Bў 4CkMp9OÊĸ`1ј,9L 3y|XY
+ce[Lbp8$N~P^\<w׏{[xYOS||~ ?ACG#HBcNIIBGSEsfffVV֞66m)mSIU3AGp&	g	5aNNn Yktg7?N_NH =Tqb%A! CC= gFZFqF#]y7212I0030ffZbfeVfg`bb~<͂g`1c	`Ic)aigyǊfe5agMe-e`dñIYe]eeggaWcweg/`>8qccӈ3(g 2/!W WW-sn!n30lq=<x:xxxuyy3xoC9+[o0'0#*/Hl(.d$.tVм0p%^UIZqQhhh輘XXKqZq-3]n%$%$$%%ǤRRRRϤqZadP22!22OeQdrX9mHbayzy#8j7
+
+6
+)
+
+=)++**(oWNQnR"RLjz@QZuVu[mM1M_Ba-6-,Xmc?u4t:7tVNot;==%	}!}_$beSFFFW>+So/3o6005c1s1;g\<ؼ|Bb}KeUv?v>gFƆbdn{vN.Ү[ٟwtvaGʎI]NN>NUNߝO8Hĺ2zV.M+s {4z=]=<v<sK+k[;.]0|nb}||HbҒ_߼ À܀@ `S3!!y!sd9PТ0p߈ۑ,av%5}:zbM)Abclp+{(M~\A܏={n3G$$MJ4Oo[pRrқ}F.Go; z AɄ')J)9)nMii8TΐNI>{HQգGed<T\z|Lcǃ8q$dɡlĜwlO
+f.9(O-L왉6gO毝9h/e\$_dqX8WWԵ2̲
+ǊU|U'Qձ3W]5X#_s6{uC7oԺYS'^WxVF=RP?0{&ݦ[w77e{^ڽĖQZ[ߵ?{AouN.z<XqCFw}zϭ'Onj?|اԿހ@`3g{OLeуcرqW|_KИM[;y6!oJprZey|ΏQs韘?~\KϼW׍oYjmKKG|_]Ϯ=kMmDllD(   @  ?9"#b3L.`@J@%0BҜ%(a^e 22dNa:ykG7 `=nQXTtK9bRr!}T`Z2W:uk猆;LnXdXXN!8qt:sIw=vƽȣܳvgWwۮNnߧAaр~B-ÂD\۽Iъf/a q&	O`U)	+69v4"pfiVױ/'O:fgt2v?3wγLa"ËjKE.{QV,j2_Z{|:[Ɠ<oJF+ӎ{@Aww={Tҭ=ՓDDo>~g
+~>&hy胱_MM,y]{Iye_^N?iX7{}ڧkT_m~QkpYݕ5_ppDF"Ga,*5	Vmp߂N5hz	st0 #IYővcۈgUiqAK}"xu%vJHΗ)- J!E1\QYMUeJ&&Z:@n6/=	/MGٌthH30\dooig`/@tXSsKkŝiSKܛcuY{	Ѡסa/#^F3$e6fϛ (W!Ic~.)i7ua8ᑹ/X'5rO֞r䳜(+t;OWtT1{EiOU$ͮ\M)6sxS~_Cvc;#w*?` s]>N{+T{{s!a:/G=_N(^{r߇is.}QbW5s%	N1qE(5Tjmn(aj6;nKK3M{OKoCbgd"2YV4%cGt&"%wT%"%$Jݒ= '$w_(*Z*)(k+QTT}vB]_}V㌦'|m3y]݅mEz6z?K6(*&uff	Vw66mivDg;UPN0Fb]>xQB5}}_-+_Az!d,y&I	޻d)xR[ئ=	.Z{ڃ,<)it>I:r''sZ];+YB9E%bJI^ieʕUg{Zo݊0|INX-lln?m#	=<OwU:>kz2&M$uş75@I1 nlR9 U gmH	X]?,	5>+p1ESM9A`4]CMއ@? i|bm&"N	W[h44մ(Z/;~B*yvӻ݉c~3ь+Lǐ,R,fBs8d8pprmŏ*.
+Êu* [!*/'Y%eZ!˪{Ԝ545~i:9{<e/n@kQq[f-n[޶~ݺʦ]=+;N)/Uo]>;}CI~Y\φs
+ϊh%J9s*NjOl|g"^j~ɜ)i,09FpNUnQޝ|/gvmTWzsâh}Q㭦'[a]\]7|=z0UDۜ?tN}_.gx¼jo9Y<<; T`d#u0G٠bQEGEۡQ\Wvc1CX:6[]ipwXGhh,z'
+ѳ_ ZY,l[9G'{/:M>*:d!Ka&QrQ8=<iY'^ZlE*O45ij7ҽ^~AaQqӇfS?ml2wwpsnwt);aW7H_|/M}BF"#-w.j$'!49i_{9Sz$O;Z)UxDA`NYglΎ]>v	Gϲ'U-WjjUݨ+jjrlV2~XG.O~45ec<5ĵV&#ӧ>rf-}vr~~{rğ+k6طƟhcGC$
+t!_Ṏ5<ǩBF8U{y
+q%?@ISBAM`')ӍЧՉELlL̹,¬غ/qέ#ʷA_UNZLT\DdԈ̆R!";j4*Z>ud01eggI۞cVn}fGo2WS_=vy:%%}
+L$GvFFDDQc$O:ǁ/SSJ=rdq֥ȉrNK<%?ܻB//V*tpz%ӕjI9y+~1N]{m4;:WV<v!<xo0a(rDѸqW'xTGY9_L~υJ\F{~_v]a+!+}k~k:k~cF5^1LX  zjz	L6 9̛nNՏF٧  iTXtXML:com.adobe.xmp     <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:exif="http://ns.adobe.com/exif/1.0/">
+         <exif:PixelXDimension>1030</exif:PixelXDimension>
+         <exif:PixelYDimension>409</exif:PixelYDimension>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+  @ IDATxXSW/=QbM)`HGhKm^rjsȠmye.^zE|&yD:P3X:2DƘ2X4-ys'!	 j]k}w}{ A @ _NM  A @ `Ȕ A @ } O
+O  A @ S A @ 5dJp_W?)<A @  AL	H  A @ )}] A @ 2% m @  A p_#@u A @ Ȕ A @ } O
+O  A @ S A @ 5dJp_W?)<A @  AL	H  A @ )}] A @ 2% m @  A p_#@u A @ ABp ch>;CEZ#>@@;% ?-[6MoHr AC20A`OCb po!@[E% A @ 0dJ0Às A @ {2%xK  A @aB˙>Ҏ&IbZMУi	ϡ	Aܜ8M2#}]Cg$	eD8cfd(GLqy3e:0EA?Hs1-X'+ۆFĤ&G+ }%Uyn{IQیI{05şێh@v dFmѮOUBܟ	n'/2%	"$C !%-/y~.s:'y2GC~6YtVE 3%γfWF.1a3/RUE-gV^iKN~E+w ~Mk0G[Թ9E/]X ,mg𥳭
+颪y:6H@U枼jS\nwF|D۬D	B|_B|D(ھvD\	U!?dH" ͙k*2;qk3mI\ĒfS!
+${b2M`PK۝ в|~1syˇt;¸4E֭%/ɐdVEYL|GJ^ZY
+&3w䐗xz CT2*6C-l/\i^sg"ՆF:gt\$^W?Ux`A;)G\Iќ0ӷ Ё!zi;4cʟlڴi릭e{ߑ+`fR3TxB*K[XPlUopMU*6 ΤVAnRy@-_"쎸eAsFJ:F0DIpe rCCWbn;\		mQnm;-Q`^=lߍ!>!m{O	&ƑL{ds~aؙY.JMݾ-&ylTf6JS>@= tgU8nr9u}J&Q0017O0h⓶_yy3WUS21Rfby:=t<%i5"i
+]nps}WFv܂xf7?.[|5")ISvi:2I3ؑ\{]|>~foS7zO\zI"tphjL4ek+ז+o5\5MHGOoV6Q7
+^3675]CxgB-SdqnYOlJh1Y#`OO6&s!p{hH3PB|B|͂"-z6^ȪjC$ңH\1y$@3Z*vGDo)OYEBz[5%vɺgEOvTW_
+$Y{?UZQpe:6d@m>#Z} 3⣘1*ް:!1zDW6	͸15D#a2GRǏ+"""$"5~FWkH'mQɔZJmInM&|@7to@;$Զj>#u+&_Νn#:.Ti//V+do_% akK4MxIgYRTtq'Py]V|RK)qƙ0brC1
+*.m'U!o<tp9B-n9o?B" hƠV*eo%MOiF x.rp{cOW$;r 0pc|٬%]zFTbJɊ<4|GEi%>F]ןpC8	=NsH\qTWsI(4>ѰD֨xzf:xz(
+GњW?u-2z CVP w-\ݚaz==5}ߚRv=>Q~=6x'Gp 9ұ
+88'x5!h|ӮW;ϕ>GݲO7"*&E. w'/#D\4rQzfX=tWB|O< 0)Xշ(8|J}d	 "
+E-'6d+Ƕ~g#QGn<y=qS,N!$]9e/Uְz Gj^5<Ǔ(/zD]Dc+/HyS<ݪVK(NVYys}'Dzp/)Ѫ7T6=lv+cH)xi/Z-EQ)G a8PNcC|CQ#(p;bW{ު\Bzela{ 	3١La9YsΏIO۷	%>mMa}v5OП	I'!ZGp",	*],Y%Á%B^%MOfaXBJ,`Wfh̼eUp	;'38Bwm<۳e3%b.@S)lQ]"dkIϼm.K8;*SŽf(vpQ׌gfA(HAXLL~b"TIgEy,;˯MZ%S$̆SR-C4$x4bn춴Emll6
+.9gRj8m{s68)#ᙍ]iFdy٨bWGz%ŖS~7YM{̐gs|Q%oB|B|@Ng	@2!ԕAyʬ\;DOzYj$7ۥӧO/[m|	Νi-pHf?L at+zJMy-rp΋"sakȐ )cw(C×~}GlIf	$9=^܂43Ph{X549;B:rV"WxW|nC`4;ğ܇l!dTB|vBz|4Y7dim@aTx6k3<3}GpR =˃D gW(	.p/:&I.xbUE63ʮLv7e+tNL"_3x<'^rxOp	P	1G	W6_~!0>k.Ғݼ01D1}zGs<<]x#xs`FLC=ӱ*%CΠ.yg_fGGA[Ǔ='$HG[1)3K	_^^ w<K@\56Ez|?ϋŦVi KVS
+%6|nI}7V$JJ33vtJb:e1\)gΒA;SLݍdݞ_RMU)YYħNܜ)hA4h5`YaTt|15
+97^^ЖU'E~s	c(($ !~Z%q!@cDbܕLJ ۶aݭeU)4WL*n]umU
+ >ku0fʢFu@mohחt!KgBFH${IQWI)Fuऊ
+|X_.$StOJ_*lQ	)ʿE*lձ  ƣo6!c+3;PVR|JikUB*_1ؘ*,Z1ivloqFŪ61A^ 孠զZYP4.Ֆ+uk4ҸfJJ,r$:К.Æ@ 9j		Ce=Gg|l0t'kJJ2j[S|j}|KJ-krOZSh6h}!g4)[J"<0ڥ<L_</[?1ۡVi+RZQOj~[kŢ{xa(.<ǘBesxj2gpOˎ,L|}/lOiQ61*jre+TgH)97+pB$b,rJɢbťUꞯ֗mJy	7o{Jt\WNx&uGti-ٙGXD_{whJ/ҥFƯNB7G?o^Ia1f`lWg+#cόp2̯?mj:nv"@ޫC߫߄ǟ*{t3yq8j5G<weK
+2~L[Yn^}Dg%n{YlXbHT4Ԛ8[#Û4m49ESn݌E=w^toI`t87(ju<Wu++wӫ,\Nτ_*TխnuˌGʎT^R
+k𥾮GY+CWoPpvY(]Y9RU)Y?SWan(:GQ蛘(Ӡk'aMH`Ʈ譶nKH66i	pcЅDщO]}?p^B
+1#0ᔲlmRs)M@ْ}lV;jiܻ#B|B{SSe]>T]Vv~<v2+?償/Kya[!p';^=kY(gb.u#wEC2o%p	߱'ެ&24Dap8$D0l}sbߎ#J(_mwp[ٵ'HVH+ѷtY@NXy\pTMPJ>]Q2^WR4'뮹R6eZEU;?a=a聣/<o!>~ӹ@$~~+T^pk1zW96_e"(P[8R{B|
+	-߁wU!ք)(y+(gaIz[I=\
+oS_\Y(;A΄>pm՟s vDYsJͣK"8_XSk!&3!M|y+ݴЯqۃ?n(ި7)~1pL[ 6c~g<I)s5ܧ <i8d!فeV.oBcsqQ`G1Tn9mɣ2tK:
+̌1A	:)aakn{΍!M7au7W C-:9w !B|^n]$x~X<<<'զfRp\VBn8!kٚ\X}b_꒯^7Z#!@J*sU/Er9zK)qJDMNsL$zXUbuA7|UUoZF=Ae3><,K+-̔Ȩۘ5/WwŵX%BWNYK#Tdц:$v骳33Ϝi&G,~ɲfWXlYnQRW͐-u-!,?系?kYOL˹dFQ,l4v:/+m6oKbҸż}Oٌȟ{B|z#w wo߽sB|:%'wou	E9nxI][:]Ga}<qH#Ӡdsdi{8F@bX(r
+T#vAdΞ٫)*%CV#/xccΰ<1duK8Kfβ	t 7gQ7+tO{hMAFhXݹ!w%gB|B|B`2[݇"lw;t3_+,GbӻdfH&J8'vL_ܺnw&=k^YbD@YX_ETs&u3"{6=B4yz7x% !5ryO#@彊WBB~K fŊJ[j}*fZoXGO|(ь5Y>Tq@~z(nyƚq3gyX$xA2le"E6\`ZӒgJ?Eqh5JYb5u	A8[QbPҔx_Րq0kdE3b"Z(
+/x'؄>a$p[>+',$~ȟӖs_b×NGD\ivj,Z ŌCkM\}ޤMUbioR~:fUɒeg
+Я39+3RsNǦ>UܠAԱ'8| b]γf>Ο7|&G#/{;xv&O[Ԡl6mM.R:vDB銯:g3937ǩM_V樽%r^:34Nތ$%#!_h}N !_ 	B3!O	М0DT7m}hwy}zu<oBr5AQ|]p36cb6Cg;CWQ2 ["7kUiu%GF*VްUs[.hV._Pk\rL~@w<\ xlk-cD9ނY2w˾b"s\(HG\90P@{P4x;
+64m(JgVU2EFf밃*xm3!,Oqh?sD#w͝>>aGp<:Uuqj8|	7e{U:kfO>%vy.VBa𝇡qFC4-ČMOlvDDaseA/.N<׆fB;!'LC/ΨlԒ>%ƫwn)I/G{j27´rc;*<nJ"3v0,f̠	߬8l<o>l:v1l{|N5k`S"wBn s!u_?XY2OvG+:~{j(żm+7#QMhԜG뇖.a<ѣҮ_t-emaOSh\ I<4x~^M\7zQ'GͿcp;M7^Y#Æ<=hp%̊;4kعU{QUp9yoNh?WzfD¸W榼KMm'.ġ].U,T[l*|v_Egκ ̢?ӯ'("/)W~Lp*6ԁΊܟy۴W.&ɰxGv}6b1y/		n,D$ A^h?w<4B<(-X6W-?Wg|$^|A#noRYyoK:˒"\Sg!fſp/uط/܈ȵX3<w+C]!UGn5{^PKתCyJf\e:K_Q2n`jrE<USVBS}ܟ/S	s|٨P|=yI3|2oTK|T岼5?JX.Uц-oj98 o<Nte6Z͚XwbF.x86fLn_,SZ<kjyq}FDci%+A*e[hSڑ,_roC?"}vgm6bW_y):;,9smﾍ`\4dhCH-xȳ3vTNX1`U5~36џFy6HNx2_,YB=cNh0~=d(ׄ.]́Fz|smbVz)%pkƓ2q*sWµݭS7ĮF/31@`ݜWXg^#s<ú	L6MP$~	qE	;[ƴ+9sOQ\fq8@F=^Nh1kU1g~y%&d='ڐ|M`= 
+ן¤7zz 2fy	 zh>FqV8gf,Ȃ9篊H!xï;zy/cY|lڴ6ӭ]9WE-qgš[2uen{Qqc(JVPmc@ }rq%T!MsodJU={7-]+f5sN;!!ɡu'0j[3z539qQX!'cUDweT{ꞛoP6m(B|B[=!>!> v2=Ԧ׭6fJ*2Me/@qtVƮRF}9^rjZ]1N&ͥ4Ǳ.Pw\)CO5;*`M$u"zela0~SeIW%U*Z}S'֬\#9˯rd ].ZBJPM8:cU5(\O9W8OƘ/[l7>_C$^*wJY_sOÓ򡂉hKRۻiqm۵0(6q״B3OKY\Ex.m	"{Ox	=/EguPt	yu+OLJO
+ձGS
+=6b#f	nzKG?h;՟U>}¤9HsctWg)`8!>!~FTB|BeV.oBcI5yT$Kj8Gt T.ZXQqP$˯MZ%S$fN-Ӳ0]mZ_|i:*j7tvYJI5+˳ F1+@*v4م~?\wу.(4c#B_%F
+R+MTv*xL9i\JLtI;!rbΝp6v夂1vX_Ѣ+:MZ@RTq|`
+'YPv^-]!msi5V@OKvÕ	<tML`96a}Fd3RffsiH7XJLTtOJRήoL+((KMh/5KmV"6;a1sJ㋼Ǘa	Ch.D%'#=_8fYoÅG#VJ*V%pॳˏϊ&bߖ	]xZ*nE6!C!Р?V29ọriO C[6an ӇA{\t1|A	4+Zzˆx!!5nayЁj(:;:oqBc$viXGF@9ۥDDj^`	;u	 39?>!;b>=!;B91!=;080C(r]=od@?Sɐ;ڪ['aPry-r>k3-]7e31%A 2!2Fb&gEB|'3|S0a0:{_^e,=*xZt1^g၁s"d_ỎYxH_ωNܑ/<Ș^/Bʿ)GxzD*#X5Y/Ͱ';xŅZ?Coq-δxY;=am<\1h:?[B|CuD7!/!~H		gS- y1tٿ:;7ȥZJQw>b8b)]pt:JQkU?M\T۩8S{4y{꧒E:gtm3T.nX()mXƙ6}ߨJ,jjg#drڄ=@}vkӑƢXjqi.*̵{ J-qAz!c9xP{n;4}nV߄n`:%]q߳!Uo	hӞ-;k4SǶ&#[XiMau)u@]Sp!6y,YSE2~hݺU;̣J\ЩE2А՛!V,>uXw?W"*iÖѭl W~M6*d-:TnV_`OTRm:77C$8],RXLmI:$[3I̦6Tܙ42
+!X _$'<@ˀ=~o		eikeE^oLcA&p*[2WF,Sׯ_C&R.co>-Gׯ;/՗Q|)F_ 8"i5<"i
+]w	+dH-z6K]W$7m
+		"q*3֫oJ[^Q;_vLC1J߽G>3cÑfeBzs>%`L`OfPRŘ~]/0{lȀ_DEG^VJqOaq\8A
+k7ܿQpF
+UG8KS8 0":ZhPUC孛CS6^bE/I-5_D5$i
++x }3{BKryW_ָO@B|\9CfzL^%wCA5	Q;v:);
+Jiz!{"]:g^mQ{4Ɋ<4̽M/"	ҟOP1TDl\Gz|L̯HGvHq^$;	2d
+Ƒ@qhu3Z㱲"$|f늬$@&	,_ݚ!Fm.~
+C_}j3l-LMHM3I5>swMBB|W<Vഄ~#		lnciO	hîn5KVe%:M|ZdٌZ=m,_ֿj$ЯaPBTa|CFCC Լ~HhI-tdWy
+?)ho
+볻oY,Za] SO'?+n״h=z{T0>x R{WA<S
+6oV\-$=qo]\}s=BA^&HK=B|_L-j-}lFs憣[823tтЎLj7{&֑y6v*OfJ1Oջ6^hh^7Zʔ*<s՛G(z-StR)yZ
+Y$͠D =7&g/B]=)K2Hvwt34Y]IK!chkS(-	 ӫJwg&!3WC\0sΈ%B|րHw4W~|${#.Ey	c}Z
++Bw+P
+VU٬ʩ
+J>e43|QO6蘳YA;5p84mȎo*d& ,D8 m2̀Jl,3 g{J0e'Yb 	YD&YJe0]h+&]EKy@7a6\Esxް,oNl34}?3VHWl6/(5C#F6!aƾ	@Kcɂ	ю@(o^ܲK#cđPJd2J"Wlq_347v!ẄKBIGVw^d1o^O	q;6!	,{"㻵NIeSsĴmAԑ!IXAIEKeh?_ZBWlz7 VŸXZ<߀U)Q卽L9R_􇙹GӖWّY.:(9@?]u! ˝	%'B7N`/iͥMwӦT2oMp:ݿ'{шZhv{C֟*V3,OwA'tGm>(Hp3ĒXW@)G)+%#y!c~2+<iyESoյec)B7kD!Bj{U!$8',3HHaHhq~!rDp	]z%2	k&rRrjoVd{իHHM;~Xה`S>Ro^մ˪Q6DpF5^MS*]Q]^^NY06'=e |&i'Ek_?FtߝpcV$ğw-{c3zbߙ0B|{rt(sB*Щe8n.1VbǮ]A޳ÎUl7/Lygz_:tXlrE][SSgVx岮U]b w,QīC}/yc)纝
+"9r|{jZ\{Vx&+a
+&vm=>(>@Ao&=ft\g	?,H+P=Ԕ:W-˯b_S^N%̖(i,֘-x#+)J іً<聎E3OXVH͗781ED'=ZB-ve.4AM˙Diߏ}TH` k/!Qޠ޴m{c23!!	A	iy $N	|hU~kSVm6s?_qRBK#)VaeztIᏱ:j[Ͳ81TC`꺉7,mn6YݣRh\s (Y
+
+6eDu_ț
+R@zcbѻ޵CjUD̻i6Y !dLw
+(!OļhON0=céeI<a/HǷ$Ϊ8UbV3Yd{wt~'jG|;u@zfY*J&.i.䄟U[dJ)_^4XN;6woyv6\4STJ^9@_bZlJ^~c3:B0g.|g=BihkwէvC	Qx	}#FY}!_  v͏$D
+&د߼
+5!Ɓ-\mHP-*4CeKޘo+# hDAR[_0|F"9iC}"p׎C҇\;`㳕r5{;#='9"4 gfJpwxC @O	˄". f9̠8rML%TZmӷ`EZ|F"Adt91qQSvĜ%/Ov;2&%o
+{0&Χc {+SbaE(nUqĹX'c5}tH=aq%N؀`iJj~?\<p$A
+߄
+񃂉D 窃?fIz`k"MbDwy_\t:ȄJ/]unrƢu	}Dc̊N{xh:%it[)x:fS\psuKZΎDX73h߁פTۈ6U9I}V%KtV7'm9*ʑN l6mM.R;7r˘o.|3i>މI݈ !>W+	BD"ܕsB?Y$=d?%@Bm۴i֭eU)4WL*Xܠ>N߂p	|6T+!ƺO!_;vti*uv\[d5=s'}/ }HC7Y::\ D[e{{Bm4WVUemhऊu-c {zrl|U-D Uo;Ime
+IBɠ졤EUEE$vʪSڬ?͚$tVWʆAR^YRazUu`8u~Dɪz~*(fzUD6sHe ,Db:XeٙJ68ިv%dP%7)(t
+
+!CKUYki;fnOlu@ufR!lpjr].va30%=>cA?Y#WRʔWۚS?3F+  @ IDATJ-krOZSh'mFyx@e $o4$m_oY*|ӏ\]X;"W+OꌯڝhHokXt/Lepd?5灎8P~qcgRg*-L+79|= t[~3IWg+#cό Cf+WF/@E{o-ggxXVtfl97VSuo}:M$^;ʶs5Hru_?XL4ek+ז+ڹMfݑOw3"!EoʨȲ9AE_=
+lyhsx>1j0%;>MVlEk2}ؕVܔwĥ1_5N.		.NΊ7B;uʹZs$N܁-)1%oUd%#qn^})N)cwJEV44bQb""U2>&D a&cjտ? }~wYw.l/]8BջXsD?Fֺ(CvJZVuʻ-	"ؤ}櫏^T(OY@VMI8: :c	ek"KlnNEm5iR_#/cr68G3aאR9N(ۢ)w[WMpEhPXto6xOiwe4zTmwoi/V+do_ܱQ?ɈՔybKZΟ>d/T1gݷQ\@XBMx#QL6)F$0s!d%kfMy	)-Y	"PQ-)9z		zμ3ϫL	-I.E'x*sQ=Q pî[gr/?oaBZxhop,V>|"\GruT=Qp7(n\[`<|s?ad|xLQ#^[cػ6_mwp[ٵ'HZi?V}. : #GSۊ;}Q	_>9	V=^'AKEr(añaQ:;wq8yBs)L	؝\^S9_sodJU{pZ)NR;|Õ͡nj~bp	ȿWrvw#@l+w˸C		Iosؿ3pߚp>vd0/~0*So+G5GqGS_\Y(XA]ٍNkSLzsI?\DģyRz"|~$%8g8ر=q(8|8GJyK9zT]#%]/Ed9o/<)vtZ-
+
+
+LJ|X;%*iV<r͎
+;PN^dx0i.9~{@JxE#gG `B<iᘥ/[l7>_sK@5:'	Hk]!>ٯzX\Ï1/&q-6AW4p!@O7H6COOuMz<9;0Tc3VuOMͤ\9G>Ɋ̆bR|Ѳ53wH/bW<gܤBXJk XV\$bnry>uŉbK}%?(b/A`X,Dx sK]̣
+[GI8k3uGjYxZBWNpQ戕\k$blᲈ-Lc$,pIGY}]HDS4HvP!ԁ&7Qה`0+'U@TvWrp\pj_oRD#y!/3-[B	D(o$\ 6?ƵsgJ~6		6V΂?@;I¸IwFBZI.2AC3EA1-'gf"=O c}RF(/_͎!CTz>E<eXSW^w	#\8^2BDPlGMѠVHm/#DdPsJBCk2ww@@Kyn|dkB|i!@Oz|܀H?-{ FB۷}s:.Yy*0+m}PQ=|b!+:a=6_6F r{`< /L@y	LxS]˩!&Z
+ne $Ƅ*.,3 k.C~K bO%+V1^|0~}v8[ferm؍z89ČRК~oHz/)o˱N2!'Y1lfVCO6Ĺͬ|dE3b"Z6tg|lv/>3p% wND',O]xgebanXxҩH+AM+(fh*s[ӗͩǿqmʌԜӱO?fqU?7nSΒ㐝9g|?ov΢?~,hf-؝yc|eou'*tWs3Zo!6sfneunKɝΟP	CAv%*!_h}N !_ 	B3!O	М0Dk7m}hwy}zuoBrnz.I1x1adɫprqHzKzK]~-vʖATeE|dp\='a	^G='su%HXE&<9"yK𣽀/N? kuֆݲ-ذObc@A:`u{L{J{}P6iEU3+\lee
+E`rƺJ0=Us۝KvX9o
+H0TqʠQ[,mjoBܗI"#p
+4c`EM1#l:41Q\yЇ.M*dڰLh'bctI?K=`AzC@#ջv=5yZe+g;*<nJ"3vI0,f nYqxD9|t%O:Wzwܼ.fm-˗D+}M_k[nݲzBnO|&u"}[{D4鼀mS#4|~h#=*NWPV9]}r23nZDqA<?iЇTMI[o>N)|Ǩ;SSဗJGݽN|R\䕝YݚR(\=j8H7d?o3><mc+sàlwkn1hĳ}2^*bTNdyN/f/% \z*6ԁΊܟy۴W.&0'wdxGo1y/		n,D$ '.].|(/Ϭ9Ѓ2҂Imsy}G481DeEm'	/,KrQ궖
+c_׻O%fڽp#'	xOOͺ޳ƾwk6jVuSڴ'4Pא.m֙^jOuV(1?ҧ*=Z݌a=_/O{\=m9fe
+/eyk~7\ˡ<b^݉.IAuYSNRi|\Aj[˛g]->܈h$m<O `Iuy7ʟFxSp>8
+}#``Ʃh#vՍrרCYpgg"feo$n9XC9pͳOFt00Ʒ&pd'K|)I:٣<gHOo\"GFw5	YOap̕^3vfX^OOM|`s'vh׎%Gs:_>	SjMx*ڍ,%Dd5}ꭆscڕjҧr(x'ϛaP0x :Bx9uWdVŜկڒ^xR\!GOhC5	
+(\B^`'Dx;q+33dV)Ω=UUGy/cY+(ش)?nuJΩ*fn14= +3=uwP><һЍA~RJhCFkwVfs=>.oК	'I4bW|E_u$#ئw"veG{ꞛo~S6m(B|B[=!>!> v2=Ԧ׭6j6f*'W47`h14XFJ=GH{Ik[i&4ǭ1cKj?Oт:5}>޲+kӇxS,N!$]ŖlTfdPkM]SHZr)N%/Y>.(ǂ(TjNX5r
+De0R̯;@"勒}u:<Y<*4!վ֮׶]bƞ
+З3^\d;ҳDl5j8<xhT(fYwG&?e'MV(e/<)V&M)PKP D%,U	 ?C	;Kxal$AE G4!>lYNz<*%5\#:PEKKMc[$?M&)
+yeq3'	|i䜚,[#dHEd3vEx8I`ـ'Q>5}Epdy٨bW{A]m}[2꠶
+/؈W(豔B$J~l*xL9i\JLsd"!vOWwB7iaʖyJJS6S)DfuQv^-]!qZDH@k`2ˁ	x3fuvf"ðِĤCډuWTϱf3,%?'S}Uz>H1lL+B((KMh/6+0	O9J\ISAh{J~v3)!>!~eH/Ǐ'=>?d]-X[9X^P᲋_94J`R.8rvX
+&ؗ/oRK:vzJg6C$µFg2 lC,eP~ȏCWw> xP4EZy
+Ёj\-HӨ-oVSzd
+ӹh$0BI{Z
+(r$6R%_>'2ϐ{~IN(h`<`!97W{ǟ)dHomSa TtF Onu!0S5rF?mFt3F ..,f, :%`VaCe:8ĜqgR)VyZp%؇mnMnM3Irg4ݜW|yY$>YrBc]hvB؁/x< ЗK/wvo>w?)WJ#`#OޛGR3$p6Gd2d?)YaFb2M0l{iIQl$Ƥx{+x^ͯ{.ux
+k o	<	2	XɄSl:!$#ķ́ Ih{)|^k 2J7~*YTsqiăzP o9M=u!^gOy֟W6CXRPEuaL\Jmon$u?[^XkJEkE0}B\(^[`C_c=WL)/#bJ"oE߸yt(nKv=T`ݣÔ=SN}ڒ5}-ꜜN/Z㈢ LÆM'Oeuukެ~D?Z%'ğj۹}9lV?a+=_K/fҺ/71fDĊ?{u'e*9ܨ!,ߧ6ѐvM`o>Y=GzcD{5x/_N754ftW:!pdv\e3FfF?`4sϼ筫+̫ᢽU5yC҉j ^h>rw(+TKؚ-h1g8켸ZɁ3G##dy#=9n/3!{E6yq&'657-g7dc=4uzBx+@DTO=ixIrxU\X-MefTa):OƆr!(9qbo"KϢc]
+#ë1?[Ѳrbr1U_C{EWt"H[	s`|ɓ0zDy_½Ώuofܣ|ݸc,:obWk4kCW;ԯ#Z^oT҄DkwD8U ޓa*mNߗUOw!b*{^6w_ ѾזvlQE2mۤOobBB#ΓeyL~PQF}58( k4;r--w;Qz)$0[KAbX	`|ɓc+
+Q}_܇v	2{^|ikDvzɷ%mԨ蓣nM]Ы]"v5hZ5ߖHfVeo>sxvicDjy.ɹ9P=\8*qIR\'nD-U6|҆s ?"U]jbl@?<7Q(LmIS:l}X]*Iű䩤>WӉ`|0I1`|jFO/IC#>ц7rp$7*+/I֢"ٱwFm٦m5˥9j:}]?լӪ)cZG<~@e`s?52~w[ӗ׶%mB|5DQ/_-
+)oAxq7s6ʶ5smuxUF}]z&k
+s<'K݂v/@T,z1Dٗ&ghzJ60C'GfYҒeZBx:6,]Pa%c`|,n0>}
+F|u4ٽq4WP͆tU|K)~dt5Wǽ. ]h;f]n|vvIw"n]zp
+\:Dk_Cwu9w<t/Þv+p^]wJZcDs8~My>ʭQKߊέC/xȜ,}d7&>ׅ*qU\5<|顯~,s0/ ~+g־n>J<fcg<HW®lr^.ֱbɶH+5w5gQr+ È#Of"jW*,;xq]@Qmk[OծמTW#URs|_Q}cȳy,D!$%VD
+N7,6_EmՍcsOLg&v3N_;jٮqFwz{WV,tmDu~[^Zmi74)6݌Mw_EK{xɂ{DUWsV$<C;lDyӉLFQU\OLP]T@GPzKٔ@'F}PT[-t{Eeǘ-uΧpv/ƀj(Zux(PzGX	9MLk`09F|cqzQ#Z.A$#QN<ZBl٧~B+~ֿ9'O!.Z:qɈ$%>
+j\L\t$ RDT:t`-~?<jV
+?>Gr6Y?`|0~NY'fJ[} pP`I+ !F-iAQ !	
+(Q@5
+?裼PIL0VdEܛQV!a\[XnY5Nw4Xp^\ e85w닻rEi^}.kj?z>-|~Jn/?ŜȺc)dCG%.QU(&+/_iL0wdF;êH6Z?7*QL/*XAM39UL!L/3reBo&Fٴ}rRW0>-`1|(4xx[1>HD#>#>MWh|Gx=y,C17hD(TXXuFBLFGe(1n+)2ǥ*툘bm}kˠ⤱#x%khъ\@/z1e:縭^Ez1ЋdH0
+ro`j̄D-/E}6埣{ψE{W#!	P%hH@/@/֖e;n+)y^b>eЋ|Ǿ5鳗
+ ~D{`ay,y|x?
+]oU>%`BL
+Pc	$h^b/X,Cq[I	ϩbs^@/A"~6KLp@?<76xp>uՈUc6=ZMu1WyUc9GM4blK(PċѮ]*z1B@/nZǱM}*$}B`|N˅z1~Ћ^,8aWE-#zq:E kE>6Jj`|+^b>tbXa$^kbDbr;y/2J`|NdsJ0^&Ǣ J-?12XP&he,Df`%.*Sn<uтkS[0>?fv3%Э>8(}=%XɃU ۮA
+Ť=5}e9bk`v`o~,'[Dl~|e+y&1ۼdUrYR"|RQbt!zU`SM/Gd	?B ƿx9:6?`I~0~o,C_i-:BXi5J#vv8)uڮal;;{ZNIEوG5KdUZUF`)g`KCC	^BohƯk?=7MG@X{&"_IQ%?xfٙ6?RwD\?FcS\'7^dy.[3ּ]\'5JЋr#$Ib{	O|`|͢5K
+.HujOC}&^o}jgҌYh/f;otmس]px{eg#ߠ홷7Sfo،SbF\ݕz~~",ֶ5rm=֫{cl<5B*҇k5EEܳ~g]OpQOBnCUaezorcQrlxUܑ*45]E;6Kª
+nGqttxөr׿x+",^ [1tǇkD.Hqk}`MR" F|^4]5_	4K֘]o=5?θ.UF._r6}6!㪔l+03,>:
+WEܗڒU,,"uh}Ѝw}o^l}5ÊitCoS#
+@()Q9epdɲ~Ԍ{cׂo57x`|^
+_HڿwAڇ O M	1U m5S&<M,CG[~@#f3.drW^s;4B*:M_&>IlZW-g0W"?7%@RUi?ԘK-6BϷgn7N9: .m@-"t9?߄Re}o!(? BiW
+ݱW(cWcc~77]^Wñwi,X] ؖ)f,h|?y4z1?\Hح`|brr
+?<0(`_i0/p,P9%`XүMbj~
+5~l詓uѫ/,]#o}k5o6ϲ8WSɶL:}YAqKUGG	>[E=;2w^hBn;j5KۄF=Ӛunkt*?Yk2?Fc>~5qU>~yM߻ބnf`*ytrrU_1D8J+
+K++JV(8(XcWUV.
+_l;ZSEAEG鋈M`Il GQMyQTI )gz:qY׸0pvu%cNd]7rVU"F鶂UeO^ǍM-ToƑU	(1@}WǐsE͏,:1Tno-(A;_Z0y5ADJ荫men.:c'zܲwEñxݴff`|Ə"ǂx#_`i0/?*6*iD˰ċUtE&7<{Kh}f#kp	Zk %"]WW#|_JG72Uk&/W$f	\Bhw5H}ۿ1#6dADuXuD2n:vcLSkM=!KDI#tumDYw|v,/0H@/k3t`|b5K8\8UOb,(>OfI<'!}`c~n?:|>d͍ 9룢!YU4U4nX	_A~B\'I?ɔkT$HI̹\(*PI~,0DSPVC8-<0~4U4nQP8<R0~&Nqa^O̔ N@}=%(
+ ?R^Lc?-|~JSDaMr3E{E]WSs+ db^%
+PgYc|M!#>NxTUbñ{>Uzk`4ށUďI;i5}?\7dzޱ^~w.ZqϽDiACzZLb@wZ@Y-"o5܌``X`|ټ
+(b1"eMM0~dé9{8A",Ào&
+v4yf$Q+ҟw΋ʵbRc6BP!EJ$K2#()J9ގ>qƍmۿV\{_GzYŧ}Vg+6LT+Mq%JJߕGp<SlR&1qTIy;^,oc&<}u^;ԌNv4@b!|';)'z۩/|%h}΋kj83t=B?B'?>rE+΋[^5p5)!цc,D/xNޘ<"4$u9*W[XrS??i!GoTAyn.s	wtkיt,kK_$7TR7C{E2I"M;6_7o]aO
+_ëWp
+a6EOw!b]DHw($߂	|ouj=װxwPW"$2RLȨ"J&Mz>95:~ҩda#h@Stb	7$+U|0s#>DƌʧZX46t4ڪgNp$
+dWw/)h57u&B:ɓc!jTߪX"^,rE*n#"$FRp' 5ƲҾIn80ܸ=t%RjTL.
+[X`KƏoHyWO`p}+D`0~4UM唀B9ːoտKx_W%IKh^QX욲M?=zĆKsO" $2|ED/fcۤǙy1ye!tG_<?܁q\4|U!M.ZGYb+CUX	/`8̼XҮ|;o/&670>?1Sbk;w8_qIQ0yb<EN,.Eujփ4@
+B|# 5"X75% BV6XɗX[ѧmft -2
+v3%זh=)Ryk|@, "sKd`|tƏ3QӿX{M#~4IknHmqL͢)fNݟDA;4;.Aֲm1EeJ"
+N7,6_E-=1-B^jP*s剐HD/p1Hen{@
+ua9mb;fֆ(#Qz`(l2y0~::θ0s3`ėrMA)J)O<Xܘh~ r͉PXS1TpqɈ$Tq18$G?F,,ȂxĪ,$6L$UU?uP-/]Ə_`|0~NY'fJ[} pP`I+ {Jt _]5~ų>_~)!vhݰ (Ho~,'.z9:Kr->ϖ刉Ԭ{ŷܲ2QiaJiF׾X";+%tk	Wpb.W_+x6ov!˄	Z	2yդ?T"h0>F|Q"KYD,C.wxlxyi[I"Gs{ZN4i?|;kN8x$AfIw`OOa}Zw_1Zv37j
+~&1ߢlqYNQ&Nd@򽐉+`|}Xq`|&LjGOo/Ÿwa޼"IƠN7v[-/pc+/R~Djt#Σ5N{+Lĉ&t^RzjTO/<çY8UvLEF(z7>i#PyƏKlFE`|t_JnW+A80JAyV#;JxewT%g_G`jB>k3~m& `NQI8ihCQ#7Ѩką>DXW^QM/303,>zct+$RҨo#?觉M0~LR=(U ]JJʧ)H\.zu
+=b3h`0}&%ZG?tK*m,:7	4ri]jbǃq*T%ŤuWY-?'$RL0'Z2Q|}`A?j HR0~DQD&SIp.O_(ݰg4DcQy,uvʀseY0F|]*隨geGOs^?S#jp_^Ec^&%]Q\{Բ%4cb>Qd&.9#Ćq.	 0>bq`x3O+ǿZ _3!wf!;SG_<?@q|vsB.S\.>m\]/'b#iX4g+?b8E
+)`t⦩1oyQ6MW~_/̹gF</eO^O-ToLș(5<iӖ|i5,y;ZXǗ`|V'0>FLRqݢ2̈q9ٰ~ <5V͂cQF[>FTZǧQl	qLU,>:dK`,C^Fy;9_QkZNXQea&i|Ʌa]C{K։$]<ՖVfT!"4ho	Va_QRJQrF({SQeRRi(~rsM'=%LDAncwfsڐJ g}T4-*2%0vȂK*dҏ	O;? 0~\}#~<2JQF,( 
+
+ȾA$jJ r@( OH@) k|"';
+,C{jwEJegTp; N/vitԒ,>^GoKԬ{ŷܲ2+5闂aXVX`1bRcVV8
+ 4@LFL,=l9 @L9%2?#>l. vvvZvh^`,ar+X:#e2$']Џɏ|e)
+SP"yĔ"V`'v_hߋ8Mdy颽?E#6~J ,p	|ouj=hi-C 1n/y O\Cu_Iaʧ2_Z[sSo") 'yQ QDɨM`tXlU3gj}8'0c`OSaKe8;?>lO:a\k,TI:@Lb,c4Ϧ@L~7>pp_^Ec.о#,JDKexjփ-F>A XG R-4L)/EƯe  @ IDAT,yS6MW~
+$a"L\ۋ&ebִ4Xaia	 :% tw5QyRÖ.)/EϏOLP]TvuǮuЇ_Y
+#~Qe
+1`5'WĨ iTY`d%BUw_tp`|)e¶8L@/&7?S4Bo,YA4T !V@@/NGw#iZXZLKeS:H{jgrLQX`|'& X(:6]	^? qE,CV5?؈WqI(WXr
+-2A
+b
+Gj0~t]U2g2xPCB)3Z 0*imCl_zq
+ƗJh02ݮW`q_ѓn'&eVa$C bytQW`|%j]YSeȳhblr!Q,C$N	ƏN@/"JFm$4?(ޤrJ <%2|9NWZZFU{&\!UNlzq\-`40bRB<%X,âr:ge5DJb`|0>^@/0>Or0>/EX<poIn>([ZjQ@4^]
+,C`|0(%@/"JFm$4?(ޔjTYBLS 1MKYpIPe`|ՙW-( _J@/CЋ%IͲO 5@%DKVa8qP  a@H@5>Ћ@/3.QLV 8\?Ћ>_~)( fk7xe+rD_,ɎVuhR`p%v$ S}sq%osOԊ{]d0cx߅5bN ;kN8Ifٿ+x(oY?W/.G+E{zZː|fk㥡zaׁ^\bFL̽/6rgwيw8t˳i):Եb;KW3@LUK^#~<GE[,C0pIBZJeЋI@/FDuK|	+wag{C;cnGrz3׌N5؋]ĞO4O4\:40|bmix|QeSޡ=?s6ƞ8KM;R<Z(ɤ0/n~<e(bF',x>CrF-⨲F#[J$+;lU:%L6q#s 5E(V#q;|/M_mB'+cam 
+&*_4|z!0>/J+ 1C$=$OJJʧ) 02JF<tK.=^ z1iƏ 1"JFm$4?(ޤrJ <%24?Fc~ٶFkBqT*S'ul8uK`|0~1)!h,yo~\`馯}_[^5zDJb`|0>^ 10>Or0>/E%X!;lM'pwUjk/xw5miȆ[;C%OUmuڵFWwcՍc{Kڈj[+TZDM4VW=oYrucdjw)&2OBq0j䙷375 $<l05-'^01 ʯĔ"CW`GIm0~Q)ըL~LfP IuW).I: K)]^#~H(H5YzJA|RR@"QS$*+(
+ӽ >P 	
+Q#ALqyWZ.f}ߵ҄ol0ưK+k_,[-B&,$X8Uʲ?裼P8#Sv0ߖ8&?dE#Hx^Q)_2cGJ_u[qFcЋ*^b @L~È#~GE[þ]De2\gck9gEI
+i qz1Ћ!4Eƭ#TRv 0ep-/to$c^b0~l4>#>JD+|Jy!gdrzr<HĕC@/ƪ8-%@LQ`(	Ə"7Ozgݰ.ט[L	QbLԹ.Zi`ĤyJYFjswϞki(c^=Xϧ@Ly)2~K)+o/fX!aɣmoV1pV,6ik0% xIӋ bK+0È%QDT2b	T`6kH@L%j$
+UWEZ:8PJ02aۥ0⇄zqHt_5~.
+,%d 5%XJ¹ ?{^^Lq)*YwhT@/N'Wv6`2e%$2z1)=5}e9s
+SN	㋺JiY
+,0w6 zvZЋ^-S^L\FyƏ*proshyňXLhvpq;] ݛy^¾\7ʯb3O;qG
+v{+hbWweş_1mx|Z߹}mÞf`;w3GkoR>fUhTO=OMx~g]O쩴^}޳;d}	tu[+_D#/Kcg&u>RQcSI[UC{un:_pƗ+00#U`uDdW+YA=U-/\!Ћ%9]6`nil}tF|$+_ZiWV9`Orkgc^1q8% bEGIh0~QI@xKeHk;gж*a B:&&ЋҠ
+
+']])g=8'0(Ћ@/^7| Ĕ"W`|>{m`
+XfW~EHMqЋ6Ϲ F|6?(ޤC7S!Thi2皹d6\5G<'@(Sn)߬EU?ee?z␶@㫖R /LvizqX 'G%]S=%Xҽ'
+oyC8V N~* k|kӹzfݵҤ.U^)^~xLYw3=)d0
+(޴A݌5U79o~,';xp4d0(+[:~Q0>;{_ۇ>X>w쵗_}KVs%"/`|0>؄@/^w",/qwp&WLQޮ~_\2tWZa,CLs<D#a]*ׁ^RTbFL̽]@k4%^se+xƚk/NڗgRduڥWvZgNFy
+Ə/*?ibgys,9QҋDN0`zC;>rz^mj{>:C/~nDC^||bmix\;ԌNF-f<wIӋ*,E^L[;::5o7/]ݱfrUf牍}#B솬cLH/vQbgt M/>ݶ3<8q";N~Y9_.nkK_@bP'M/Fw\&/Ll/n~<e24lDw=ޅy> q$bz1Ћf/0+IV0Ү)s
+2}W d[jRP@/X}%H0~`|> bK+`|0~GEߛTN	'YW9sQ-'.\^-I:Ћ^$_,&Ћŀ(_,%]S%24|i9:bBM!c"zXE'"V'@Ly)2~K)+{AC,{Gۆb"pCD1{ױ"9E^,$M_xIӋ/bK+0È%QDT2bJd0WJFR 0.:e%BUg_tp`|)e¶KӋa	Eg`~ϮSȘE`->d)A|aC)P HodP O0~|:A)P 5>ЋUq
+(RW9To,Ï>(///tZud^p!`|:5 b2N_$H</Vedb`)ʂM:;vU!rQd0@/z1s )DFFƏ*proۋ9nV]Ĺwղ`z;KؗC/[l)^HAn^<~tp^]Y!rbm@/vѶabd0F^bߠ홷.+:W1#IJ{jxRu6}r4;J/쩴^}6~y'Ndm@|ݏo77,EbTؤkz;7O*^?ɧNVdF]8Kd5_B~_*0~:\"2Y+ X,C }N ^ICH^I^b0~ls4>#>JD+|JyaJdCCm-C**Lc5^,L4Y"@LQ`(	Ə"7OzQnHo=zB[@/֚CI?gI7[:5 ɑE`ɳ	wi~viG!zq"`|> bK+`|0>`|^LYQyC,CͨDdan& z>%M/6)/E#~GEߛ?qHf(?0s	H	S)e`jd?z6㫖R /LvIz1^,#We)AKJ7DM	p@+ O@d( k|'^.]2ٛ30/z]ՇW>_Ҕ23. _ cXsY('x9ai
+ib{?fU6蜱`U6-w垾w&>hUi`ub}Y!ЋiAI{jgrKrns
+4/FH`|8
+È/ʨ|)k|ɀe2d>/+"Nb}6Ft8y]~-嶺m =k6[/foƯk?E#vv8)uV.[3ּ]rÞzz5)9tߺ=UgЄ]ƗI0@$._F V~{1cz9nclw]0/^pWuzf^|xvy-!zƮ&{aqbP3;d0}xI+')u
+K{9Bc}Un9VqUŽBZV4zݟ4-{:XצBQ'HMHM&.lLg('|e¯|c];ӱy~,:u}JNuc`|0l΁e%]0>_6i餀_	e(fjwON̌9/-ݠԧitUCoZq,˳es[>{ڲy%>Hܸ9qֿbv|ݸ<"a;0Dk5=yeDPv=Sv[r/riƗSH7O	S!2d3ԂcoȯaJ&l6xpl@?<_0BO	+3X0;sq'4n1Be+(@cYY٦Iyu]
+i8r;fwyQ73j+#1.0>?Fc]*\,CV~l|ҥ>Qde
+`*F&cݾl4mkD_^xpO5Sɣ[}:4@[Zk-rg+{X:MBö>¿,ClSM'-qO/^<?<RIB,Ivee+bOñ҂EZћ@*Atg)`|k)g3>?yu[._έC/xH$5X˃(.tD2Y׸0pvu{1'ɫ	|e!'~:k"{(a#e~g7Lv e?xq}kشiKMI>~pp!fnvSl^at.g/	tZ~_#2FIA唀f2K`2~XmWxkdb0_Q}ChͩY,*]krg>JٿtHZDy.Sp-ݎko#!^]_XrU':Z0ː=/EÝYDK/'nm%v9R>s.˳bq7b|pGs9-tumfmzԄ͝xƃyaGC}GZᶁt6+t!yK/	vz+z=,f0>?Fƀc]`|0~G_R*PiDYe5Dm $SL>2s{r}$2w`&#ޑ+.aS~
+D*`e29#\YpIPeS~y2,$ӈ# Q`| R`%SJZO`qdVAP oDk( _ݡUP`Q5>Ћ}qidȔ-^q2^χZix(rc3bYX3bD17X|Dhp5cn\cI~k/;DUQ\LQIh*Uʲ^L7OKP#_$*"A	#~Z-zIY㫸 XY"}@7֘g@5w
+.fP]L9,ЍIňbҵnȺ4~:A$co>[s]GzۢڬVϧ#(ݍ6bgooa뙘{{m^0Hm.A(qو~脓G2\Jkui`hd60>?Vc}ʿalH	<7#B솬c엛
+WnTw]OW(v%t(Xb֮3siE0C/y|4CC{EhO؀-Gj>AT
+/3!{E6S5ݛڹ}]5uzf^3:b;Pc/fvIO(j>'jc"`K	4yHihM>%
+QeF 06P(Fq.D]e}o^Vc}5[Gf^[ه{2)GS/9>hW7'v!GD7@ ?LbLzm{B<7I^,Qbsý'	@yV#;J
+Q"XXu;t	H*STihC`|^WqK`|	WYZ|J,CIXlbh79Ybvwdrnz<vC+9:H*웾L|r)Xsg.:5]\7)?ЕH\=578z.|@/Kf1_R %/)vOX<P(u{RT.1ۻ~-2|es?Yk0Kv^k0|	N#E,8peGIqa}s
+鉣1q++²"aSh8VXqz= O_0>D)	5O	eȦA,vXyg|)(dP;_2vИd1Tn5(G	<Yf;E\c̱/32QW߲>Un3V7[cLAv/ق)µ%*"pr9eD0>ۍ`|>/D/U|J.2d.Żۆo/f[p4OƐgo	!Ÿ`C/vu7V86Ӌj[+M/L^:a=ЋKzqX0Ӌgnƍ!lI^+,y6t`/E l?e[P']Lm^
+Jtb]MR``i5$Cj:ǰVUŜ󆶁o83ٝ3Fafkyck$xE,IOl00~xȤW`|%/)vU&bLH?I!s.e~"Lfs8 /)$`5X?X ~B\s]
+ȂK*k]0Fp`|Ӌ%кUA8^S=% (
+ȾA$jJ	̓@0@XzqR^Wjڊ3xLbZ )vaƂz=nF9A`cA㿟Z&+csƂU+ޱ{ޙ2ޓ^E]Y2x.,C7XV-)
+Eƿ˔u03@FCP^7X?N}3%ZsJ#~l}gnA06ƻlDgooam왈[(#"_1L3@UHRZƹ:FX,F}.(O{׭ICcE)ǩ.f	iƗI$0@$._F V~n߶QNbD[,pvpq;]c;Kؗ2[l)eHAn|45|^ꮬ9fOwЪ[(wN2ml/6K^on347h)r7"O9,:ńHzc̔zo#\2|-ۿg䎮M|	Rj=֫a6~yj~'>#]iͭ6"|6Dx?y[N^^'Q1t/Ȝ`F0~0+g% al!2m݉sݧ
+-8O1vf=}2eo.RV`cF%>y_MVMs~A2kCM)IWe`|)`|0\ڂ~SԀee&͖*L{T׎UeJF<tk~_LMu/_Yqa1+UUg?Bׄ.[*;/.4[$
+Rn.E D9
+Hl0~qtƏ`k)$eH!&S<[Ż蝜;_Vˌ 3ª2?Fc~ٶF^h0<9׸/ݭ߮C7not5r]>_/ClSM'=0E/)G$!VZ@5(,,+-X]%륊dv0>ݭUK+P0%Z`|A/C߫2d 1~skyK;2a3H\,+/}_,s0@cD⋔f]nA!'ǜȚcT6KnѲ
+m}K~bgEۈQk7۸- ak05y˦|WB]/K&㳽}[5*0B1
+8
+/b{U唀f21+l8f^	LӋyHkf׮5^s1;l/?BӋ=^|B^Q1rPMLbvo׈%`^*|~A-eȞ[!C/fV3Q.˳bE6?x"2>RPi::63YʶzNt=onV6w&6V㺫v9RǇu1nv4ԗZqmŏn8Ng@ǯ;l˿ YWu}ڇ=@0>?Fc]`|0~G_?qHT~ѤG!S"}$e2rZP$8TgkX0 ?&?dPmM+NEGƏ6T pi@/q,(O ( 
+H7CHS4
+IW tP 5>Ћ}q?jdSs- L 1i]lypЂ,qӋ`2U_V`ʰE:{:	k^Y-b-Xv<{{m^ԶE1H}y=-E]]\=|ڢN6`$Zt t@Len2ƗH?y4cz9nclw]j0xᡝINo=ЋN5=O|?~~"Ʈ^|aqbP3;d0Y>%yU&)u
+KӖمzӋQypHŚ\
+Tt񣽕4KBZĂFO>1!uhbjg4ցU@/F	Je¯|c]s5s2Rhu"G`|J`|0l҂e%I Peh1w<'Khk/=IVVo{Q˯˗}]MJ^1vf
+[(i>ZcvuEbEP	`|)ʧ̩0@?MǿOjy&Ћ圃4F߭Uzq4`hyz#1.SIːV&Ϣ5?ua8^ "r,Ћ&ƧUr 12vOw-_`|^<% ! !~@ʮNв5S X2 R-8vY}<@]#R!^7JsyznFۋzDEtoy<5uXuL/&mS4xӋ/	qL%^^RЋÂ!]^<vnWL/fKbXQeaγc </a)^A}
+1^MS.3e M'}\JO
+&]1_jK+adJ;U4HӋXvܩ*j&xBHGb
+Ə^w1rC}J5l@Lc0h5s"`R)Q@\(T_ID/ƏlU ?.È{{ܰ=~Mf-q\C( kTO	rP)( 
+R@"QSUA (I*[Y8)b&+?Vh m1Ћ^bWtS2M/#YcsƂUޱ{ޙ2ޓUE#ːM׫@n
+"Sf0Ћ*^"b`|{6ҍo~՟T{+`|0>w/Ћy)+l`ʰ\T߅
+3
+B5pe&r`|`ć_6^,+N
+( X2,C(~cCuhAu^6z1 3SŰ@/"6#\aA0P+0g,Ci!5t32@/V8:Ə[ 1!w1C}R9%$i5i2|=]lTѪ	BXyw;9wfɘsG3e{:Tt_~~`Zot5HG0(wޠW~&vu0
+@>f"+g#(EeEƧ/Hl0@]]$8_ W5O	e& 15r:'^/ޱCzVЋ@/N˷0>?"1b!Im #!^7,CfyyV'Ћi^-s`zZYĵkW.4V :L/nw_:~{02
+1xejc`BlLW0}L/.`^*RPdCGfcss+JKXzꂼ<+w+1RPi::63YʶzNt=JN܄j\wU#GӋKLӋ]_7Zl˿a
+Cc1PH`Ə!vUD IM&U%U,$Q20kj` Ǖ	qӋMm!0Z8O@ @S@"QS;Eh 
+ŊkP`	( k|'^$.1KYl~8},C'zqڿ_XM:6`|L/`|	emW@/bv{Cmq*Q¤fĔb.oLF|e	/#~v+Xr,k߯sum*Ԝ@/,ar+ z1ЋPy6
+G 1Mb#>yƗH'J ,C9YOyeۯ!^AT
+b2Ћb0>v b*TC0È/`|9t_95``ޑ鹩TsMU$Ћ^"mw# bC]c$0?8ڥrJ <I`jF)P8ׁ^a߮,`E	i8ְ7[ZBPZ^`|CG 1]G`|0("AR Xlb4yqz!DH)=@/ X:Aq/HB
+U0>?"u)YDabʥ870>i*yR070~q+ը1HI̹F?H&%
+$
+UW3QT) ƏK0#D}~*`0{0O"l2ƥ9JO 'u2d 5%P@d* OP7(
+Id|.G3cBa.SF9( fk7xe+rČrBJ]GJ/ɵ'dYpVeӗz_{gCʘ{O~+VI`|01`|0~z+ŎŜ>+脓}((ٿ+x(o0vd_i-:BȰxWm{&zRxЋ^Ӌ 1M{Oʚz12ƗH?|4eXy<̨~hNڊXHz1Ћyz18ޠ0Ћe%IPeVc?a:v>3in#zq^Az@#\ڂ~SԀe(2"<9==q®JR@/zInq0>?F48H`0~qK@x2L?EO};FcS-)dqq'Ki@]]$8_ W5O	e&@bj̯C#ěg(h3Nc^:y U/2
+U0>?"u)Yhwxcq3V@/z1`|KU0È#q^C}J5l@L1O0O#d A8$
+UƏGbv)R \Ӌazq\)ȅd)"̓@7DM	m*( 
+,`E hXd(DUSZ /F1UQ& X\Q  1!`|w 1] mBL?裼PxL_>_99%d^`dRjb7RĬ2Ћ*^ @LSf`ć_&2gK݁eeh," d#ևX=i$YbX*F|ٴJ% ,ː{=-ȱ$WC& Xx8Xesb&"X$^#\
+ `YS>%`XY(>tW3Ћ^Vo&`|0~iqtƏ`k)$eH>MwQV B:/JHȗ`|0("AR Xl ?zHY0^ zq00 /b*#CW`GH*2fTO_њ@/֪`*z1Ћ<ov4ԗZ1m++to:o5)I`|0>`|0>:jTْ&1/ bDqXղD3]CU W&(UB`|uQ
+?Sa( 
+,o,	B ( ?R
+dzq8h3L4PbM`4s0>ЋS񖣹Y)ЋiI{jgrLYpߞQAȑ];#Nٓڹq908I{0Ӓøskg0$hOՌ8|p㘘nl>KY﮴+iyk}?}z}BC~XO+z2~ёepcj8L^8z/܋^w/^<qqWI; N1܋9W  45IDATo*wվvie3xfA@i6eH]#/v/TS<سűp/{^S	tNhp/_5 |UD2T24QuF͵#  s ܋!|;_01Tg| i<)06xF2u_%5|I2ۃ{1܋?01GE>%!(pU x2iH՟?*;p|o`XqýqUy~P4Ƃ]C%8C۫IO	eK T_.!OյI$܋)<'A3+cLL`,UKm?V7$x;^|w!;J[CDm+=fg;/XMtzGO
+v7v40%zH
+Wtdpᆷ8zFV$,ۿ,JEM9`؁JJД(ԕjnLi]+M8:{kq{NK7{'VAq܋%f\akkVӲ{F[m6doLX3Rl}2nC71&تmdU:3|i" |?JCQhhSpJΫ(i/¼˛R5.IU|A3D>~L{1pIc!#􍢗xX7ȇ"*
+а 0TAjJ0E  ~@!*|ψ{1x%k$!63]*{P2);fS&猵z=ɢ5/ä3+_U*^P[c)>U܋̗p/{^tcJe8㌯O
+ n¾NߝĄ3YJ:2޹9Sٸζ|[ny͡Fi4Y#~`)s񎡩"#k=ϷUԮB,w&psۨ'=\Q1z=\hMƢOœ\t#2
+lwٚFn2uMga)&#Sv1V+d1(tkWK䈗ح9&Hm-ӻ׺+#S%6?8G,wCܵ53g[vKk٘AIv3b!W6_|)?p?Q.3~PːH#L2!{qbp/^{xV{^LC{8㌯ICpE?V#Zf3k-\L*O!(I(p4]CQG[E	N		/CF4|OG:Z	L,uý8l>J;X>h!`h{5)}	 #Luo&|E>6ۚn]ˍGfe}<Ĝ7/v&'SG>m/a{]ĒgGκ4uAs%}}^3;zmjl'/øpi2;l~PBA0*ᇥ6D^"ge-Vkq,KwgX08-{g~%u/{݋y+ɡu|AGϞJ݋f}rtqQl2yꨗo\zoD[M*3nۍ^Ĝepˎ<peJjtC-OSxi7PbK}	mxGf݋*,g5tȻn4eY^_mgp4DȂ)V |?JBQh('%7Ĕ>m3]4LL`{xHMևCy$OD D%l[8Svp/KyAU=%wTABzSA`p@ {qJ܋᫓KLß~eK^L^ޜJmܫ3NKµXrw馮m9i!:}w|x[Fm?xY\(^ЧX4gv ԚT1Z9C&HxiyFуca?6Ns_KU	|$puF݊YL鍻t9ȵdMx{qfgG\d01Yq_%!|@)!ENdsզe\I0pjK~_cQçf_-m!|5B\UJ /P/CCk+QOv,z]5cM.d{qfeOSw{1.g
+ab`5qW[_fCaPO-ԱS dNd4OSbϫ%>%!ab |?JCQh()A z/CŬUݹ`gȤ0>X]^Dsg!|YTdA!|YbC2 }2oT6u]U){1U>t]EŦeľ
+mEs6 e/LLÐ,>~n]w~/ɽxІsy{&ѥӽ53َԤV\/.ypjg>u/fJ|޽tdXMu3b!j"Pb24e}O݋}5}V4^ʪb0Ϊe0u܄/5 R=[Δ黪$l}.0E݋}@l5-WZo[Kn^|2N7p^Mݎ,<B:\{w/ްpV]_ms-cZ |?JCQh$0PrKLL\(4C@lx]?I[ x_L݋qƧ^<g{J0/)!(K	HՔ.a$ Â@`f	
+?EJJnt:1,}X4qT})*FŎG&nqo`g|㫓]»7T7U޽ޛnM{9vZL^DfXSx可NuIG	Q4G`Ҽ5~i)3ƫޥ?qx03aٚg|kPY*zB/upA4:?
+8s8'p?1z!qn%k{?Ԑ>T
+J+[amb59tRb})F;RtP]nST[m{+Wi\}b\NVgYyC*&$mVkU^U^K8NƷzQՔ7%Ƥꔬi9N)kkמ{ZZcUZStű+w/T1 vcHuV(zO4wfn?6܊3G5gN3rȷ1 -Uyv~"e-jvɾMU<,E֗rDVSh:5u`5!? xF/k@}RM/#B5S
+	L;?,[t8z߬߳v[l^/ճ?KhMJhS%u5C
+f)}@#Jq|/Nl6X>եk{thқ(C/$eK4Z2(K	WCXC1W>3~(݂9+A!7v.hX5yS)o>=A;Om?_06p-Z2~y3߯-}JNĨ5t>0cd\kqw1( ;_
+h}Ow3aVdMtxdKםMGUXM)iύ|P&q+l:M.Q~>#Ygu05SlwL/G*
+6I&C!|?}Cqڂ9?%`H^1,}kv]s(,NRR"^~ݓOSR_jKm[vpT2#ggg&}Dj!VyCdQm-מ:NAu[ĵ&R<cw'&\]M*_藂"5YySRDjNɬ)8w#uH|./K7p.,,hTS@W"V[}а@Jo5)Aj)#oSq%" 	N	$"#6M߇ëyYqT[ɸG;WXj(,=wo|yaKN9/MOE/ZWU2m=g9kʭ|عz}u˿T2C_Ė+ُo9`/!ΑI~YS$5M~G.̋	SWU~u^<MY
+H$3 73j߰AhuCRRjԂم[+?ZY<վCdDFG+|\iI#h_p#j ;/~lk}nWķ%m	Du{}n|,!LT,75n}Py<wWfsO<|w%Cc~-kJ<^NəN8p49p7z^|fԒk(ew.~dn	$\:(T!h<ȟHqeCNajGːWʼ%7\cpzhoD
+VrJVUV1gZ95]Xw>+gG	lLJ$R>ܐq`Ŷt3ajz|FgLjZz+޴4? k*O<rg4d^֔i/+kqaPWl0]cZ>a+5*#Lt~ ä5!xsfC8K3pWR8ƪzM$#;ψQr9U:	l?ZgC 2<(y 34>%QC9yͰw;qqAGy82ǐ+VUK[/%Eqb*GKA*٥b?!	BUfJY>j O	jv<h CA qO{qo-qDnXPUtM|?ⴥsiAɢ{d'#n8MHˍ_^bJ܂R*jE5jYqJ>˖JAž`lLޖ=97g
+ý^mmcN@vZ 5bo}NO/2Pwg-ɚB~PCA0*/;<80)̻ͪOcPf7*P_]+]S]qhJyֺ\b;	U!bsE=uƋA׺On436i;B	ĭ(~tBƍu8@%ڬt9ȵdj.ՑKvu}cbQwԤ/yt_W:v_<˜\#QUWbWI\_vcXe(TR#l{_mPNV7L|<iU}ltјUty6ׁlܷIoqvdj't#6XQQxq iϽxYW*z.JY*o}bCE'{U6?ڙo&?Onajzvvbk_H)/snOa?ַ@5L8Gc?*+Aa_a:kBNrU-VC5Efm_VS1@q齻*I8ѡ[OϞ턱+ 5AQPw6mEic.ۚƯ=ׄ^|>2>~Kx=nޤ8~m[CTr bRW#rWK[_fC,w?𞜠Nؠcׄ+̍[>	8ਪx5-<dzb-\>NZ<V{j[H-ڊuMQxj׷\j"=#MHf-6	}Own;XoV`R\X1ٸ7sPrnsn	j9awZd+GIe?
+MA~VQSAr"ϟm}bEp5%Be7D}6{ÕnnBJ(7>7+8ql9,u;W'~Mc{Jΐ&r&NTH`]ϐIaPܧwK2XyuiDЯRC߃~KIqHc[EE[bMb_ݲmyYм6b!Xsam!|YFC2 -ۤL|mW2' !iy/0NbOl0ywռWthԒL4]oT6u]U>Y_ |DQo?1g9[cdi3;:<d}v2LҾaы\Gs9e[!Xk:U;Imڀ>t]EŦ&.Z#oW%yq-= |?,!0$n%5D^fe-VkqC󵁞ҝ9!VlG}5Y|3C>zj.)M=+b8P+e{kDb0Һ;5UMuy^r$, u/=(1QxG9+B?1jZ6~V@g*<A8pÆoYKh;2{'[QUY`=0ƢSM|ȲvO*'PQHdˋX |?JCQh$0f۪LɣTX>}F|F|P\nQR]8(vV wI33]HˎOrMN&IqбOhDo0"
+6$D@ո$UVeq"GD	@1?&LJ8Ckn
+s D""USHc;z9%*:ukpȦ
+uʽNK?I)&1/%^Q_ܛ&	roo+nmǓ7@r4gޢoRLc9 4*yͰ_t9؈Z{v蘜L|׫M{?_nM=ýo]3%.Nj^|IVVV "%? -5?.\2TvMr/_D 0ݪ!QrU6 h+VHUޗbʙvBMCrr
+dĺmۚꓴ鏎WZUIqU'5\{;]@T[mmmM%^SޔSrxS⮱8n3k;6u]{79>ajk|UZ7dhλF1ݻ-=Ě?bX^})F$[_»+A| D!8';)O%}˼pm6bbD^cV)*vԁՄ6|g@7{DjYm&vye.G9nEZڔSRq/KpbSS3X{Mz3 5:ulfBV4f))+I,Q1PsJQA+5EdebB"	3>R2Jz** S'6n	nHx߄%Z5t>0cdo>@00.`Zva,J-2"K]w7fEnwN{>ǴȨp;۟ޛ}uUXM)1<u䰦&yk	(?Ə|gY>kNNxaz<Rɏ<f))w $Gj'd%/ɐy71$?zጏ3~Bh&RPw
+	H}EKA}xp'F"䷃2}vv;YM:]y]"Xl!騶kOvgpZk;Um}/|Qk򦤈ԜYySbq??ӿpl
+*0DW"T<zajR-U9Yf"Og68rg[gE7\F+J17^1h{ϝ_^Xҁ-eKaz|UL[Y{N]r+gz&v^At_/?yJ[K3t'jsd2e,*yM$jjNɟɛ;,0˟]S׷Esa݁֘~tuX;uIfNaQQA.g{}t{(=h!|}vjr
+ϯdiV*$ %A20
+kpUݜ씀{ P7hE}Qm߼;y8cx#mqut:)_EI1Ƀ7Mi~ Y2thIXT_):az-/m5uݺFɍ{ι4)oJ4ҰirUJ'nͪ)%v}?SP]K7Q.2}U
+R>x>tp3dkC~Y2]0_XGW24e]uOM|W
+?P ڙO/Pc%ޘd	-SrJj^Ye5Hyƫ<8}VΎfsC	7k1c5V#C}+f+(1״#J(ÚfRToCk5^S'0E:څeJ^֔iN6󁓲^I`wu1k2Bso=]P/K='<3#31g|%-3~jp)oWr9U#Xxucj//r%#8^,1k*N6a*7%ǁ<Z5vX[A%ѭ◒"8G_ |V1xA~lS3%,w5ѧw5;4K C 8UȽ87Z>PѪPӖJϥIGb0Кb{i᫓KLR[[UQL8e*//[nCԮgE3y[b^ޜ)X?{9}iIˢ,TNO/2Pwg-ɺC~PCA0*/;<80)̻ͪOcPf;*PK+]ERX&u'vz+*d̺Yr1/]>ٺV,M
+XIQ8ll;?
+IqJY,+sՑk:9 \\#om\LMŢI_ZHXGtx09!eVG7d	H>
+ ץ̉PnBkG6N((Z*nyd<
+7_19*?ç[0_:PMjVrٝEkGvq>JLG/ڙo>b1+UTwry"GǷ8@E>_1иNO=>[b1CE'{U6?ڙo&?s{HXW[l˵[SBHyasC~x
+CL_5!|UD2'0\ud|G(w咫[0|z3mQU)ھc~MR{wUjqCC=	cIWjAj*uGCBش~*lk?Cn6cy_/~>yⴧSEV_o廚{/Z6!|_- |5B,!|i<)04Pҏ{{	T.*;F:_07nqI~~8*#@Mq5#~!=ƥXxQ@d-=wmź(<5vzMt5&MJTM`>';7W,Nc]0).TlN]Ϲ(}9v95rܟ#o_[!|?JbCQh$0Rfym+)Y*!smq߷ޫtvZW
+F1ɾq]ac]gYŬUݹ:m"(<KWu73q4@EzL
+>XȓK#b,~\+_HM{lD$DMw***|ؼLkn˂{IĚk#2Yo!|_v&=%˥,mW2' !iy/0NbOl0ywռWthԒsr7*˺C/}N>JuGĜl;G>@EL;"Yl)o~g~}:\CNiwڡ}Nq6+]WQ4?;~I.ț*UI|\`Kc?ɂ CaI!xvYYfZy|mlt'0{nUə!VC͉ӨRLs立q=_`sx
+"_HΦu|AGϞ1|~~o	VI5"RM1}i]ˍ}sކ<\cI/h9_k XZSR(Ĝepˎ<peJjtC-O+h7l8]#gy29UZ3:`,:J·,mrL龼d: |?JCQhhʔ<JEC'!#ÐgE)ȵV%3barGad91#Xi$*h";VK!! `CBTKReUw*_~D!|9O 9c䯄3~<榮g{J07+@$ R5%9 nWS{[/P񽃗a|殶'|\_'}<p/{q 9c^BÃ3H\o!paeU'p/e2TbWI\_&!|_%q!|@);Ơe/CT*"U!|դUi&-H# ^2TKO{]Cj
+`9᫥-FH3O	^Qr^Qh$0 |?JCQh()A e/|2Yo!|_Ȃ|CĆe@6)e2C6@~XRCaHKj?V7$8%!<tGI`?
+MA~Vl[4iтqI SO!Z3܋c%׃{q<榮s D""USHc;z9%*/As      e(    h Z<j@ @ @ @ RF SDC         Eh!f    HL	R    	`JţA @ @ @ @ e0%HJ4        Z$)b     e(    h Z<j@ @ @ @ RF SDC         Eh!f    HL	R    	`JţA @ @ @ @ e0%HJ4        Z$)b     e(    h Z<j@ @ @ @ RF SDC         Eh!f    HL	R    	`JţA @ @ @ @ e0%HJ4        Z$/Bq#f     )F@ @ @ @ @@0%C         #    @Gq    @J`Jh@ @ @ @ J S9        )!)AJ0    *L	z7     )F@ @ @ @ @@0%C         #    g;&P    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/SimTime.pdf ns-3.20/src/netanim/doc/figures/SimTime.pdf
--- ns-3.19/src/netanim/doc/figures/SimTime.pdf	2014-06-17 10:34:00.535635912 -0700
+++ ns-3.20/src/netanim/doc/figures/SimTime.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,92 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*43Q0 B#S=3C -Msҋ+L\ 6
-endstream
-endobj
-4 0 obj
-   54
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 90.400002 25.6 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 113
-   /Height 32
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-x]O"WϷaٍWr[u#i&kSi	f]mH! `]|C^-mmXL4q]p.]ϋ3szAc5/}	
-B,(3o$]:2@L&S*qL&J[BG=˭U?af]ӶI^Ha( ffnH~\rvJ=4Gͯ&NYRt}><Rsrr2RafE`hH{^z,*~03L~a0f*-vx<M>OOOqD9[DqAz<zwajIK~IFj$!=7<@3~-/;߈R| /^oG9^M«fe[/U?}h/):،?#fZ?5[ëHL5M,%d%߻E{u%/3KBB0$vp)iEQgEMXSYRrA f#}ŮO??E]Q$Qz\ᠵcok!]Ҫ33!TaV4Z];y
-RO2&˷BRtPt(rd7&ߑwG3e2ƫJUOj0>R+W6VHJ7))3s
-^XF#4rQF=JhLU4QpMȇ_9~xI׏!,IViFYIRPRtΙHENj_DS0V d((F!%^"e8I<UDB3#1UKS 6Yz7dOҢOZ!)%A}|vv9ى(r,F0ğxu#5B^]wIr|S{mǅu\Jz~j_Wm;VPERgQyB=,)Պ+lxUfLHh=4I2~
-hUGCng}BGrɫG#\ \YYD̜7JKbPVRIHIQ03'M-Ev{0Neʤz(rFvǝEk,|Ï(ro?wF$ݣѨÞ;r~D̼onDR :{/mu`W-BMpfD:hV	wgyAk
-endstream
-endobj
-7 0 obj
-   1339
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000002048 00000 n 
-0000000167 00000 n 
-0000000015 00000 n 
-0000000146 00000 n 
-0000000474 00000 n 
-0000000267 00000 n 
-0000002025 00000 n 
-0000002113 00000 n 
-0000002240 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-2292
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/SimTime.png ns-3.20/src/netanim/doc/figures/SimTime.png
--- ns-3.19/src/netanim/doc/figures/SimTime.png	2014-06-17 10:34:00.535635912 -0700
+++ ns-3.20/src/netanim/doc/figures/SimTime.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,39 +0,0 @@
-PNG
-
-   IHDR   q          iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       IDAThXklU>ؙvRl bMDg|6ACB	&` @GB14F, M }mնݙνv[hk[=~{sVpF5ͣ4??:D"h[4cpp'kRKCZ5ikkz&My(]cXggg[[[<8qLה AwajDdY<yrNN1&Ir\.0-Z32CiaSY^Ky>/ɲ,uęd29ZZL&Mx^sKgnx^EQlAGSMx7P!;;Xy^4c!cŪǵk
-
-
-xސ>EQ`5'wZuR1YmA0$pq%ۮ}r?r}{Sk z)ɓW_+ԡonM
-&!ctR#64ih״>U'Lٙ3tބ!#2_%SG/aᡍv}vs]MζhM{o>Njۺ9Bݿ(B[^ܿYI-`$I|mUe TWI$Lmʭa(yhSYQ  u]{=bumՒ5_\h4V:0W7/[eճO]8ouվ_13 ?+g1x7N߼C}ޔX寫a>1}Sl	MR?R )?c{[\ʯw>;Nt⽢,왹Ī9	0\vc̘^ fVmk.B߈x;ioJ"z wv=l4+}퓟gş)0!Jbk0#w PآK%%+sp}ɘ `7U
- `;?X{)#"E{vݪS "ei# 1a ̴VxQT"A݅S]pZG@j`(pߨsεzrau.b `Ė5a5-~v.
-2C鏾
-XYnF֦L=WwpPn~ӝ#	 \?8r͛7 P(dQO	,54JSH뎢(ϲmQ  (y|룞1D|чBnPSSSTT`QQ4pp.vC qAsן;*+'ah_oDB ,THF#Haay $yzwtaj²,˂ ?Vs1_P$Iʲ̲MLtl!;ά,c!dP"=gee5r05E1b1#!,
- Q	I4M777R=/Yun$q 4PvEQvFE$E3=F9(=Sڭꍃ8wxて_t]]Xs2Jt3\    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/UpdateRateInterval.pdf ns-3.20/src/netanim/doc/figures/UpdateRateInterval.pdf
--- ns-3.19/src/netanim/doc/figures/UpdateRateInterval.pdf	2014-06-17 10:34:00.538635889 -0700
+++ ns-3.20/src/netanim/doc/figures/UpdateRateInterval.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,90 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*240P A#S=3C -Msҋ+L\ )K
-endstream
-endobj
-4 0 obj
-   52
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 100 25.6 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 125
-   /Height 32
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xO"W쵵ڛ^еVZcvWZR[ԏ5|, 1ZBi~դ66TB]ql<N2ww3xB*4Q*4]WBI>ӣ(CN{j''&&q(CZpSSSBoQi6߻Qܳqp5vo_<P\~բޘxeX$JZuIN寷jt:gggo7CCC'''r'bd,ZOB|N1BC%A	7-@GL:T*^'x<~tt	X,yiir.EBo^mz	a'LhD4ިen>xZ/riD"TݘL&x8o%/GJHǺ{^s7Lq1'
-vk4A~wf|/t~6DTZ^^bl/9F]aX+Wo#ӑSa+"VR)u0bU}B.2٧&BL+=;H-ƘwMk\.n(tuu-<pߨ+,KG3ŗH|(9':BŊc?EXDۓ46q]ܵ7>պR;9G-<p&Bھl:Lbh#İDDZ,PB:hҞFkG(->Z\pߗM;<pg?@KMpDkSaĆ=D/DY.j҃(+Jݰ3Q9bQQsp88BL.El{^9UgjbR/]BG-<pO{)L&399bN$y
-b(Q'{7w{E`1غ(N,H8JPӔ!@el6$h4⠈1訥=Ay6I:N$x0^(CN{j"B5E,)$UhPCA^ڇ
-endstream
-endobj
-7 0 obj
-   1148
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000001849 00000 n 
-0000000165 00000 n 
-0000000015 00000 n 
-0000000144 00000 n 
-0000000466 00000 n 
-0000000265 00000 n 
-0000001826 00000 n 
-0000001914 00000 n 
-0000002041 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-2093
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/UpdateRateInterval.png ns-3.20/src/netanim/doc/figures/UpdateRateInterval.png
--- ns-3.19/src/netanim/doc/figures/UpdateRateInterval.png	2014-06-17 10:34:00.539635881 -0700
+++ ns-3.20/src/netanim/doc/figures/UpdateRateInterval.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,40 +0,0 @@
-PNG
-
-   IHDR   }       [  iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       CIDATh{lSuϽݻ>X^ێǺR$2qTLN#h"
-1&AM #GU	mauֹw)ܥ_{|{{)D1F_i"ؼ+CQZåؼ+Ø02PBPOOO___"y^VUUI$F
-BJk(zĉF(X,<x0Zֺ:5 ݭؽ{ÇNn?q:n飯)}E9svm۶y^v%RDQjfD<HQg!~y&fcXq'-[oZ;iږ]_>i9_X:n[/"ʲ|D"A9}B tv=iwRSSS0)S4UZՓp[̻:t
-v>r$
-D9|y3>x@W|/!dUWWT3~prϾp8Z[[Fc\.'˲s8W @ye=@L*ՈXgVjA Oo}|K,!Ӯ]K\}q}Mpm4WݼjM e"/ud8.?,l6˲\VVv (zuoKי9DDvIkxMf D "ގ?cv&-m[W[=o߶aּ֮ERp͊MQ3ܱr"7ie/}&L
-u"(b28` !$rwzՍ?L5".|[R=oS|3)DD@ ӈʕkթL=?\:5LK^x}/b2zzzdYfs}<
-睦ABH,+f	!$oכa-G/,_D<I@MT`TN iBXB0&M PT/֯>/}B",+IycX" xd
-CQMӑHbL0a'I}yC[?UCxN]Qlp#b٬;|sssïT"IvҏP71}<5C (t
-EPTwPg+ ,C  xw>iM; ؚot#┦kiV ׶|Z@w"" 4fij k1=Ծ}^9Ѩ={ɓ	!={WW۝N^?ߪ@<jW:W	ZT"	IHQM&*++3y' p8rL&(;/ pr*j(6L
-;;;W(d:::dYv:6č(|>h43f`YVY@ٳGiőN=O$$jL&AC`(g:A^$PvRZCd2p8eYh4 Ѩj/ISJc0PBM4MT*ah*I(euItTJ:Θ020HDi"3⮻    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/Wireless.pdf ns-3.20/src/netanim/doc/figures/Wireless.pdf
--- ns-3.19/src/netanim/doc/figures/Wireless.pdf	2014-06-17 10:34:00.540635874 -0700
+++ ns-3.20/src/netanim/doc/figures/Wireless.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,485 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*210P A˥h^_a 
-endstream
-endobj
-4 0 obj
-   38
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 400 400 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 500
-   /Height 500
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xXUW;s$;II7Xco`AQQ{ "w*;H^d2(p) {oUh4Wee{YY+kA^֯Ңu*+++e^o?Snruuuvvח?zU}w<rȉ'O>{K.	]~]JJJTT3~sU!!!|(ٳN:~8
-ܷoߎ;m۶e˖/ݻqt|_D8Ī^v:yz|wyV;io~õNK=oyB}z/tС+WHS222k24]ŋ=^4<5xyр^[oc&=+&Mn{]9yz vc6uVnV
-㠀 @Ƣ+***
-YeU
-ƿ"U檾{UݸqCMMMVVOORRRR[[1}JJJZo}zuees=@e㄄ŕgkkzjDIDY300@}ۤcbbۤ322ۤنрccۤgffX}9GAAA0 0,'':99%$$o 밸855;܌޹sQQ?11j0S3Hi'X]Jd
-ϑ [X]ƊMd(\uuu...zzz'3@jgg#X,lOOOUUUZZB쐺:2_++2q|%ܰ(s#3NB"ڊ9 P	kkk^ZZZ^k
-&F;#EQm@!`zzU](sQl40h{ī(Xv~~qq5} $GlrwwGokk{޽7E/4vNUppa?(Sb`{{{Auv'66T1fu5'@OMM@x"jpRSRDSEĄb;%	^.22B[[[WW=z
-J 6^GG1kpp1=m<vNUHH??)vJ,-\9 Ĵ]8*@7 >==P䤾*7BQlTlӠNtMMM'&&:88hiitnnn'- HFGG322>v"*|||0T)(<///֭[߯ؼC+8y&zzz!%%	tPlTlNY%%%w%r488%33QlT!O<w<vJknn	NVppp]]Ȧ C&''@x;YYY2w嬚(s[ZZRlD/ӂoooMMMx۷o?x𠣣Uc##155UVVKKKblV휪p^^^+++6&b. `mmMćgauTSSS8K^.SlTl#I(())ʺmeUш555QQQxLeΩB:{vJ|&yRRѵk NH
-
-
-ܽ{ab;`-vJTCCp&>77zm>kkk#)..f9UgΜNivFGGKKK%$$9Y]MBׯ#c)sSlF;W\qss{1ջNTUU0pb;`vJܽ{W[[[SS߿]'QJJJ^Fb;***ӎ)=[ \F``+řחgh;vNv'''픞!Ǫ*>>>333IV׈ߏȈXAΩ>uꔳ3vJ&=;;ŋojjzqbTEEE$J!!!8
-vNv~e87o*++R/"##utt|||zzzH_^b;*&&,vJbJJ
-|T@@ *##CCCCDD$88I9U(SFGG.\CҝgmmD$휪Xnn۷oSls\zܼ`zz5z{xxHKKߺu9UܹC{sNX]#J?hjjIJJҒ)c9UHO<N"##7즉	77Ç;88QFSEvJPWW\]]_]Y)))|||tFS	<)5559;;[XX466:~USSS7oˣ(*^^^_d-//hjjRkm
-~]~~#)s?MEH@@f_%fqqq~~~nUQ?g;YHH ,*>>>_X8`Ꞟ@mWWWGGGgggOO{'&&fgg>@	9Uhǎb
-pX]
-~=// GmllLLLxyyO<yȑ޽{ΝvڷoߡCN8q̙.XYYȨDRȳwu*~~~_4-//`p}Ҍ^'NϏ#hiiwrrv{kX՟?o~'-[m۶u/G}_+⫯o}W|||FFFMMMlcc/ZZZ*kA`*H)h-eeeA0mй1...3HҪ gٳjjjuuu?gU#~ ~g<zG__n⭷Q8Çh?ԐDށS '&&E휪G;.$}/((`uu.f___ ~w߉æᙙUUU3338b?B^^[[['Nϟ?/''gggǶk
-;w޽{CCCkvNv4/JKKq%$$***X]R[[[~~~LL޽{]՗_~yqyyy9cGFFz===^^۷o&S[[>YDڪs5.8CS4ȑ#_Lmy-)K/'|"))888,	Wӈhw~W~߿)));aFWiQWW^)s߿b".==}l𰭭-;ܹ cuWEBQRR~{	Ş={jjjX]J\\\HHh-IvNÇ)$mllX]MLL rrr;v /\鹱"QDD͛7]w}W\133fuV)((vvv>9Uۃ(svg·2aaa><Y[u	E[o?~Ԅ<z(sRSS:LURR"  &㑑hxoƇ~(!!222vwZ\\;::?~m۶_oqppxafp1wU(sPllkjj׳R"\reΝ;vи{n~~f	,O:ekk©===NNNJJJH.~c9UH<[ODLL,--mciccsbT[[˒0H~~~׮]oݫǒxG-((x`*aaa9U,XXXG;z{nnn422a`tbU8_^^޷~{۶mCCCZ,##CMMMRR!b;
-F9RSSSYmLBBO?ݲeCzzz[[@>cq^ڥΝϜ9ʒLNN"wPVVF|U*9RUUUfff>}+W_Y)|---!6":tȨ;߿/&&5::Ωڿdd$vSSS۷D1Loo߮5114n<Çkpsf̟b;b;jnnMPP83t?\@@ 11}2_CCCtx|SjkkYZZ<PlTedd|w(sٳoffv^^^a{g_zgf
-ccުSlTl1[ZZtuuMMMXS|||...555/NZfΝ;`˴
- 	b;`;vXsNNNfggV[lؓQʮ?U999RRR~@``ӎ^ZZz-bY}Rl)))O`!<|bVȤpܹ8m6KKa}vv6//ONN.$$dpp`nnb;G`{\\vPEE)VC!`
-*((bΡ7暛a9rƍbzhh_RR288hxx$vSVV޽{)sYoooEEExB&l	yԩGmžX+\4!!ݻw2.--~ffNmmv] 誤/..~ؓz{{hff&''<sJ&ܾ**E={$&&RlT+**pۙ06OEEe 455@se<Lp A*C9"E}Sp344ĭd4cQ~yycǤ<#5==gjjzY蘘&RTT@\޽;99bXII0cUVV8bJJ
-^1ĉȆ=wqq!5|>>===%&`;PWĈeiqq[KKѣGB[[~q^^޸8Fmm&#QbrrrvڕJ}g?~,%%ui==|
-^[[ (((  .|EEUdd;%&`(oR1tS^^nnn~IbQGV4"hii̙333孞oߦֈ!޹s'@}	F<½cD;{^^Qjool8 ##ΠW䓓mffڈ8%&`;ZM'X,OOO]]ݠ ,y'6՛EݷnBHy!#N622#kk+fTWg(77oȠؾDL-TRRrrrjjjbQ 6rrrҧpq1k`htt,>ǈ`{ff&ͥ$шˌ;JOOR3gHIIR},QeeѣGutt***-`ЊWEugbD;v RSl\*--UQQ	{hzz:>>GRR2!!r,Tuu5֭[---IXOVg=|P\\ 7ZZZ`
-uvv6**JLL/%%)1Y333*'/.td[[BA%"؎`M})&&FWWחq# v777IBiBvK.B.*<zƍAZ۷oɡؾYkggNLTSS566pѽ{.\pLRz~r+++b15r`;n"M!<  4""A -,,=jddB/))YRRBO/<  e󪠠`۶m_8D__D>|ĤҞvXhUUղ2&v<_`{ll,#S#""sUssܻSOO=E=묭a',%֨p֭_pnX1""JYpe/_sV ##ҥK>QN(&&&^*F-++ckk;<<̈CP"QmTTԕ+WΟ?w+i?hotחUTT7߀\0waP~OOO8vuu˧9sFIIi}gffD,%f`;B&))YQQA1<-C$x׮]8l177wrr-[o,$7naMdmG̛NpW\@̳X=00u\"^RRBhccSZZJzɝ'Nsƌ%
->]]]h*#տk@b;{jqqEOO/  <==[[[iJTSSSFFF&&&~l$$$SH(}||rrr-`GL$piiU?]\>N]]ܹs\c-looo@`Ќ9Jb;{v`` TUUO<ikksqz{{ǏUTTos$D62t*)--رck?:BZZ,"؎OEl!$$ܒ\|wt!  ;;; Ǉ qvv011144400y󦱱13:::==OA}}="B__&}<::߾};NyZ#qq%]]]1ɨ,%/sA%}\)))AA͵L7x>;; _qqqNNNfffFFF8ƬG/>OkggHY[[??33,=ܵ61x_Y#qSSSeee߿OFM)1\۫("##I;{뭷P>V'Q˫444ϟ?Y111]]]+++$Fփv^RRFrrrΝVRRݣIx /Ú
-;vLKKk⭑EA#+Mp0wfW\ձkkk:::nnn 5 Ѐπl !9555==8Ϯ
-?7=" @gg'R B@z*.>UAAAKKʦ!>:tHZZz-x2jJ*///?~L&''
-E_x<ds/
-LjJJ#,ʍ7,,,pq@]rS ꎎ655#s?؎IUUGp,1ͯ[ww7޽{;h]lGƇ`jffFcblG>:+YYYܔug{`VΝ;gnnNb
-Ձ^^^FFFRRR0ZZZAAAh211GťCT*΄G#z'v(   ;yb;hnn[PPgᑧO	looKN<	vvv'LNGF C@͛qqq588/DUJelG1ՠz\a(`YTCCCv	;v,$$bIOoo/@jhh(""y0}2MKKKnnꦤ_oZYUg[BB	z>==xNRM)1D0rDHWI,7!!`wvv&dRDtݹsGGGGQQƍwebB׊$%%uuua| ^VJII%''TYJ`;Ll>8vyy2%0<xݦ
-"HKKCrK. CٳgpYǅE!**k qkpyL,$V~icc#v6QVVx||Ye޽͍#IBܱ>y򤬬,(('nPnnpzU<aKK˙3g$$$~nmpX.MMMAxj൞;a]*))3bه	s=Ueff]fgg+**|||455mmma
-.⦋S'Jlߚstt$R"Q?)@ZYY8Mfff͛W\qww'LZWx{{ë_v	ze!ahna߾}OB}cl)#]}qJLv$nAaaadyy8oƍl#^YYi``pQ4<D4VWzxxDEEj1/)/7ۡq###---vS(z'|J3699IV	Odd$)/&̞8h1p 9auuuO8aff>anݺ'klj_66,;::Xlff|GbVgg2V}dѣGzzz\{EE|{{'C۷o2b_Jt
-	Slgo޼PYYIVvvv;vXjތ<,Ç_pϜ9z{{!SBBBp7_9Ħ^?iL(]F
-{=&wQx~~~/GφC y![a9.z%$$޽c:֞*}vjldxh`LLM9~Y(퍍$ ..sn{Լtݻw]H **<v DOOΝ;t5jnj,;Hvٻ{}/2lB!_wmKKYecEDBBVLVRR${LLO6[JJ
-fzzlGzI)4Q9/wjnzQ-1!=?~wuNF햚wuuQlg
-
-
-.\"á=uH31|烂XX֪DCCĉs:99Gt:KZZ:%%Ԛ@K#.ήEOyc<P#djÃ>#YypoΝdĳ0qWWWR
-ܰ*++W<xrB!u255ݻwopp0k+r)mmmb8RnffԚ2Y"gA[fs#M7w~vN1Plgn޼y% "kF|Ԕgy?KD5Lryy:,.km۶zl'%LLDs]cv~.I}?:7Unni]ַ<=qu6>N{{{)J0FFF^ZZI~ܹCV؈"((EB`'ӹ755)**fggpY[,v49 ׯ_G"Ln͈_Ol7fq~=%%ZS>nޜG	zʒWmS[/Qlg<==MLL*p|Mnn.YeWp222qqqX/2
-'N 2gϞ>2bV[[ۦ8;:8۳mf(*tyKN
-o|Rlދ:lon?%7Σ	}YQxl
-O>tPtt4Dpit
-YL~~>zƖEEE}jpUU$lOKK>nS4Z#<ys3+ĕ7h3ɷ8v;&69-wtf2MPlg322H)mrr777j!7G3˒:fggU톆,B?|赤՝StM.&&M{gRoɈ
-;vs)_im5׵Ëhv~U?YGUX?p-jll|)3_x
--,,Ț`ddwssc{e8{tMOO'''OLL0V8jk3շjjj,|<-L8\z2,Cj+CrT^错[XY^ZX\\X\b&\ld3---o's=z%}RRRhHl0 5::ڊTM:P7@--f1Szzgjk{FFg{~~^[[{?8pYڭƒӟ-(<nFi]030O-WU-z1SSSaLX\\&)2 {IIɮ]oTVV2߅ե#+))
-?
-?7=~A흐P^^Βo߾-&&ȳd??߳gϙuu_`qrrbō	-NɊ	oo_SWxBCb{ZjsfU4tL#͏}^]#_r#TGFF(3Y]]]IIItݺuի^!300&ZC^VV*++_v<<<O5<%$$_.,,|ҥgrss#ǹr
-Picc痘XXXs!q窦Հe~u뷥U𔚚z)vX'UVV߱kكj?SSfmҕb[-ĦKU{=ۙ,DU<VdE<v옿?^#aS6;77ADD8:~ ]]]###***ZZZZWF߀:;j\CZZ{ {Eτy%߫ʫQQ$;;v[fyiyqm!I?';LM%vpǧO$=br;^P@[^֦_`v&
-O4)[	>ztk*::8,,	&&&p}`VB힞xDŧ	 q#򒓓aEEE L0a9bcTˈ2_$ѣ}; _ѻKw\{umMQK=yA^FOG}$8Ϸk񐽺6 ܂w}b;3ocnnNxPb2;zQ-NA0>>UQQAcffRXX911́k@zxW~jjQ|EPP0CDơ.7-/_dprrrܘ;4-)Wx{ũذ`;Ys##ӳKAF~>zq:s*J7hPlgbbb '&&2a?by cww7REEE-\P9ñN>놟KJJ@`ĘuuuΟ?5;;; #XO爓eHəG;wqww'I+++$A-CcSĨņ<(su4v/H4'vM`TMMkSJ}-/uegV4;!#ۙ[n={K(?%nk^DD"  p%[[ۤ$&%>V_^p}}}vv6܅2 0dM$$$t_jffOPQQ	2IjF-6Ź=Y'\it;5QV'_oUae
-F6V~-=Nqڼwy)vi``vM)))3 ZsssEb	nffXVV2g<	?77
-;88999&8"#c`{YYmA0		rl0MBo[}AAyT[ţ=ڻV9{S}<ܷ?]X~lvCJ:tUq5cjV">==Mi*((@'+i,**b
-7n0Y$NSUUV03<hMMMhh_D4'jjjK/.+C@++3c{ʚ7j[VU_N{F5> yvUO%YTz%IGTzoÆQlg߿D0@$3+^|)<E\z`%Jd!*--uww"}/ZيUCC%&'ghLkjj!ҿ0,Ǖ+W9&v.?@Yc'E/}y@tQuܒɞݻ}"r]y獐ƁYhG~R&ifrvM}EVYYv8"L%N?@8I0Tza/Ir<~#'%))FDDȈ8Dbb"R9璒IwdLLO8IW^1t2ϻpLPNu*{kwm;bUT.wz|\#.]4&Y!f}joo뭷]]]`q/m-s
-Wizr3nu=0$--X`K0𷨭&\dd$o|Fwl}sH+;o:WJ@$s@	*~Y+~`vWv+ϊ^S3<l0g&̯!!6 ƒSSS%%%[[[`~ihh;%F§2'Hps=`rxx8Z,Q3,,,889?5ZSodr?4FMi
-7 +C=2Z˥Q}zUx{ࠀMy}#h7|Vb;GDٙWCFGe Wss)i	8III55 N&%%!E#øqqq/_Ft??ՏxJM&+]ZcrƮd:}}e?n[lh3ÏZإ"ؾH	jlliѿ2<vwwG_MVpw***D.0D!!d+++߹sIU/^ش[vĉDK{1tՖ;Ɉ5.ot4/)tE:R:42R"={hĭ光޾9N?ovF())'QON<<_s>x@ZZ&*^68cB.,,Һ}6"8)䳳eee!!!q헖q={ܻw{ڊ,/--m]c+:!{}B˚G&Gۅ$>h/Ӧɫ~aoݫ*W˨R'mHKq)3ZȬ322ttt8??}v:|pRR^jj*CW/'v_bKI>P8533bIY틫{"p_x֭[jjjŹԆ@/+{5/-l`]VXj{;i2m)/BC؉7
-Y$׿b;=bUo9s̵(   4!!rp0ufff y9vFAaǏ߹sGNNӓ՛Q[QCCC__eUľK&H=кbbb,x%/7
-]8}KzpP^Ȏt{Skk%Y4N c_oߺU職OLJ~Vqq3L??+W8991g<	0e*D%2>>`'oAw@8n0444%%YLWUU'eYѐ/#`bIIɵkp,MTVVk_xd,/v]RRF\o
-w\]?@􆙮GGKvw_ܻ#"Qs=݃#Kuww4Wrr6)֑X	o)lRF{@߸qή>Q__VQQQDDҪ𷐐yWŋq1kkk;;;LLpsq_,,,@cRF VVVܼy	Z<WAi*[kl/]S7K[n:y^IC^rFlaI5m_/ĥ%B'9|Ei/!F\~	o⚚@BB555nx):-0s;vl߾}G344]]]o(8v┊
-8ͽCIHHhhhyyy8Z	ወ5VVVjjjdNOOWVV"}>l'< \o {3k@}g^UM[oao||bF^}K+/O*Rm4D.
-+?蚘c̬UOO_v`ӣQ){s<iiitE700 cccqꉉvvv
-
-
-<<<3B-DETW$%%v"V<yq9R*)o[ZZ?	=,*_ˇ'#ŏʫE Yh,ӷm({5+{v/΍f5U{ٺ=_smE9		鬊9744aaatU[[ol֜#..M akvjgGFFS
-
-pDw D[eb<]]]i&QZVVօ"""]l?@=@]ˇ&CW3)Is0J:FŅEΑ%UcUA*355/nE9-,,Ho	Kʢ5̭26
-< E@$^S?[LLVvaq7ӧO:%))ibb£Lvd= tz<JJJH4ȵOe;|j"o~^JܓE/Mu$+_~\J^VZZXNGXLWEGĕs7j(?CxFӴm3۶m$nPZZ𢢢;;;7p5}dǏܲ;"wEr$((o>ãbZXXF<BpsKY"}ccKۑ&$&&]]]>%5:2m@ZN^7̌-F*$^|%9uMԦzs(3ZxѪ{Y) ???sR!GV~5:GHĂ-
- ''LDDTmKJJ]zއjjjÑ MSUUE"Dg5.Yۯ7QCǚ̺&=j~JOբɥ=s6vʪ%-jWMm쳊:F_ea6_FatӿNccz'm@eee0v2755",\pleMII`@("O>H?J̥1fff!!!dklEh۾}{zz:(--upwv+xhph~v9Ƨ0+us;`h=aa535b;Hȣ_=z(  OOOO\zʁŉlu؛:$++{}	z*a!GHHHPWW?xKכovUUUT~O؎6oGǓąd%Gķ-,-U9=%)(
-miZ 8nzh[&=?FaÇ36oѡsv neeeٹ/⠈bn;qℑQEEªq˨UHHرcYYY8ptN1ů)۞={*+;믯{b6]w//PQ)@L-rHvFJ\\<>>ΡkAAA$T!EGG=STT p|QEE"""iMM;,S peN:%%%j]ZPKOBp'&a?0L#H[6VR]cUwW5ͬ|^@P$+o:80bu7
-kF0577𤤤YNZZ3wYjjjg+8;whhhDEEinnM {@@32M8s===$222}Z]]4ĤvÃp=G/lGR\\\r/͌֔<JMʋO9[^~Qi&ki>a'ZOeA_ QlgsssAYݻwʛlҜwk-1ƍ ;\1b_+lX0@;^911kL,NNR	IHHXXXK=Ume%Ugfd/Ku;WOGW&({C/7>[|Wiw666Sҗ_~ɰP{{.|c% (>'Eձz-Ғk5<IIɆ444sَl|<UW)^M-8!~kiy9-+G
-b猵Km]=3)E*++366NJJ_!;y$C<!:(**ŭ@:~8-H5)b|&Nv}e8YľG|44	999:'=kº4?7>?>$z;?i蕖(1YWxxj|w@G[>(j01'jk˪1t
-W^1{t\&b	۳TTT Ujaa!  @SSUDUUU5v압fff׸D4E;<<<;)))k\ mrr~[BB"**jk!?"fk/\gd/=@KcEFbvpޗԎB{Q뮯zW|ze<}mVV]m+Msv[Tű2#؎EX4nc42Z'+hkkDcAOOOPP;w.--qI4tcGeee>01Դ`ÇNMMuww Beʶ|d_S {ʊoXl"SG?|톡ق:)?>R] "UUq6}Bh0N #><<?F.qkkipZf&VTf	333a7ح:0@+.ѢNetх.}bݘ5ξ,--9[?'сK%&"0l[XXpss!mYKFA!p$EXDgDsi꫍-ED ]@WaV}F;X9|{=nǆb*/s>i)弑1C&'F"lox=*Xd<`!YCn_&َf".];GvfgGCj3[FFn㉘iKWyMTMLL#p/:8ƽFFF>|Ȑw4WWwA<SdooA[]}EWWܹszzz---kC |=yynoxhnnʴ@Y՜ғ}^RYqDC;|u4x8{٭rtr5/,--LݿR@d[vQYǇ~<?4B35wqq~_c2ⵋlG2nc
-?O^jo|/\1(D0ւK+d
-
-$3g a0Ռ|ގoFCS1fq\@EEŭ[Q+.##oDiïH2\\v\\\,ڽV\]msC>!mRX˟6U2bxDlL3.SV&Y=s</  4A6DEit=Wm֭v??+o b>SRRqShｇ7eťŕk4qqc6F0cccDZl?K6M,ڙ3^gSعɠ"M~cbbֲL%B*B!~~~Ʀ-/8`77q\\J\\e\/sW8ppܱE6|vR<,TU>P?E^o'T`ln95/G-{zVrƷgSğ7ߤik3"$D&qОW`SFv|;::477{Ls\m\\Gjqo0>SMM->>~cobb"!!a#堚|x޽Lxɦɘ\!F_eee666[ZZ*""g4Sۣ\kuڇ'yvFeW>;=˺GfhcEYW;[ݺ5ɱ`~E>[hG L4,g_vsO֟wٮ,++ݞ"q [ןܸ?^.x髫ujkk{ggg}}};hi7n,sq-rq-?/2"[]vss۷oZú#~X7nnls>2|,oR>K W1.Ƀ\%Qt<5w9Q_1!ieX{#ݛdcc7tEܾ3ݬ䌿GѼi-k"틋+?p^4Ia2煅%%%M7[[ Q
-ןi5uuu6,<L{TTݻa,77WZZgRM͌WjӺkk/]\wh0VJJĉvvvku*pxcbb.7޳>?_سH:_uw\Keg?ocTkVևm;u1>j5OYybaey9/ȫ} .̷W夤]M!蠙K7O^}*O4? #}~~eَO{bcL{R㞮Wuu+c~{*>*%6pOzEƌ_iisYML'}KƸ|>...[\\&\\fo2^FF2$28Md49==(!!q.Av_'f>u5.qͮ6C>Sg?{Vu},DM1&Qc+bW)*EA
-H)"  Ui" AA_^Cr}Y!sϙ33{U	ySE篨h[Z詋	T.̃|3	\"{?>iOnoj\3/^L	onrJ
-e}4ZA9xKk~#/_&>Й,N2e8$(|6ɱiƠGׯ_jhh((*JΛM\ vP-5er
-
-jj&&&O>`F7ǡCΟ?ڭDHH%g-;;nffl܎73QvOq u	& 4ڳr@^ÝFiNJM[ZO9q=ݼz~Lā0GwXZgn'Jhnh0ƍGn$D+	_ %%)K~EK]M<$+WX#jH2?99t'))~o߾%B-899.]xɒu}T2!^8A A3f˖/_xM$$$|}}hUK=m[O?a`BSS:::hafBPش%'O~1	bA|YJۈB7^kiin|.aheOۚVvY=svv>w@?x
-
-SH'Ɋy?p=2O|Kn|8eeRW" J;?)S:;	aGBsssm@#("##oܸ1wEرR>ӳ)SA~Spaד'*\bży.\_o.""01g֌ltt4DE~ee52j=.k4aK겏A=J|&C#.yTOQ]:bGܼ=<mժUlOB~>| @Q;8<r eb2@A|KnWUUe1U}=eh7GOu8mAADݺu,,O>D}SSӽ{0uuu%O+((ٳľw^mmm8 ޤ|*.n}TQYf9B>^QU|6l޼YHHӳ}Z|r֭7odd
-'''caag@1[Ɣ6Lc={2All$pN@J@G:&U7	(%|lu.!iKKSSss\a@gΜUUӗt]~f$=vNy11|W?NhM|cnG{[rrrp[8J͈q~pe%%*f9q{{>/NJJ''')h|ݺuXJzܐ۷!_oᨫ8p`弼zzz۵,3|Ϟ=[&{PmSibvܞZv
-zu#A8AS+-!_腄bnb</7~iW5uE%.|~@^OܴiHVa6Pq{ǌCT33ʲiOKe90im&fZ3q_*ȧ̙3*:s`llk?@@@̌xչ7nXt9sPxz40Yiء\\zFvvkV^=uT$`?CA{HHΝ;999[
-PYFŃ srrj>>ivR 	A6bĉR"RfĤ{mј*3H_w5a޾O\|K[48\CS<<X8nE	XBv0FQr&Жf&n\"-֎gԕSZь %^^J>ۜ
-#gQQ>cڡ333نO&AAA5kɓ'@Dzy3f|Ŀ\/pҋ-ahhTsqF>X=zٳg,䅆;`gյ4eݑ#c:]`#Gfj~L=6'C!35dSuvzÐZFJ[sn%NK#ѣ)#@SPANST$ׯlݿ2i?l6E~fE!!_1m"J:M?`@...,l͂$%%?+;v=JE^^94"6P=db"#ZX^YY)))9r%'X{{{dSyP))mX.NmƇ
-5vA<$Ee%7!甧M2cQV)Lc֖6f8">ҥeܤzŀp;IHɭE>y=$ߌ!h0<YNDɳgy֯OWQi֦LVϳʊ~T|[[Hr`63%$H755ݼyʕ+o߾]T<0y:ieE2Fx{{ܹkɒ%*͙3ߟ|xss3XP-[F0aajۂK	 :s/Kde9JSm=׹;vʡlRb0Czzz)' *S~"~ĹKC2kok(ljnnjl Vm-:͸$S?48:0MUUeeUյͭuh:jS[vA{+zƁD|2kj`!0s֐GSϟJDZWԌ͍54645P[_(]C<S*   Czl0>C@鈊:;;dAAǏ6VT[B 3lDg~w_<.Fw\%HTc#§7TWVVaDt--TEކ6oh0ZZZ}Et!ƪJ4cۈnhҊMwC[qko:#55]]@_O[CS_4(2tj>$[{#+{z7DDDرCZFmMAqΜWHil=[:4uLMo訪ȘfRckk׊&AimBP?G#@l߻w9	***.Aò~:ag4;޽c&Mkϐ4[׮30ue'RipwS֭Z:BBBfΜibbBqoghhS`>|'BufS{dbq"~X*mpr~oejeUnЬr7D#_%^:3k[^9^UPP1}}cZA%<sףˢ]]]}@B{cEN#;WY/}4}=s4uuoZ:</t|wW_ W?F"[qᘽx|Xܒ9%,ۚcvNTPkʱQY:{7v__߹s@>=77wt4o޲0RV?{e;xNq{R2oz)-䢚n^XXBatt'hFHGccE1~vj@'˖-ff&ݑa(qdժkַwpԓ:Q.=%,q/8CTԄOy%KkW/99̬,֞;uq%%>IV֭[>ªv/*#~?(CMFP2	D.}OF1c;Oc/[VmuC	qQ]M囲's{ފ8,ݟjjXfCǏWVH+lD%vߙ/l)+\{K.xRnpQ[W:vMlLԞokHF/	5O<g[jwu752ipd݌B:w`=sTE3ߌ]]]NrzjԺDƿ䘭(#w-}{xzJ7vEPPлOL/SZ(GFFx] b}v{<<<YMO>e#ϟo2uJTۣ/?iLlmxSF6VkCLr?sŹs Yh4ZϋXȗ7K_ʡ
-ud\lJԏ/ fQF>rI$$ڳ3Z?!iqRwCcC]uUGׯ夥v_8_eug<;?dV^V^ޏ=3Q@L\maaa11~A~9!x\]h֜SM%hyx{󼉓g-Ii`ܿ	'͙9E@RDEGy%uv\6Tq|2߆\\\8Z'jkkk۰MES[0[߷4Q|VIJ6%~&OX TTT00vUFFf׮]Ň4l۶?))_Rm|wgFF:*+h]JkoiԮ$/ڮ#bϔsy99	$i9xxxV/oc45%׬5tL= '89fK޾{ڻE0<%O=k⒒;F>a#nA64-7dsw7:Qo~X]aG*f+$e/՚?q>ɽN\qAUS[Ksx\Z<iĘIyUF9r$91f)B*]{s[``Zm8b￯56Ç@r簢ޥ'FزjŃ.1Дɦ;T^[512.([nev<Bsi|ϟ?nő#GSfͯ>y$nuC?~\ƹsLYlpI᧯a~ۿiNZ&m\ӮC\={vG>^fw߾}ݣ,Up魐J'ٳ߁H'a*/ũ*WXqO޷I8;E{={B6:;{b4]U!g8#c_{m<u@d~G|me^}.YH)-En]RٷM<uI{w	J.<P!>T>رD^h88;߆W9Yx(ޜ7guHT^`RU'ʌr<I;93mZJT:vMWܸq騔!}ΔHKK3;`888VUUUfffppݻwљa;sNg5kعk'¹s~s7iKJW3dBi*	2oMMRbgOkx͍v'&&0N?	C)?55yz{D> jk*
-_~_\]4m{!UyWaYŸO{q?*d|Jrckh=Yׯ]^g8Rnϟ?722b-cy̆N]/{%_yk{C~;r.o?ucq[z!FAZj[kL-q-F*vwT_p#}u˥WTpp;?wKw_Ur?8x)4n7xWMj+;-gzN	ҸsNjj*E+((|7ʕ+NC9K¿xʕ+g͚%,,LKM`"F`
-
-<<ucȐ!c~<<'kT/k_+/AW]\?/XBHHǐ,Q~Xfm"MC#1^*ui/??ش@E˱7%-%)K%>URvJZV[[R&$%\Tdϳ~Bk4Mɻcc^L]愢uݙJhQq4XSSSj_3ǍG@.0:pIp{Rno{빟}W!3v	x2-B©iӧy$29ݹ=\Y^GVx{iƵRWX$o4kjjؙ"%n۶-  -%yzGcޓ_mՅmnZE$D>$?%5;w<˖-cmFDD,^Qp%=z9994>|
-PzQQ/L*	v= _ɝ;wm]5ee/Q9uNjmECeDBT%0aUEFFB?x~hh\\*[3f^XC>v#*d?3nZrX[}w,^@ؾ9T71222mO]4cb*w7wm,%-5jWlG/3XJ4楼R=b3ˎ.\ⲏQHΕ?|s$w}G||;&.XNk↍Kn	e6;_;_43\[߆۽1!vv..Q_n.Mk-:5Ӆۛ
-#ns?	GXtPBfҎuwa޸q#tuuϞ=c04>{ǒl/]e۶]2vSǽ-;&uYK)oGE3[>o@2</-$!.m6AM[7.eX11))IuוDyju3v䑾SWRMVQ!N!㖖OQݹ=(ʗD=d՗rP@7.Ⱦv\|%W
-|ޞNm}j|Kn<V:0z``.~GOcs9i!1I(mÇ666hddK'dұk_.(r;Us\6_~&T=_ciGfO}v..Ze3|$''C޽[RR$l4N[[ˋKwy˗Nϝ;}>~5]W,1)LaHTedd<xҚY鎚M4]
-O0FV={ʨ6!u& ڿfM[ش~ohDꊳxyW*%|丠KlN)#n)|;VVYGYepuk[f폩S&Oy^@*L~l"^+pǋ%un܅ǿ:=gN8_JxWṗN~+nȍjpHe}]?qInsW瘞o,fgϞ=#sIڪ*r;u@}H1Gj.><n^ܻak/^тd fLxbfرlÆ\ޫ>#ӃR?pގSǔnnڲH]Q®>^ό5%$bJj]Qf٥+Voj9Z`""H!3iJMBݚO};Gv[ߴzZ؜YY_&m)Nۤm|<B0:A!/ȚĎ
-j,wFgrmza,u/#ZKK.^PGINǭEՔƀ!ON]id((2_Fp{{ks]I~LJAQe[{]aă|W"(Qi%3i,]^sWIˁ߆۝\;p DOmUix%η-Yۣ\&O2U<e,2B#xʪd~۳gMG/^3˺ӧ---P,f{ۊ҆sVbnw_⎄ƽ*j^x*,?s?Wh9s0{[`Kw(|O)%40$Æ-HyC=YcA#?i-!)+^bgL'TǇ^ܭ29%!^11>zӦ.^meI빎8,ꌇY74|*xwYU+} 0PoJׯ).-Tǥ6qmbqTCQc牛?}R\橥Ƙ9'oAÆ#T7Wd+*]۬jOkl3V>7%06U= *3d)]w>mȈ;<yd֭޿MPWmirN>S|_y%JS5Xu5?ڼኖq=%UTkfffLU秿'L%  ԞuܰIK>&..EݻBQQQ1III'ݾ*hc|Qe]]/َJU2[
->HXp;若4k/ΰ3;lxFWwuv"cBikkӹG,@<d	9thAQ^Lj?\ǱVoƥ3g=xXRVHj	ecRʚR{cߢ5I)(/g[^,[0SHMMU=(V$nھS)^Gȉ3կ/˟L&Gqg6#&P!KOhA>noO.[!沋iT'lz>j4T޶_~6mꢥKBcFO/8lo|)s5n^cvn{.i@:y=NVg&4?hˑjc"᡽yVZɺGF{t	ho̻6NNNP(s5׽{ărWZT(w׮]}]QQ;vCE)	ꪪ.]tԩ'N?^O-K~7_2S.}<lnRu;q=ޓne/Vyyۊ+2Sgnnޑ}
-ttd?vMANpa
-9=y$&!{gv[#B]8wN3vź/+)}rviiMKvE{kûЍ˦	Ϝq* }-%&M4wo%J󞪝8љLu5d/(М䤤2ɓ'[!fKLȱ'Y5l2^</ٖNv+xCC?ZjJ_<twq|"sy-?^.RWvZssT4pCX	;w֮]TCmeqtM_DTVPZfl.#]Y)'({`2ps fѮGGb%''ܹ寿񡳉СC666P!7ppYf͛7o˖-[t)~;woߏ"b዗F?Py87+9Smf}ue˘]1==}ƍ^.44I	t*TwVSBחrN˜9hǚQva|a_o=Ƭ71%Ӫkjvʷ*r:y⸵Cp蛲FڗR?_N5g&}TAݭsfe/|WD>quvHLhυ)ok[(I4kˊ>XϞ/BӲO<-fn*/--+d#kkkm[[pl`v$%xp7633۶m[)ZjKK**Z:}OS|:FÇ{yy1[08hܕ}ŋt6࿟;w:UqMAAAx=۷opk׮022B٠UDعs5hO3R2lILL/**l%>޽{ٳÊ81iR)}㑣~BG,9;q;%KjS:^$ktꔠ/[:
-%!9e-x[K˿Û
-ꎨ/M1""֖hXm)_Fi/#H%]4ɐ!Co'߀An v2BW:<yr r(ԀL͛a !˫B3usp/lYxx8ŋzٳ3g@<؏=
- #Doyyy?eTgý:-"}6#Gx{{+. F`h77L>w;fjӧO.]A?R[l.	aAɓLg-TF7u-6mߚgy+Om艽Yv2;I*LMMg}@1ׯ XMRwܿ?P|C*zt/;~8H"zJXXĉVQ7}b\jeez9seddC4 :p8ngbbv)ݭ^+^
-?
-  ;.999"bӧOG;o0&p$1=GI}=:5˖rs/h!GOB^r,8Eo\#wpUBѶ,b3 Em`y}6;G遗]]]b nEbb"S)Z){DUUTr0YMM7IPII	&{_|n޼YTT:>>/:Z۷oధ;wܿ?,EEGGkkk?ƅAԋm*+<
-Ξљ3{w-2D ^PSX}0rVR[k+|~ז9޳}*{=y`LUӾ7{$$$Vw9}d'ٳg6663999H̞I"dr{MAA!00;@~_I@ eu@円999heYk4Tyy9삆Ǝ;hj̉
- fBGGg͚5O2U8
-֑		Yჯ'N87l'A&Y$//ikK-ͭUy6	^O𱺦&Y5kWZ5\g4x;}09)M v@Dfee]rÇ}_	)~~~~:{ׯ_g$&܎;vxRSS3%%`㨨(nnuᡙ#010],\/_f*y#^޽{߼Sൗ7^к`~" 	 .Ze"ErR-qH^NmWO	x^Z]SuGNq;YEHH!fsMAr{l۶mзQLL,##c ===ҥKL}dVVVtILL8q-'*akzKxС.c_9s̜9sn޼	)-+@qQeTOK';@oذ!::nٲ%%rjf&SgO#FRF	 V	..Qtֵz4X[VY]^S[K${܎_zi])2CcRѣnnnGZZ]`s1S	߂Brrkkcƌ\`?{3@[[[WWK8,m+(Oxyy<yO)9d;wz:e{)+&ϜtpqqiN_Rz<ƺ<j,)&4ۏsKx3N3vvvvxwJ=MݎZ^^βm}%?<2Ang`,R???vC;߻:ŋflÇ&&&˖-c|䱅ի;x
-ɝԺw^EEŜګ#8x𠨨(^kPVV43-}^1?Sڏ (A\h=}lr][
-OPjb2knnFtvWDDje){=8>:t(^ $6nh˃Oa``aF4xחN^_P&L>Z
-
-
-=IT?33򸳍ްa.3=]	F ۶mSRRcBHG555)@eywO%αۏly.r?776;SYWVfff222츙0PDtf2}_655evyg466B(`~322b61x,==Bx"Qʎ`zp႖VLJJ:t萔HJJJ?ngggllvә jYdǏ;ǽ[8m
-o|oo^F	B 	Z5mJߡHuId§F&N1loIM{,jQZZjooOg4;܎vӃcفBwK`ÆëvvPUU3:NxSdeel4l4痩>=uvvfj#-jjee
-t54Çmmm;J^GGgǎWl+++Aհ"""j~>>>eeehE0/ǏÚtqbccј0=}	WfM?p*N D	kYq}KiGcF|snEn|^PЕQ;ξ3v=$$ݻ\TT
-}130:`@[6LLL6>}b}RTT=SSS\_,JP `f2z@l111ڵѣ [wCg	ҀvwwM455;7;&a$%%{ܳYWW&yWz= ך<;^q7(b[D)ʉˏ
-WodPr}ztEuקYJzh:CCC:G,'xig5>2 zD4`wohgw	vq9M*\=~%##CEE:8G1;@uoٲbT}||hguuu\qF4Gٳ2;>D۷wQ]}z|+vxJckabA&xu2IՅn\9G7sW\MzZ_@--C{W䜢^3^=p{ZZ,1`bvA '''jVXXGGGGBB/TkPv\˛՝i4/\9gy@ jh{yy[n=DaPTTVVD(y{|o9vPHAAAOGAֽޣJ"EGC W_FH9F-CC~!L%ǘױ>)/l<x	%}C]sC#CWc[_=w|\TZQB'
-o͛n
-˒ Akm"z)YE%%K.oHjN PS}`&&&PPmP"""=.ьzzz:#))G\\p5+T=XZUUŋ?n2ӦkPޢjPÇtL>J$!!^_
-KGLjO~ >Myw'q~uC}SkKɻGz70}@8ښfmu'S%M\jZNqEZU344snQ>?>6oLAAngNrC 	Ef0=̦CIq?|}p#nI>yd޽%EtP($7xѣ*l~~~GٷoԂѠT=^!i1a1{;$4YxxU#3gIF#!qSۻM鰐фFhy\|Rr)'v:˽xۏњzƨ~ohdtzD9azlvmݺuLmv2A14 A;6`0PLş3奢EgpnܸiW<ESSSLLv1s2-u'N.tE~{Qf͚yfF299ouu\y?n~6#73A5|ͯYh<y?L%oa466&'1cۨnƕx=?nffcdiA8.O@Dcǻw?,o B$oh{qdd$S266gL޸q#٢@BBB7a;6n`aa:::
-<44f JKнRSSm
-L֢lO}bcSIw56s*nڬ欢eۮl򕫲rs:#D2U4+++85=8saиXFXAn9iANN2$$0/@@3+WرKś7ol٢C(A`H-&&&(**Gȑ#ZZZp7PN:~Wwޅlh`!;Kj/~Fs	 {"qi3g)#uQ\
-cϛJ"ް?7bp#<'i177wrrbj(9VZZ	Cv@Y%a>겲 ;ڵLo``  _g;Yi`߾}hdd!...Wt.2ܹs Ι7F{\珠($m[ec#flT:cF°a~	Aן7|%'jg"fhe'ed֫g='OCҺgaaq}B+ƽfۡFΝwi@S;F> XRRݺu+ST0(Ho@{zz1S[[v2R@w!Xtiwwd!''׿qѠt'[wB5IJJ0<lRRBVVo+/=l/Aиݐ <wy{9qn8e]SkIXQAR[jzPvvvƓ>|!6ؙfwr;HOO?s#JzC~~qSc 0$ꡥg->s҂;g	`<w\g%Ol.\'HwWWWQQQ}}߽57oi[>kVQ	 _-lp/VCJؚ|Cd86>H({yUk͚5t:djqez6d0<˧NLv&((p yǎOFFFLVVVt@JJJAAAݻw߹s{LnμqFg.&&#T21srr®u4''jSV(7 "	 "~p6|5	3m ˷Xw)'mrmm""۽Ϛ5_/_F?aJ'{1&?|0,|]tvm#FQ? 99}FK hÃL	)..3( Oy}sʥKhhh`(;8]\\{z<QTrvbbBcckJ
-yvCcƜ2$L{	"WNhOu靘xSjJiSkqA](klklEO6%	`o޼Tz/^-1<+of9#>
-1#!!ɓL$'Nt2OO'On?~AMMM'N  WVV~zQQQQUUՁ@`.^yvvwuu=LUV ǏO %qz]A?<u+ݦK'Fǟ=x.,ݛ($⯷o6-,,P6h&GGG<xP[[@8J>>>츽=ܢAng;BBB,O@b܉oh888@ٵ|e0,^}=v2^O$3XEII{Q!ԌրW	 IʰDYY[o<^Dba/<Y'5?"'v޼'`*NĻӧ0מGRRʕ+az &433;rS;a[SSSP6C1]"+iv6	WRRH;lك9myYf第@ewsFuM6uM]p廜(k.YYYSA[ӗ ݻww祦KOw`1q 	#A#ȕffg]-mq?]{zIe.(+213
-y`o`WSN^5m,:60zngg-6ƛF@0Rvf_O3#nYFee%䫢";h@;-7ody3/e!77,^W4ݹÇP0iӦAwYy3g/@c:`|$''wNh@/^ɡՑ0y#"Ag=\i7p-8}zs[\U9#!)f+kUlV}UaEgfw(.wwMnӃcIjA[M?~r ?(Ʀ\U,<`&&&t[ w fͭ|oJJ+l!Ə=-mqq1*bjjcn.@FcC~hkk`=|ef$8::pp	yUXH1_~j#Pqnњ&,YpvVe9+ɹR}~ިg1Ay('kl_P'*L_;::ر___XMn/**B;w8Lx%cǎmT]q!Y0fd1p)qRP+9B{{{BwӀ@i_UU5||˕["}LX[[_r/쯊Q`` qa11q˗o20h&gHEi~̎G6<uhrycK4s8pøacK[+gh//o`BBB?}.MnG葄ӉvQI`&!n߾r
-G|ٳg	;;[{X\NcpbкwuĶ*<qm0j!>>>`ݎ`5ВBBB]khhh_v/?UϠ V0H;	+!v\{;1~|M[單7\'{\DULg.Qw^ޞcjW'Osd:a`^z5h//a;,lr;˗1Z @,6cܸqeNJ쾃A Sf1At]]]:"""6Q{;YZZc ?xKh'NПuUD4@Æ<}TKK;BZX4-_/}ڙG 'Mj5 #-5	/{y&̨n-~vQYi	۶3K[UG`zz,ƌc|9r }LNsaF# CҠl,aaDbb!	1޿offF@޿eNfjkkӡCd0߄J`:QNQQQE	@^^^<~0n:ގa,@pYTT-[ȉÆ?D[G9S6vIOJ잵y<>Q'w6M.wIVn֭ >ghD57oބye|?zftt4H6aI2CuT&Ol~vsmwwwB:bUCCO>ݻwL}QSSNaH۷+<pGVV獍h:ԎO@Y\\\ݧ8x"
-e}@ƃI`S`:V)gU09}W>dEHؚO1ᎍeOMYCGm9!u;4%>:yR'L^Uۻw/صVh0OtbV*mmmCBB555b;܎nYf': nG}wr;722f9]RZZ	R>lbb0lj=ڰa.`^._sTOO㓰[v:e۶m0!!H:qлnǲ	~$.%ǎJ?H.[F
-}Ȳh^*.x:)ǉ':A0]c|}Vjظc>Џt6t{wX~Ǐ?XYY9,
-P__ӧ,$LJJqttdySoutt3@Cәnݺׯ_IV4Ss09t{d0{tCCӟӀ{K{NCCM]ZQQuvvMQ_/6Wys5I{uuSS6([nk&7zh4Vxpv9*u߽{woǰ.b<i3=dp;777X%wIg~a|I'|R|qPuTUU?~x84cII6vk2L9wlYL'Ov) $%%{#mB
-Y>bnں};|دX}p\]ڹPpFښ_<t}naow{87L	ƆuvzTTaueay:avtN+++:Zba@+~X/ׯ_eD`t%B1?sssz<k֬a$.qkiiYXXt+>477HEBttRfee988XZZtgmmݳz͈_HWxGV'G"M#w&bNP*qYSS/+nnv*:mo@'у`^777yNMm_r{#rzj4$^.9=O?ӟN[Φ8*k|rڵH'(7b+L!Ќyyy,?񌌌DwgժU/R@UzUy]%%.[l^xngn0}nAIS )2xaƌa)Ꝉ~rRZDDE娨}k'vj|ʕȬZ2ήhhgRSSG`i#f,,2ѵ`vt{:P01sr(#loŦЖ (CUAۏ8n72GDDرT&{H))y#Ҍ155b
-F
-zUFF1ǭ:fZPNXI.L	pbbbo`@/<<<xD@thR[#'^?Lښ%g:>r$9iyifF&$fk10qd;
-	KZ{ʑ^+#az uAWQt{FH*)щP)NNNeCc@v_F .pq{U%8)rʰY%IVy0p܎^]
-7eeėȽwEu|o4c-[l(& *]@4JA4T@w#wXؽ߹.إ%γOΝ;̜9(r2kO:*&     (*4LU  D΀LlgNTHJJy	Dkjjψo5U4X̙1B"~LVVBX0!wz tcWGxol߸qFP[t
-
-vP"eeeo'~ɯѱlH:.254Hg41b6ѿI`xp(:gFND0	v0H̊&2 a;5555cȑ#~~~_%Fϑ#'+3%%%@h=
-@NL={0Báud?IB/_hIo奥Шb;Ёbbb5592w >.ŇڹɁ}ŋqN!}d{<<<dԁmuSUUe$415PL%****%~tl- E:kJDMK0`@1gJtk,\`{|_`nA&Vϟ21Y GLj;flRw-_Qo9s.]BW; yyyI*`0Ohw^Fd@PsZSK@UlojjO\,&}rJx/RlfF9uxʇ ssspK:D-;Fvہ2	gWbʯjlѱ]"{kNëߑRɁv̙ CbVf&ۡPkȜϬYldp<lq];L9#}o'0C d"	Z*..b0/A:::E@)9A xHb`2ir%d$BBB wTӧ-#,MaŲEEOŝo;#K<Xp0̀@V ^6;Ξ=K9@߼yHp'Ohs&`5}4C[P?f6F{6~nE"#'oz---Є"Z&GG@XLa;v@1cǏw	 9i'NN3`F_p`20^xB+KZww7ؿl'dl JOhАdޤ wtb{ii~bb∕rLO6,⿱P%:PqħO4XYY	U^&|fHKbS딶=l~Ƭ>@{@ԩSc	%Jd<ʿL0kQe°-&9|:_5Ąa;o%%%c]vz`&,F,[<|0%ܹstSJ[[+408 Rݾ}L: :)[ecc-@k	 tSvh# 7[X~cyidGO͝ZC>]C3Vd. vxgϞAoSv0[$%@ˈ:AD)0>	a;hذ04P9C;;;^VhiQ}`ڍc0,\	vu/ػ:?q<l1qÇ;vuA	`8~-B]>qeZ+T"`i寄hbbrAƍ픑 ݻGʪ}12l,..Nii5FY,sXɰ}
-,[olYY!77Z\Ɂz"~
-ŋ00BCCvh,0RҒYll@sq!fffT=IQ5) S3)0lnR;
-OR&& ہy"7nvUUfDa(Ul`Ő-kֱ_؞4aI$ǿ1lQQ!L7999Ǐƴ\Ql|#. *
-
-l_hQSSs*:OMxx5J]+.E#D!xl?s5k206F
-`隌)y-K*hk2 b",xRvAftM+tZ!...ϟ(2aZ,	ɀ%m5=vv5RZTdG33)0lhp$&DLɤ/500XqvF:e7Xn0J9H{{'PwZ{g|/T'OPKNHՔ2>%%X&,J+YBLQQd{O<R__Oz0=899&<^*(ǏRcKӃTԱrBR~2%cݸl
-xƉĢ;c#L<fvd@@ȔSvMp} ?}-d\,++K~=BؘMG*WUU2FE6ۉEt-K	Ulg"㏡kΞ}K3e(JJi@BmB+;ά$:>=} qg1}<>1~ҍ[Ѥd!b;n<GApK_>ӧVee}!	Ox_.VP`gp bG~~D7ΘᆇI?yy/0r(	 fffXaKl &F#D!$]"|/^%~	"**
-$B//o8 Y̬pG.inn&v4.=`;ԟ4Dz;쒔 lkkK0^^o!)x@e}4BGhh-%㢣qx2C Leg_ >,(څ9yyq8,vb8 ,YCKKgos4iaMY#))D#^dKF5wU 	{{aZCnjB@b:1\0۶}v40Z`	]t_bb:[Z[ԑ`GkwGGuuK,gpp<!]ֶuppho$|c\&!!Q\\
-`#""BVVnOWnf}YwHKޱqc{z#Z1@hn{v	4 [={V=́ۯ_	񮇆p%%OTTT/x7//-l[`:ffV55ucȧ܈C0o0.#8/^WTvS/_Kfnr67xHs}hT{'qǎ]h301U!`͛		cKBS<M8bg	k%NO?G㓘X흘XsJNO12pw1?123wڧoRW*.ZVnMv<A^WDBRi4nF<y/.QnIN.|˫Ԫ@וBQ
-
-Z6l̢\y{.	>_L2x)z5VGswhDD|JIRKHHo"V?;dhhY>',cf[#Og4mxGW++9-$-}Dvv:ۙ|O||ǏwҪ{rppC@Ik`c	Sݻx4{
-)-~B9V/TTbSS[no~)**7lFmpb	K$;k܄2 <|h^䂞,
-OsGS_ߊГ㙏}`(&lh2:7&,ܔl[¦		/СR2XUMvqq~RrҞi[ڧyK˪N˨D#eJFFĖSonxm*fKo|߾FFO""22?UUe}N{f呦fn3-23C1'.(NNPQo?{W׀Zk*22*6nEy,n<x_Zן*#(xSMM?%_'%$23k?44TJVqqy6NE;ܪ:-@|f`W,ٲih|N$sqpVCB*Apr^&yz<(66FFVY*Ktuͮ\R	}ıW	K55\ҟXBBɓtu
-䤤xZZaaIG>~~\{#q 05Ko36-&/!凴4Pxc~u .ajjKm?Ї0lMY$MQGto'+
-
-K.zHo2!C*yy5L1.a:CCcKMII8F74
-JRRǏB+---i]={G/FGPSS[(յ'PTThgg5bݻϟB/z𐶶[c㈳;gnݒkWTT {hCC71׽{ttǽxb``]3Unnn77*-//ss#o,]())Y;z*=ݔ3ܹscϚc/F&΄da;BȽEB=L#zzqqq\BȩGw KJԨ[F#cDxxx}(WUUN'OlllJJ$zTUU![RRN+R1|N7gBܵ399hH5$JMCf̠Jׯ\=(*60ڠáQ^"X366Q|xvy:9sssuvxp՜z==05Z[{Gg2/^5do#*\e˖Mz.Dn*hf}~io_|Y{'i2^h8Fd| #""Ǔ8?//蹰;sՅI雺dֽ{7a/}}\vcg s_E{!;gͼ cX[[Z$~pu2`ooH'vkk+S{^]4h(5Ngi#Ƅ;?SX2'@}_金ZGGz)1W<$Jl233*Ac<s:!O"Txra닞ۘݼ%+!{ueOO//\_
-,kRZ
-#"::ӹ[*SUel=cp}!$"&&|zx۱)6ku0.|9A>+WE\뛠uy	4S'fO 2rdff.Ygӧ=z&$UWEIZD_,%n.g!eWu	uN._[Dh^hh(3j ; z	w O>M&z^HKLMM	Kˑ8WCU˳gJݱf5XVr;j{LzPvOO7&@yy90O pJl'\<EUN 0AT<υ1ri#Rvxxm-[ܼz5a^^|W唕bskԦO1//T-^{h/<i/ymkۦJ[ɉ\{eK/jGæ<=!)AWoN&c{c|fc!)>̔rћWԍ[>K6'=No3'pYjh9\FP<yyyv0sqlU46f/MaWQyWP&~2ŵg򝜒nՕt:t&#dNw(VVVd;&&ѣd: zx6< E5H͝;/_.r<O00}DV&?`13}vmmm+@FAAQ½`o&S]]#'ӧOUU|iL؎n(;m[7[mK玪+8Z=}y9V@_4';lc)Ņ^mXc幯_a{3wgY	7&Mvd]M>c-"񠺷6cr^eu%e±"a;O>HcR\\N!SZc\)mmU%m5U5--}<<d1M=(mV>n1wK^SzbXV\*mt?? u֪@W6  >k,>'N; ^[mtos+MXXRH0a26';MxXUպr"sscb}-T9{lRRҨ' ~/^H'_jQQ
-̴4[[[6lm(;pZ!WzS䚟_G{SZC?iW]W}^2mMhz+ZA(ץ7ٝGcRjkj?v6U6ջ?pF`fR~YccS H|oǪg-bY5Z|9Pիvqz@38`sMXx3Bc5ˮ?RpȘH===tLU*++Sӏ)%<2tKs^*47U1WP9מG401/,Y|K74~?ى[222DEE)!*7W^^#EEE0zKG]A_;ǖW12<͞o×e(noH}diDKmΜV^z4رc`p攟NpLKKKPs	@|_c¸}|FvpOwWtl,UZ7L>7;n޾k&E<h2/^DGG3ZĿ~~lQid3]ճ]mˀ-V:&k%mUԏ6l%^4|iѽs)_sQȍDe=//X3<L<RI75UѧˇWo ň$_k+ή2qvya]OodDH=z{\\-Uw5hۉY` 
-G*]AAAZ)	.QVVɓիql߱WPrkˢeC{G_mFo*kTȟ6c43f =s'_V]\TIdddXYYi$JKK,%$$@3w	V|cZn:AHΫԊb)i84{KE_~11s+&.OWh9v@G@2&3-K=M3t]~>p_{t󂃙4Xh<9uIU/#|ZK<($8HtuW-K
-2>t]CQ2ypDgH{ <?y\D5.6*$0GAٕ]aĤ<||S"2ILUԔVVV|!c=CTl
-C. ?""ȑ#$^A n(%ԝSAA~'`=jjbɋʮH4k5g'ۜc3m^~!܄L6Ҽuk?B{ss[[[x{֭SRRO'0(>0rssF4Bpp0bR{l$l\碄If<}5)zt.Ym٠fj@V`;3>W!ZB~[񻘆姊o[Wa.WNd570SuIPM%>70O`;k-I4{C|ү3K;h۫#k}tQ-
-ے}쐬⃦	:4ydX{[d˫eG6uYN7A8LOsnM]o Fת*{{{qqq~mggHN\	!aậm(c!߳ggf_EUyoP4ؼ~90}xjQQ#MUC6:kMN9M{BPZyifuc&D/aڻR@lڄܼxzk[ ʳge<u(QQQcl؎(OW޺eNֳBC^a/$fj6=W$xEEE^JM0#"}]aض`azapOe[)~92taʕՓߎ Wϯ_F5(]'"lJa)(3A>y^__#>id200 lN<=6ʉm>7d؎i.}랱'/8rxHsNt?|puCQ ; b	@\Νד]YWW'((eM+PnÃ99i3ŋ?g4U翲V߷ei	}ԺՀ%@{jPG.g+}Kt|cok4ݮzzdNe.]ԝ@N.Z;
-hj[Bco-uĒ\O@%Ǻ)ܔ6|jbἫzY#]M		a*cF:=ػ{YI~<]# lb-'c>?kZ(Rb&뾍.[?~i>7Р/0?KB&KءηB߰][bիf={^1wښ2{5TTT\r%%%<xp]Jo{ ; hD؁n\h%(222_:Ǟ=5
-;X[QUCErܖ-Tx
-vTPj]>tnZ/qE}sYkV/M;/9o7FIv[/^E,JՅ[(w^6_|	Ęru؎~'6/>s?&Ef
-l>~jOV53YXP-= 2?gb:=5n4oG%nߖZK/a`#}ժU0lkH׿((}خ (khaajHYGAcM^+++K!`PٖQSl	Ϩ񯻱$Ap["-ݳ￝=KVkooO'x#;;;w'N< 1**ÇDӧO+((9 xyyy'O$ 3s_j`~G/5gg#,?U%<'}^MӉ!֦["AٳϜ330x ~UUмQD'K>xEأG55-,,)..F=p S*#xݸ̮q	~HB-oNxCUvᤞC[?I'-?{ܻOJun](v^pNl[%eU[WRv&eѷS'qC}uyM.Dl8[{GUY^iueA~Q'rw III7n`L&@-v`111TUAotګ
-8p@I>+eW0>`69c>(9p)ͳ0T%""Ί.(#G0x xu(]׮]#d G<*4PF&a~͂s;zSƓ)+骯BHU﹛/}IV,wUP凗r^}n,,
-ܻ%Kgo؀fbBJvv6`!K@ _pTB666@)1`;;<U]@r~ztҗ5Y(\j"/(+TTe'>W%g4"/ 0HtCI~wT\n2[FEHTIO1nw~9`|R~IvL_kAwPʏЉDSUHp=8pūjZF=<MUSaipTlF$  `|JvJ)quO'"GM#.1ʪn)XF`l*z{޻etۏ?NgL.Ygjj*q=
-O	<ŀlBB{5,^vP9Fyv3=*t#z
-n_<7HHpH! ӿ[knD%?{Vacߋbn}""h?L~_VV4IfAЕ+״b*#0t&a,>4V[doƕd2P\Ʀ%0[q*ۡzxTU&?"vNbE,H~jd`uEm*曗Nfa\sAݟePWc^V75dc;=-+nܽs_6jAMh_y tS瀯ƚ'Ouƿ:tUΓ
-YYY1:. EYW?vg@^eK-놐D3==}GD/{<<<t≑+\L(**yfpp0)YUTTz	Q:ö!AS蒬E*(sMsu޷v_Vl4u"8ysmg[ۥ+N,RR9vHbbrC&7±bg&K1kBsІj/^0#@#2.f*:؃jjj0)]j,úou/PQӠRZS!Z^ka j]11yR˗LOH痯;	(X7籀Owv,wixe3a(zޯ4jFK@=؎o.{hcĦpixh(=}qY1ߞ15aRb}qrTl5 iG
-Hs]_| 3Þ>M+mO|W^uz$ŭm[{A L'y=`2X.:tɉrǹ̌D\\<11^š*zLq`REkaFz.p-MY_O[e|L\1(+1on!˗}ՙ#Of[?uI9~Dgg>?#cR6̕+N_|̟XQDdTE0ߠ֮]K(!!.^SKJJRzZ*|\\^rs}#%:BRSr:qڋ|CrML~-Z%vտVK\ 0>|߉YZOQ pʜȜBa:,~Hlm^e2Rqءڪچ̗w|s`` ;O*m;Q'
-
-yǨp@:`Kr;݄hlG''.ha}{je	(P\/ann K낮.+++`\%''GSSSOO҇(G{222wޥ~-+/VY;1y祓)7)_>ZSRYXRm%g34PV]{$;{QzB5^7wUVV;9G))9,[Fd{A		$  zClllvIgWנsi*i/7o\QWS`qӖ!]x`G}}OO0~But]'OՏم+}uٙʚۿ9VØޮnx{76UpX,vBE"`)1x ֎aG#^aaa--_U I4薗.2ݱT<4qڻw/}j"AIO9I{)#(А;;G |C?DݾmiFƷ{4bcS
-{uY=D`baʂP欬,P.\.]9jRI5N8d`\mٺ%99);T2>?&8)f (%%%OҗFvvW^M`D-0Z[[3X @ֹsF*>|tiÆK5N'ٸ%KO/o ':N)CCC>>>x;%7|gdݻÇ}\@y&&"O 'O[I}tt~6DXqsC.?|A^^޽{tJ	IK<<<MQݟ'lڴi<#`L	-muu8qa3 Ɖ'h9l`05HSS 'Ul
-ݝԧ=%%EJJ
-,A~ظb3UT2_B_|^DF;o^}jiiibWƀs$n۶aaFȂ߃fPN" x 56P0\\\n߾Mugd/@iUl^h5S^S]i
-#< ΔL*`^|yx;$Pwfu]t	-ե]h)`JΆ'F>- [vZ5.*4vSEEE
-
-
-^MLLAW oDz@CJ?;S\zoooRD4Eϭ[3g̙G
-(֭|` RUu<*!!A5Qx֯TȈ8vfMBRikklܙZ2㗪>yRRo0k)++"T׮]c0H4>^	p-R
-\w}X}wlJ剋cӃA^&X K~CGEGll=BKltaF#N3f	 IOGAAAҌ{z>hnvxe[lprrLG ,--B:QB*0M@A Ll|={F''U3?%`\`n$&&2B/.^PQtA}<f_W9yyd*`TlukP(Ǐہ!@+W0,,=Ddrp66HSmK||zVAAmVVŋGoߎn"̀폅C"嘐@UkA>ڿ?)cǎMad_jkkXGMIKUTT?ĸtttR]@Ơ2td),,<x `)Uxq[@h'65r筶S3k[AT TP*,q徻;33͛.\PSSKNNlzO"NL>sykx8ukWVVӧxrcV+W+͐bc...Q
-t)(STxʄuܹf\ѣG#""\Вu֕Lax`eNNSH F U ۷o3uIVVt\>|kjjb)`WTTPO:ՠyƍ աzG=oa׼O//vvv			➞+bޥ۱L[UUٳgء	Vh,=⥤W~bp:i4d޼aV",P2-ԣGQOmMjAQqqq0̨nFCCGZ@9+>sHJS2FE1}0ǏOlb``p5 _t9TWFF&p}xx8[rssBCOjɄ;ºl㐶Ȉ{>}Lҟ.%] ++CYYYnnnRRR^^^`MS*++^&ᡦ[9IZ6+͔&P\|AgAAlѢ=tSGIME(98sssP+&j֯v7ǜ(Mjj*{#N	S~z_WdreRmpppTTԘ7 ^:I/TZ@髫?0<2t ¨	0vZZZ@_t8990Bz29+!ƞn 
-1 BBBgNݳ_sVIrr㓗{˴b|3hk;L	l/^ PL=rK?~-A_̙ۺ鉐Ax[[) 
-H;`O<==arU-`@` s0-S>~!Q??1 $q+^YYybFEEEAL `vJb|vU8MOOt#)ԫ 
-
-qXz~8XwH\/Y9erw7Nx#7nHJJc,#.vwws̚pq!i롇A~jpq~>""Ȗ-ȯrZE~SS$-m\[yΝ^^L8ɠ1=Mmr<GWW1YȔ0"gQQG^ID'%}!LCqqqfW _f_ii&}P999|@prrR4`AP[D<}}}р?_=߶rQ>b1/+6SS㽼oJ^]ɓ		1Q:e-INᾒ}Ph"*b >ڿ?ԓ*46C_p;m4/;?f"ywfj#l;kƃ`uppptt)l kTGG'qPD qțS≠ǏIB"%%EKKĄ8~nקzqhh(!!~%VΎW%h4-7G;$$Cjs|B"2}Eej߱۱}(FxփW4Yf;͟?<p:9=n3 HaQk %%+kYX.Yu|NKKf	P]]C˂@Ƈ`#!J^^P=ZaÆ)l >6N7]iiiAA	w, QԘ3LftWVVZXX0XlEEÇ^000 :Į?橫^yPTk|o5:jRTI;y$#kfEՅ񒖖ͯ+tzufO|=۽sA]|fKFQ)h:RRႂIIO>lV־+O9͛ۇ
-v*)%:11	N3OLLaį\B'9#"///  @8&SQ'$$DL+J`cE0.޴i'Q<E());a@䊀;8|̩ʶ#&!]m`D.
-)	x]:nӇR+2qys㴗Ws,	\/..₽uYu$cѢ;+##:;GOx}ށtB		Z[[LEbccπʞ?%S>!dɓԏO2,@'c`6h3_ڒ8|WWW:'XɤFTTЛЙ @NDGG{-+:!ϵ}'opdQW|f
-ڙ4<lARGL7((K̈-{rN^޳cWmsvv42>~Dxv֭X??4
-#x;svP C`J;%㔍7;GGuijjfggysihh0퀫 tP1:ǲΜ9cjjZRR`]'p OVlwwKg²u_.^;yB&#xhhx@1666|||<<<dt%-gnTK-BL1kN?}<qE\34yHMKK;{lnn[Гnn͛i??y/2	&~~/_	8Nl!``J)lɓ7oX[[1A622b0MQ@oU_UUΞa2ZaΝ;>>>d~yIG~|?lݼٝg[[[t iW@K>DGKIJ
-f)zEcEv9,,_]\~{/?ԱNNn"T!(?~)Fvu\tm4dYSN$Ա.:6lA8]v|{J˦MZq
-1ЧOEhYLM% a@l`t򋋋3Z~:5` -"lh}"AoKH*z$~shhŋ۝ tffm}9;˛=]l`ga!
-iF_c܈ЍezpAAAKKK2vT_3mi#rmA$'*΃|V]4lڽ}.wQJLL)l$	J ATP`c__ߐe4mbPmQLU)""BXXXHHUi%9ICYmw:?zdUGN<4KIM%bڅ7]0Aw KII?dB4iF` qԉ+F=͟>1V%Ĥ#fda9QQQz tS\",\oyg:O&پC})WcCzRƆ0	aPe.JlSyf>S>N|ZZژijjBO
-dWW0OvJsqq̖(ݘ:`444<{,T߿}x5\YXX8"\wɆy<<ggh޲?YOWP33SRR
-VM6o+-,LHyy@u.../-!)WWWw}afbiCxN:v]={ޜ_ZdY%&MKI.o!Av55۷So>cv[~e#W#gΠ>!!uK
-jsǂƌ'`1p)l$	 {0s!-O>=KtЌ >%	h߿PUUIC _| t`oKIҟ\pԞcOq\8w<0pXSSGWD,XA8bE77o߾RAAoX:Wۋ+c
-۵S!%+z^ec뾞Ύ~GXDֹRPPl;wPl]]`XƆoܸ=CjL1+`;::92З-[Na8p
-yȾYYY]]]h30@:Ιׯ_ajtP]ZZhUUe_gSJS}][Ι[vA\=ɛ`e=x0͏OfsIqhjݻ>ˡA0<Г\U'Y=v[_Mf~W<(6;_3ӿ7{_[:zZjhUTPMM=v C%Knn# iiw&ذ6hdWooL$S>Qӧ)}<IHOO`0	根9LC:e=z #)))\\\`o]ݞŇscɢg/`V?]$<  C]		Çfn"ā?J@]n@hkkk9@"@:^fbJCWpY]MfE+u޽0;6k*RtPxeYYY^~~8
->}:fzD^_;86lK}e:
-t̡Ʀlݺ5''g
-'D 4իWǎKMM2C_kkrb!pٳgrrrS5|||γ +ؼǏ-jݿ#ƳtXE쫏)emDxjii).΍HVR*Z&[+(P8:?~wUgy^⹼h	KK,D`˂]C@9Uמmח;m.K+z{CCCЙ>>>!pA¿?GQO5k>>D\PFϣ,eETUU[Jdd$@+Ք_}("dnnnvi	 ZHH=f8Uq,c``6R Y;ܹGUk+~c˗ܷc^RP3W> !Ɠ/NA K>ryYJ۷3H	a=̩޹sud@޸llU'h҄@s޳vt`w
-aaaktHX^rT˗CV	K` 9wƈ'Зm۶+	X<"**:{zz2{/bbb>}ĉ`n3U8/_5rPOW.+J^{릅d;w9~#𻻙8
-T?))	,qqq]]]2#0mP^.		7vqfEl'"3A~{N%swGO+2SJJ&624?̊ݭ]J (|ٰ<+(9s
-|FNǀA߼y͛7BULLL4`2N	2*)Ƽ0+w gG-  555w_(z)-&r骕+R4"l`!K:khhܸqte[losG^PBnvᮼ|TY[WT>裛/oӧ9lZ!zv?Κlm!SIL󸰔k@Iݷo(޾}L9]eeE	DNȜ9hn$( Bٯc.`DQQQRRrj}dYYYS>!kؘ`}_xq鈛9&*U+LXߴh6@w;_v5Utͼ:@5`o/ͳK,xG ݻ5>7I&0!ŢZppʇz^۹
-w/[<f#k{*Kc3.f=gc`
-*TbpNe.4+d.4V+h"' sԍN
-F[n)/S>(> 'O|VTbP1%%躷`YYYmmmT:;vp칫}KVE<6)ehck;f;vCCC΂ ;QZ/6'\`wޮuijjVWWhB__iRRU[g@Oq'MI)I+U74{j(ɋyԃC0xHuy+@EG^=8w.K}6t@	aA9trww7)aDvh
-'Dbccπ)=Fƀ	Sa2k_ XoGÔ?}61'|,`[n"M'2Osy-qWNqo{pw5A5%&dhiU/_>@ȠaC_``^VV`]]]!!!~~~}}?ְOR8|~
-''gTT8~ᣦ4o&}/Ͼ&p[c۶	iqzbQv}$ynpnQ~qY_P%^^]}657Gwn!5iCpe?}t1v0׍T'C2]LLa
-X@Ǔc'& ^1!>}J?-,AKP=h>Z]q	?DF73Q+gZ>VP%%uV7vɒZCYYQ111eeeP"@ځO^CDHNOM	1b7wb	>]Zja[4jǱӹl:*1E} }_M9THNwQ][Ec&j5AE"*"]z"IDH{f߹3H|yϕar{^{}6n\@,$"$$";:^tYYS_0;_n-QbbC{ ;XU899c`ZS$xTd {@-bQÓ0b1=Y)>nJlIx灏kiiȈ		QPlC8eK3晫9RP-&{5O0 B[ۤ ?nO5t7%b{iU6v&p4d'CK#W647"!""05faAN3ۗ[_9;oތ6ww`N8TTN-"?0'Ξ=ܾ, &g|ft/bpqpQi555]]GFFDEEKKKrqqs33sqqWbr)DKڑ]!<>{1(ܵk9vl$-LB>9J'EUK'){xhnRT1Mwq~ZZ7>9>akǖ5iՌSr;k"\\hlXF&&AױcظwGy輸`:\z㖖K|ۗ6O:5Ke9F###Y{XDl'''g/ɓ'
-
-
-1hl|~V8s`_Ͽ6oڼir	gQI;;}:gӬ07!HNT\37qI#`*`2OԺj5|'#8TR;n))YF6i k]ԏ(HHUl"
-*p>9 !2k|N8b1b|߫;2!} |Ν;n_. 5rر<+;;gG\gA}}}PPЂZc Wfhll444$''_9(//JQQ5~>t>#n4dS+h~2rM܈s׏Qa0tWW5s4,hj:{7cm[`	΢{-ܐM%n|Q0R-IzTRKEy[B}eCį^'		NRr2"^":&F@@@GGg)) -"Kv ?7n$1%%eNN΢w UVUNjX:U͡gPԾsSquُ;@ ddd@<4ZOQQ^U}ӳ6/r.uFXאh+H-H<RE~@{{D8nݪ¾O7<";NtfY(?wݝ5N6ȒN8s`^[			3nvckԊ<xio!ZGfz?׌Dہ^J}1#1?>//oCm7(((.EQ߻', DӸŔ E|ϏaLSS)33,'+g :p~~SNG(y4BScB|4^;jo>
-yD7'wTW;w-)$j{|tn<.-
-aRoKK>5߷_2P<HL*,(|g.|LV+id%++MKvXM-Es)(Wڿ|$_FWBZII!yL2`,M|\WW蟥\_	0`9w)N8GGݸZooj	fVV;w&4., .?E3Nbbb##>+**fŋ	2_¹[\AЯoJ"|: n7UgOOTVQ>B~~ȅ3Gw=vE:	5?}tݨ:C
-n	C[[h7̊Aի22
-ub2isJwoDӫG51PFzI%?>}# III߽{7N7`j8(ɓٽK^SQffpY<EXNM_`\#8]/
-$ 9|zrssˑ_0,&3zִp͢&'e89틹s̌Jӗփ\@򥥥?܋u0yxx}}^Gp=~xڥ#{w7*PǈT=2ܢpFʇ)aP[Dpz~ {+Y-CRSSe߾ϋ,,UTT޿ >t& <0,BpR|@o>8n.y[T7U,))wP'
-J\ _2o/m=+*11p[$6 67xǙ㥦fuu5X ]E}  ìƶ&d
-5Q#mLpF^	|7nE%|{!&L,,~&PI||">5ggff xK)022F{Yo3鈏@L)z0zp(#_nZVi
-\@P(<?|//ou5b()[k,MO<3!?[^J%r_\ʊ|&*
-[I0o?g48_eלn|DVAN!Z0ZXX̿Jܰ.؁"~wz1Q#eZju?@6Eh ¼XlP"mƯZԀ"-;;#ަ?"#mb=HwşJ4 yqfZsC]q;}R555vv%=oϱ6CT8iIC4,Cxn?S~.8+TzzG=NnJn\O()JkX멩z:3\/*2wA#pǏ߽Kߞ@~<Ǐ?#}d7O++Z8d|sfr_p҉XD#YIa;5*+;z,"Dԁ6"/>Av~~{TVV1**j;>tu!|lrw@$GGQEڹ^T\w=T0`VyS_<z+1Ai$&[}U<rrry ?..|9ߜ0auQ#xNV$~߲Ǫ
-e b?ķv(ꗓN0@I޿ұ_`'0wX&j2QV;W_6u	y0`?,(T\	D'lbVbia!}帮}η[iQQ_%fFaHpvmCI;Ӂ+*Q/^89bqj, I^借ҷoQo߂I6t& ɩv\_\}U$,Q$_=+enEu;PLԝJAw!h>t_ittt444 <9s155ݳg2}ۤ$Ν{WCXϠnTTXӍ|	ՕP?<cnv`|0>	4ݻw;vuUUn׳xe:n.dϞ{X,ڈ/Vjkkqf3?,*Ğz~;2^SFZSO601#;wl]3Jzk%%MH=!n̰B[ [O䜭-Z&9wj{ V0ǎ!V,^lX27o'  X;s;:Y% b66rpG/.lLFFƜ|!!G-ˉ8O wڵkWZyGL!a-99(nhķ )(/ڃ9}ʪ?[07nرcӦMg?lmG:b򪺆ɩ;'O.Y5k
-GGKK[qz,Fׅ_FǄnlHdl! :b3EvCAA;fdP'DY\X&  K9/Cs3lh8he}o;]".^2p;i.ͬᨨeb=X;;P/``2 H~|mZ(pDD⪾@^zh١ #9I	>ϭLԔd7nqygiof^a6Cy!ЍI.\ gƴ防X÷UM̮jUwy:ۖ4L	Agg͛7['ҾpsǏ{BԵ}Na\3+ye}Pv~JZ:>%nFjSϠ)V \P #!@P,%/<ALӧO*TU3TM~*+l>>13a}7|On˗/_"Ԗ +ҀFnقd-  !!1{KiQUU233k\/`e8/?{FΝٸvķ?A5PAic~EEEU8H	xX)XZ>ɓX=,//u PQ9ڲbr>ƼPt	_\0Ox2:&̠?[}[a	ҚݿuAB*3?vqqP`	}F$%rp%&/n/\IHరeb=
-99Ŵ O !!aUTIHLL}q333uttRH-J )((wf#Yӱ!л_9:^&~!}Pt@|YYkWQRc22nc	OV[rS>:/)%Itt1l066@a?x@K򛷕*3dg="K}7|X__IMF_Uk2
-M{vp;#Sol(J|OQZ~נ'#1Sm^TT 8nN=Ѯ]ۙT0^/MM. ~}H723[\CCQJJJ3	Νfff~1់xo.;}:1	)) 5܅)(fk~k	P{h/|d瘱RRXxdxx;?veJ@[5Էmˮ#gLc窝[_?AG׾vǵ)<::916Ze$ȣ\Giq6V2r}]m*q)&ܖB;^/.ˋo?ez3vl>>ML$b~>H]GQQQ+t)Қ7oF6"W,޾l:r|@HHp	nhp^^K98#B{=͢ovyCі$$$@/@eJ㿮m-c[Լ7`E	h7q4BŶ@`[Hc(Pt&Btsw:(wE<do_՟11:ʼ W+Gt)Zd꟪dJOAMA_݋|+&cih&Iskr$_8=
-+A&MvxψYxĠ {{~ߍu B+ӂ۷턽n,Ԇם%/?+++777/4q5@Y҆DDpVJ a___mmyZ`DDD=ܱ;]9w/_**-QLJOcc	joTahlv
-˒kD;DOiV$$ySDrBeS׬]QQ^AECAUOyYwAQr7ȮƦuVxJt'~2>.gRyX=!xpp?CMt(	C",^xX~_IIlxS}K\)h QC/&mnRNMD+c⇆BBB_BBŋ|QQѱc899js^?}ݶ]c_[3˾.iL3|Q#'/f?lJ>~ȩeeykI9>
-jp}m־}ezHt
-ޛ^xww[nyf||٭[??yxySTx*łExc)8xG܂oKKryRz ScR{11T_wO8Qiܹ\"Ex֞߂)khnFj+o1Z?}u/_l^_}SK~5.Vߟkkk/8,,xKw	Ff
-\#ZZGG'""bSQQFGGȘh$1LgGnycܲ}_T\ÁRgpuܬ_d)g 3ݯuZHRHi8fkQ]]m`` ((H 䏌	a[3ԮQ߹ijK),ԣy@B*(Q?"(VG/Ӻ.ر91]XX!0`oE~WW__yƷ>\9,3de! 5=߽64|zųs;
-JMMurrZLZgeEs[gcgϞMr^"""ׁz_`Ɏrc5gWOl>KYNi?g7QgZ`>V}mM{tOYi=մmom~f|H»ѱϞ777MM͏7L
-yLwۘPU`qGat®~QUnV.)YǤ5TԷ7hJRޥggdE1-)n흭181t$L}61A܉\ })dE /vv$pA\n:AܐW}oq7y$fccq")---55[̉iMy;::deeϞ=kkks^ύ}mU1^:4gvnuJYp`Bo>Ҽ
-5`w&05a֨~ءd_SI!G2V=g߁nmm=R3=㞑1lxg7XxLcۼ4<RF0c(Sk/Ί~S!®恁YLֶkKutւVi 66Peepٱ;'%%-&F0 84eaaB[#??XWWw *00P\\sv}lt}^^p/Im[6_WuNQM>$fo ZZ9	*;;)ؖd]$,>&:9ec@sr݇m{
-_\p` )=}j*DmygxxHw[yMvthpo c!Բ{O8ThTee-C1LaV^#ŮhKCCcffH_ ^`VYzzv4b{[0 =s[[//W{Kn	ϊﮋyӻ![J!%̌jK	R~,hY; 7$`̴Y0RZa?obM怘`~G'jJRR$'r5ۆɢ1}@!%D	Y{#xYKkSB^>wt{,8ʗI%53wVח9,* O"*=&1Z3&P]x#9똂)AӃYXUUHP_Rhg2 VD|ITwn.M2T篕kPe*(UsX7~Zq	.v&ZM~&z|9՟t} r@Nrp|m*Se{_jcjj˳g؁Κ7+7qg01Q*%El`>j幩q@DBYP1ocGHNv,4ᵏsE""\|\RJ]= )ZS=[Tp;PV-Z	ܼ<^>glnܹIǼQFj"wh9L3J L4&h0UuN[GCKKh5:::EKHHGb``w<ܓtZTw?}j:}JpUBJ~<B''+mFAA.V7Oyf8v=  Ǘ/_
-
-FvOxeVU io&'LG)*]J\TCSuʊoV7?#ȩ<),񙛛a8`e{.E`6"4ՅHz]q{1Bc^PGwn\s)SbZxxajr{x(7??mrs+ig!#oRS?|zQ`[T3ꆔ8i+Krqs<f|rYUEj-PUe*JȰ	h4?듓$:P[zx;fEƝ!M3[gW$`Z2BY~]s!2nz#4X`.12Fʮ_=}Vy{޾¼۷mQU64	lA1Θ3J:FB^WW|kk9f}H20%o߾edd<sТsnU&==35	rݭ,b"\݄9iNݸYn3mɹc#/|ȡD`\H߸`&FJIJr~zlMDU9ycc4w
-B},șo¾+
-5秠3{s<EUE%\Ο}^>ׇ~C9 +@qJh8݂`{GLX/6#Z_Sqӆ7xMm<[|[w}UXN΅0v>U1^^.RgOeR1
-k@#a$G%OXyn`{
-^ciAw5twuvJp_1opsZ-d[|۰y( Sc5k7%aL-iomllok7cgbVECo8~iH17nXJbpW^)))SUVV>z`qq+tVU25wͬlEa&?}ڢd)-]=]C]m=B
-ډ`j{R`°W˯na?MHw|o&bCxcN)qK 2<dNV҇mYo!kZ[ۚ 9kϝZK$!R/9wZto41r*mazE
-Ufwc`VNn=;s!+f#Um]=]-oco[iV12d?i}LʊO|;-sd}-5ͽ=q$TYܾ9eW74?rz*w{wϩAze.ݎEK^ݔnl+P#
->-ɉhz;!v&qSNl4,jx|c"D}.c\[WVVrrrzyy-0/3 αHMMz?PYYYDDD@|2@o[+3ýhSߍ|}Fܤyi_y?@,dd;5%Ml@\Ci<ͅM!:i`F~~۷gCkhE%`{E"da~&j* d¦[3[	X"HS~MM-,(ȟaZJ:i*\a
-~SxY*ݢa=bXb0~{HbJM#߼cXtge%^[gmΣu<M'#h	76ͨ'hYl]ޮOu8ttƕv,3oه럦!1ch;ȘOAvK=mTPAcZۻ_|w=VVV$e}=z>t~o)M499+##j`|צi eijjzv VWWW:|A6FBBB"  1lM^
-f{ٳl3>_s{ "b>=OWTD\g~Q+*Lg-FG$%考3sI\kEisSKKcei1>X55t\+߿L:Gbb76$$hUccҊp8,5ӏbN:3#tD7(ꔁyM\\4CaYuaq"?r'9}SʆEzr֯71(Q=!%9qyxLKyDR.-t
-}ݣw3pO9=RWk2\ѽIH չgȟT1@pm隒:Fݸ-k\	ohhl7c	Ok$+}ߦECc-141~w|/Zza -++~),>>o>{CC+WݿΨzyuEՖDz;iJj~&%7BzǞcr%
-٫+ixTqZ/Eks*%=?|033svv,G&ĔG=>)<-;E4%`gOs%iƐ9h峎7Vaϝx$gTo}O@U+G=ee7fc'k
-rjho9IV\䝞'3v&%:D ׌LwO֯72U6\nlyR7pZ.58߄|-U0ͪ$bCY	0+{;|MjὭ0pS^"oH#rQ)͎eOq;`* *1O EΜ'!Wo#܎,3OK%>tM?0K_-QQQʙ|???9990~O?H+mjbB3|m퀘:ބ:r9}薦MXTlKnoz$)ȬTfoܤy&:;Q_NO+SGE*nؤ{G]Y
-[Y!?MuAܰamz,	Peu!-UagS5GsIMl=
-:?pz;[u~EMZ$N]}ZڊO^=-kxG?Mzp	REֱ>1TWʩ:06)uQ˼L	^8s\5<_s{;;1ɿ2q.S>11QVVh*uɵ#jjjx(޺~[=w/3ރL(^4ХX9&C3)))t-M*`H7n8::RCr&S\w#4i6.'_s{*m_keΝ)2ʵ|vˋ~vM#KK]׬w'Íg<ϳWN./Źs򊲒LMQcXRcg}7Kb``acx]PaFVZp;;D,ws8R$DHӧ˸~bǊ2"y?S!	i"Ĕg Vy	$'=3z;˜rᙌ]C3ׯ_OIIYynG`2"49,=U(;uʥm6c|?󱑅v]]]KTGGI3PQ1Yw K(#opqޣg.!׺kJnQj;::
-i)>66.++kdd߿b5)%##HJNET%ڮ[ةO<gߞ=vmh~vCf@g9Vy&0W5>frѝv#:Ec#Df[&qT#vn+'N;=AI
-S
-3}en
-JoH8x'!XjCwƻCC=YI	IYE]øw:;*"F!UL]:Feع*cU>D/i)ФaTv>&~|j~ު-9wOJwAYd=;īK;Atn&l0F_}vSӈ4ܮ")#nqiov!//EEpƇu-۞:n+W 7TGe:Ӊ?,u/_yZZZ5# z^`bnxUUUhh(._x)!to|I}h{pab;јrCFڗ;ueC-ɱ	\rB#k5']Nfܞᅝ,2*)Gah4)tAeP-qn6IZX5/2&QzozR|V0NlJxLXV)#@|gq>ꪂ4<:-mu&RWĵ^eWUg'?Չ@Cv^x˭}֞@fbb(p驀;hףm&!)xۑDћWV1uS{D@`	MNN^9nbF:ʛ[͙J\*&Qv<((+_XQ^e'.TgYSAn000 ҽu}jartd8+;&%#"mghW[/g8$YPCei!7v-mh)O{x6sB^OOOxx|)͎FWWWAAOωΌKKKaaN$ϪOED9\}CJ8e<knooEt6UV:݇FPIw*n/N]WWWza$sG!w)|w)(*骈+uJ]4^en9l2s$tW޽;w"=]i./M~nnNn1^[/R<o~-&؆EQac _MN!Ib&ӯC
-'hCܣk>+,)U^V$$$ 3רG06YV[UN.nw+FOt'G2 =G_fg!sJ8cF5Ml=t+ZfW!,7VK!zOL^%FB8t{M: ہ455\t]$'깩ޙHodyYpKg9m$	k:o"2Coi9,"DRR%/**MFF&11(E\F777iޡ~=xܺ$uvz*<OwbFr	.$'FhGžї'ϮWR\(̩?I|Uezꭋ6R&;aBmmmԄἜr~!fjRB&SY.ضtv*;׈Ռf>Ё`r=ҊMoplh/,`W[g܌rI[m,{Ǫs;cw~<nnYR:]B֩3o.1ZGF]x/`E{*õ/]f!ANKj-rm/0U26֒a~?wb\(ퟄ':K̯CŰ]e_㌬Ϝ͛III++K;~WI!QG}ׯ;22/<#? 51y(T1<k:[[[uuŵ#vo?k\	Mo%>d[>տV!x[M`	$NԪcbH1>>^\\E8j5֬]}cG߸LE/3#8|`0#==M:rsOSns
-٩SDWhҞ9yddwYX>Qrp8裤y޿*&&/_P}֊b<f`{\;?=V#`(oo3s&p#44
-ax͚)n_>iEWёaiyu-!l8Ne$}@9e{yYzD<?[}Iaxn}nۈ)F\+XDfwWb89ɱӔoV}6Uu'mX=BM<[{^1sWqކ ow}=#cc{Wb'S6رq>+'<Uzr0Ynp"""8OGog}3T2:J\]{Fp027%8sDEZCHaeeuvv^	MOOWVV^(MV||b3ϿyDį_%:s<qrp
-
-JH+=|iS7lqqMD!~ڶ{yR2;wâkjr2K>l@c%΁ŚKKK111ڒ .gC#p\-'-u`Zme~zfjẖ蜜		,458 >vW^9bW?ƌտHAyiAc)II3
-Ȩ6 :7lHFJ68߽N%5N5dDK=wom!$`gg&',]W Y_gnjkle3KW}u>$'TVVapCN鹃skݺu+:	ؽƆ$jh =/1àzQcVjhg 7YYَEKVH[cuuE}uuX|fގ aF{h}+CCC9(
-Дҥ;{tݻEWГb{!3#(3BM'O訩Ϟ5\{KJʧԷ/"#w_ cc㈈Ҷ>`Ѱa|e&FG::sbcc i	@]ƚtY5=񞞮ڦb+RKNEl^{|\UT.(XL"KzsLui)N!ACG#c%%H\PB'HǁǯGJo*.Ɏ|ğ=2*P]#uM;z$d;8?TFx	GZk
-*k>e,GGzb#a?<H)Z#V_l ޛŅuZz>(//722|,]_51衦1Vjb܏]c4rycc=))w7lg	hjddddg1 _X YSSpО={L5?u׊^{kpK?+utC`}̫*+-[>㰾>ܻ
-Lzv))Z%K^jjK5w(הK;#-mL*c^O
-df`dVMmB8;-lLc\̸}vBBn_iւ	i(^eee66
-U U*(($%%-ZiOp^EEErssq,f}k/;AK/ S1nh.ׯݽI\Q%`FFF?#svv{#lAG^]C7~g \k ڧ 0~81	,j|2ғsA#zaS驫a6kzi#܇ȈpVyYׅl׽M1vQ|.4'OnZV2?l}}}?^Pc: [eۜ(**233Zk8-00PQQLH5t5UY++)HJq0Q_ h/1%?a$Dm-_[[[;;;@o0<[I!]cYիW_򆆐~W~68hnk+f@AEn@[hn
-V\s(򫊷tG4|ySP[zTTUf8KI]/%mdRQ^6,ܾ |6++M7oPRR,`1::
-<,K 0qJJJrgkKtxy888yxyX<$#=fYP\@vx%@by΢X@uW7pي
-iiio1oKI(~?Np2ПPqmIpWO_){|qɑr@KW6|lo2ɱS79CBZ[Gf/+PUU{jkkUUUXkhhh T__>]3V.'3ύZ'mMuM---mm]KOeOW䳜K].[YVV'))	|vl!:uz~73spp R<Rx޶z灳֭[_EշF9{t;9qwpa2:Z0KiIXds^\sd[wU2 ~pw X;:::NNNK	988Ç^͉q@\5SSSwGwJ	qqsqr4	 eee*++Mwv}Cў9{p`**+W®|ZvBsuu/pOcqIU|G-h/	p|4LC))S(DZAi@K)K˦~``x)˗MLL~ht (I/DDD,5&v }I)}[%سgSΞ>׎75mExa`(**-
-`w$[߳ZGOxt=arO44|v}vׯM#(X}csQTcX[+>f5JJ]㹓-m'l6S[*=Kmdĝ;wUTT^oβ.z<DiYYoc} SRRE	̲fَn,1پcnTwQ;{ZhE:Eo[!n'TtwwWRR"~lPQWY1Wۦ&XO>zSdf6X\g"phWW{fǠ?.Np0+ְ'`-U鈶|r7ɕ}&y9?~~~KOvSSe<mt>>Do~~<`x 	cFm[HqO9&eev0d]]]0H`Ǳe=N9S{N9)|ү~̀/nn7}xw񂂔 ʎ7.F
-ҧ&_n(/HrhV'?7xhzlWenĵLHB4CDDDBBbY6O	}vyH,,,^z5SyM,3.aXfx<3MfZa1P 룬FP{6`␰я='';::t5%Eo]&m"uy".)>1f|>KMP}}o޼d}GpCJwfrF^3-'h&atm<KXA?!==e
-$, 4QMMͲ_ 	|2{mHZǆ&pQv9Χ3KJJh^A]pNrY@auXhwO8/ '_Xi.}*5d<"##EE՜\LLL]]]󯉁Fa&&$iY\bRii%%u9\a~P92of]xScåXR:uwwwwwwwwwwwKz4z綸Ҳgπޓs~Ѥ07B7xocbbP~a㴴4UU՗h{[O^^Pfo ^ZZZfccs```aaH,MHEX/hhc%E)W
-r;#Y`J鹹D'?֚;1ŕ	Iݺ$p]R!X5 NO䵜g34zY׏?O}}C8ŎpvrBlʊrGG?2&BmA'_Ĝ3ek쾇Sɤ⼒EsAGG_%츹gff6Q XYY9s"A uww:%%eLTVVfBLLLWOPSڇveKᔊo|pp,ggg@Ǧ}DglgNuOzI>كh= =0m(+Z2	=D.x,5ciw,P['''~TWvԱ͍;oe2D5vg-L*
-Jt>xnWRRK"ǏkRP.[-@6`츺xHakGwgtXZԃ	npIIIϕB񍌄[r	U3d2ב	a(o	q.yRS!v5}:sN}<ZT]FvS)u$Xc}MNNzxG_{j`_U|_|r8LI --OYs׾F@OO_% KQ/pMMzww毶qXi<RɊ 6>hwqq122V;w׏%̜l݋3#d,]2Fj@(jll.`adF@""44xtmuLR++rSmT%y陙
-J!bCAkZU/Lԩv89bbo<y.ښ:/"!Mքd3>M#.yfsE
-fz掎ZCoX)7^[FMM"zrr2
-
-6bdd$A}v3ؼbbb598k7/*I8rpN(%q@~ɸ|X^%QQaMF[sssCCCP1/77	`52B\YYuhbmѯBKzhdosJBffpC{ijB-7EohhqĬ -DO-ࡩtW?Ϟa+xԴD=ٯtM,6Y+A2yp+Foo E699lWYG__0 vAbKM5Fz˗/1r<gLTTrrRNNNEEqqqy޽p?k7Օ秥}nkk\EEEVVVCCa%~xC`XdQ֊:LTZƖ3,o]]ys@9xp`b)p?88$6.=75?5;ݝߘ<2Z==q兮x^	qXoC}=woǭ P-bMLL)Zquuu8UUU[Q>FG{x889Yڋ1p2
-)ȃY4tH빵4ճg[}jii)ASS-"""++u[2ŇJz_
-(iDCmv)8hMaX,\-:]
-GWmoop\k voܸ(MXŠkIn<Pq*О?DҪڀApȸG$-͎YŦd###0oPz\\Euu,(S*++S;,L@!;;;އjrgT~6<`T- JKz'54 XZZ:99mS[[;11LMM+))>jsryNrWוTVd8z6-NvDf:)G.wkzW7|[=3py1	2@񷑑0@c<ٔ'";Pmej{1_ѱrtPP/nNgH-"&Qԃ_&м p@  dffmW4;;˼WtA'''G{{Km\JQ9ij)kGa"q,.Mh4z[jJMM#Dp3	}Siz@vExqxKޕ\CKJZƑsB!SSh߾ľRQzz6KKPfjjxDIv#[n*R"oKVS{U}ɿi\2q/Yle50119_=999(|sFDD<Eimn"C?=V	LpfzݿN%!!|OL^+=+++mmmҤ	7:2Sޓ^?J\Sj[lI,MN/F֖op07ᠦ>:7BtPiiH2Mi\,Mc9j0h4#kc
-SuyعxxM:G_?7ܾ] TsMME.8::jii>==eT\]]UTT222V;j:;[ZZ:JmC
-I&)	Q;ŵ{zOv76/q
-J- lu`t.FMhsiz#ޱX 	y~'3{b~~ @#FFFO)GC/MGz{z$4/cX̒L[epu2dkT'У].&㨙٥Uƍ)))o}[088n`}ҦQ()ěAnnCku޻@,ih`kd~YZ8K/
-fwr;"%!EИ	cHpݡ<rRJrm6Y?̾6mmMWVUU-88>obon=B$*Ԕ&*ɐPeYqJkF 2vyal++>3yj~*g۷֔ ,} )rjkkEEvV\9Ȟڵw}x Aoi~e08+JCpf6B|Eȱv3khyH, +g쭶(i{f.'_>=n'#$"͝уr{{SC&Dhg3GxdFN#=s͵?Wha}"Y*Mf;w8bFyu+W{̜۷111fff 믿"##7ߕ hi lƱ8}{~8~Gt|ێv h---CRMr^YHJH}DB"qi2^3k56B>"<P㝤Յ!^rkzz~~}`"nj ( $dL_ZmthNw;ȣdvS>oenDUKJ^;,<MGx v^Na075n^TVV:88x{{/--=  zzz\% T[!+)rph+nqv)O%w[OOj8K@uVix$VɫFeE5lh+
-]Vn_sEFfg_	BIIыuM$$ՎŻ{ʄUvV+X䎴d1p'Nc+AKN2~:ޯo;pb~~><<mr6eQQш\rssmll***	]I*!!m9
-)-K|pb|S并\'ֆ,B8E}DQb`~]
-3ZzN6z'JK/ۖ67̜޹hG}Oε<YT}cCzJtUo~!65Kb97װ͛IIIo}QVV"^~L@"N>^X"@kiiS<D^'!\g篊6ż		r {\{{;P`_*d~3!5qVN6n=ȱꪺ<̊CWyxZBZZps՗ '}? "îPFHa+raHKQ.cHnغbRulh=nYk6H㠁۷ΑT>ؘi{]__?++B0sdc;/ׇ^cdbhgRPfvn_YY777~_usd4V%lYYHUfhxrY!88\\З_/5_Փk?<JUUf.rnp&u[Xs灘;Fؙ4S94m-r <RR62hL,,,o}HSS
-
-
- F*`yd[y^(K.)gWwcŶہvppLv /*IQ3m -g{s1RɪE/<333p3QQ		=u4 %l3Ԕl( e^a}퇴6UF&Q\\_(jSxv@a\QTOs2 $)++tRBB«lDHB5 zR&F11ؖ`_5-yOX틋zzzo0<Ũ&"\lx\FXXZP!k5[ߴև8oׯ_WWWݭ
-9'@Ps3]إ,%[~=@Ra8Wq[ҎLEk;:X="mu=#KfЏ[`YOkvtt hCW{f)>2m}d[E5%'''//kʶ骈WR01LյȨ)Lj/t̌{W\x#XZZ?V4.!`jBʛkb4h{X,gd8WW6\LP15Yv6J0_)m8SX俊7ܾ t,aaafNNΉ'BCCcKX(ޫ_M1Z^^RS<8	{xf'ZZ:ǧf9B|܎bjkk'''S>{8Qd`jj-X>y ~\FY{L&WUU9rp"yf~rw69knnucȉXSEǐ|; 7#ҭBW퐎7zڼTT7s@;+++p>֛>Sptww߾}{=R$suuecc<S\\D"_4#r6'f;C(b=onf^4:Ur;V͛"⧺+
-ʚ;-[;l◩g;Ȉٳg+++jLٳ߿xg`ϝ111`zTOu61q-ENQP!óYѥ|:~JG1[hC{K!kiŬ,`#_n9TY sss/_.KYf0??ly`S z|'p+:j~G/ދ^x@`UTT"""ID<fz-/56pa\Pui.GGE_r%  "##GH,ꪵ5M^M L8ùoJ%nb8VY.
-D4۪R}pD:^ņɕរvH$PPqqqo}'5((ع8Ų dff>ݯ
-UWW/))xZ`k_1plaeuT1ty𝯆PJ/vILY_jkKd GK55r
-._}<=ie6޾Mڷ>$/# VFF1[pA&kr$16/
-d%k.WI}oAW%rj:pp;:5;JOE.hn9 (%%|ڢz) VCP xxx{zz6V9J!6hYkꌅmVЃށv0::ecc6)555x`Eei$B{Qm11u9>4OX4VWH?COw4v1n
-t~!jcP}~(Gq`{)$3SNKlC|/2A{&DJ)mwrrr899+**(x%gϦou bnnn:::{{{ Գ=en&3.l3e+3*&/:0xyy遂쎼A̎J淎ܔgcl?ٍ@ ._K/o?+9{~G7h<_&V7.㠎CYfYԴ8Q?]v9d.w1ELO:ɸ5tLն&PX<a'JbKHl1pU㣭s@Ja~~>0 I(388nʕ+3 lsP}ƾ)-eFFؕ9+8U'
-#v2Ex@@ X;7o򵱱q~~~[l"lGQ orr:43MRQnj:W:!"=unG`n_ZPqqɰ%-gZ\XsttONdơg*Snןƥ◵4-r嬭joco\vusC__MD.phm릡WPDr}nRhEo111v0EJJp46Ķv~A "]]H[ޤFtdd$Ujj궧2=@'///!!T]]_\q Μy^F.yZVET+7ppgř6u$kww7SWWzkvۘ	fᐷvW5d(fxY[s]W+y)ѹPpO_~iȡǒk ScHS
-6<XB٘*+9NεF_:jawǠ@vwMLW1ƒf+<]PH/*k`rAp==(*
-.bPWWbHXi/܎w[@WVTUUDEϞΟBB͕RbXDDDZZ;/_qㆱ1؉ZZZ:']B리O"MDJj[?X4_x-,, V/,,tuuNH
-[z@<-SV#t<G+HQn>J^OAHH/Ա}Vw"כ[Z^S><XUǐTàE9/,e_\XbY78o1fNkl{??RQY)CtprrFGGS++!AA護ό{!##h[Bc1T)~0(97
-
-~G93AƦo,,,^`Ԭ=b;kwCĮw[P]D vĬcPcs|gff233%%%O:::ww!
-2mNx*&'[̙3'	H/B-x? ))-xot#~*OC3I	m)1[N`ɡ^BG#?U3:߯P㧨d{[A⭪N\ׯÇ[	Jr;0lmuHV88.GFևOrބWPPu;V---m z
-^Uve;WLM\9~!y^c_|]6x			LLL7o		)//	מ<ۢ_໽~2QaZ0<RUVUP}*5ÄHB@(/ܖef4]+s7;tq@fzRtZZLD4=-#+n}7X{7".&71xm	})H[@1nC<6FC!JD=q??2hs"͂jhkksuu}S\BbucKM@ֈ~dk/&%k5nGx#>D8]011QWWebb`(Dw]Eoh[.2
-,?!x_-O>?Dڈ_L>P0c՟gxZ11%(g&m@51t'PqVEQDX^/JD	<؃axEo٤⊊ Y?®]4<L}Y6ܾ@ނ@8 `no	VB" miix?|QQ!G~=%zwsF.,ap}}w1yRr2xbh4`ƈuu+W߿ȑ#jjj[u@$½w*a@:<4n%_|	b?ls@Ģ2G
-]rf0,AY5:ˌvwKBnB Bb^?l~E?vz#TTD}Y6>8G*̈́xB!hUFFF444/D*!bջw?B|gG ~DD 33~(3scAnDx#!fs{{N^^XX/8p!08333fKP
-DLWsLl3i4yar;~Gk/zoG#ءwvA<N} d#闰&z0=_PLj"Rl d` g/.77wdd$Nx2/-wp{{;$&.ZA xM ]DDdN?uE|緓eRPTgem KOָ]o.#ĎWVVdcbb]QQ1::
-$rֆw{GguTGvcF-diccShӸZYXAT[ǟ %^n2A	_
-y,٘ΰi{e𰇦:֍	ԝ
-x?Ȋ~"(@CǏ?vm^nomOXָ@ Dnqmx?v옧w&jB?Uֵrub *r2,'--O^D;=DD,~9bbZZ@^PP088:#HLLܷov!4]PjXgũ<K4"qN[;8"y'3;$nG/C~ޓ.">G,݈%yAtPiƗ=ј{?&w㭌:^alq]Yóu~툈\^H#W!6zQ6w+6 uwaJ|E.
-1WlqSq+eeáV\#~rY[bq8xaߋ|}$##gϞƦF"u5(ȇgU'x1+tSwK-86:7~c0PB<J]ks`}2|;$- <zy~f5|*D:oimo@>1sXmY
-ŸHPS?z޹5}vֆ@8#6D?yOns 2:ossvclQ_djM]&TU)d%Wo"n\B}ѪD"d5uuu/]~A/7Է-	14n$h*]Eq.SE͂	Rg
->1@!μsP
-3
-A1]b qA6C$W':CEo❙ߎ\$BpyCҦ+FNL@NN@Z8V	L$	`?oAZ?v**o]:"1@h9gCPR:88033kiiF ~[߈O<1j1;oHxq!buAe#h`of
-
-bbbzgi6Z<O7j\YM\='Gu\zЄ²)"X,;?A^C$ D\3![;Yi{\M6MniSَduMpPrc O!)ZP=^/vv>_fpBLr-,,V" Vhc?ˮ]8؅G6vlߝSp6jjjNN߰i$;PW@-qY%-y4*ϡ}zShuuӯ@#>MGе#v!ښ[
-::|'ivd<#1SO_7rr_(~I=,wn_?߲(,^^ް0HI)A۝):q;^^J;%k]ƍXM%v9.Gc$F{o<JÌ?77zŹ:;Ȍ]j*(ؾ;<&''eeeCBB|<<x-oY/uh>@ұ-ly3OF coC}
-[`[an^lJL,%,!CY6XX#	.֭0]x7d*,ڍuvk>Ke{$[ћraa!11ŋTE\]j
-ܪVW4S~M9}
->W訣ɓ'GVWL-O7J+iDĺ
-rQQ$%BH%!sډ'y[;O]r7S8^[2DO Qs?^rC^N}U@޽w!cchϹBCC)Y1vR:q;vxQQ'1/K<YDPfffW\166~\yq?BLLۚt#U[@|im}aW	ihh۟6PGR^2z=EϟՎ, '6vx
-p)x`w`^0`E_
-IIi,Qo!'fYiMUUih^zzp?-pAxCkA`B{hJ7H$L nyş~n{o'h8C%5"Eplv  VϐLnjjNEE5
-RŗV۾ G.ząvp\ҸH$r-J#X;@KKr7cg&7*XxE1V)???]qXoѲ>kc%+'B絵.\ \-w;y؅8g8uE,S}c uxxxnݺCph푑~Άn4+kc3bjZ3*&&T)[[<=u/Q_v_XMlT|%ø%8yfC]IYE%9Y9-Kkɿxt]c2%=9?^d\n87+370??3#zd"zu)D$YYY%$$w2ݵQT2k>hptptήlEWdefV  b'F*尸h``pU33(?W'%gs͸u3*5jzfV*<=͟@g$DX;FtTgdUUfe("fajmJ"jvSȈ	J(F7L(~$dgcBv<,?育򊒢ږ18".T5l|Zn':b%O%@?#I	U55UEIeyE5-F$
-L_Ss[8o?틨XOcǎ|>Ȣ6ks}uy%eqyu9yQ{7g"5tF_Q899ٙɣޯykjΝ9ޟL,z5sNqL)ms3PWTVVRUSq)k"cSobn+xbii)--󪪪555/~i~ع7ZlwL:i`[i)+vw
-K+	HRSQnll|_Oc#N3d9IK()*[XL8Uc;s;<@Okkk3%ŋFBm_	iޥ7cm5Ee%y%EqYq1{!'XmuvV7As;]j`nS^lonf{jfvn%CՔڨ6
-}Iuv޳T99]}<m~5qUEmЖ8gyV7}S>	Ϝ9k&}HAM#,6\i*\+$JGTVla]F(?+Y*['ɤda?д!L&GDD\xQTTxbg'"fP9	Isc-JU4矜2IFhES<mՕ~35Gzў*?سsM@& >JZʚNnAq]!ζϝ<Ī.T9 ~roIoNviTj5=-cݝ-e:􎎶ŵ-kg};p{[c%SPtmf/Ks'XPݵ%]K9^ֿK
-4dddn޼icc#r?-eT<[lQUM|ޣb_)hiillmiѓ(l\ @Noɿ?B|"gӵU`7666/[~Y"b[SK|m'/7%^;s]@ ag2wt6g46u4d'ilq][kZ$g >=0q?!`ko;]^_5lhu3N%᝛ZT7DJa_~QI4nC(((܎#L_	D&pO-.:k%$8pE߈?|E1ۛjJ.YBI?|o_5&+!u5%Z2⋩NR u\v-66vH\m楕ż8?{gc7Y]m[X]}%ȡ.*&zˋZxO|`҈ij@IKK333=EQoJ$<ĤH1IIxm-f0fd)\xtHS=b$U;YfV~3xGDuq<_Ս,isiR|eϩA4#C K5%҇ƽzbxK
->H_w.țCoHjl=S,4`9*P*5#y{3\	ϊ}!_~qE޾R}jb!mn)f(ƫmsS+oy w`ݸqmyyJM~|[rQpk<~v|۾!Ss)h/C+{a1GG@DN7ake~: iTEy
-J5c!RqJÙ5xXٯp<|ajbpRRͰ5TǱc;о{~l
-fͯPI9ȇ mswwB2i#yDG[zzva#_ $$gYU֋e+jZ%Y8,@"9-m"o4W7[9g؇S>lw)3-\]ӏv)-w%4 )iaopZM˜J#Ȉ^^|>&LJ{٘o;s@Kw*<,Cw|{I_Gܶ1tt_566X\uuYXTF[q(yf.Y{'C#!5G>3㣢:y[;zptwgkwﶱ+3VG}iL҂SnPD+FnQ}SFf| mPq
-0S[J%%88rCe_,NgnXa&*vYf}E$rq <tnOr3RQU6
-UnkH
-]r<Xdf7[%<!2_VuQȈŋJJJ(8 $~+q1vb~w=@0JrI=U	vrJ]yItttXXX+))UWWS.6u5joŢRخvxU`V`w}u@ː[It~겨Mܺ\vkx m̩XlwȩNxZMY-Iwk׹=yffɘrziu/vOlvbq'X,+qnwSTvCs! C$";U1+L:<b1q!If{ ݾTgo\H(x٣!UU՞{_*޽xY9zڵ_qv󉏌j+u8~kfBk}ۛt9TB兹,nUgg`||ԔV\\/0[ȋK֖R%9_Hw7GѵS6'sL2qua89Ğ#>Ukq{M}@A_Ҵ;d"9g,z=u#ܾl+LK+kzܮD"n$&EZxvO@OXWC+v7XInA4|Y\^p>֡2;{C`t>d\xdr{{ֵkv@NBEA'iiKݠ:۟'΋hQQ$l$ޓn4<Χ%zGܞp4L4>x,[Q M[`	MWy\gUx1:^le{~4p!oDU:2Dq;)&P]e.FB;oK	3C-6go	_i^XKFyۑ;?"""F[<yR+s-z)U5eN<Jٔ_vC!|gh+8g[kNN`On1)hI_J,勵nf˗:j]Qi|dտW8-읮qlՕL|:skZ_TRRS`gf([|cjjiii[⛛}}p!E<YJɢ@Kw_';'[r#7u;qD"IIEuEE[qIВ/$o,y]nG;?%(-Kjn'%DBO
-h&s;XQ(umUY5բҜO}ie-9dd*vznԙ%YҪq'?*a-NW~۟MӋ+##DNъ:m0{ee2PfffϮ:
-Xz%h񻧯_cPsXV00iDC܎u/STRb*/c;64訧'###XIIIx|XBKːBu.blf}w@RayU	Ͷdi]zָވxd =BNqYVvf5c5GAb&'V3 7͠`Cm<;?L.)vJB_{f?Bncbk+r̈́<Z M_<)-u/pByMmS0,fu'_SÐA"ů?f#)	MQt>%4HO?MCɪD={آkV0.NN_`ɓղ2@8/I92p_??˹^Wsxn{/t}qI\HRS{GRM9i;AAhn9 f hwfۖ
-4y.|}}蒓6rXYY--mRRRwprk*ζ0ySqB^~|8S^Xf'z_«~
-@Z_/(m昀hy%TUIJXa`[L`|kGOBYf̸ nf|YaZqyG}ڐ[~Ֆ#x¿QC(Xbn(>H,0б􌮾f&WhV[¯?:ʥo_~ڍk-+!$4Ֆ[QڧpZj3KǙM;k1Lqq"wڶt{=gߒL7)nQx5qo^((]W0n.1`bY^<8~ѭND...,,,QQQ[199_a&qkтq2Ruk	uW)IrqܤqˎeFA0Z$)	zLTE$vy $Q4  -==NHz|xFm%@ַҐOw k|-N¡[̌dյjZ{v'NrAJxcklVfBr*j2&;)wC~ m
-Ңªfc
-K)	AֆƁ|Mfz%hxeeл&--J]].ew)McW7WWai+-}Wi*,"梒FDVT$&e4̤;/5++[o~|5t-)Tɤ2^//ߑqs|7\C$2f1UB@hL(ls]v*ʊ.u]S%<3'-S"A噖x7䲪{VRBwx{WpkWd~VRWX?DgEIJxiʺL\SD=nrn'{$<\D F&g1yjl{@|xKƊԤԴ{ô8ZVjeiiP>36Љ\^GnR(|%%%&&&33o<ںM$NδiIK&8`m6˘{ｌ{!q3l5}<I==w+^\4􌭍4ՌL|٩>ّǏgee>,}b''[W*n[~rKsy<R===o'%%Z쌍R55H3Q.v1tOƃ[J^Km\_[R]?'}[QHF,icm:pf~sAO4WCcK2G`8'DXa'VoO#Lhnn\{^ʆ~2t*̹ѻ[Pdڏ:QUUnvƬzCCC!!!|II[M?*۳#gĤnQxU>Tbm&u}9B!hdiu=<Ǳ[]iT&TDDe%E2kB,|10ain;JgB"6s]@ op8y[[(}RRqqq67q)KO4T߯eWF*RXXXEEΞ3	up랛S	dc֬+s+;ѡ k{o8u`]jvU,A' nDvZXXV^k,G睯DTtov?xÍ&UWW766χ->(NGpN-,W0SÝݽ腵
-~DO)TU\|t^,Dx6w=255gΜ;EFF}P?/ml#ÃWNP0LrrmMM*W1KKKjjjMMtwOϯ\@sxabުbBUMZ nM@:%##/?`jj
-M:ɏ7澽GzHڤ˝Kl+4@###7o<v4SWW
-Ne&M|	 F4o+Ya(++Í}099nmm]^^Ξ#.fgg!UWWkjjAPʲGJ|iE7A#bbN~~_I5A^SQQw]LL,MbϺNa?(nbPsUtB*K nePԶ6v\onnsNxx kg-,ފ̻bi\&333g	Rfٹ8TQQQPfddlğiAL4`h9gVs x2ؘ@yҥK>466B>udou޳Lk--a1ɞ%E'=-\t:@EQQ$φNOԠt{{{֐g{HGj|UdqϪ3;;C )`x
-yPr7$jn-nG3@*"ׯ_zuddO%v sss7c8?Uở^c6/J`` ^^^fff---ljo޼yIMM}'_&sN<u7_wૃǎ쀌e,x|OOOtt2݋g4+ŐtScz긬gO6{Qf1CcKAܾ[!`Tmmm}!Tcї!R0fdd7::J2dj@GWMQC_;tMEMvio|jj
-&GGG)))8ƙ|@&9T||<^dbo>3aODCũ113VAUU5   qd~~ngMMq,,,DEEm0CɎw;;1fcv)A/rŚ>VVV:;;x񢐐0W*
-e/v:u?;3vޏ W9iI^h]ۇ!}Aܾɀ]}||,,,6gx|GGD.\PRR
-nll|=gt5B3rJ*su:X=99RSN]vܼpqq#>z疻}A34:ymeOilڑ5tÚz'؝PSSGܾ:::sdu*:::-
-w`p{>z
-}@ XRRRDD27ullu33_:By<0Q׻Bn:硔%#sfY ¶@* 0SŀYYY!Y^^p[i(/G>_w{?"w|f8Pp*.--=eFF|5)8}}n^U_ٴ+CT$8EF,3Sm}JUv:ˈw7kkkO*))@ͩblٻ11cǎApw_ÎT;uzcBrAm0S!CCCEEE߻w d%x<8PONN^`w|YJd|SW{
-o];Ǥs"@B#""qmmmmKNN~&Z?\ޭoLyWdD}o6P(SSS`u7nW~s	[@*fngP'
-31[kO{)1)_cc|S*ǀqn	;;;cct-$0(QVV]UU_XXmjXXį;5ŜYt꭭[b722f U'@'''gg;n`t5=-1*ajrSY	(KʮGi3VA!Ɛ"9W~{{{CCC(\333W^=z!!![#NM@R[T[Bet]SK}7SfRphR[[[nnnTT[t钪*xdk	'
-
-rng}-e־	<n,A	!'bp[R3^}U̞!v!cj'l?I$T4P~~cǎ9sF^^>..j@e%o3PU~_s-ԬwuRC Jnoou"Ν~uee%d@kkkcSƾȜv;AXu<,kh)OK^Zhxi*ϕ>w\|NmYn|KHHHヸ\TTTRڂL&ח@$%%ϟ?ƍ%m؁M'v|WK;H
-Bpᦧh4iii666$''pC&&&bbbFPPGvvBGbMMwcVv:K^}m!6WVTY$5rW
- `LHقzzz8+3==^KK͛N:}4*P[wo~IT9yeeq>Uu19u-M֟bk֫l!_oblllΎCp'N
-
-ZXXDEEA`0Լ_|qÝ}
-N'!%z@C)e:c)ZCµ_ Uj߿5;{@[[[Aك~O?ǟ}oWnJx$۩_:xT	>*x]]]UUUEEEYYYiiill'Oܿɑ#G.^(--7pCOTzzzAݱTXyAavѣ8<#/'Bklenn.88. ___,"ᦦ&*TBW_~A߾ h));w(**B(SWWwݻwo߾-..~ƍ˗/={>ř3g 5-[f̀A333\VVVRSS;BZ166,Yn'>Lsа-w3L.S['HֆqPPPx/""鳬ƺ`+S]=]uM-WϞ;wSsN=	2teeeprr
-.44yyyգhfqqXWWںfgW:=:{EƖj	
-J-/Hw6`6oSRR?X
-
-	27w#=< 566A@;_:::666...!!!\}q,--UWWC_Yn'L4T?(8Kאewj":->^C:s7 'W, DPs}Jm)٧|Ͻ{~>xkVxxB?y>T*OC"***NP7e~Ρi"QUFU`FTŎUL:sU6C4 lh!>n.NN.8;9+&鲱	feҪ|t;:;㢦cfTܴBwxKaJpHT\bEy7lq;({BB?9(5$z
-J:=5Nt97~AȭJKKAzzz/+溝Ajm5mV&k_4(DZӱ׊:Ouq8?quymzfD9bneݎ544޽{c7)pTTϙ^&2V.VWEuƉ̴䡄<O6P#nG`lv&^TT422r[sJ}uiR7%}ώBkkkVA^U>0:\kQ2;tsyσi@nnn>=j*/p씀ULffPTWVV2e	-4&`:R2PO^-Km슛7s령] \'p##nGxQ333!!葑,f}Z7?z;<22*21z-,,TUU*++c֞YM+Ί'[Wj=/VL&QYvd~~>..w;[{o|o۷k/DC8]4&Cdnn.''/,{V}\TVNF(d7[҃SH\:c``ꊸ`ĭE9]YNGƸh	
-񴻾E@N@u5^Pv;,0$*0[p!~{9X>:i $T;Lb͡#<{A#:LX&t&Fdo-DI_Ƒ.iiiqppPPPeYV0!&,X5htnPYIZ]x:2]v璖&...))YYY=#=2nP:ώqPLD"[XX		۳h2(;֝Նfj}H&hUbhh₸tuu9s&&&fk1>w؊{kq.DYjT@@@LLuJoMoe5"ධgtzwyseMOuxLfTW3K%P(ηn݂\Y鋸#s_ß~Ձ?2лDI__xeeubۡ"`3pDV5JkQL)~ʇ~Vv4DnXf}b͐gܼ000<\OɑKKK&KKKx<G3R~pFR;WOk'7s<b}}GBBBYYk֥Hq;2VaJ1:V%g_>>#'wK0hex`	?w/||O>a38q˳eೳ\RPP@$8C<)ɍNN<zpqe~km!ɐ={wnne42a`vk.ٵ]/PsmWUte6$XѣJo3/#@D \ooowss;uꔚZ?{$/o}[$m/T5呞Z``˗KJJp8{V9dۡB./ O#_Vu/fiu.Y_i;+tɨq;S`I$&cϞq/~ػۙNww.
-aבWjzK>e#9{F?k ٚW^^~߁I>®ɍiɘD>x	>]]9EC15؟y8Ĥ$111iiؾ.4,f`Ϟ{^	=LqNm3dTQQٳgmll5S`gڻ:WtLύ=JQ?~ɨebr!ZAHUH0T*qO]UԱq;+smm{9YYټ<aLbw~?=Ĭxi$>۷O__E~ݗm'\ݍ/wXI
-X}Ncp"\$/.	n;qȜ77Ǉ{3gL(NA:H$`zzt~>wu}"B-?5wMj3@UFTTTkk+;angP+1fZ
--=G)^o^5Y&}:_/}0댴4`r2__._#9	)YةNAABuvvPkč\C
-
-2lt%+DsssS褥---qp6Ag2CB"c!v79sZIƨ(E)AGCgg3jʟL(NA(
-wݾ}[HH.9Ҭ/㚓w4}O7߸1	bBBBnݺ9pVU:0$|斵C|( Mt4>j+}XX[4Cgv Nlt9yr||~||Oob>',q;{ /,,tuu%&&
-WWW3[bt:q:3DUEDQΝ._tIVV6((/`D8vƓ$BwKDxbImI7ǏgV$X)ŏ-O܀9'34|v'nS0DaaSQQI3艾ڔPG[W<Gh-Z,ZZZ|||@gcc=r[,_qN&,a]*j=[EX+yv!ۄinkuqqckx	e}	F x2D!d/qӃ^n6ֶvf枱	wwuu188Y7iSDL]jqt.Bkh*%o70-
-Lq3Οg0g;q;G A>44Qı]]]d2ykQ?}|w~9U7o@|t1UUՄnmK28vyu>]XfE#aF	x਎z𴮜T|5yLv{w7C[߻/a1S@333zzzrrr[DKTGao^{t81yUUdTTT㫫'''!Oaۅn(A*|"S؆u}TC]e
-
-HbOd3I
-
-_~wo706ftĂDBGGıpijjTTTxcimqW{ww`o]Qd[dllltuujkkggg	wZ}}8w#eeʒƎL*apAx{G	)[XZZ9~	Rssh,a-s	""" ئ)xummym5tJZ[NCQ=M!KKKX,{{{)))qqqCCD%NGvRMvvZ(*:&)G$LtJ:ie3Q;^`hb`3#pshn+e:3Ҝ&e@UP(*xTUUAw;,7T<?w> v
-#&&&++kmm]TTeus3S#sщy]:}_z8g0_aganB'\XL&}}ۻt,z0;ߺԵ. WVVhtCCCjj7\C W]]oQ8\n}> ˷YK4xfffpqAmn0υ{N]'fWHyqVXHGƄ&mgqB{ח}R[1Kޟ^SWZTcxcAݻ#h4bhimhld優Y{!nfVWWq8  UYY
-xӽ8sCVQ]_J92a t3::YWWWPPejj
-8   wuuMOO///ҟ=n߂Fg,?f>l	M|L@C.Ik4x#7V}H$|}}WGcd2k1-Dy{::+2O'X[[ VTT$%%A$ᱢD>>997]ͻW~":nI|[h?DلL&C +J<";;;$$0+D酅CI_nspy1AK s~wˤѭ,e#QzJ2QCH,v6}.@0[z7gg[^((TL, n	 fr333555Zmll-{u
-8yġ/75[z{GFFh4X,	-ccc rp8
-
-vrr{+))Aʠ	l%"""55FN3;;pT }\ᾆ\UvbM{2RiO>qX2wcpܬ
-_KfLynˠe{zzΉQS$ .(		[">𛯾vtww()|6W{zna0$tKKKCEQ:wh\v}}uf8;59OT3/b&0<6lllbfۓ
-Jz_VrL-dlVjYIl뵷DXN=v^
-3nvn67bs+k+>~Tmccc===mmm---uuu7DC˫hllZZZL;ݾ8[^܈UkoRttFr;><0FIư)⍷f^),ov6	L, n5:#)i|qa=99>ҩ.&%T\U]]VVVTTTPPI&?.ڦ&8d<Htp۟Fjθu_+iyq !8n_2'ENݰ[d0	Xk/5n+߻rMX«w]DW>
-hx蝂kRwWҊZAM+++H\__'ɯշ	OvzJ<h\<{ܾ`or禂^~f{25#ץr{,G{},O~#e~̎tU-txp`CHJEJ'fE377gi͡bJW?ے~2>Ms!m59<]@]ZDk+פzڊ\ \6v@G<qab>;ojqu7?a,vּnRO~zCAyѓK"F{ZJW!
-bR7n'L n^p;}muy|p9@cWBof>,_wrjJJ̅Kizϯ[+\-`ô̈w]M0g#=s+kߨԺ5$YvF{&#3P詣gRYB:<ֺ
->ۙ31UՍyBʃ3W
-#8b˲s}ݭ-̬BcʚF}[۟FZhu(.it:AY;*l8#eR6JB%yY^HOnmiqq[ܺ%""|鲶G!msngl9C*70	I!SiəYu888X}{jmqY[)a\V__gi`iB;BVٜ.nhutsV[:YV[Bq,uV{;7#|4-LOL.FWpU!n5.bJtt$~Sܲ^ nڲ
-?l	,w4b#=mʲb"B{_1Ӆ1x팍¯'QAO@(H_o슲g'%n#wi?ߗ(eOD~prr266F܎CWZʃ./)>*g<E1x+IFb}tGW(?v4\c /%"tFVYҵxzK,Qx혉ҚƑBT|Y:}lddXГwUNDnF^ 20u[=>I~RqKN[@܎stV?ŁWOߗ|񲒾ơ2Z^$Ni.b&WVвt35r1/f=2=O"nG+]uܒ-p}uE9Ƀ$BiۂN氓usm5/a8].nq;o1ΊS5PWp>'ޑ~QR<߾=xOf[
-2C\SʰK.j``W3"'!pC%bʆU.;ܾFݵˀvgڛ8?z^-[0Ćv?M__q;*K*JNkhhaf]e&~]vbQqnvb1n[\A-b#
-𬈈MBBR
-k{CmXO#W/^&g
-\FN)-b#Fg~w93+g05P;pNҿ}{ nxxx"nG/}aʘkswO%,[[Grt<]vނ-6Uo-NZGjX q@ܾA܎;[JrO}<$*({eQ=dEm}
-䎎f&epL>ۢtI.4"!(=>:7'=;-XZZR6v΂aa7a㣩	n'~QQӧOWWWv'Oܷo&8x
-endstream
-endobj
-7 0 obj
-   119380
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000120069 00000 n 
-0000000151 00000 n 
-0000000015 00000 n 
-0000000130 00000 n 
-0000000451 00000 n 
-0000000251 00000 n 
-0000120044 00000 n 
-0000120134 00000 n 
-0000120261 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-120313
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/Wireless.png ns-3.20/src/netanim/doc/figures/Wireless.png
--- ns-3.19/src/netanim/doc/figures/Wireless.png	2014-06-17 10:34:00.542635859 -0700
+++ ns-3.20/src/netanim/doc/figures/Wireless.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,501 +0,0 @@
-PNG
-
-   IHDR       DH   bKGD       IDATxy\[}т@ @ ;clLlvIfiՙ3<7gfδnIM$8b;b6w&!6vq'nKՂ}=#?=s ht !	>pV^@`O8NǳK^. f}@oE zblllvӉB0̽x<Eh4g    @ @xoB d2JP(4@ `0{fl6  t%}  ,`hT {ZBYֽ
-F{D"=]t.AP,{/QWUvvv~.q\n{O^B5އ4mOhKP(b{B=]B T.`0L&s~ C\.H5 h4H$HO!Ci.R.qq#  Л>t:{*P(L&p8:b?YL&%rD"B|853ϤIX,2=/5D6+W
-`0444b:L&H{.5 B50LO1DEEx<fL&F~D"qp/xwnwfZfd2L (pP4dRpo"4 '8@ JÜA,~JX,VN'J%ɱL&3::s\^b
-叢]cXbq8emmxĄ>%m<hpF؀r!.....N$D">beZ'H@P  `Z766֠222r%IRRT*k.!H RvFY^^ކTD"D"<L&C&ʂĽhbv捍VfVD*FGG#hpL=Ax|P2]i4<bbcc\P(r{	1h4JP(gP`0L&lD p89# "%nnnΪjՊ`dr||\.OLL>al6;--phZZ`FGG$IjjD"a2K! Y\\h4vpRrDb^	JMIIILLٙ{ʊH$JNNV(QҊqG
-Nsmmmyyy~~^xh;A8Ñd"(
-zFؐJfY$rG
-.j,//r@K¿8L&ddd4GFFRSSy<JE4w ArꙙVkXhtvvvQQQ|||)h4:>>>>>~{{{ttwyy`0,--)
-Ju H '^wmmmvvvjjj}}Jddd@|]p8jzppݻiiiRa Df/͑dR)rX,wajtCRt:\XXX]]2QQQȹVxA"w1͓333FRGGGۻȂf+ᶶ6Np8222b1J}v"D1???555>>%(JqqqFFFGGGOOϭ[FRLIIA"#?  AFT*rP(D"1rH455511$	r_DD'==LRj4==m
-
-v}yyy||L&WWWu =$O?=<<266rvvv
-Ca ⎰FݻwjuIIIyyT*S@044tM^o0E"QQCpqGB|>^Νi  jkkR)a?x<>66xZ__IHH@J"HZr׻XlvvvCC_щ'A}}=hmmUh4())	I##vwwZmcccnnǕJez`)++KIIiiitΎVTH1=Dݱ6Z}̙p;jkk]vUPUUn#y@ZCCC6J ۯWVVp8vww9^c_$rG<f3?@ 8qbݼyBD"0F#  l6믿ϝ;w̙p;RQQK/r  v
-!A"w?dtRVV֡CJ?a#####.]:qT*EJ*#@ `2lJn{jjիRB#i
- h4_rE&?#Byg233[[[ZS#MMMc=VWWD4'HLL|L&SCCCnnnBD;h4MMMcccuuu~FLfqq^yf (((S
-"; L!@H27P(O?ljjp8D,HBl6[kk[T*??he>z^xܟ矯{7t:]ADh4677Ǐ?FNlNrn1D"Hd2BPTHtR(> LNNGsر*V,ۣ/  \-t:^o p\&h4z<ߧ  Fq8'D"EEE|}D"1w _Fee`y&dv
-!@aA{ΝN,/GrpE~ZzQ(pD"k}bA|O3@ A<O&\nbbbfffiii\\dD"Q(z
-rܹ@ /0?0"#~7M||??Ex6f}}}ff`0n
-EѢ322d2D"INNH$t:{ADPBnSoݺǳXĒǏGr!ww/FSaI< V?zPn:czzZC]\\d2i4ɌbXQQQ$id2bXfΎt/^uH$2:{#Gx[nq8p;~q蘘㏱XӧU*U  mnn6d&%%%&&µ"x<nZ{{{].WTTV-))AP$=zTuvvr8?h+W\r孷R(vB@Ah4~ڵkKKK 9rԩSl6J  ɬE^WV_rwyD"Qiis犊Vx_wNJKKB$CD 666^y	Voֶvcbbx<6-F(f{ɓ.kffڵk]]]oŅ=\JJJ(=KP(o|?~0̈z,C%Hpax墢pr8jzhhdffJRLVRRQUd29.....B)
-.;99j5MKKVjjjFFFfff70;::}#BAt^|!ΘLW޹s  DrنfO<yI߃iiiuuu\.FAQX8y$կ~^]].O?Dw/Bee%';;;F~gY,VO~AÇ
-
-vvv>ׯ˿˛o3<yG  <cd29 D|:;;o޼PTTc6O>imm]\\ ੧JOOOJJRTQ}X,`0  9s&++k~~߾u֡CN8ߘLf^^ޓO>9>>NN>7?^/9666,611122h4N>-ɰXljX|~GG˗JKK|~]Bӿrss?|FQYYYZZQ~r7YXXO<ٳg9N XSN:uw߽pB[[ۋ/裏h7)Cч~o!HBAHt:`yyyuuuar}Ş"o[RA@xHh*F˥R믿+\~̙3ΝKڵkNBN>T |ƍojk׮:삂:HtMr8\rz-V{رPfƨTjvvNkk+ǫ`2![!\ Fq:aӹG PUUU__EPX b0B9zhfffGGŋ/_lvRV(X-vqЀzHuvvr<mܹ;LNN*~`9tԩS|۷O:k`D"ы/_rpp0555!^䎭#` 
-#!ҥKiii555L&3dmꫯX,ĉ\.7b C&lP(ZP9Y-<TB޽[TT^$yж@fVVV:;;I&y!ewSSS---*>>ΰqdJQ
-e0B @(((tccc===ȟɹ?P涶6,Ewww.^ח}-;;b=`֊DϏ@9b♒9`	P}ЀDիO<D^^^huׯ_?:zcǔJe8 FFFJlnn{96
-ywX,&TF> hn߾]XX}pҥK.Xʊ^ZxB.lii'OD"1))p7GH@M/9sLZ o޼؈b>\UURf|or  /bCC@ EAF?,0 ^rebb"777%%%)@@׿kϟ'wwDDٿ8h4b}_OLLoV=OP`0"'p^B!q/rG`fffLfEEEz'?sNrr?_\\D"eff>󵵵?|>_Pp999Vva< iioorb8O ޽{ڵk
-ѣ%%%4-x+>P(\@P?CZZZ"U\p8<Z+..{7ovww'&&:uQC&t:Binnv:  TWWXobbbffFWW](::Z"_"Ug痖yJ(;\x\>z-WSS$KNVTTJ%?H 9l.**
-hfxVu)Da:TWWw1"o777oE㇇BX@"ĄVU*.333*6333ģ'p8\RRMMMW^pAp8OVOd2's? h6GGG=ϣ>P3//㈲D"0ŋ_N&+** h4`Xh4󩩩8"HZ@x>Œ*ɂ'}}}>RTgΜIOO[<Hpѥ~AW; 566nWA=H ݻwBannn
-A\]]pTbb#<D&`;VZZp8.^822w4$zFcЃeVullH$*JTUZ[[{zzBa]]]AA	%h4:--As+W`
-S.OLLxWA%H]RRP(rH$:qDYYaATb0fLf\\K@تzkiiI*" DZvtt󥥥i^uիWD3g!yT*=} H_җ8[ BQ( 77%Bs?`LMMi4ܘ ݺuj>|8;;dc/DR*O<qnw	hba-\Ѐl<htUUU0i߿zƍ@|driiieee hllƶ'b2+++w/Jq?0  t:srrbcc/NNNfgg_
-Huuu>XD"춶`7FH~:n``F)j0233>({D񪫫;833U222
-j]\\#Pq?8a
-%Jb1^`WW>rHFFK ԱMؗ H111GH~0L `tt֭[F'(((@zD,bܹsD"Ν;]]]ȌD`OA ʊϏֻﾫhjjj***Hgff>cx<>JJ\.wnnNk! ajjjxxXT
-76ZVP?~)|x|iiiQQpV}	W__Va7qtvww'&&4Maa!]vح[=*൏$8Nuuu^^I$Ree%Lt&	^333QQQIII
-noo<y^AE.9s&11@HIIq8mmmH {300fϞ=&zWWٳg322FDnooߺuk||vyyyh4`0   } DN j[[[љ|cccrk!HֶLF$'''].8,roߦR^>ozzG}vA
-)gOchO	0BP{1>22]SSlۼ<322R27ҁ ;w־;;;<|paa!Âv^z<@>ḩp8@$d29HNB\.?zŋ_{J,!    IDAT_Qlll~~>t)x"l^\\dXIII'=zԩSs7  .tt:m6n~    FcXbD"JR
-NX,*J"D"DP(q!;;{uuu||f'$$hb⑑0DN[\\ݻw/]$
-PB  =f3&l6lec  lZ'P`08L&36p!8d꾾4x_rb!~@=Bj瞃7l77nxWa$ u;;;[VѸe4!q|QQQl6blF"@b  x?tZVbXL&`t:fCF|>f\.bA#?577_WRRR`GR
-
-.\hF#ǃ2BPA=Qt:-B:qApggn[,%H $T*---x\.D"AY#E zbsssmmm``d21L&˥R)c0#5QQQ=؅l6Q(,hU(Y e"z}EE Nb7"\.hannN~pHTr8Pz%Ͷm2666nw:###CCC|>_.|*J "6GmoosNUUxqqDMMf"\.~"kñםNgLLRȐJd2RU.HbcccbbIdJP(lhh?cRe>`0r9G">orrR$)J^kVVV YxAtfViƆR-$::Z TWWF2Rrssr9˥鑹c0t:L&[]]vs=d#D#۫P(`4yMHtСT-ÅX,J$%%b@bB)Cp233E"Qeeԇ~bӣDbiii*D:t\fJh|7qd=  `ssSVVVFGGe=#%%%p@ p8&''Znlllrrr^^\.w((>>>>!!!**jrrrssΝ;KKKiiiJEZB":uАJKdL&xz>66`b!H AL)pfju{GB!	nh4.--LNN3gTVVF`[y@pرڑ{K줥D"9!<J(--8~8\y<^mmVňG,Hqꦦ&x+W>SL&.  ۭhZZZ~\&Cp8\VVVrr\ss믿T*yt9Yx[ֵkתI$,:R~B@S{M&`Xpr nnnvvvPڬ,Jʂ5NZZZ]]]RRR;W*cccos=K	bZ^FΎRv_vF?~<&&&Bn{ffpTsΕeHTTO=Tyy9p;/^&
-k6Ᲊq&&&l6[uu5\ZիW~iXl].G}{qܗ_~^
-k	9v555v5
-*..Z6G`0@ #@ 022z:ӟ
-i @ss{`0^z饼oh4ڙ3g
-͛7?ܹsb8~P(Tyy+M:f4|>82A"|>D"RpE+++G-**>Y__o$;V]]-#$CLfqqq}}}NNһ{H+**zzzF#\f
-zpD$r^okkklllee%\6u:XTTѣGFmlltuu]|9!!^xP-~wttP(  ^#HJJJN<	M\\^^l@ ?FA0h4*"6>$r3NSd2R	W?C$$\^^>oO?|P`/b[[~p{p8=88לk&IfffzyArmV0-N`eG"[֘Uxqqq``r}+Wt:?_]]pOP(D"իo3<FxBHOO}}}pRNHHdXh^C_͇=3Z3t[>Aɹ큁d.͛7oZ,j>G  ]f0JKKO>cO`TWWׯ0bkjj|r`{MXڤFY7$2BөQLL_Y-'UZ̸ꊎ~ø]	 V~6??_WW)_|~=Q(EXvz)Jffٿ|֭ljZ_/@f޹}'orewS|˫b9gddB(offffK<H=	/O?tYYwO>$PԢ"\{X6 .\|wgw(rɟ=[53WYM$Nfff666D[,_񹹹?oܸA 
-
-
-H$Gѥ  MNNX,P	ٳgOEEjobdffNNN|zXlxƛCvTuA4x^~zlexc<`o?Ɋ┈>DGV<l{ 033,ش}ii+++T*Tvԧp8\zzK/D ܹǫApjj<!Ș}6,rZ҄q/2yK뺮{fmpx~,O!"n? NJU---2LR8yOX,㩧:vTv{]*>s٢Pd2Ϝ9;ܼyDB
-We	xl歭-߃OSYFP(з:޿ޜ5w^V|w,~KybBH$r;6X0<<?--.{b}}G?=|piii'N(,,pub2555333===F齽ڏ'j<yg0T urM\~fFTg|ܩVa-Z>W8vPU#9Ҳ.//CcR۾ں^___TTLrSBFF  ---d29===>T<66&'_wwwGFF8	x,Kw^^EѸ"Ƈ	dOrwl1*Ha	S>r8/+;MI%0=x˗/;MMM0,=¼^o[[۝;wJKK>,B   O  H$fdd<Sp+v9ݍ`pERLሄ^:`du;=vV?'Ï^^:=^
-E'Qdщ4/'_ǳRbؼUna|	D   z^h4X2~sss555amtROOH$:qD$eAnoooUb	Ng!Huuu?B	F744014KH$H$[+kWFH͐fdo%	Q(A&oVP(4"	X~3ha1#͈cffj2k~ݻR4===WX\__/Bgwݫz~cc`0fzh4Ct:d蘘Pސh4J-//lW^,(9355{<eO\.766ڵk'N^e,iGs3_ Ϸb0\h V$dX	3fU\qcnnСCd|>_kkL&}KBiiifffhu:fl6Fh6-ju8.P(X,^9NG$T*`(6A(;ߕ3&&&/_xhML~[_ğ癙#թ;Có:eq"6ٓ&Z5dj*+3lA~ܢߡY0rGu {pzԩSdNg[[۹sN>k{bkknAAABoݮVFGGxX,˅B!aXd2^FGP cۭVBKKyyyYYYP %%F"H!\MMMZ]&''jA$2mA ~,}7~Q+8w,[+ط?YK7'syĸ1Q%N`ljc.?T"ary^"xhP($pW{{{ouL ꚛ"HR:t(**
-j?KѨT*L&
-wxvwwfd2?_(++v˸׿DA]xLTfjQOl6vtx8|?kscﴜǿqXO>LMvr,BhRɗ>ְ1YlʇloՎJu)O$r:nffF$"KKKW\IHH}JSS 4'"'&&dxPd2q83|5G$i4  5+++>ohhHV+JL$tii%ģn;J{JXٞlݴ<gp㒓ʴ68u6)5H'@Lw<E1dI(Zdw j&&&kjj`	uor7o`0'Oxk  xʊ\.Q(Bdp4be(
-łZṹ*Jl6,?N={MJJ SXXZ.++ۧ5/^׳2d%Ȝ-!м	5uA[6Vm8
-&Dg&FPDq5wi0nwqqq(rݼydT b4/_ى?4a2Û8Fq8TYY0::ח|`{TTTaal}/11%,X,͎OMM Juv8Ǻvqs,BcpS&k2>32,?Q]Z>yzԗ+7?i.*
-BaIrsA2ad2hDm}'cbb`qv'''!v$)+++!!!%%%66JU@bTjtt@ KKK[[[ovRRRiiiFFK'%%tQmB|Vr< 7-n$Ir.:Nn+LA(T
-ShҚT}TDо8v睉6--ͥ< "!eyydRN0=={PXXXhoox*
-ݹۭRrrr$	F]/F	@ |>_*NOO...z<mJtJǣ:  Fۧ"+ˤ;v	EI*gK=zQ(BW2ŇkJ+
-4a^96PMZ,H~$rKKKL&A׫j}>BYn7!J5nfggϟ?p8}Ѹ8>
-8*r'NˋQ|~uuX\\LtŁKҸ}6(MKKW*+V\gj2[P8
-#?2NK8DNG{lkc_:
-WmةE, RbPN@ڵkF1999zzzVVVW𮻼600 $	Ho4p8t:trd]]CQ0Lttt}}}{{o}FПTb:D$Z[[
->e\.혘 VVH⪗'7uDǒQ<7R*y啼y::v$!H/vcp8d=8N*6662BX| :22Fm?00Qp</`DX,hQQQfccq}}Hh4kkkccc999!x& @Ti.klD"z=Áڢ'ŻNXv׮NںF
-%06,˲|'UJr9x
-s[8,Dx<9Y,Z-Hrrror:;;L&dpXGGV
-GDp\.7--^Rl> WsG.r;::,6?@ -xaaaaScccҴZCӾ27tމMkEsPb0CQ{}W!;3ѡP(<$q^7]^6:P3,/Kbn&, {Hq8@"Ӕt
-%!!!G(!@///Yvt:=???777>>>dUDdPG{d2UVVµT*F&'')J:c0h@񚛛brbqkkkaaߟ^yyr]ңEոU/6'̄!e<gܔP^s1 &"Ɋ/>{OHEpODCjzxokk8%%:mmmb833K#ӅBa0"rssLfwwΑ#GBdBQTTros99'SܩT*Fh4c=mC^rthq`q8ӷ
-Z@ƥݴdӽ]#r@G@(a		("&Xq:Îb^πP+  544U~hvv6\kfsGG(L.++HQ(p8iii"Hш    IDAT455---2G4&&tj4|@%wvvbRX,vss>33@PY'EUPqԑ*E#v?AӻC%E~?+*I'RQ(4 e"`ggn|&)>>dhhJbpUUU~{7h̚>?>>٩/D"199999|  +Hbccm6>R(L׶;7hmv4I**˳bP^zfV%3j݊Ώ;gќ@)P4pܽN)\:X,ŒP(Mq
-522Fl6]z5!!<333x,].|L&S(`p4@htUUUBB>*dLt3"H:nxx1Hъ^<467j=juxI*-rh?\_}aSO;gjsjOR):n"';>HS`ɹh[IIlrrreeá	ۗ766x<^AA퍍-//W*{^N-Ύhs4M"u&
-d
-&q8\bb"4dff&>|x+&!!A./..9r$i+<?>>Oq'HL/xf=:ٳe''7N(ł~ΌŷCy	)qWWSC}wrResa	xLg38C,+++n*gnwkk :?::b+++KNscccnnNl6PH  EGXLLLRRRbb"N o@ d2oZ5MOOgH,((x<###-S0T*zl6~V@P}  ^yۻb2f*i']O74u%*S2gd
-bJU"WXGUZH)ɬ>E	dR493#D܃bLl6b
-EG^U\\;== #G)CЉlZM&"HЅ6h4LmN7??raX			YYYiii$S0LJJ
-4p||`KTLWth&)
-WVVyVnd2y{{xݶSSUi~|e;@r
-M[dazzyme^n
-bMCF#]^R}PH^G=Dl6.WX,VR`j퍎NII>07n Td2i4FrB!4cL&l^X?Z  h4nmm杝i2
-T*̔IOOAB>*>>>))?|
-~L}[[[***dA}q'虅mv"%D+qۮܒyqMMQA~7ND%YGx&oRzv*%F v= \&''[2Pv
-g255UTT)󭭭N讬[,*
-JR.t<횒d2g\.ra{l,Nt:'''#XFɻ}}}T*5//o?rR}ZNHH8;ww|T7~{QH޻F^Wq&vw7K]gk'5666B`$@2i[~F|F;<||efY"""z0Oݴev#Zr!e90O(,7ݦk2j޹}GN\H 3}EH-gq_]8Lw{~~s]ccch2655uuu/rCj555T*xBR`0ƧIII			Zvff``eff&22rÆj-ĳXSYYFcXqqqhj;
-"22Y,>V.\ 7uHY6T67p-zpvlL69fwpB%5lB-Uu]z#9L7,zuXX,r<::z9I@&R[O!--myƾ f>77zN>m5MNNNIIzM㱱OMM秦.i .[ZZj6Ν;P(bqSH$=ŋ>L@$cppP,/'r	Z7$[j[CRbboڃL2MIg3`1)ykcԵ
-lSGR!*(+XS|U0K}@xRt{F9|$_&&&ݻNvZkkT*ݵkBXM w~~>&&&///###""bW*l^hΝ;_ZZZXX-J]nl裏vtFegg̘L^CBB⪪bbbIёe\.wdd47;  @`pSdEn
-V!@I܈]KMNy2BXbNq醘pk>Bs_u8n4%%l6[GGG^^t8QQQA	A$++kIkR<yRղX@<*,,lUɁMBhkk66-'''::zQoBvZޮRRRR^,i4ZLLLuu]VU^M&EEE;v숋[ΥbbbZmsc`dX $^U-JhhƎIP  R.3Y|̬D3S_ojðIHczz:77w$VHiӦ{L&S{{lZZڒ28OMM9rS*nڴ.//hBH$zhϞ=			gϞ=w\OOaNjjjqq1A/__Δ222ƥKs燄LNN\*&66!NX{7/\a
-Z>{|TPucuLLvz
-[[s-/x<Av+Q:::^^p%$ITUU566\]v%&&dÆqqq.\;...^2R***>T*DGGGGG􌎎r8Փm@$444::zjjjbbb9;QZfΞl:,rYC&TaɆlb &fD'E\.~eMՂP(,p]°4-$$d9>rOOOsss 8[<oΝ{MJJhf{h4Ju'%%MLL:tj." #####cll瓒fقb ***L&hpW 1d	W(W]UPYJf5qdͤ!\P*蔯-psڸv^h&6`0TWWGDD,GLbE:>ԩSb":(FFFٳ'##crrѣW^5T*]~= ###ATFEE掌,~fm 2.lc7v66644NI"$9s\'Ӥ#nԸ5!m9v=x_/%<,\~_m۶a333###{Z
-E^oGGǙ3gjkk_TT" =h}iAĆ8bv9ɽmmm/_			`0Je zʠ~ ey`f'CYK@aCyDrN"IICTq/'(;.7]e|s_]e楫jt:FϏ.&pBHHHEE"$I677CCCk֬9xJgEDD<xd|HK~zW__P	b\.7##ᔕqC $xe\<~Z..)=;6CTEb<2"* ޵:,G1ǧ,٧vZTFx
-ouXfU`2&&&rrrJqaaar|U"SSSeeeAOx~~vEj|GNNN?e A"""ð'O֚Ŝ+J®^T f^ bbb<O}}]$>` 꺉܊vܹe]ND?9XlluݶݱξQ,Hao5鴯XϤjIVafsbb2@Faa᪚΢bIKKhZZZj|CCCgΜNLL|GV^6'(.5-ݻwڵkF3g/&&7y4-!!A,vNĤ$~b!'Y;=֩s:-ӣ#A|c/^im[6槇g)c_`ӓ#3zN 9`źIه_Zƕː$8adª}zDd i|n724t˦M+=0444;;߿qE'&&N>}ɲgff7Bp>H$z饗a0Gr8$H
-eݺuaaaAMQPEG;֦&a2FM]Æk3kf/rCyu!\*  EqpN|;>6TOwoߢW9#>@ *S{W'v	DGCXxlXP(@$h)&֯]	ބ˗/)MMMeee=yK֬Yƽ#HZ8P "be\^ZZP?y@ HMMZ.Ѯ6diii7n\=hTTD"1NM/^T٨D*_3ILKUT)4sRs}E	QFJc&rqm%C&YlZ3gNa:*\Ĺ+A h\dqq3g`` < #f].IRINZ Wg'#'gUCc||\PzIYs566D p	z=>--`6Ѱo$'Êسgf|]ٟ"Jcc\GGGvvvY.3LNjVϾG22uС:-@nӌuV^m0Xyje$B))̋HK   eTYfuh\G,U*ʓFҲ+Ф^W+05
-(y3>=ëVii6`p:@qFFY霢P88F]50V`0"##cm.N355544;Ǐ3|pڵAzXor"H$C/ߴib&󫫫ϟ?Vޔdl6U VC]6d3g2ahD HqdӕKuw>xhG917Q60,
- H'I">=1ԭM7A P*|nK/k
-a8|*+j*(p8@*rKEA@$a|aN䀻'N@K88.#s5JHHZKnwvvT}`Ǉ^{5*w={7]or ÇB[jpgee:tɹ_*##C,{< TWWAE_,.]ll0O_z|٣}~>oˌd
-M3*g@'|NGxxhH|bL\Ty)b;Ji_^ &C녪*8v||%{ j^fBa``@So2s05 6 P`bt[8FDKp8tJZ?<<Z^^nݺ F;0	O>$Ihk>\9۷f8qb1A*:+xݾx!%񚸯7(}ғtm#
->ľ1<Q?CA2Z6<kߦ29LEX2,4Edr>/)48yV@KRDB$͠g]z==$BXq`|@
- Rx n̜={622r1^ڵktGX,05Et8 ?z+$lvIIIEEЅ#ɒqƑJ2""d2}ZQa 88	n3ik_{h6à ĊP|AnJlթ˭]uWk<.AomҲ
-w	n[ʁ cc+0~l6cffM&
- 0 ` 1 | p@]Gavv?Ќ4@[[Za4g	jwa2y, s 3 Z -V|d2|䞞ӧOU J	љ eXZv	~?>4:k!A%(³W`_$ug@
-S&(8V#=6 @iyzƌVlTuw\SsT
-zWx2$fVhoչ+P%6"IUwhR!qKvXp3 :a!(x[ܠNddddhh'HHHXH$u:'|rȷ9Nǃld4N  ~  ==,t*ᬬ\P(?.\زeKLLRWZZ|G}tñlZ/m'Z̹gb+Daba>bg4dΜ(M&n 4$kqZb>fi4ttty5t~?X+F߂$	.':?{e``vp +@)8'w+-jFk9yyFSXXX^^R8|>?00۫hN_uY\ >   65ڟb2eRiBBBjj*g0+U VKKK??^xd2srr{ｱ ę-FY̝@0kx*ʜll@bo&2M](PFn.S&v"?];pC3c\ Ĕ閖Яq;I0l VsG`0Xv=z bbb"<<<OJ6;a2 \wqM>\.'Jkz=	Qr3gdff޽{2 @霝p8---mmm333IrHc2    | 3j_cP(LIIt2,<<<,,L,Je-..o~S\\,PGD*ocxp6<<܄ߘ iok\HuD    IDATϛp``N46gcaHt27c# .&{gMbrEѫWVTT=;94jWȸpLe7 PĔ\g&	zJheyZ 2(ԩSZ$ɅG}dz,x<666v'OfhXF<I{McHʴkWGaasSSOWWSSSMMB)++ۼysVVp8X(7VVV^p!22h~Ǐ755.	Eѝ;w^z18  `(Ν훜6xZ  	  .+
-\j>y%g21ź.u4vM*RfWf,4:;QdW*(*ww@cXҀ` XN^@Phii+++[TIZ
-b͚5[vwCݻwE{[ցcǎuuul6@}D\.
-er܉-/dg''&M&<99yҥnJcǎ5k(eIII/~_466fff.
-6m2zR\}tw]eo $$TVi;; . HB9jPZ3t7t_3D'6 B#I#l6b8Vz/B h`0[||>$%Y.@h(0rHKN@Q4H׏łx͇aO;b1+[:Յ JZ!ĸ9NBB]: lٲey6>_TTqƛa@ 4P )	| nwDDDkkkkkkWW]vmFFƒN$I:^RRV*++Z*.^sΥRTPh0nR8NΒMMP_UU: )@5^
-JhpMFdfLk{BR,8āKꂏP(Z~^v^1
-LL^W*!?eX;鐐p @NΊ| IBPVui7~ RS!>~$FhT(A({<һ$h7O$%%-B4ǏnwIIɷQ))AJiipeX۶m۶m;so|$I|߽eee"h"99YӽAHRժ###t9}ӎi8v|z *C~D$)$Z;ni ;3s^dTu<+b^hBb/? ?tgDRR +k!W۷Νdz}aao,[AP,<~ EB[{[A}hW&-\Ԋpss39xr2gyW_MNN>tЯ~;PX=")b1<(J_߳gOSSӏ~C=gA֯_c۫wD*:33DH:44TWW/\h7^0 hTԶzLS2E@Q*?SӶo'JtN^[K[3_ȌL (
-,?8z}"#aA:a>offJTG8ͅ} ;{~=...??l:~Wt+^;Y<{ٳg^={vq<3\rH\iEP$D"7~ʕÇL|hUnطo*--]Z^^hfffbcc4JXXXՖ-[JF"s_k j 6  ([*8Eٴ8c)R~g83Y_Ar9JVclqR!)	Mџ+y,P( :fHOүe /
-Ѧi4$!!p`FHK[z~qW\IOO_Mɓ'wڵ~:==}ԩ#G8'xbw_X(02r9l}Y:n,;;;\Ҳnݺ>qCEFF.ոs\>?>>n4M	f*ãͽ}u L !@; Bbrxp۬ц$?HMI]R/B!Q4wi%Ɍt:i}mH PZ
-hdSOF8$x^fAFCI`($^?N(Zwtii5H89]n#4:$>$H@$IET:FA}>'H0Nohh_\h4644 "IP(|233V} 	r{H :ER q>(t:c۶9ٙ?ѳo?/ɂ,EDDeXw:Fd2FRLKKX6cĜ\A_x{\.@9/  O (mH&p#B .g}HFI$.Pb1"ƤPQ$0cN4v{t:C|&qtyp1t&yp7BT!IHa2Kqئ i}7_?r	Fo~Njg[۝B40GsU"!iԍ8u0/R06m
-ڸ8j=3}~ڏ~ǎMO|3zOylp:JUjYj1miz>u+-[VTqJ}.u ?ĉ~:###
-[\Y{Ygf%uLہf2휷S&/AB2	CzAc?~?66O=TWWWQQZ:;;3224Jhhݻzms?ֳ5v_@r"Pr4TcOO~}i;jhhymau<G\.Ɠ6l{0)Z6ӎBd׉U};jIdWͿqxC{|Cw1ep8li۲Bhn~7Ws9Q΍sc9brrbxd'|!aN ]x=6=hܭVАH$
-  7WZs'ߝzHpS=&vl6:$"NLJ@ģirh`VK *Eq/++[f\ZZ(t|ٳg<x:Eb5f`Nա1ZQ[qNT-(FCϮ4$dD믽ڷz*~,+777++K-`TUUU555K5"oP!kM3g D@D%YSvOט!2C fBǢd|.?}k4mh4Xψ uhBg4hfZkDHhp~M_^@d;IW7eޝ>{d`fMf;#JtPCNfn=\X<lU;߾5:{rK#/&B|Eя\DG&EЕSWGڧp!l6'&&"5;?^UwP 4OY*%.\u^Z-3Nr&C5Fʡlݧ*++<L__ᨨX8 ]]]ܼv$kpYAIƪ{?L !*਩5g^3\9%q%
-	lCCcpqB|'m:xkkkEEE/_zKJˣ(*J;OH\n'N?q50 @ӥRbvpL:WDRP,YA PG*ONL}'O=[N9"ARf*tF?~wg-NU
-D\hO-&{&:|0=6|hx9*2˗z3s9	R@NVb#,xFws$?%7܅@APPas6gT(8JgFGk c\?j/蛚A_ð쬬OH=k~Fjq%L*e֞:n8 ~<N5_C'h4W\~b28=;orw+R1|V?nR' 
-
-8	PSCSQ$F8i=̀az_|qS(fZ!277ʀ )^/XgG׻`?  <l.e}빱tFc	k㿪>{<n^{cQ}/N垌
-\ LB3z6`' ]䂹9J: rN\}aIE9Ip$m32*}V  FfbX@28]dh>a}> 
-!@XDB!Igq9|yi&'@l[fBdffrommݲe\*
-ߣ1G'@
- |6"&cChL&	I)mcQ؟XXm#""q 1$933z###322 jhh8tr05<<<99VqAP:/5ڜ%[
-Cc0,EgYyGzVY뷷K(Է.^;y_okk{{r>/PIԲ/\Y5]' @BQ$q½}J%(;.ڡw"y붬_ID&Ż[4Gp`rT;kX̭;yC&ĬCEQ444h4.}@#ݘkpfrHJ@h:   LJxlUkӲ&NE k>ӪRPƉٞ5V|~yo(bw9=9л[y{zzru0x<<=g8G.t>!0$=~bϦwqsP{jIbbbðM6-RsAA,r/^߼ysEE"Mf裏>|OtNE<~y\WW!P7 >a<Ooi&JޖF ..WNKKaKC?r,HHT__Ծ4cӯrO AH$\_\S(Ε>Ǣ*(U};7oN$)|7QWuO>?N>䍞5X}'  Hxx`*5XHݪ!ϧza1mIntq_p=NBީ_^gJ6w756"L>wgbpH)f@BBrD3p\
-喋HkrN?Rr!ļiUjnj<11A;Zfv۷pQ}׮][QQ`8}ǟy,$GCCٳg狋e2˥P(A|>u#֩_)ܬ;wl߱'ϥG?978!m*{5|d?O^|ŧ~Q\\<11:N im
-
-n/itFֱc/U D Z dlJBzgGZWXY.@fx$c|Vڳ6|o8
-  x?9êdtqbA$mjE
-lH!?f>GBSe1[ۥfj/|o4׿z'GC~궛A-X%tGyBVADttt
-* @,'8Y_YuKa  絎wUp[잶ZM 7B<V$%M$I.J
-':+W\ Z;o~m۶諸.[vCZ-x<f2t:=`PRSuR&< T|7xn)( oz[uѼ~;dtp& dff>>l\\JZjXVwvvJxDRT*Eh4p0y$O 4X 2pYѸ>;y/gһ  (zߘ`&>qbAɫoRqowF3,S˲<fW	6HPDb2ruL7Cѧ\TҿطP©D[f[B"AҚ]vӹ3^nگQ	LU+>cpDb8pVs###l6D	)+Ǐ'=Nο5yGzx;B	}rH>=~$4\.0`0TWWgeeKmmm=|@ غubkkk
-ElllfffZZӣPP_Y_(mM)m]C)q眞~_=4\lqRBuɢ" 
-˷oZYYC-kFDDdgg;v,11q*䅯i2AS\.]8`@"cĦgO92oݾ1ךN)kwM`5kbb94oآVȓ"nՏ]뭟FZ$Ĩ3l3B
-+nQ*#2!<Y;B78[MhoBgd,kylR74Ss`6_%>39hypzƴ]wa_lKKmjG_άxA'.Uɗy\+iSuOLro`~~~xx8/phlkk{'j}>o}ҥ}{wuNرcǺ|ɔŇ¨IG0L}8wg?^yZtM6[)T"& R|~ӟ={vKre2Y||/ˁ[nݟ'^qzav|YsF c k 4Jd0}}sH`20vfoaJ¾wzxm-όxu=\׭ϿqL56:&z(8$D v	X_D Tv|:tg{Xcl3{!+}v zs6U#.[}^PegX杷;1s$G>y'T8AW1~]קP(/sys `7N17x&jj>uhe vqBlnnL&`HKK[n;I?d    IDAT.]鉉9p8YUUe0K݈F}ާ \f
-3~U6>K{rlm.U\: (_\\|_KcccJeKKKjjVAF}wΞ/lriv} @AQT.NI3n~ xK>a`<~%o}\,/APLf[kk:</vu# @{y@Sf% TݭVJ_%3?NR ^<ORSݣ]^*ISeJC|OƝno	U(C2>ݨR;br){;G4Ά/J0~ܝagggl4a͏MӒ6ϝCP uG27lX:&hnn0,ʈwN^X````pppKȊa[oc-l;V__/Q!#;vvV,L"EHdFI$RVi}9BdX߫ֺ)zAx@ӝ9sfdd$99y9Htޞ8#44EV3Be%\]])?	  y	"^C2rE[]6[4K<ZXQ'*"MmπJAT0-O8>u~[e
-@zS=zWXZvJ0576@) (jXBWҸ-#??Qoy9S$c6ⵙ(L/܆(Xȸ;B`>kJGZŬ}2 N^g%LL2 Dc?(iw׉|p8v{zzgw^U%뺮{הp  #n$P
-iff|KZ2ɧ
-nN5RLĖF`0H҅-iGGGKKݻTp8'&&}Ѳ;ydGGGDDľ}x<^P0E)]"$/uOWs$)}>/JEgmC5MczatRRbbRJS+sj'nJaÆ'OJқZA-cǎCQ4&&ri4OD	CUtw  "F0&)!Jя"͜b)֫'>쫻us$L+tm7i+o8)N vR \ZL#M1C^)r0{x < &pmmPo	ٖĢS  1GA)(z٪ʉiHoz>z+[L4p5=cAogݙ~~$u LB"Qv凅Ka
-/D? Ϸn|(걞#Irk| 0lB!dhTpYln3cI冊, Ʀ[.aX,6lX8300'%%-L+Z555ϟ|'nhq׋ahhhX,^B
-hxkM} O=wLWD\jH|{qĘr#x`t<4"4vy|O5kN?_PPxNPbbbh4j0N1%Ajucc# ;A\
-A  k | &YSwd܉U?}*9+th95izƷ~tu(I@Ag{(
-,:ɥcg{s37& *Mt
-UȔ /1L{^ @hHZA,]c1vÚ^b۾c  LX$3t Z 2  hlqDLXJy\)tNx~RefZ<
- @7&'P A95}0|EX;|h3eA' av:a?fN?C"U)@p+p"E(PBG,N~wF('3
-lfXKw^jwww	G=OO? }l6WWW۷o߰aÝccc~aCC^w8^Jh4
-B%I45m ykJTl1o懲0/
-@Lɣu}SgNڶyc(U[H$JKKcٕRtgJJJnTDQ4::СCzݻz>UD $t$'tZ8A>k˘}sT(6>Ya s1@(LiX8,~cB;TqYY	
-
- ~y1	2<y֣?g(%F}=X*CB`z4UVyy+_g7fQC Jx:nx.E"^=
-[[oJC+\UrD9	nDNA  EC#cŀPY(@?%J	 *rgI#b9n7al6:'N+U=dSy2eXP)("xRE^-&%R03!!!wظh4ZDDĆTUަm۶- CdssK]zcttd&''r&`0th0MGh_Wffەa1 @$ FIps^rJܹc4~HH޽{+++kjjdSRR9r'wAb1tZCCWֶ&h7 =y
-^ҙڵgｃ{ƾ39	 f3`z_=oloʥus앦,˚< hf A 	4B7:C6FD{'/LاFo]+hB3l,8A$rLdgW7* cy'S(,){Ji:;6U$P(	NoyN BgkO=dT;;qNFi~8()&69T#ȔFPZIV5L)R]0PÖA ŜNgsssQih4gb9zhN_tidd~ׯP}8Qzݻ(Z;vڵE0%$| yOMM8qq426 %ȑ#CCCk_{OP<̅ު*QϞ=2L}w}(WA`#2ȭ=8wh%ǿ>>U|qa!j	9/
->Y0"q0|.yi8qN0
-lE8Q°S o7ʗ$MOOt
-b#<jiiɉQ`BȜF۷755eŋGFF򚚚*|w<.**JQ,,,|'ꩧ"FYRcWWW xo~ȑ#jJEY^ZZjp/**ڿK,.f۷o#ΔDٲ[.\_>aQ|h˃#O_Z;335)>^}ս54֭[sssnÿ?+Iffft:]6A+!
-1ظX,t:;::rRH`0h0,Rxx	 8zJ5Hg?\.߾}{]]]r7xm߾}۶meee*
-ԑiѨyjeppʕ+yرI(l8u??~-,,\ ]]](駟^lhhsNMMM
-}⩓sO~%wI˨ ]P?~ͅv?q/o1Tmoj~vj\ka555g-4J価$BƵ!,9%$իZ6C`0xqVә 
-ݽ{h޽iߗѱΎnqxvvkkk3r@dYY`(Jzan{hhҥKOA1Lݽ[n_ȑ#L(KS'.]YrAP!(/68|v
-IJ 2%U{+ժ;W*UyXՖ[J,/ן>}:S@^DZlZ{rrrfff۶m!B(5]veH	v_RmZ \)nwwwlmCś7o?y'_|EͶꊵ8zJe4Z;[,={$JPXִ0L]]ݕ+W~_e9w"0 }pV O`+~Qjjx9 H|[YUi۾Cl4یFTN Yð"\t:Ҏ(htSrP|Qb2l177FV"\`0833xW^lٓя~TUUc$zӧۗruƍ^{֭[//\YYj>(^?Jl6:aJ{~~>Gkh4a" k?_ѱp0Tp	  2ٟ`0 I  H&nPt{s2땀4ht-HBֱWH 7%5AH$2^7
-%d G>,:ŒeىP(}mIǯ_~СMOOܹ:Y!;~|JKKKwfYzSO=%Ifuuu]r%fsKKJz,fYDWVy٫W'.^xmt,XM| 
-@gj;G`Lت3h@2bQSSaX X%8.b,`P$Z@M}M!ki'KeY/s:ᩩ.kvv:󃃃J|`hh'x"<{788ꫯԬ{8p |ǣp0M8$	X֦,P$	_k7>A  Q9CVU5i.*s)̎j?=O *++%I Ijoy7}My>e)fL&r_\\ω#tkkk}ǎ˜H=K#"v`Z/^DZo~7*IPf6	<ϧ%d_~sll'?#)d(??`0\p!m<Rq+W<z  3g/]ş + [eXm:ã_i>"<خ)?-ㅅ<okZN\.kl"362k Hd;J"7UfvvptYKKKַSSSV؏D"?,K{{{&7>>oo<JʜdA9#BP444f7??駟wX,	Ne]vر7*V588
-2χ7_3x(--r!T%biɝ҈FzzXcƔꟃ,%z]fs8EqՒB0AԹ֮Eqvv6]Oٹ={&B,C<W\, 7RY__v̖-[|駡Ph޽߸qcnnnjjj||e$	0 4MIIIyyf---M{H07n8u`صkl6oٲ%ʂf+++wI	J`p,tw/]  (&]-;u~F+*+%sjFoET%Ҭba"*g@7@ԦZfIk"AѸj(v㸜гt9eP~[8qٿﯮN=VUU'8.]joookk[iFH駟:NtiZ.$)":x<;w IGGJ=!ᥗ^|%??̙3Zvy6vLvD&>ݾ;˺ ! $|boON]w͟E.e.PMy]ťڬy⥋o9:;tjJ=aFƑ;
-v8UUU3~rNt:7%@{^^ުQ T>{L&)'="*j6/gMNN8p -n{``رcɅFFFܹ#^|qR.]OhSSS]]hDF?D,FH$255uʕw}Gyn*j'N8~׿udjkkWWWа\'#2B!8u|`K8$ D 0c,	Nwugo-VB~\eiohT_"yJ߹(b(0˲wZ0V4n(6}M@QNL&5IpWչFb1B{ƍO(^z$͢A^4(W=rHuuux<'`cccAAAKKj0ѳDQE._Nq{h.))|v}ft:ݞe-t	Μ
-ܼ\ŞP ,jꓖn+[Kͥ*u֪z[񫿻s1*^]Bb=ȴVZVTWSt:2[d2Y,]MU&i4˵IM}}I\-T$ǃo  
-YnW:;vd#BUUUZeݻw޽[XXГ<Ν>^:+uO>$:tfgzt:Zmookא.:EaXWWW__˗Ϟ={A$jڃiͳfa豱ႂ*uΝ3g`tTI  ~$hLZ~B86XMLu{
-  -<ɳB>7A-[Μo5g   *8i6K&q7==)p8A&`Sr_#P5Wׂ$I@ ???s~mzp%:?>eAJUQQVsz*m$9~8󍍍o	B~a<?p?Mf$fsaa?3e	Ia]vͽMMMH'cxxxzz:#
-
-lz8sm石qJ?)_%?MO4ɱ򧽸: #:J8,jadYf̌dZwr0r=һ4Q}&2`Sr_ *!IR4l(]HARS ;vX0ٰq(Ν;ǧprՎP(tԩ={9rd-,~'1M=ܞ={rbZm>gϢONƾ߼yh4"UV%-\TTVMB??!I `(za    IDATqup^c%=nK'߼phF._~xm   ˎjz<ɜ
-ddk!w$jfzfӚW-!3P(P( E+=Ivљ ///9kiiYL&3h7Hܺuk[d.\8qD8~ꩧۗ+#{rpۛ\ҺX.0LNXn>qbMO  B :nǑ}75rZ*ғ-ܼr惏>>txȾ  eS  X,EMOO;rBqZ8gUc3Bu֢A199gP(
-SZZZ2Li# n$jMۓɔ;899y̙!K'O.,,\5hڝ;w:tO?}رc###z:Bݝe.\XsGt:c
-@	a0PTS[kl)IHɶ,*2Kqf[
-|PKuZF㘔\9l6$9;;:-pGV(U0CqܺlI$5!Anh4AP(9cZ,KJ~ ,,,L-8R%T\;rxx{Onжm^y,@Ç?󅅅FCѨJ|XQQa6Q|<cy3|0zv`@`pk/m<,RQh<og9oמGڿ
-jk\9`0P (eZ|]侙rݱs_ r_K e4`PdPE6|Ai&m6[݂㸅˲UUU)N(?<rHyyyZv߾}XO>10bTTT777ý{Ņn+1͟=}ml߯c 5wm6W/|^j&Ǧ9iɫJڶ_854>7DfYa<LR7gU8NQE!CII?r 6(o96%5BErPoP(|N:ǣVS'CN,133s<JNgggnz*avJ׎={uww_v-[waQu@VVero~}Q
- (.moǫLJ[u-
-Z[u{gUUY%7utd0rMJ&GNC94$I$rVba"M}Ik~\jlD0 h4+]bd933sܹ屠`h4&'C)-wW<r=[Cyy._Smkkz/vI &Aկ<~Ecw8Ԩ	rd.cFclK.$#iW3ሐ״|6)jZ5z<@ RL& cccFr'B&---ܑaئ}ݱiP]IܺB 9E>Rry~bb W522RZZ\rx<Ν.))I^.ݻ7eL\.2x~؈/<hXpW7::oɓӧg\\Z %P7ZI"5F=0N UiRYRmu h8.
-=$xN
-teuWST*}>_ 04%6%¦}Ma-~$IT*7[|~JPCۍ^<=O$)))Y.b$K$IJs̙ڢj=rȕ+Wm۶%KDgVe{zΞE 3@!3iohW*F-͆3tܞڞ:FV2L&Kl2 ϷR!'^rR(K<a}O4Mk4@ j*ahJl1;6 *IV]uj̈D"EpXdH VS(D!Jh4A/$IZDΞ=˲lWWm a؞={FGG{{{Ng+NEŎϣOgY Ét;P*ѶJR82\Roz}΄^?=Q`$I;}:P+A&iڍܑm(Ze y~Sr leVx<T*Z0p}᠀64Mg-..ᢢ/x&aYy>Ž]111a4wؑs%Iy"q|`
-
-
-|>ߵkB{1M<ָ\]+Ǘ@ƭÑ+k̠ӓWT>5;1Q18"HIFobh:%L&+..8n%-@ә{qn2bت5aS-ؔ׊X,ŔJd2m+\rthTVgy^alٲ`0&6`0xҥW_}5EF_^\\֦yn$q8^
-s/((8jkk?ZJݻ\T3 ' n4TɘFVV5bq>
-}h}yO6h27G P((7NA(T/0@iZTfSb0W0c6gffVM16}I"wBjrGyh5ͺU@d2Y-g&D
-"f~F_n1|~Pk 0):h4zŖ=xZɹ9׋jZZZZ\\Ȣ۷on_dA8sax< 0 afYq& 'Cq|Lq[A6~rT	$fQ( 
-FD"iZPlZi855Đ4M#&6%",rGYwo^Be0MLL,a&Pxmۆ=vպݾ}ѣZFCCC7o޴$Ia .pV'355{vxFF ]uZwE1אN:>nQ}`&Mӱh\&8 
-`\^^^>44J2͑H$)ErdPtkՍs8l,˲r|2,z<Y	<|>R's;660Lt:yO/--T*Phvv=%86vdz$Frykk+7ou,޽;s*)NT/.r##|+W,ctvRY˾.@7v*:c`a^HIEQFqii);2>GQTD0s_i:;#}-䎦&o6%8ee2٪e٥%T/i}$U k p8Y{@ xH$cSSSW^---'|²]:::4\.'Bm۶ݹsĉ*5-0=W"oY΀l/:=TV~7E ˋɐ=wH*,֖+|G
-|AEcXLMͻ*PMKMr_=XEi1V-f}k)  @@.#B=x<,upx%&
-h4ѽp8<77/$(A3綜rJ<ߺu={RBQsuwwT>˂nAw7\H;no	jʑ;=~Ec%i)3Z:%
-JuOjB&I<!"w۝A-"gϧ88D]rG rq\M?ufZ$wou-,v7BrE1
-"9ݘx04YVRx<Ntr饹9ٜ2N#CH$244׷u#GLVwuu:thvvvpppii	}.I
-8<	o	g⽻0haxUx%N:eՇvu6|_^[&% h}Q	 hU
-x<G2 aA(4'{NA@^kfDaSr_=q^t]H$s
-B\YF1=9I
-;s/IRKKKH?I{,3>55	CCcc @rؽvOf4nT56~T*161_"HYNZm(ʆg`Ue6qbkqDjM}ݱs_+Փ\]~׷o(a՚?Z%Kr_0K&S(鑖>fS
-a={g?vjKKW8:w;qzzဇc*UxзCe%80QRRʱl0*X˛;tĊlB4feTdˋF0(Q300j:"%w kqdDLA$;Mk!`0$wL}$Ip  M^^^6'aX`0(fd%r${<^ٙeΙR7G.==BTRGl}vo5hjjd@oKv/:($-Af,M|,IHZU*͞V=$IbYvjQ7}.If'm'RhMDiR%Ee)^r!$ܑ|6DQt:(u_ZZ0,%E"vjqEݻ: 'H0i%	8LP(;9)F0`BMLNA`&ķ$I-,,!yUwI{9#,e[䘟aiZ.K qT/i{WlA/ּse$	aXZt:JXA$I<ϧ;ǁ~?HtB䞽
-PMȕ(SSSp8mz^۝pLOO/;FXsYֺb1XZhht:ШnKzz*vJz*+a^xy(K.; p,v/3Vtf)SId&]Hr_}*Zn7,(ק5VCW9|>p4ؘD)XWrwΜ@ **lH%R%I!:>DSSp"(<Ji9D&h"L$ҶM&S0???33=OssJOdYѣq`vw5yp<9,d;a~섺:ɊCCs"9yOH!mJ~?B
-8@s_=/-͛Be%ĔH - hm.P}%@ z{烚pA.ZX)_$}$wQΜރ+W@ah8JϩeTܕ &ZT4q< ˵PYYBmv=g,|>ϗjZ8އ>I)/wǌ#j~翂!0t:(/6x	ص!	D"(T넗Iг{Y(K-9AuhhdUM{*p?Ԁ33gӷ INwށ Iرa+zX?r߆ޟA!<
-\Z N?+Wϙ3qP/検I}$Ib6f9Ssv
-P)|>lHn$^E8~_㾈?XǱX1`2[`G׾V+$=s%?}v@ =g2M%߲z7߄7I@t9|81;͗(O~  N$J/q]W]9pॗԅkqtIC!x]s!r<#IqnAYJK)IriYp8DgGaQSSJ=cPWҟ<wm`<\S&T*+h{9 (Y3LɛJ1y>
-eɀ啊1E+/\ x0ix˃u*ˎy۷yZa6T9.I LL<90C]lL_/мD	n|==?tQ,06Fc
-.rN;J6_E/q'o(ly/,DXr?ԼLCiu2T\!/O(/wĥÇ+NJe'Kh_LK9LA*5(ynHGF`r!cU&wQI|Rjsܺ7n@WOr$pLU8
-I2@r-ia"H$2<0BKKө{	Y	XHBHz,|m۶=P9(LAhm]'
-m ы'-c%>ƲA*Gg\0W5= ("|W`r~Dk7~_p"l۶ASaGׯ:<.\##FQ 󰴔ferN|e3[216~(tů PBʑp\h
-?r1˩<ǲf/ҀUǲ; "8LMכCk.|IiE"03ӊ	*{< fgK@B0!7C T@bxNy>CM/mk),$/E}!! _"Mz9QرzeX,+,zz
-3.7eiWj?3dkYR`q1Up-pUYaHv Ƒ;zH+M AXG@	~:
-S+u`W:4%II #.8*R|sܙWR|W5I(j%+'kt)- o0IahR3&[rAJ^f
-Cǅ6/Rǣ&w@!E);/b$"д,9e%xxA=dP+-G⤒U"9;tqD(8d\PP JeZZ87hR1r頶bHL<0#I2[2d}rj^&I%/\ AVD$'2(Tˀ
-}aRK p/pJaVtMYS(--)#r>8 [4arbCI=PJeKK~a5rW
-*X,i2YjHźb$w	R|ڠtZikCqBSSzqIҜQ`F; $oJzgqK)懜ggOD;JFZ,))y@&X	6H
-[J}>rN(;Yv~!]Zm+V靕a?H9A@IIR=8/3zH/޾ѡ$la h4PQ6=
-I(Xק{J}U}H=r_  Z ˡ'IBI	TV#,Z&"Az ].De2:0Lr6EFrb1Q,S4BɖP6    IDATdlyyy$LXUTY)S҃CHa|v͘UANQSxqy3Ί>Ĳo$%̲PZȷqV(+:Q2gJCECE% pIFrZ~Egqv$(h*l&Xt(H `4GA X#VAI%TehZ(BQXEY?Z0TiL  ^ HBv(* Nf	Q!as9""8 z_AWJh]	ò,˲s"hZFt(J<qP!P(b4=,4X֫W544EPMSO?4hEDjb/~;%y`G(Qq{$I$J8 &1</9N F0b$I("IREBh(I RH rA</
-t|ؔ@`еh[EN糚I}C~A(Yo(}C H4gQn=fh997|O&H 8"<QLN˂Ruz!pN YYffܢ(,5^7rE[^/I2IwR(Ts;:Na
-vQ.8	{(f32||| HIz!2LO{eiQ4r\o+"pR[F#O޽8%IT7nb1YZ؝;SׯOh4:0'I*X67r	8N$";zz~~NWD@ 8j;׵D2 2^/|9LMI۷G$Jp[W$g}>6#_a8ASSK;AQ 㱱1g ݸa<C=F}33[X\EziI833vnߞ}<M|KKA/:ɏ  <h=n 4P_0&(}@tllo&縸0I'!HC@v=x8@C>6@=$FL57?Hiz͚w	Z(+1A2AAu0$	Qd2&e2)(HQWi)"	'IBF<NCY)<,47<` 67@A pOϢebI8	ZܜaLFbX^804M4ZE*/r͋ vOqP(<KEh4J8M8.`$B H RB.[hŢi@	Hn#$@zLk".~x%:;V$)FZV'ldE  2jh(2ab01&)
-W<GBHR(@ѐfai2acqL)(E 
-A(+	A*XI&(IIʵ*&"E4MdM 듬K	 ' ^xZ jX|$ij|ݶmeԴ:σLė"Ð 55{Ga(4WScݲsE(Th0+*n-'Hi. l2F+B
-UU[dJ<dK{͛6ik+cG)Ib<.뗷VSSg1j4Z ZEp8n-U$-q:ϗo/OASU_\{P$ S  n,P>}\'3t.wj] uL
-/Hy\^ohn.  ONq)->2^j
-bZMkkMinA১q?Ia\1TU=d FIfj+4mxq`zeuu~c*z<Ͷ| <<Z8pi+6`SZ%$IZ_=W}xA%AX&QZL(x,=LTrxMHtT*MQ>gAAaYY9˲)PVV0wGV> wM\AF^_{$ӼH?|M}h|Wy[^/phˇenn~ff$lf qeeY6f{ </ 1Q%Yd%IPY VYTH$կ>HrYXqُ~ϯayݯSwJRx4hUC:\niU՛\ك '8[80㆒)ύkoLjZڏ>ҝ@)*%
-D">2_	1ǅk%JcY]Q33*26A~ Meԇl6M&Y\tVVVRT)jݽ{W^Y)DҥKKݻ$>OTL@'Z 900<}XZ|ۑ⒇8z*M}h4JDں,1,,DȞ˩L&K@6WIQbF}S$e=Wϝ
-,yR5\8	}E-ss7|mmMZMꄹ{cYDB=;ޜ;yp#>)
->}iCm
-!F=nNXrƜ6֜ly__?{ޯՊ17I*84fbWU!oP>U  T*#H+'_ߙqNWLsQRMSRaӀNyz$cOI=s*DfI\5x?\XXH91GFF2igggVb
-}8ZXmnQ\ xX1
-<l4
-33mYȄ7n466&RQFQ`t:2ԀM#+_p8_
-%A`WNpꌑVӣoL-	|)fh!RV`сw~t:h-)ZN.A쥏~OE^ijx׾
-YRuIҭ"0(w6Z鬔-p7D:/'߶t[-MMoߺHAp͌]wߚKY*b<&t:<*s1{={p+wkhr[i)mT[m)pK?>{3ć1!kr \<W E-..W0BPs6M'<GєTT$I٩V_{ 2;L>»~xQ#)Ix8l
-2e>@o ,8'DH$Bdj  p:k.|  Mٳ!KͭzQ?;04e;;*OpDQS[KCY#4w~yHlE1mR<&/|;??
-8VVonRwcEmUE*B7.|{xN*b,lk}gh<qťb;EW,:HA OݹŻ11+58A4MٗbXD#*8U]͕h0!o+19?meBC΅p[㑱E4+'a 0 aGz FFFjjjVR7oݺt;vH{М'ԝ՗O`{
-l{_PuYȏއ`8LM==}t{<A*r*G1JCtz46-{6D&9=_yl~wwv>wlɿ-O>BȄLl,hwE5j~u#y;*lz$(!$>25koOרˌjF+	ff:7%=8{(pq6
-(fcM|tpgqv4:<箿˞n(2$cy$hF`Q⁘Hyz== Z6̷WTܝ1\)֩E`Щ(<d2RĦ;i_M.4F)YryAAAlY^٬hfsG02>>Gbv+A<Pcd4.Ǟ&ۉx꼈O=k %¥O rna@\$FY)H$$wBAF^oEEEN侮j$b>^iJn.)4VM3pf+-+ʿgϒ3-%.I#.ǔy6˽i. kIQ5ԕWWF%>y{d0op͐lLr㔢>HK
-DAx,|נ=3~Nэ`;M&	EeLAVb/$ 1$6lwj[^yyx|ٳ0Bf]PzכZa&m R)lRJJJFFF|>_e6n;ÃJJJ|ɩ'N\|ya	C(J.O$>ٿ?vQAtHßi'0lc~@ N{*ykDŲzH$P@sh4fC( D"כBX%hRoܺqܢHr 
-(>Ė*2/;76Ro䮠	<=s'(Xdg{8vYVtOйO_P|7/fK9_)w;<: s"A0Ll˦,K=ϛy;x߾?s[,+-
-A9FCuQ$!4EvWWO߽1wjWB,KT>GW*(9~{}pQ 3 @-c
-7h}nX-C#=F2|fd2L[BP"D"pBɓ'goVZZz݀Dd*>	Eќ$IG?P$ywo9t*S/[<s;G?	S*NJ}00'<_˿( 
-r<g;شZX<rhX<&wJ1ƕ(Wj?%e\$ksYSQ;ct>y䎨_zqBE	8ͮ4JX:5m9Ҵ5u}? R&zFLnOoۥb1ݳԖ?9f]-3-b
-m-f3\9P5z/~W2г"^XXW[gl^#Q?.hlj@p8?D"\.!whZ[[- lVFYS_?Ƀ[r8Ǐo߾#JѵT*xvW_~Ap@<(q_?6m-ݷO`!Y ##'_^}(CEP(خ2-&G"ǳȝ D"V@lr؍_y,]:=Η[oN:h'/-r]nY}뷿I,,NE=pF!D43kD H6zC?uoڳI9J^qbvz<!ϝY,ŊF&w|~"Hϕhˡ/>J91zW1[z.8͝]>+]r& Jx
-KLL&yI$\v鿝4@$i  ?wxifnzz?cahQQ_~V0^h|5A3swF2!h[8%| QX1x嗡07'b)[p.  B!ñK2Fl6{4ln?<z4H!uci­NO7ϓ2ёiHyg;kQ-T띾-wbqOlQA<)D%M{eoblb.f*eq6ax*yـN(Be;|OJa#Ss^xʧ\ D{K"-pzP(Yr|܌X,Cr
-nh4655	%X,6l6`2gKqѣGoܸ!J?OQ #&F(C)	ʲۡa
-r޽E, ~}o>G$EqjM!Q^~ Mю/u)9s
-vV@Z-=v6L</p8ӓBNH$\._=-9tDI.y^{ؤ5y&UcL  oN_ꗷ?sśZ+&0Sp(~{]#xRП@-0VniegP=3+,?F_
-) W2	 \.|<8KXhtݿ#  a냫[?ut32mmiƼ$w `X'Yx6b8vvvΏzmW\n]]]4ْfWVV׿ "$rѯ*qL>}JOP޹gɁ4 -Cޱ*  yoE]S8#oi(߾>ܸ>reggfr"H__x[lD"8&'^%)uj΍`9NGk(/Sas;eubKf	28[j&Wo%j#w" |i}^N<:w&7
-h5<T~TRɘ,E5֐zNbꂚg~*{YoݲvQ69N̐J&1IKT4qz}Sd20BQzx+[Yosh'w~f `23Ŏ9eQgjjj~I 0ޙb=CCC###qN'Hݰ2쇚b]aA9Åym(a3&=N/  L PԊ޼"5U|xhde8$/DZF^ZE'U$o{(Pv	oM99555X,699b"z$˗}IMi@D,j9dEGG  ۆ&=슺|S?zV8>ICO'7dBI9{Gˤ@pBV뫊B="7M$r_;:~x_yF\*IzP@@%Rƻ9E3wfX+)Ϟ,ng>?-(d?BA Pv8LF|sNIMErIx<Rqb޸ hzT&{b88£%5Ǐg0cccs6
-;w$RGϒ)z]]vv{l|28hZo_юF$1e?RCJ99riNw^(m6τe!0`v4QӧapҬɤI!}>:nIcԚ$ٮ]QK˝)峙,  $` toGιj    IDAT(n(.)*ټk@>vY)WPMGϿw/v-, $E (
-YJJ
-ڊȾ5kD 2+c&IP^Gp$b֞BT !y	K?t =9%U7)³ k F&8,vI{pB `
-
-E$þ`p2=bL:b`*9%
-Z#"'Nm7[>r"L]dNh|`L~oN룱؞/|3;+跈!j`XUF|I+`]7xWe:w[(@dD*tt.E/s@d2H$E^{.i$\E2]:	';s5L<}+bvvʊ  qJxW}Vg`,M@ E<v')v\(`:BMR! pPicQS.]Wg3Nc@h*sp qƖd	P wHhY3D-wftJ2(bj"3/N9cPTRf" ?j!
-X[VekqBK$499YWW#//d&'z\.əCRtǎ4/Ѷٔ$H6n0?y=T7ʔ2L&;>ul\[RU#,Jιq41`2ʊ|\&D6Yh4zE O0&Inc/Z)s(-cR2x}T;C׮׫|6 pjG#/yt| ?g/(+<rgKS8WmQqxEJ6 95vj~3SP[`(k57{$\L1Pz`1P `sY8Q̂0jK|ffL&s%UEH}s@xb\%"[>%@̭0"ܢ,% IKRߟleZsr>ANNή]Vk(%
-_ycw (--:}teeeHmmEUET9*I/?$FbLD"%Pn춷7vj0< L@=XV◔
-1O_^NOAQ
-=2ك$9p>X+ yd
-Ր82i4BaT˅haa2"	+(/yOQl `e۟},n3ˬ#R'EQt#'1&'\ *J#ȔZBu^Ԁ9zS|	섭iEPd+HBY%A;(Ε̉Xx|>?CCf8j}$cl}c"S\.{T3D5)~P	8pɓh0ܙ+_r76EH)gĴE`R]4+BPlvΩ~f3G?r!B=RUYԴ{SubO)̡!8wΟUO ǏPTL&~vŢ 0l{<F,21Jm. u*  1EGP#yLqsmH]<?:w&e+S)EY8,.cOeUZ&&P3ϯ,(X;b]>!bq8\lEbqHF?|>_׏/fi땙CNNNNNN 3AX5u6gF|F_]a؜ ?G?֭[vnnpy@.*yh4gg
-۶_|۰c$p~{)p,'VUUcړA"p8kQLRd\zg6(
-$wKK'mAXrouZd2
-T `0AbIT*n3j#\bEAjW\1squQ9xիW?C 8t9;[L09	C$cc!`udr8F"adfR	R)Pn==@O|&Iah<p8l[c Odccc%$x|drU;Yj<3'/-Fy1C+tp8Z,>yYd,X	q\$r0L&9%%%3>|k&A1Fv(s^x8_6drxx>x{쩯g|>l<y<q+_Pa
-g<p|ӑIS$΄LOí[p23	}D&2&9d2jg#:醠fø\oՅ@ D"~̐kZ| P(\ϐq/,,蘿w޽P(,++KR}}}fywn^;ugd2922ӦM'N6ǫTp045LD|~U+c޽{vԉ  ^joڵ+oapΝ:CPzen'bLFѥ${~-=pG E9JAcd'4rssVb2(D"1<<ɒ`TTTtuux̻D"ټysGGGKKeYs`8^[ϟ~022cǎǏώp14xyhjJ<|rLMŋp,D @P'&`_߀c`& ᭷?7  {Be6-HzZ&&	>=RֱZXv3j@ p:eee{x M^zAEETCCwd2+++].h4zݪ*Zrm/m{7_x+LbYBw:}Ρi
-
-ju7Hr']3g( ]`"6 LOO{<֗^:ͭ
-rw.R x`6FNXԫ$Iǃh3Tj-"wz
-O^{:Ġ{SJ]".5|>iBRtM	ia`EFq>ݔ{s3bzbao7}299gϞF$zGI7%ŋ{zz0?rHyyBh|H\D͆BFE"Çs]v*+f2R)DBA?>КL>LODR^_pDA"LhZißPs$x'\\@e89[QT->6l(*`2[lX,CCCs>d2U*6L><ԩSovuuuNNc*IF4z]֡CjJGG~;Fc0h졡XK7\x֭lv卍aA~	CoN0z$28@Q󡭭r>A,lq݁@S*zP* ]|{
-AO%R_Gd]./f(Z5W#H삂eiT:z
-0X,6S[Ph4$I.5y!\.^W*f!~t:3ݻw_tΝ;B(--=s36çO~ԏꛤm@@"5lj
-E*jzzbbnw2i.#LݲeKuuH$ZK'+zjS<.]D=>dRX^pf+(("	 FZ-BG,E sz{mz(,|D"qͧzjNozbhb,cvX'&w۽<<`0P(Rb5gt!MZ yo磪֭[Hd>DsΕӜꆇ[[[vlSnHQbBaCT"q8<6NC}*EIL&3+KSaZm03r!IS*[
-Q856  ́#0	fd2yA{3 R)\wBAhv킜 A 3̣{ H&z~ih4zJ:#U ghhvXfXZjϜQe0`߽6bXPdg.+XIIɜX\F3===22R^^N^RRŋ"	NDE3+GG=/+M&^8(Ço؀(yO裏o@8lr{lrG$@8nDِ_@1EVu``~1w6JKAxz!C!( !I0i}`fPc&mOx<r8.e|f}yudur_hZ> rQD"毗^O{hX,L655%HP(D"ѹs/$L#++KP={V&i49
----3p?k>}ZREA'E2=\.E)x ;vTWA0ҟ@ p}544HR  w+b$N'\r#%+T*944T*W>Rhh t$e{<xd}
-A_X,`68TTR)GUUJ8gAe.;{Z*rm3hVRRNku*N8&UPPh%NBVT*Ų$rp8:+~\Tdreۼ/(qN&LS!7n8=m9y>ͯs$hཷzpcpi(
-<P @0T  p].ٳg޽uȑluOcz}O] Ξsgwxz&7nظaÆ[% E͆hhm{@A"v;ܺN@^V*%HR)`0Bᓷ^:|>YIgi$x<*j"̐24moYHKr8xi]Pdee:wjn؂CUTTDKf*~:77ΌQ3ݾx^g_H	N& R(
-;W^xA8`ЌYܻyAItwcI9:qؐWkfA.dkssY@A^/tv˗<f4EHRfI;TL#X,
-z}Y۽BrDHdj'x4lNZiҢFӘ^̀`o޼y|||llj6feӦM{lܸ1S'
-Zee
-y+o߸mOuui|7o8777777.=\CUm8αG x{a2?ZIHP8Y'&5˃v`FKt^APM>a R5J;^6'd2)Bֹv$_h5$Z62a9D2,LFJtZ9 H;vپ]&ԘWJٻݰmi޻ "䰳2RiQ.5~x9{|63eAX/>NCR
-d M&GBU~xs!߿B1tE\.d2lذzɁho!xDE	Yaj
-GAVTTQ <o;͕`x< VYYY@`-q@; 0j&xJǏw\[p87F"~ǂ ۷oZϗEZq;	F)N/ghh̙3׮]#IrϞ=;v]F}R!?<=dRUj=
- _.E6;|/d,J><۶V[5nބ'᭷{Hp{Re@ XIn[YYYIIRͶ}`D@ M Ȗ-[8bYl@p;==nQUTZd2ݸqcmx<^MMV{n|bcGT
-6?+cF1 0yf7L&鶶SNdzg4q^TNM&̛oF>M֔`` R x8R`쓉k!2M%}IdzjYYlAKV45>=^D<p@0@>Jn&AQp$YaEѵ8u:zEj> w%ˍF㒎AAҘ`BВFss3EQgΜYrΝ;<y-Tl<_zvsN?P:{_sl0 @(to_~]>/QvǧRcrZX2Ћq1M*bһey$nXßGsH޽{sXà yeؾݔ5G`2b߇_^azz.\RRu%(j`` 4_bպa=j&b%b"h(۷ok4ŀ \.lBp###
-E6o~͎-[8^PPcǎ˗/D$YOG'mD{{zTjھuBnAQGFsb@Ν;pX(޽{۶msTNҥKV*<}w޲]Jj{t;9Jvvxձ K%9-JfJE")ERN_8oy0>p0|>åKmEEAL74@Iq@ FFdMfڥzd)2lXTNˬQc>}z˽b%	Ų9w6P(z{{wƧd	ʺ/_9xzi0$Ch0M6[nݼyEQ!fte:VdH"c<5F E@x%ɤdJ&[n-**u8###[67%AJSul-̮K#oۂj*QPlQ etL/}xx$Llذ!]	6`0DzՅ\<,&09	v;x<09	;v@CH@$m(Rs    IDAT͇W	EvT%D(#MNs;}ZܥRl^l 5b寍7^x^<%1կr.(bxƍ>`XL{r(+>~Hf&cCVujj*RBD D$I7np88.VTyyyś6m:Nիr|ǎEEE _9pRq21:M%)31	@.;1ڃ$ cݎ{,رc=.kcؕի	ccH<GpLNP_^_cdhl%!'dDJ M|++3SFkMl6;$%5zu֭cǎ-Fܕ*jbbfegggh&%U*իW[R߿?uwPHPtܱ{oU:O%HNLd&'u099YYY)Gkkk{{;{?J!(ʓ4f)V߻~~R_AB=_S$a	s HFK--Wkk*ݻ󒢨)NKO)Άb|]4Nxz{n築eX,вwt:X,^'5zj`X-Uk8	dH$`uE%\[FIIDwwJ<`mnnJKKkVtvJ&/NLNLtzzBAT)H8sٙrH$*JPTTa>_<6APTrѺ:*jI&ݻ}}}l6{Ν%%%/1Xw:=}aK9^#eWJӉ_&iG?0kT*s[.6i{W/$'&&R 0H``˗YPFFYX@"3y^/;3˃jx<eee侦X'+
-@0000ED:NPP(&[]]mZڶlْ9޸q޽{[n]׎ HYYY<u~&pbv\WRWS[WfPL&dL^("
-n[,KLd"7oޤP	  b}gb4?<23%
-iɯ%;l!;)QĬʗ
-8ɉ{jWMJH 6b19411QRR3"J%h==̴;lRɋjzPɜ
-]6RT(p8+$wr#z侚`0+\.ۼyZƍv{@DVd2i_uUU7۝L	AZ޽{~@P,L0iO$<1CoQ"ib @Pvwwwtttݻwo޼$c1,!}tlԉjAl;"''>?ZcCC.vQT_S:[{ǭHSV\Xf]"st"8 %%PR)I+pP6oDw bN[9#u:p_T2w65a2vP(6nht:bT*(jppPdݻ{{{{zzΟ?ĉ4l+ObG㶸{2,U(:Ͷm۶M6ې1hfio߾-@l,%_VYs<V$!C(Tﵖ]9߿"~Q7 ޽gAC8A%/v*z8x
-ᣏUYZ-$@^I`>Z:U\\Pa"D"Yj`0T*4r͛+IEH$r!t={F[nM0<K.8FYx8Z:FAT$` 0;(Df[A$X,v{{{= 7nljjϟ󥱀}e
-4K+W^D"{ W%4vL'%[σ  Ł`ti۰"S4USQٌ]WO޻w/+++MR	J%pEELN¶mM tG+q^G&X_L&aA(E"#w蒼k4B~RsbϞ=|D-C^K*d{ܥ0M	kFD4KDj$x 288vڵ۷owww#wޯ}k |.+DX$;<p,8\S:&DM(  )N{eCvw_An]oPL bVVVt'
-8q^z	H gbNN60g4.8)"шuXW<Xּegx<^$Y@&&&2_a(=nOD{oKOμ pݿOp8K/-N$0<KCchkl't5R)I&<P(bZCVd2$Ɋ(..dH+rO2dofyyݻk lvNm-d6V}VE 'С
-y~~w]<sE]QO#L3qԴj-))0@rav(+^}?}}x\8!R	G`0 r}}}\vyJiX-@("2<<lrGRw@Y,K.KjrҐJvx<]]]K"w jniiimmtO=Ԃ}<k_JQy<6Ԅm-Jh2PT@219	"I9sF pH$H5^O3)  􆓎Zh曧Nl}S}-ktGI&ӟP## sz:{epV+$@W	D<d*JIۗwWI|[0
-Rؽ(*2	%.nQ0Pt	,ŜN']$VT*Za=-:+Q(P]}ca0/_^jbm߾t>1gϞD"ںaXee/a؅n޼I<uyVaD(hvYLc|fC㾦ҒRJr(
-f0S$I$d2ry~~~}}cǚ+++.G,ͮ浙/ҍOk^B3];AX#'ʗ1N%xZ 0OY,I#z;Z)Ƅ$S7,m}Ɖo󘻃A耷߆Ν>$AR%t\$-;]NQj侦XOˬ&
-ɝ`TTTR)׻IIX~jb8oڴŋF$l  %-bPH$N<_ZRGvK;o޽9l@͑/W I&'N
-~@QT&~+_޾tc~WCW]hAnm,ಟP>u>]Q S,H":sw*Ε)TlΉg_^nW6^L!%JAFLJQd/ml޲Uzo]]o2Y|>&WI{~~~nnwN@hl⁁H4'Z*))lYYYK̰X,^vZ^Lri_ ȑ#>W_}ןyY*i|#a$F3{@Q\ΒHBŖX:=;#S<~F p  }r5ɲx((o~[_Za6TƀC!Fo+@dɏUeNRd.ԀF6ٳp0om?w?=&&&4J:h)=k;Y28N2\I90J@555Y,ztww+4%]vl{j.U*Çpkk+EQHa55%Rng1<kR0 ˪SC7߿hQjGB1*d20d@ԅ9<Xt	{EٌSB$ajJv\HМS`Vl:ъ\>jdM(|,l R((T D].SSȮ] I:-ju:+(*JO`}Jz-՜k(%重QRmݺի@`EEEfuidggo۶vQ(E_hqF"reee4#HڧɭuENG\
-Ĭ`&fd2imm?ۂǼ.I[)GQ5jaϞXNM,@Nx"L^QDS|M]>jT*uMu8OdSy(,
-}}}"huH`^(-.]nxoIrr@(wQ L$۶m[	#B7",{'$ƵGB8+ND"s`py{0,KF1, A@8KԤ?G8e0T* <p\999G=w\wwS$}-++xX< Lhono7~hlJS"˂`d2iX~OߺR7|1hλr[|6$ɴf2-Z9dq8<,6嶾3De~U<2F5t)Vܹsٴh4?<,@/{}z  PbLx4y1CZEaI$DafX=!>VTZ]]v{l@ ŁɩRjae>Msd2`,1wxiBrRu7xrV9o~Jŋw65mvMOԔH&ѻ\Pǈ B( S@agP>D"?.GAso_*\B\wcwF~0K!"y*id|w2}^[7ΉO5ȝNjOqQFP \P)"E`G^7VΝ;=܂AJ
-N7l~C`6ɓáC`0 @ㅾ~Cdr"G_D0Y#	@^/X|@(J%lL{ X\^^~f2V/"Űol޼EQXlnRZmmmiȝb>|xyZYYx*jiiy7B9|+acDBD}&G`d" |H3tQ'bu嶶u5S-H`]:geSH`Dlw4YWhhh޽.at  A^66%S"jcq!(p4.[e)+b >O(T4V\L&}wxwfծMҪw$@mrN8vK/]|)K'JH**ҮݕXQ-@;|a}G}\P(zwQ^!z0h1˃B2ڂ?mm)V$̷=2$|ĀPY	QQt)?XmF<8n6É߂ 8DEAh(CP?:V?>?  	Nץ-#Q	L&H "Ad29..f/YdN׊✜#GSڵwީ(..Rیg?
-}qKKʕ+V<cV_S_[׃)Y0/C{Tցu ?Lpu"!d qr߃655"#c	<ީ&Hc?Wh~`oPvCn8~ɆuŅH{t!>GǨS'?b+iLy]c;uC]xиz۽bȼP(t)Bt4ał]44@G45-JX	(i4}6%X;I8oÉ`A|>>i~ F###	hD"K\p	 ^{oG|d29++vո Njwq1[dIEEEUUU~~;_3<'"/YOEGk%vuC
-ޥ  |vNw:---JCCCllOKD"!  8>2~z qV'+q0*=$8G655?t-[VB"a60t:!e1ofrޞN9:T,gO74	NsٲeYMVK$rvF톲sV-wdpa =V;ˉnիW,X"17EʴShÞw햃SSp<WǸ#rSc11^lh?V PU*t:n\h4ZFFFUUU XfO.,,4###).Hʫ Φ
-YYQ2&s!D"k,#
-K7$BחWWWL6,]4==5Ac'J\es & {UJ	[՛~1!t::}ɡCH$ʕ+
-Epג?8>cV2R8	--	I}IQxOoL:GDFb<!(+CNrE>9F8)@?T[,e˖}09z-GF "[oƃq,0MtvBr2|56b1>~f nvw @$66vbbbpp0**jN	d2999?e˖=~U__?ޏJYU /7Y<>Ӹ쁞Nt
-A\.Pi)p^347CG$%M9##cccf:.$$b( B8eQV|іvǯcTB"X:$q)!f~p҇  Q]]p͛7_G1PX6Ngط.U^=̦w-#JU𕁜E"- ގ.px;IL$!68t	n~
-y@஀ 
-stZ|>>\.냎*d%{!a,f._̓`|^ z	ȹ    IDATܟFmXpa{{{GGGdd.DQT"h4^WWs`:(..ٿDDĜxgP|[Yc>=]zD;ofuo'  v ~Seeen[<O?4ŚY
-p/0OIS%i*/IC  t:ݛobCCCoχfػwZ^c4	51OˋP^\O ySj^^(z 223!1JK᭷Epo)hZ6qt}`ø@ 0{!Gf3xaڇd>22 mmE;Rd2φ b  lͻJknn_)O<q򜜜{CCCwR20
-'WX̌<hE閮3'OWl&Gh@1L  8?B{թ>z"hÆVdw(GD"0G7v7y~x;+f]P n?O>͆'>HGP,0i)[{gOm$={?6_vk?訹DڂK˖AT:~
-uCl3MG*n; \`l}>Zvܧhz&&~J)(RzzzX,֜v{R(PFyigBKGDVdE PMJJ*((8wDz|YEPdq'I=TY:u\o0v @U h-JCSSJJOOȘvklcgq/oV~ώOԺ;;df¦MWPt:x}DR" mc挅ca/GWMv2'$"16tV7L<8GfYz F!LA(! `:(L7@ LM4+L&
-
-Bc/'A?xp; rB=:P(j42߿tҹ]a@(.  qG x;r'&&Σ0H-P]]y"`#Hx'Ndgg/\pMCeVN^ZkyKMW H ql$0W̗cYoP[|=gh'ƥ98rHCS˫: ?y`b@n8}A (w<julL̗Y2sdA ;c2hmƞ!<uNrEJɦbud._oAh]  Q.YYY_!b[w<	;EF#<0F,!@8@?tDAeS#l~!0Z~aV}E"+<8":/eCI +nL! XoihƔ}FD<E6MOcl|_ھeG{>yF%1c:kp I7bſ֩.Sɇ{>{rƘ1008m=:x07Xs?6=F\|O^TL*l}LV~STS ;Htwv6Y2tcV %ez   
-$*r.'ɺ.Dqqqvv/˱4I4/Oo]BXZ{	9/_zv9   d"U^2 @F%jfa0X,*SdyA6ҒS#UZ&qtw=V/
-eJH"1^7wv;{"$*C",\cVgV#-|J% ByDNFBF611VudXJskoxiE3W\۾gRW74>57N`)k)h1 Pan~|Pgxm{pa"H$3l4dsyhbh[M$11p-(  	QQ<oQT;v48333ض:W "{|TR0rO?&?-jz' Ta0|0mbHNǤ]FSbrJb 7:9T&T4!
-]c!gΜT{,psQ]| '@M[vX.*(^l*GFOࢅ[yCvqb3:'_zySaYU?:噛uG@ e4["801G3[?rrvw6bb.23A. S<R7s<Dd	  `EAA6DR.]t:Y,k֭f'șr/$$$|ߤhG|<fw[1QڲjÙV	PhC  tp
-%$&} A C{<0I+=ӑETGDS
-WeswΝ;{+W~;n\_
-nQ&=<6E)@魛1a345O|1mhCQ,f@LR5YVk8&NP.ZOJ5ā;8Ƣ &4YI7
-7цBYYu$DE֭y-GLرf r#666<<|dddLL&bZ{H4-%%u~#`}ȑٜk/tg#>G8ܾ/~N~]?ﯺqV^>AtcC`* %ylʧ)S'x}mmBK5	<R3::DЋ'nǏ044= rFճ3C	N'GF#$L}_=Ss "uJh !W$,}Y (r^~B_b/^xh4P@ x1XD]VHNT \فBQ|`2NGTn_U0`:t#l65??d29<<<H3ۛuJ/ $%D1񾎎102+E'>aH0L42,~>),WΑ׋W"
-/zu.we&.@ ܖ]\D&x>lXV\ \.`2tE͠VCL_Bڮڶ~zIU]\V&1s@bS!bG>ǕEյu(ԸllF#32;!.N+֭nsz	dѳm EA"2h4RA&"xq}ҥKhnixXp젏4%Tlqqp
-oD%Hl6[sssRR\/'"&&FՖVgcߟzꩱ3g<xpڵ	@$a}'Kg?ݿosXbKl `s 鐘4pϞ8=O={Z;iB ^>ypE 3 #N  AFMP! 5^x G\99RADKc8xtR-*ԕU
-_K9qBGbMw*pQIra]'aC};J$̜GA*&13%6Zuu  cXqG	M ǧ*~<0Caݺ'֮]{G&$$̉g(JJJ$|		yg|o~ñ}Yw{j	4n鶧U+~(zZo}pomm9Dٶ6_cQmS@7*lؒyg:JMLLy4aZig `^@.[N
-\X(Pe^Q!o}X޻vKΫ?yҞqo֪n~d'QYY(	Aqσd408ȕ4&|q<pҥŋϕ
-RS!. F{xxbAŗn_@BþCWSbs88'4NujⶎT\N
-m
-An|`&]Q}}{i/_}m,iA'76[l8b36"LJ/Sm.^Q̤ʤ755]zODM*j4ǏFzIV\h4~駁@,C}?/,.B"^ydhp[zu8  ( /69ЂMOE:*GP:A%iNJӖ&kx~uRG̠4v<{'$?cn>zH1sH;%$A(/˙Z[[lْvۘl6	|g?̓'OR(<S58{c8lQr_#c^,A͎ؖBkvf L)^v~kl ?g\ExikMT
-%{BPxHp߱4[iua,.G9Sv]2B&v@ieyb/|4:nFp]{otxhh,&8f8*-1 VLK^sz?t\砑ᰎ]}]-viёh|c9Bqv  xmIT<Ɲbqnq?yزGSm}ػm6vfcB`1>HӅ3Ǫth\Nuu:]OOOttz²D"Qqq=0,66$ɛ7oEIL&ˋQ12"id"n`.S(`Tu@]P2
-\\578	v$3)NUGt:/h v9rdSSS<%EU޶ߚ~g_Z{!LfxH-JSvמ-	q))_EQ`A;Ðb###:.X0EbybFr5.6$4b;<czq^2Z5mPi7؆j]28aPʂp&tuuD31>LW;bSgPgD5ryB$ex	cWKg
-q|aѕ58f
->ݯ7&vs
-J8Dl>r23Y8>v2kΗEИS\:tH,q"C,2U'v<-!^HS>D"FS]]-Ǹ	xܺ{t8W8&/V|1a3
-ULFĥ Ý5U'+FCLv9>'Je0%Ɍ"D"Y~}uuuKKKBBlR?~8ܹ6[A)_:0/8o(T=}?"UtJ W=S5tǤ>do3ZRŖov4&''kjjvmZwڵlRΈ)H[::ް1oODU;>9RuG\&@ hoL(*QYY)
-Q\wƥHv_0<؂dy4)GpӶ0mj1C<lqo	-W a]]!իo63mLhT8T%bf}o&'JB6
-0R}z_U~]~_q_2u~Z/
-)$LfKdꪫM-iH l:w(QЩ>TxVVJZMk6+x t:z/KSrJY$Ju?ƼI{s$22s^^4ZDø6wEISGҙk8~:#pefDEe1 ݃,>H*	dovnn; Bp۶mϟ?ps=7(Jbb~;/BBBΧ2ڤ$sKم.Op!vWOͮIL}͒(Lg}5RTlHЏW}>a5tO@Ƶ$jOx觞zjA	 QiU6@b+<q@,9QAlPcҝ4¿g`2 PS\deeeD)HZ[wvvNpX3MrAJp}>S耡%{,Y#XԶeZ9nalЈbRcz$eS❛OgC$po߽rh. RU3􉣒X\˝py]ЂE"D( f%
-NRڼ:1lApހSv.URga;A|SN
-hP 8p8T&2EGvx{;FZ-qwԣj7i/>[۩z9BG	(H\>xbih8T a"xuKU<LJ-44loo쬨əLLLvڵ`Ɠ-#?٠]xjk[ܾ4/?'ap8<4iqEX \O`JL&G)
-lc:oJ8<" hhh8pŋSSSW\w#u  
-%h7PP`rT9ϓZV+Q<~N*KcIH,Y}wI			"R)wZ!1+YXA9hqf8;ε׫z4LsP=RqQX
-CbY-AT! gBbvvYPO	7/49t)" A\.F	K<	ѵB:ۖZ!v
-?Qku  X  LgF6V]gOǽb3OkHLJYQROt- EB :]Ga#2!cyazN۔kZw3秥qܓ'OΆp&
-k׮={\xqlZML>!,ZAG5N_8h8BJt@ E P ,XO]Rijjj`Ǐ'|䋂MncO2ECS(-ᖬ\nMI_e^?Ïv(
-
-l997!ӨZ Q 8ۿ^z9l2nh4 GÌ%"!  qPd=q(T(Ui,2~|	>3CI  (@v=,77N&`5gNdSgPd,4Q^^S2?V͊Aw e?>3^	'F >kk-ZHZ.JMHHqj8B(!>F#D    IDATDO|ۻ7	   q {'Ii΁I.Ydjjj~<bבg2Z[[gqho֯_t\osV{;}sS;mߐ?l;{|hҒȜokK	qq<6MCc:*8sQI=rru/^cQQQ?322f8FP:*,\b_}C̝u"QXrhj8$⟜K"fܬ@.--e0EQJBBB.8lg^[_m&H 4tLa~i	r9=4uR.P-+Z>X[׿Q4M`?eڹS#~&ƈ
-Cmjt#O\XI[}honA7}Ѐ;=!
-Y?l`n(mzvmq{^mG>Xjv~xf_ BIJJ|={B hq1ުo&^)pܤx*btttndrBBBAAݻ+**f@
-Ŗ-[y晸wy_,--ۃp5@ pMVf}L-@l1CｱHmҵ֖.Y&cUG?/~zoqqqww&Q 'ۖMzD[gD<EPoE>qun;VzGX㳩C4-Yxoٺ?T^LVr)Qi4tH#Q	l%D{[#
-WX)?=C/qR}̖97}y!
-Szfw1oG&GƬUEKֹ7=RH@ʔuvۡ+5Mm1
-O2Ct`h$;"+&_H#LL"T*Օ+WF}v]XlMT4kuOv?٠؜&`p^T괍:h.ZgOYY`'>jtb833V,^:A(%dr[[32 1\<6v!d}uC^PBoF9zM֚N 0fu4vuUNW5Mll颜mt,OdX{^YXR7{fZzNqZ!4^p*C;TqdP\[A53drTUE:z6o𙯺(!..2Uuc2y-ޫݶ
-;𻦜lltU!>xB!/+{(<pVc~يʦ0P2b3_;9<L1Yc=6H+hLnLZOscΘle7׵M9Fҍc=c.	br6.{G70:jIѸۦ>tljj0BfyTH$2Lk,+>1$R_/`oz 8O[)M̓}(Ӛ='Nz\>?aRܴiӡCΟ?rgI\ L&cXjz޽UUU|A||L5[Lh[<=,6. EyrbfqG ;vj{;;Mè22pkMil&qfg67յKiGQ6HsDK3;zQQq#\oh@~ǑAcp`ǎYv@lT-0Hu,5ctP&}KSkxfp1WOVe j;Q7iQf:9oӆ`KK]HV&DIͭ*b)Ĥ踹s`"=i_R LtѺ&.>ʖ&'ZS|V^1VRc`0*6iź]	8S32`vJڒ$w`$ I};HWI"|Ք!  畎ą	ֲή!q鹹TTT]vN^7BTWW"lVݵkWFF˗:ғ	/*|>94(8NC
-쿦?E "x3GϔN+І,$I
-fg A12rc$~S	vۿ%My*MiA@\\`ǎ847ÉV5r{-d B&Si(RKB+j5mw)E\֨۱}{OӐe<!>[jsK6ؖrE_.
-5F2R5+lHZ0;%3WLT-&VwcԱI~;#T*`ˁQ&,$2e)5\RؘHP(>vLEf 2Dt+3  LZLƦsEq^id  ^S܂TQQQQRR2o ̴W\)--]bŝVgBj.":;t}}n9`aDl\bDXݽCfӘF
-(LNkn?Zm:*`}q~Jj&9\yihW^=764TU]NF1^ŹE#:l,ʲ+wѕ  ^t	BvvF)7":q+owǍaU:bE&o_y'^:ۏ@MXT\`;$KPdӮ nHGr3WZUnuӸgjƄBv1'A   ~nIdiFB`g+;pP>_2A<L{,CG5Sb4fD"@:޾~"OP) M>m" GںDGGՅΏP26ZӇ	R4
-    F@]ISAƚdYo_qZN9򆆆pg		
-bfF,ggg3BLO"$	Q(55NGW[3aGb%dB&oPӕZ	PdkK鮾|fg#Α.+4>׾^,z"ع.@{[ۉ'H)p	=U*a<>MaT̋Й˪Ș450>o`bj){@`s@'y$ ˜Ænh\B p6}me@ mQ\s8c4nd|L
-?rRMC%+p:	 	jl%Zm4+\9h0̿˅yάZ(Ώ?f4[M؈pIO8G}B'ܫa{@^8٥3H8$~vMZ&Mer
-㽍"fL Ci"Kg:౐Ha!%%eddvŊyڲl.~=Ǣ Lsy,*F&gjLK$  2+r0ϤsdH$9F[hѼn{|G,^xFqqJu(偮.? Gj-!+QZ- nG Aw8j.yp礕J`a<=f6z.,-*.,\`J L)		aLNٹB}}}O=TzvwҲbpD]y2a6rT p5Q4ns>M䋣644&%^ѱ18rruo$$a<yB1
-ZE]._ӨfI0d-0et;nk"U Jy,:Bkr⣵(AhDPu=65>rޓOMEK<N DXlLFfEYB. 0'D)aZ=	(zpb3 AHd
-kc3rssB  Ɛ+#<0^hlF)  FTjLR:nF>p~\  @PTMT<
-P #E
-uP@b4q)* F0Q	Rl|APTjqap8mmm:B̏L&s8<*no-+mqyŅi))Ǥmbdj]ͅgϝ++;s|K掎P nahs.uL^wB+X`q"mT&&E%  02s~===W*M((i%Q)On*1`/^ X]]]gΜٰacbbDBa0`a>`T
-`JIJP)x,T@O X+)03áz?pڊ'.[(?gQ-&&2\%ҨlQXb~<D@F2YT܌D6@ӘFQo
-_
- t&ST$.X(/+NICHP"&:FH [H
-bdW(Tb[bNH$ۤP&G >(ibS0
-d<5NJ#QE6.FcC`8<a$V'}C&ȨU*1凩RW
-<`	ô!ЮNF|L H
-"33l6744ܧNM&S}}}YYNOJJ낁  I"x^wn*k1	,&~ۃ0qdTdfR\|H$
-a#>@	ҵ]/FUWq\OqppT'&&y12]I%V`":OF?զE"KWB[s}ކE1[}}  TVBx8Y  P`st4!	*\t\úa8HT dh7,^l]#tW~~ax8*EHƁJ./ix e  _< 9"}H*0&a 4XIctt/Jf
-֬]CeV?Ԙh!re<AlLmL6K(
-rbx&SH L;WvLu+"ә<D2ȷN l&YRRrȑ'7qŋgϞ%HΕnzRa;+WäRn7&~dI!d @QaՑjF"QBC9D"S(l6[(nֺ"qnp*r/~z}eeeWWV-,,Y%Ӆ,) c_"Ǆ$T xwTQUUӓy=
-AWLNBbgA&p̕  pb
-CB<#6mXǺ*/tY0`XGmV%':2VHS0pΘ4<&Nx4]fgK*Bg4PkAad|Kչ!l顡i"Ξ;b9U111/^ͽ DEH3g?~<\?;	᰹$
-u76T5T߸aƅ;iO9FYFk+f
-FoďƨTáhϚΝ|rVVV~~FBxldsJpvn\¦  mZ8uvv似(ع+vwѣTڵ0"XZz#""cZ\p~K4[[b q-zkp#-{\e.߷*6O|~UUUbb"QjNX,3W=G$33?~|bbbɒwet73xwlw66:UT P@ qlRI a(Ϗ(H M|hkk+//KKKZ/`  s7跋bRw9sNMM7G3Be% mmgd=OuK SrD`tA83<?a^f@o;v]w:bU3C-jm'|ʒFDEV?8  p8IfX,F:nrrp8ZZZfn@=J999			.bNj6n2&lN)T& 3T*!H`-ojj*//
-"??_V߽&n~FNOOb͆\XTimU._#G`Huwu9؄xRNLeS1	R&GƜU0l`81K"'x6py:0r^wddDgê\.jnnh4113qqq:F*EFc@$,,,X;T[[{ر@ $fm&;>?L}FhTFuԻ 	ۉf7ŉwvۚMĎ{:66L7E**2I{o>Lh$p?`^;{u9t,9F"byOƿ>m3_Lr{\Z@`rrرcf9==:;;`vJYu.qujX|ȆJ7V `±cV\[`2TT*Ѯ>Q6,Sɠa .W p@6ϩgɒs5
- Pp'GJi4fVbϟjŕoB~;;;%ij.x1vڅ4)7F 'evׇBⲲԅ<P
-]^['i#h[[={RۮZO<cc ~? |!䓰@A-t/YlM̍ϫ:+  14qg%hwd )rN
-^0B	kWbŸ/ӋVdUV-}tPTR?::weRiaa!Jmnns:%%%w6(J⤳Bkl3"lA *++AP)T21vۗR'3٬knɄxQz	Qho>T*X; 011O&0c2x:A!iq	#.kd$sd*q'2w(k3 r iEQLmVbvbѠ(*JZmwwwLwWX,Vuu5ッ1YATZRRzj>?66v˗/HE$	!ɍSx<$7X8KKK+++2MsID]b6g%&G3I|>l[BZO~hk|_>fE׳[H#(S,:S䲴۬v'`E$Ut虴0Ssޮ9A  'ƇGﾡbǊq_&x<&b+nٵk|rLvW0*((uuu~=L3gժU7nLOO7}Q]]|a П@aݟWWOnSa=̜HZ~i__@ XvMo,	W8zF"1&P}~ms(ml"NGAN0陞UVVv.+  BR贫QT"9ktW+ѩ9}    IDATL'dnQ-  Dgz;ﾡbJXfGdnnƗ{ðu]xQ7vl3?I,wuu577wttpmD?g8q\/޹@\ٙX.`ʕ+Z$ɜ{Ac}c3JIj]"n:~ȸo=sdd]C4
- @ wDhkk|饗 VDJPh\*BeX7G+(Q9.t`28y\EP]nRRR:::iJRĶ%vrF355 HRC688NpT?u{Lکkҳ9YrQXu|K`].N5'777;;[T.Cabft"!;Ycf`cm4YBRBǧe0xpA'@*[k(JVCɔ<1DFI$UL9I/_T0>8({2Ȝ5\{!ۇSi`p#%%mbbbΝ7ǹ)))Э:Ozz8vX@ s2L,wvvNLLOOOggggggB6ɩi??;Y,+@,U"H pccc}}}4MTj4&p`CgOŝ3 AO+R4W:?L$@bXn @ A*[k#BDkkUSbϯ7EjMa|ɣGJ+Yի.J]ϝբC&({]QsT|%JV<FP111aD"ʻ_Ï>hڵZZZپ}{l_U*CCCMMM&ҥKyEtvb"K?4)3"&£1sۃ^1͡Pf*[fJ&M ϞPgu×e~.>*lX0ȡn	 dn#0;w©S K/ݢAp8|iBe˖wL^5Mֻ~G"KGmFS]/2KID',֭]R/TCĊq_VgffV(J2J$E
-,S[[{ﵷ'$$+|~NN\.v:FN8$IӜxLfgcE=ouP`0^M&YYY"AyɟtCrApMOhrKpORʊJŷyadepѣW5O!%6ofшnZ-55+**0䲵liJf9I
-+N`$;}")!"vo`5;oޜ]WhNg___LiiiEEE---999fQMKK+..nllA$&l6=3Vf̑Ku>(i5(%񋛄(qH$@ x<VuvvVl6$BarrrRRZl,a9<Nͬ(Xt]uGQPWC{	[0xKRqoTXvF!>8xr3nK,-k%by{M|)i|:C/d}mxF$%@4u]ǥHR\sHlVj)6eEVůcǎ7|svv6=lҁMKn*k<0??ll݃ )gi&\<fe$p(LP("0J$h	 "$	.jl6`6nw44->>>??_w=B"SfϤMmIqQit>x7)\2%;m8.|KʦY*@m-LO x<p4$'@ gϔ%$(,.T.p)*H0hL;g_I)766ɻWedH%F(V< a|>$ɘw>_VVoOMM9es喖:'Nx򥳃($f&ɛ8@7N/2F\{*1Wh;,Ag0l6-fjP(NQ?kxΐ|^rARD"B֤annbeZUU5(Qi %V)ʒ
-C眳y=kTo8zxuv!r9pUd2<
-mmMO?bawf;w^TdC%'_d7R~kfzGȎ%~23	P<35!NHfVӢX9}ɔH$|>m#b޾wuu	ݻwd$11|bbd\MUz"0UT8BQB(#fkA3Fa/G"v3?߄Eӹ\X,NOO~X,^E ohhp:۶o/-)e01 IVglfO\ȼ}!5y8}^ Q8}`Np`ll/!!15U.t:ä1K <N@9lY<N_tģ6a#ІWR&hF(
-m;,83'/%Ax̊``0jf-r5֮]ӟ-[,r=AP233׭[W__Җξ@$BqiE}pW'gLD$$$Iadqry<D*hlmmh4%\꿄ӏh!
-"7.I|*GIMCh @Ine:`lzhm 1V降w1H'X,x igI[W'K7<"aǫLgόr*;].gzO8'[쮢a+A{gŸ/7GѼ{r|GGGie^?00PWW7o.ξ| &BqOAy_rMNsLA_D e2YYYij*h|7oܗD]O |rWWF۶m۵z$<D];B4:&3?ڠ0X\¥C퍒!&6'O`2^:8PW EZm$ݾ}FEƷ-N۹sMo`/MC㹕IM>T92rQoÉhpn4)^D]PW0ߍIm6n_ddAPu>Ljg֭`p^qeƍ _<\qS%b
-\*2 hbGh\1;T 0L"j$p_׋;Z[[/]$v%Joz`
-UG*2aʒYj5X1T%bR[ؾfx=t# Z].<11A((Fmtu)))79BMNvX IJR˅W3zopTNxa6WklZ#]ye+>X1 vH$266VZZz;vp8---E"YnUU\^UUD|~II+My_okⅬp$9Η  (
- \.XW(\.A`V>}Nݦ	KիiΏz}ou9mie999x⥡9q|>RU(;w 47(LLCaazUUcEy^d2oYڋT5;l#D&gT"l:!le~+}7MgNOu\VQZNF,fb4TcѰV;"@d۶ml6{xx8&&$$65	Fyf[ZZlHÇ<x?ڿGGQFZ3)AUP(4::d6KJJnQ:'>04鏂k!`qWZFn7ƠD}f-t:޽1,B)zE__Lrr!곏il%B 237_5@\Fc<VSC>٩aki@lXIII(͑$TJ*((xw
-EQQW}7ϟ0l#\An؇FGI-XlbI!Irddܹs<LQQ]O;IMZƻ'DYWJve?3͎86\x	Ưj2XMM.6+@Ν;gX^z
-[o׏lXJHU
-B
- .kn8wй҆gn.-P'խ?8鮁)2Rhs
-2,%`sXp8<>>|OJUVV688822"{F}k:u덽%KyooJ%h
-8A%01J$pxttرcӵC*Tg=zpώ	q#e<HLJ1"vON!޽abͿ \H3ՊܧZIfYS(&0"f5z4vy%ql*s9]i*yЪ0D5+(-gӓc𩺨$o'a]ljy eŸ?0J%ɬ|_$&&NNN.~NY$g8\ɆזfUo<#Ũvsv@ 011qɔY[[:Zjm#7'(BmئƯ9#4LI ݼ@eMB  8rs8uFCCCb877_UL]_a2h"sD43x޼y]Quf`ІK<ӻv\;4ҧ#ÞcYX1LLvi}QV{ʕ,x(e˖M6MMM]pa);QAMH߹Gwl1-:ppxzzŋyyy(z*V}-@g$l:%C(q'\$H\8N A }}'E"+W.Xl2!3Ϝ6r 8'r#`igJ*~99=dwF|'I2Fe0|>_RGcHaX;v/_6_R?|oo#G=OLV&rF&Hnh8ua!Tr2A=sLCCΝ;7mtED4/hןޑ)BKͥR<8)Mn@O޾ivA
-07Fj0EAG&& VK?ASS,Vݤ0er!+*(Mt5&%b  c˓n5#L: 	#b$Jr͚5Zj.~	M:n1	p߾} P__ظ 
-vbw.|rm\W+O[P|y5k0BcF DŊ+H:c`\L	[~/7~	ߓ\鞝_|QZUEtѣp X,/?11A$źBi	r:rydz P2jxN 	v.q$| ݍ	Ho0_V<D"Yvd՚۶mcXǏ7=f޽444E:gt9rtg`aeǟzOV><pTRRҾ} 0E,,X>TF֖Z'ngdy3=}v['}q(+kUp46=忍FKJeqWSU!g}rظڼL2ߠ@Q`1PhJ.ݢ5<8741m]W¯xP(fggchKJJCPkkRԫvڵkl>x`KKl,ﶎ4;?QvO^׿Pg<Deq.ѣ[lyWcDLCY};'LVՃ8>52_~1;/~FGy yz
-Z w0>~ Ν+--]@Q<?NnFL*+DB$ A0)GP4x xݮKm`tvl§}YC|U<,!&$I|p	AfBgϖ,B@D&憆ј`0>z<6A?c+|ͥT.
-$ ?0?6@M,~靉Fܹsǎ>իc72
-43[%Q	յvb3ى";__`C "D $T*6^Vcꢽz8M(edf%8e\.#`lt&k_I# fh6s8.qfC?h F,&<ß1_ETjEEE{{{sssJJJLLKK+++;|˗%IlX+ DɃVUUedd܇?|y\ "qtMERT"|ӕs熆8NEEEUUUl۸)tIZ|rd@qSy8  >c|$ɉ'xbժUזR*a&< b#G -RkwrrtY&}IՔJC	k_sW;s/UA	a\Q e˨-6aԝ=nƸ}WMSr%PaXMMͼVpWTiii/^ɚ䥗^lnn6L=$ƠSReK\^{ǥsGm58bSs$t:GFF.\p	 ٳk׮7R	髾ئtuNAfMrfr:/Q\Ւqg!yJubrggG؛%e8<<p86nܸtLj/T5ޖ>?~:Ȑ5P0T  w8&ĥ9[?|yw)GZ'`0<KEX0p8l^?55)ڄ^x?akkqB3dee7nܴi˥h`Шߺ8[fmv79fIY/Hg?xf|ɓ'y晚{*f'"I-~\Y`gG;IԫP\@v575>|_V7,drrd׮χww_' A],NNN:%DEEػǛt~4l,	wk.%`<J-ט|Ü&݌NRIIbϮH>Dutt466Pc|0.lٲek.>_ZZaXsss}}}OOΝ;
-
-n45?7uδ]e*DwPo,q>=y({W^t}0 @ ('ITTs    IDAT
-z{/66F	JtSh$]Hj~QWW222g2)}eAϴGS(L6C(	 `[wm΋m3y	dW׮ԫ7l8ԥUx}	HOOxyXm?nZ=.[SS}ӧOPN)Kz+nN~;_]K/e(\sD"333.\8~ éٻwR[A1*q#~ $d\03w_(MP*^	HRSanؼULp(?,rIIK7no;,%clw׵%QX?ԹPG;'L@ V<*bl68͎Uܹs555K7^liiy7gffl"8Bm43~=J,Dq 
- PD^jmnn>yf{Ƿn*]HIL8BeД-w$p<Ncśb'olڲvNI^/C    N?	m\T'jۋ/!$+o_D&qB,W.IړQюB$w~;S2ºND?qy_!c,(</t&֥9{K!APHlmkSTOqqǭVk[[[UUd2YEEH$:l6[bb"˽m!|Y¨.h1U1oظ%ڏ}^
-IlYS,#d:vo[YYK/UTT:'hT")qX_ѮϤ'0o\&%&2~ȴy,=8>6dRD"D.Fp: Hv R j@ׇaXQQ\._x"AxOGYFʶgίSW=_^*BF(K"MFV_X'ʳl:ԅnIXxzn7\.*TTjꋍ6. ((իa&^r
-Ϗ]uIIIL&J^r`0'?ήͽ9	̐+S</)kqLsK02 ˗/_r%$''gddZ*++\$8]1oG:']"#m}f;'.}z۞t?255sYtmL
-A s?!*71s<̶qg;:J25@*K)_7gqẪLø]&ǳiPK#TtK5Yj2މqJOU[Y"Y.prr`*X;=vxxuhhA0HN.$y,;,rktdD~K` {@Je2bz]RRp8fgg}>_ (R(?d  BgOuuwOZIvGP8%#iW6N4_S&H嚞knnnll}7nܸFa
-@Oۑ3}$--'ZNՍ&[yj*s)Tg3/XyϝahELHNFF  iq:'306m4II䀯e^yKE~F;lo<tVKK5Il/K%i"8B6{v/V̽,!<BRi8U x>95׃D*Зp*bgw0'1z_ D$B8ϿetP(LR
-
-hzJ(^p᷿mo3?
-A:Uu6O0q5>tQ]\i/3\<qޞk	j5VxLlmmmxT[[777o^靡k|o>Qg:e}v]-
-Y-5^`ұ(,5NSP >0kO3
-"U3/B|}&"Koi@3Bc6X>czKّ(bR9z	GG?n<m|*{'4tD1k̇ebd	O>=aNx_"|˗pա TWu:
-"FIdB@QqThJKKtz[[ۡCl6D8SQ g5ы5ѩ.-ܔ핟rׅ)y[37[Ew#h4={~ٙ#ٳ"!!A01PW>ܯw*/T"맧AOMvYW{Jo6 R
-`4^<$
-*hەPtjl:hEi,afA:A0IWFm&aSdiV   iKWʢtuB~e[YxUhk%ZgfBM`Zbs'IpnFah&& ## _: :
-o/`l_|?yCCÆ5|>gٽnkjjJ"'ɩ\6VWN#Fs``畾 X'V&w{hd2zd-@ HIIYjUL"ESU]50L9DԥߏԼ'& Fox:
-I" +֚< JgӋkTIlbuԙKb$nxYz{4*Ჸf~JAEզd!`p)KS>1ߨBg'tuAi),ERH:Nh 11_r=p@޵6!7; UTT?~wyWʙ[h4M48uRHP̍<\WÞ+LR $I33	W^[:ΝD$BDD 0]]]Zfoܸ/++{8X7C"Ȑ=82:s#QB(!j	d._#Z)  >`^	)p*~(ey:>˥bn41;k@  \vi/LG)OXdP(۴٠rsȸN0;{k5hvXfŸz{!~nq8V=ކ۷ONNk+:a			<?4g]cXKa̩S"Tj4I0|	BLjQ7sss3338'''|_OOOc2,ky0|B>=6>Uzݶ^'F:@s]|DiWO6}O:3 	<l8 lZb0@SL~yH,% n2uZ&}).-~Gߎz6)/_M|>cs 2zJ 6 D"`â'+)ʍ7
-"--m.,~K
-JR  E"hјUg211I97eY[`Gz;Op$b0@OGp-  | ĩS˅(8sJ:rRT*rAL&$rN>ge橀25cM*?|j'oJYlX	jj'(O{9~APAƗWyioAf'#3LR`<[3  owqFo} /1@מ   4p3|/ov9BP/ 7I]4GI$.D"z݁@  jD#|X$d2RH_{?)LGNNCEgcSwwEk$v#'"pRiȶ  #$D"rtgV|['ɫWWT`1L:ȸ0
-ep.H<w.#b2: )Pp8˭ϟo{k.#pF/iw!>1PVw6Eɮ.t ?r )2Q`^	!I$QEEјp>@Ϝ9Cģ{+jp~8kUMgi\?],09~)'rQ	_w	]) Ccqp4gݿYD1
-aa(@`b2d
-%<ߪ8'z8h~~"PK Q[#מ 	0p 0w w'bApNjWo)E*0&i<@x 32!+YYL*At*:!@$_4u ^uEɁC7mLO7_i"xx`8T -q5|B dxJ SXlX, zMåA]/?}+
-sO7_~;ri4JcuGL<w[0!g BN0r ` S \.$'*xaa}? iTj%x:52*\E"H1 5<m 07Ci=F[,:; >)2B㹆IBq㪳uMlV|,@o1*(zz?LZ`4V 3ïbKj
-\wؔ&3O[/\\X$[y<(+[LBQXǃ4h
-deC0)K Aj*0E"Yzzl/_|1ܼysYY#yG4j;{#zw?IB6y3|HMǕ	iT# Q 0%m\fл+HwskwD&MHU#/<[k5t	8G|LpntoZZX4jS( )/z:	P ^j)ݠNu|:9@Iq"HBj*ȍvVZ:1{4Ca>a[pkX,xH :P*crW^//1\y)l3r	+8+)'(TS!#l%%nl6t:}ǎl2g+z'L蜶A|jN:'u9&DLjR )ં.
-c@	2|8ǥ^[߾!N{6<I߿/KH n۶L1i`vu[/@zu./ `D,  h;i|>b555v\ D\Ng|޷wSrrr3;jD Vܐ}5zb.LN@8 P^
-/V}i2wcff棏>:u޽{nzAGCM֦	GNwWfp-8l6#Aǹ?t<yD.ON 9m;2df>;z (8C?'T.D"D,pxb){צW[f
-	x<0=}UO9)	z
-YRСC3, P];wBmLE&`0@/(xA7555mGt:]"`0hW;eIϗg4F%2P( 8|>¶e(v1O?=xZ~gnzEH%	8eʊ$v8'm>4EH8}@ۙ6B+Mg~n#HOOOGw:)P`Zؽ6n\Hc1,&PT3}YÔ]OשBp:t̄͛aNɉoСCj:
-6 A 
-lJA((T  8
-A{{~5kb^.{.DXy E3|DWT=Vlv/ʕ3PS
-!I>~uAA(L"yXd<qnZ$c@$(FX0R$AAf;			u 3!8ێ `8QhYkL:gً+!9^@Q`0R\1{8<U	v+:he!H\'XV(*˿ﯪylFD>@~OOyٹg.ekj$B?wjPP>q1@F	)=}4>_Hȗ!߰aCfNPWwtOC:S(9'{R[7FjfOcrc/ljhіI]2t?34%)R{ݎq[:
-7B~:ȡ5Z[TQwy|@ә9BEb&ABvbhh/#
-RXXi&,((xX;Ƥ"0z(Ύ߼}k?_$7eoqC'O9&%AP*FpU	RwGf" A<~;X[[nݺѮ+d'Cv(
- !{,"/ژ"D-A(euwvTVVfffRÀ_ɰMwBS{4Oܲm5("iم2'NytƝf-lXbqJƍ  (NaSL"͗"r&B)%eei:}.GJώbd50j@,ˀl22Vǟ%9ޖ67a7ac	*$81E8`xTU67AA	-uer~pbbuޛGq`0}!D%Ye[8M6mzsmޛii4Iv+%YFY)"q }f~%G$$|wgyFQ6uJ$!TGSS>*n*lv:or9tkW_	 IB?JN)=x3Wz\j^Dŏ=rԑDhѻ}PCa|	[TBD	g{Z*(-<v666رGr0 X:.d&%3[NAx_וespl1OM=7o;K/v\鋝R~49<?76Sp %0%tI$S=ﴹohH-	8 D8%A>[4Pr,]F-	"cd-&YעpqOUgt}kj	0?_[򢕇+d$R1J"y<yq)2 VLׅަba3_im$eby:ntFC;jxl6C! V7l2>eD"5|>GHKNҦ??%P{̕/(QPFtK$.V7sT2 zgZ>zg4rwlb9x    IDATDӧ_z饔{,L,QQi%;5>^~Z Ad\b/P02YR.C\A,{\s )m^{N%lLIq84DcaһGܛmΛ1SB|6  dd(}\7;Ȅhb`Kua  Xtl.};sE0{M{؇ꂲCx^bK<.9zgۅ)[LĻ.L65,%fN/n|;˦t9C(_Q5[!4QP-/;r
-r)Bq.|}{x&\Feg%''!L3Md|'[Zv{O`dd2L
-'\T.ݻ=f	T
-&Ό͌ e;wرc '|233+MtZzGgk\
- s	RܶAj[塽A%E_MVjv0) 0;2lW6}^3M\Y'[<JOOd"Ȱ0>7;<IYIѻCX#ˋ#TZ-dQ<k"<Q)C0 &o|4>W#3	=XE's|Q& R	 220[$_˒1;1KOO߿oqyZ裏n6DD#glr~(pypĕ˹)u[}+%kidFpa/+Ɉ ;CSJN˵1{VyRr6! SN}A+0T&(:04>:ݶY	 0/]<ׇ%qG69+WJطUFn2uDe@	P8QP"  2ǧL>ZvFXu.mxpZB,,%GE:tpX܌ <?fPQMes5V	0YȉWËQ#P
-(F#QB)dJ,su/lZ]˅gI01LE$]ZGk 0(QB!!@3&*`i7po"lR__OR92>>6;A óz3^Y8muZEB>`BFQ2!2L!,N(˱kl)Ra@z3;;_bzz} EI XW\(,V3(dq̚̣d7}׿xb{xL"c1d:#SdPhT
-F(dJCId2@ l5بafiz!`2\ `  0LBI,:A(g=y{ўHѫ*?p{HCɄF8~#5-"ARJm_˅gpYBsJof1'''#A ?F"3Kڹ6^aΝ;~@ ӟq Kw;M~E)?rGہf?8e}6[ NĒu^TVn3<-1oF[[[EEc=&<=fm-^P@(\h7=}艺֎KW:S|鍞9/A pHd / ma|q5V`@IŢw~|pjNGONEgg	H19Mk̝LOt_|w,	 bn1M	J'KVYXC-6_uZNpD[g')Ɖ1!O?D$1MR%m^njr\79]  D{YXX8rHkkW4K?iGgM<Bc$R]PR{}ͷ>Լg `5q*A}ttڷoΝ;Wo9MC`ϕ'/\qXJO)߹wqaqvw<~(3I0q/4jllFP$0''l^^
-⃊P;dtO4[!u$6g$S͋|; +^kW^"meg+%1;fn[OxY[߹6t<exxD?τ/!i혙7F}EL?rJݻ?Ț{8$B^3:x1k!Jmq}ۊ};{;?u~h3+yübEjxرfBs^e":'fl,GB⊢mujUrnA	z-ޢgײýwOnl燜AgidrzW:H<aQ펽;*r땋۞a~}f9zW?=k 
-vP''ijm$>lkMdO~ǇeVf>42=_3oXXOZ$Bxk|_i0ʯNHHxz_WjF77x=;=-]QD.1!zg_ Bڼ~%ޙ<G56_̤ SCz4Sollw;vb٫ن  $dSˠ&.wJJJz	  0P%6)[1eoT%Mi&1?Y   Aro_N-|yz[BR<ogQ?xؗƞYgr2NE  $9\^yۿyl\&skE:A!qe5%9IfREe_X4;${</$&G&g JNN>tPUU_z饉Uܟ92^̒D]˴{q bdl\:0a]YFZZ^vF\J`өַrssעf	 P!D HE
-qY%QbcP"\orq<PZ^Gct?  W^I^@;n-p0Abm)"ND07cn;IY%9%jMzL¨{XCϝass6/pM̈ fbM<!G2i"<|}Z?`\E"P*ɰG*D  ӵIr1gK"gӬ0iK}	$)3338cǎ8p ==}5wlJfitgopɀk'BQI4wPۭ0<rPz`29t=0iruv_i0N>}YB{56 ݓ &&*IAi;"0sipct7;|asxl$4Q9A  Lnqv"05	3,k	gD"Ჹ,*F! tcHU{'&:fK@søuѰeR竨y.͢}~   a4ɒ-eЧ=- /rZ:ۻl_"WҩԜngmŸ`$Wm."\*,ҹ\CFVkGGT*U.bP]&HISGtHzM[<7<I2''8!oi*	%VUҨT;r]>o{@Ysnϝ;F߿e_\JO抩Y	Yw #,0v߯m/Kq.Kw8/,SvGH]{Dq@@g	[+>OTҹԶb!IxZIȜs1}XA0sEtTDrN-GAܧq [N1Y
-p.*٧0 -#T%  *F'3iTXM.4/Y<m(]ϗҩ$&N@q__VAϪ+ hp 1?fX^x&B)fjvoNR(ΟA环4-*U}@`  CߓS( "E/ZOJXz޷~ðÇWWWe \^dee'GC>G2 -$7O4~) O BdQT*   2A !=MM T:H+a3zd6?maK:}QiYy͠   
-Dfr{Vr|. !$$caے/51}ufer2mm;
-	
-@~W҉DbDe@Oh  Ѐ1(5Ӱel S̢GKȊߧJT"Q
-. XҤe(ԯwDQT(l988h4E"L&[^yz] S-$QWy{U0\j˖ <.@֤H `7!4")3Q  $R$JQbKM[#G._,SWW_I=|%%Eel4u5}4f1wXyo]$++4Ѱw`E.UyJ%g0!ßFQbѐ{Jdeh@o@(ff=  
-&1DA\6 }d*=3T E0e" F^q
-JSuZڗSN)4 BPd*䔬$ @DcJA B\qḌR  H&C 	d0bq҄T0&/A3㶘M02rJ9Ƅ ɔL. "0699H$r=&079&eQ5V%b}~:] PR$11=+/?3UcĎ
-d" 2X@. $*TJJ)m͹ϟ?/m۶JJ_^?:?o>NK"!L,8Aٶ<7q|P`SW.؜ܢ
-!$&(23dt ʕ)ZI#0JTjE䘡S!/@
-eZfn^VZF%
-HD#AB3y	R1!0 T,Kӧe2Z$A0BgG#7e!?ȀHTQWr=Йܲmp&!Mw2^Q'c/Iܜ@ɫReee4?vʊ///߼H 9Փ$QɈcbxrr`P,I8u6
-!$f95Xqw0a(/篕D"SSSgϞ|2L޷o֭[4333eeJLF d*vǾy]Bmh۹s)e͑0 "a\d`lT$aMQ'A)wH~X<IA$+at?O}ra4vK
-zD WxnətCtT*5''B444kKKKw֧# .J6<CvwuvLj|׺KkǏMHHZ:88ʪt:"K.+(v$lDffgMg'?ԓ2J8ry4q9dNughAi)JMKK\r 
-@@OWdVUfjtasQ}SaZ;;;ϝ;g6ҪIK.**p0DA$2C[\V0ʓOXpWS,-&x-βKo28%!=hZժ뛚LfRRҚnðlp?uԅDk!DQ2BgٌD:h^cU$644撒\:}}aյRVVk[ S"cJ>ɓM4A#`7IRѕꘜq@t%%%GU<k-)))L&N_p̙3&.++k-S8  Gc6:p#ŋϝ;wރj4_q\׷VTT|msS 8b"G)9MEUZťk^65ϟgkVux---KKK[l)//H$kA(jՉ2"
- $Ug%$x:_ڵAA}<!!a}><<|%
-R^^R})AH8)+Ce[Ňak{čT*ݶmRiJJZoa@uV>>>~I^UUT* DaB-kSST v֪
-䞻lvڥKF@ (**ڲeZn3;;[SS/V`rKJJl!x9`ڙl|ɏt Hnn˗b:g  BN*644\|ܹsZӱXUPx"BhVS02P6VkkkkSSBNNNUUUIIZ ŔBdn :<>{(V36asArj4)BGQ4++K&	K.?~~~|FL   LFp&2Č`0\s*n#p:]]]}}}Hd۶mO<L&[p8<>>by>K_ C'v/gWFUQڭ3*L$Iiii |2\/Abmff>0eeeZV,VH,6_:?0J*yyxz}WWWssD%%%uuu
-b=eM&ӹsptd  ԕdT8$rWcqV5< 
-Á h`` u 0Lr	5LX,EQwr~kڰ$1Ax!fUg&K6I 澾ƎݞZSSSSS#˿'fswww___^^^iiRP1T
-/\<(,7My/kjI.YI8ٳgBas P(iiiEEEW^eXbx:H bUVVfddDIݞbWlb0yEn թYI*\ 377wڵI*ZSS裏Tuc;::T*UUUWz#QiʢY<yWNm_j4t3|q {*
-ET.,,,,,Z||:.990^?000??t:	P(_y Ŋq+/R$
-VSJLL0Ϝ9
-
-x={BY𞞞˗/|gyFT~r;A(JLܵ#_}R33oD"!;o8 nL RT*uvvvzz/d@ H$3333sss` D&ՙ^qgh|ưl	(Pn^?88GuvvZ,.sκl6>;Az?x<,@ "sKθ1c>:J.Uu_Hb	R`baqn{nnj.L30s8C"VVVfffVbzŊF@
-E;[:̋KK0p    IDATKVÁ@b\~ʕ+===eeeٳ'11q}%  455o߾fָD܁C"${O%Ync͔-u.IH-_C%8wCCCϏpjjj0{\ðJڐe>}ٳ}}}JRReI~MMSR*-U*ClY#k7F|WWܹsgee%N_8Ξm۶}HhԺ`pyHi){GXR(J;g{8(2 #L&c06`0mq\VKx__`B  ߏaؗO[~+ąg:G΂uؑH$tϟ<yrxx8>L&s,pBBBBMMFܵ p|߻drL0v~4#A$,M)gѡ&$];HgPQ8.A1;w=PXYY9===99^___2P(
-a)))ׯ_Z$???!!bdG)d/!Ɛ=  &{vmMe@ |&`0L&
-233SRRt:]aa!BY%ܙP(}5EkjjZ*]cB='L3e\tfjlXўԖԵ)>@`¬ylǮ9ĸ7>)ʃ=zS$에r:::'''tZDBPղX0Ej&ƠFMǧQA\@59~vvh4Z,Ŏd2cw!vR(w~5&̴n~E\fV$h&OW/n:s))Bq>vɸr5!nRRRjkk?zFeddOd2c%%W^kii!III555J2*ry|!	Qy4i>~Hb#O(Z]t:m6|vy``ptU___SSSXXx#'8n6Ϝ9cZkjjV?sN'$OCfwƹEtfkW4	pv0-\,nd֛CGNN9wŋ\eff7??qDbqjjjn^JJ]DSHrnַHyianb~=	@ 
-E"nwLmaa8p8TjuuuQQP(d
-b[hljjD=4WIѰ(E UH\F P<,!k-aiΘmsV74]tD"shBBBL<--MՎX,ٹ9^?;;/gHEWR]^YQYnO7X9k9Jq  v}yyyyy9G";33c)))IIIyyy999p宮k׮tJHV[I\A0`Ձk'{GYyUi#gZZӓSRri{#l6{ǎa`` 
-1L\d8p Aׯ_7MM~qd&#}$Lo]b}}hG F&bqh4GH$c񉉉e RL&S"UVVnx8t:^ގ ȁa-sIZn-vrWV<tSWzG=jms!!n:TSO=u'N<"hJ
-l6qf$wYQOh$dS0CP(
-`$5Ƭ<b8???---==]*d
-`06e xƖ6/_C`%`[+K!us,&՞-)m/ܱ{WjVvX>/\gm{/|> 3gl۶muUWXD>z&鴉T/
-GC-p!\n7ވ@;oa2fY,t:=&wrctL	vptwwx?US}g~WT=HܙD)wk&S .&)4:W&X?!E,ð5|jp8d|O(C`pż0>rn_\|1'=FSOP8P(Jޭjjj VTTlJFZ§^;<T_9{t%1308>$Utfh>=NϿ꫗/_{a0cFtzC sO>3X$~9nNBwO0?wh)ΐeY&Dw?<O/O]Cc7Ĩ޵.KL!.?P`0$Ȉnh4cy' L
-=+0%+Iv#0#wFus_nO8nmmp?|pVVWs;S(d٦AghUtPG'?3x([͖79@L&3?t۷_pNoٲE*ݤH9|ŁǞ$A`DӖuҥP(e˖^'Ozf7u_&ʓܖS;k:SBx	}㝶߽3R!oCۣC;SVVvAPxĉFvhD*dr"OaOvx<'N,--UUU8p`WtLK,/OQ,hh5ku?H,KyfqVX=n  @jjs=W\\>}:6Ocu/~7pzLo~^QG6rWH$AڻwF6=[ǖF	]{O\HJUgg%/   ={8޾ϋɩ^m.ڶ`UJmݞ}QKKۻwoVV&Mz*ODP.6In@R؏ @89'^- JNN~'^yNLV]]T*yꗃPdx؛W;&g9 Q6ys]V	 bzȍ(޽zenodn	$&3öpbDP[Ӓk&Tۿ={+vءR6n2-zB3A'_VW6zuI,,f:;;V=5@(	D@hFK:<l}+gVx۷(o>SOPR~?s/$7Tω襭2͝8q^Fk]^7OHbyl6a2Zb3J`$n֐sb;VѣGWVV6C	<+޳xr	f$Eեܹs333EEE:iBHۥ
-/(<quՁo+#g,&!$n.Ǐ}]fo`Fi(ms֥iG~پ/!|G8&$I[ѣ.1a$,ޝɀ   GA"S}G<,<cGя~?t:=ɵ!   joM/򑧿8PU݀*7իW~۷o_g!W>_"ҏNTV߄-NAMK`ljp\
-\.ՂU~8AjjCX,ٳgzY
-c_h0 	J9{ti9Z} h4{W^MOO/))-;  Լ?wKj}\yaa\HcVhwr[a<ZZ4u+_[bL&󍎎~`zo5,J޾gg̼Ӎ{=E(nmmr?x,a7IDU~~XUWǠZ;ޤ
-1yl!t~w<	^|x >/JK&Hj,Aj^~垞[n0l}M B&oR0	<Z_WO`}CCCy>{꾶    П/tՑN̗  D$hihu4T+Hh|jǎwN'D  xMJ%1C"jjj~?811	|IB$;O @0Hi?KY-~+/_|񩧞rUjIiFAwNg^r.  w~RSo^*y ׯw~c`FMNN-,,ܶmeH4JFHbrlj$A466^td2Ԕޗ1_4  Mh$ 9u)2xEޥQ/ͼ7'sq`x<N`~L1ɓG5͑HHT\D+Q @`"[-pCCC֭[>Z[ZenzOeOt17ӵeWfQV5-la	X 'mqݛ}_ŋvIG}@&':~ ^{ŋ;vT(MY75tb'/޷OX_48g~x}inBVs_Z>    B  A`4ƍAT*UVڵKP=zˇ[3B¬\5K+T(7	ˋo0~ bn|ۻzDSW	֮erœ~k{JǼ/>M*y Q L w 
-<UJaZV&'ONLLdffɫ^y	e'lC0(rwM<POONNm۶X U;$Csv8ЩWz$U՝-Kn_(t[-L1MyP0  ςV=B˓{zz9ߟ{nFbV7PUj~'g\kԥE.Xŭ"8{<rҥFO$$$uk3tgp(72]@:}2m>Qqbdloœ%귪qo Do<рu*aH$@P^^8<<|ڵ/))YM+Ff
-2EKzHTΞgͻ`( saaѣϟH$[nW*<a    PEfh?MXæj6x^Y0;vW?My0|bxುg
-AR*l%D"q\&f\\.7GrJAAAqq񪈎E!+H8ecu|!J7erjL&?T?&>WjW%K_2*eK[@RS J;D"@"H䖧l$UJ$AFFFOOOsslj:ר!+>8DP8CQ~raL<wm6Ғ`~:[lH$T*֊YMp<t4>ιoMW>>gn}Ū9J0;
-(,w0=l0LRR-[222:;;|MUVVV[[wlt4~   ޣ|6 h4qGy$++K$qM5p z_;V<[Ö{L+$#d&?)M5k}|.dk;&x%O=UDY,Fc2`aaa~~??8NeeeYY/L<Ӯ`0W7t	W~yffBh4[&$$T*P&g};?h=ˠ/$.w;q\@>0:/>\gVϸt`~v^`Ԁjd&W@P(dXIII###cccvwvvV(&&&T*Bqw
-͓޳/0:%I+.^0l[^^NS$TdFPf`CVU\;;]-8[_cZntTPOKbe*U/	<An 
-BPtBϟZ6###--M&Q(*JP$\QYp('{}S>@ `XGFF"J*..NKKL&Kt{KDJ5""XJN,Rt'IQnEaZH{ªZ^$'ba --ms3d2X,HV+++;;;?#&Y\\"|I:#eo{0,~:+3S+aC񑑑.@Rv!bX,r(>0VP&yAQ*TZ?k>R7';h_k3f [b"!{/[U Sdn`4zB"l6Fd.+11QVñ4??I6XjTzkd#iklpL!bxkS,gfffVVVp',X,+JR)
-b [ %99}9T\~[Yd @vF`^/@d]wf e4;rnLbr4D#g'W.Qن &;A`d2d29Zv:KKK333sssKKKVf-..:9d2.74tx6U}/i{H|^v{<ifb1LhT"d$Bt:NB0Ⱥs?>w.!	2|1Ckї;A|S+Kg{
-}:E LyLjx^ ^Ixg3BP.T*aL&Ғbt\yB$ZoqvH+&JΈe%w)h4_! q H$bfsl닋JbH*ÉŗU +)3ref/D	ўv/zۇ:9JÊ_ڄen	^?7gr{ @@PjF:9i~kˇ@ܸ?P(L&H9Vpnp8]5gǮN?09 "PG[{ 2Q(d2 @4FHF:|seۭVa0(
-F͍5x<'l9jpK*wQF~f)HP {Nr=EP  
-yIDATٱ$9"n=a܍Ka+XYVN$  $T,egfa%{ A (JRY,\.bmlvǱ౻
-G,+--h!aovox8MD"{u @
-l0cǎƵx:3mvھo?tLәtI8v<i|6`.6 !i- ah?ٳ!y^o6M&S6lR	5n<0f|b1UbgS:iW`q0ƊlFrd9uxdi1ZBP,Ǳ!`ՃՓ/ErXaWO`_N|2 rټ((ʲ߂1.%|hiaV[ZY-u<V09}-9%x N/ܵwh_UOb>XX<ga:1B$b~~amoD1A_4,ֶ^6fUc#r&/$I,+VkjЫJԁ)esN[&G!bs7=m}_`Z6瞾9KsCsC.\J "ξ,-_;AS"~[,Rdb1g(b\GiR?voJE}y~%X3g~Rscl6<'g|̲Es821PI
-$+_SN;[QxVJEKO4rbkU(Ģ)SxMS+3#Ccצ?+P~TH4ih;d7
-e}~Ox:BC/|n;:hݿkQ`pW<:yB0B)φn'tWWU#'ّq)I};ab=7`m(iyGܕ;krG<Bb>l;}K-N)bL5>bR~64q='vҔb2lF={;Jgt:m>3l:FC#XYWz{6gwao*wB!$%SwM
-9Dlfai"-L< !(_ΈYZF4Zg4
-탫}hV-`-UۣWc7/\,X6rhp;BH"OmKsE,D$_lQ00B:6z)?wŞn_hMޣGuuhV_X^^0ZQ趖PUD4:kɓ6QKpҤwBvO0zn'HQ*>5B3l&յ͸o)UquwX J 2G pfF;xrhrVei"Vb.&G	bPLU3킑e	!ݔPU=0]Umz-=j5nЏg2QB&/bAv;mY^b\*
-Epx32<?i-Dg0U1u_C}|G5X|fwaz.	0)UA%q8{C[upZΑMB	
-2t)#j%DP
-loivUMz.bCwt":9~]<.+M.;8>A*Q*4Μ*HJ}!Zv},8.dܱM#̇g|eD)֯nMrǵ@*I"4ث(n:U7s7buAu୶ZoxWENP`̖;-a^l&j*ұ䍅`%
-C˔;<i{;ݻvLG+ eKbZaLX[]읃ZcsyMZu6g}AT}*wPaL:_fLcu5wv5;:P4k\AA#xm]<h_~M,߀TYVΚC?j5:^S=6õ# !K*kwGȢ*J*%J-rI.WdYTU1BHU"5o_k`*ƉG:dBF::@r!p#*p>Styvi{m4ڛ1KrGVmPa(Mk:_f_;=2?^9
-ֹ0A`M&ˍ!!)&"\L @*VoYuCߚZ
-F\PW0Cr L&m63*R(ڪݻRD<6BT()ؑeِ]@ ;X/uϽ^.K0Mgޠ  
-  -H  |s/
-oV  #eyrr   Xp8L!N>]x   7|szz?̙iQ¢
-    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/WithoutPrecision.pdf ns-3.20/src/netanim/doc/figures/WithoutPrecision.pdf
--- ns-3.19/src/netanim/doc/figures/WithoutPrecision.pdf	2014-06-17 10:34:00.543635851 -0700
+++ ns-3.20/src/netanim/doc/figures/WithoutPrecision.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,106 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*243Q0 BCc30˥h^_a <	2
-endstream
-endobj
-4 0 obj
-   44
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 138.399994 136 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 173
-   /Height 170
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xSpAvU(VTʭ?奝M8veL)C0l6Ӫ)a451N
-7K%- pf=e%9GrI<9a    ͩSl~{7{]vӵ!e{6u*1ѬaW"0o?e_>|8\ƌAm,Z]q[LQj}wO<ta
-4=izn#|gXkk(>@\w;r ΀d4PVBWĹ޽l3@yt~bH|klȀޫ#5a8].͝S52oP	{8`DpÞ7Y}5PҥN?Q5訿xg~6jy(섫AK;y#+_MOs!_v֪dgqմbߵ[cǲ_w#`\Vk
-2ؼ#󟯦7x	[lvE4n{O` #7rXSn2Tr \T&8lDQx9 g߄{29lD-LRx1a<	'C~6aN?QO?]Cș]N $\Ctv2rZ0M6~|M2(g㿇(*nrk!C0Gu>Ins;R#s˱w;q'"#^KRΖA`|r
-Mog;P8x]}H[i^8cXFM7a#q$`tv~II=+3A$ǝk3\CԨKs䳐M~"bhpO>Y::pwiE[[3;0r5}TTWʺu>qfpalַw{a>oqn?Ny*d2fnm쭄MEXqFڸ=B<2y-_0˶mldQ	w_$?aӧJ58tp㢫KT´iAh*cJ4e2N׌,ֆ.
-XB҂fc
->tF'	JX╚;UWJ6fTp?3.YJ:{N׌ˑ#EP嗳7tf\N`/*ᢋث:]3B:˗a}wC^x!󟝮!hT!W^{ߣhcvv饢17ﾋ>9<փh*bgJ:rN׌p%lVkFH0z4FƪU[0݄B?197ۈb.v5EN׌3E%̘yr1ML!(KY6t<G
-J`/tWtZt֮Ű[xqEH'c%,^L	]q~m:sw	Jfo5#GlQ	?O8uY{,&-[$Ud @	jwZ[˫ Q	3t2?߉(Y@oJh?K:>0M;q!L"?cp=RA'cSֳĿiS/0]EQ/y'.(k1E!<N 퓰@ϥyY[T/wIhZLk 3d"s w H&~>X(1URVn>v$ơgch@--E=r>'y&}X\|vIHBO8+ 5TyHWHc2м)n' 9.|&͛,(a"Jp@e=i4ON)qXZr}i<Ó5I2ÕhA	7܀kD0WPMӱ`0p1>wpJf=HA	W\TUR#pGZ>,	&g̰Gy>'0bMP¸qF42MY<';=ƃzf t/d='͇7V|\Mcl;ácO>H]&XJAZR%^~O	AtN̄=?!R]\8~>t.OT;ӟ0s&%gB2C//(ko;Pfbs/>v{1H\!.=A/Nb?1c08T<R Wp<D	*ôre\VIJ!+eMHG} sX6l,|BӟJ͇HTqJtPQ*,Y6[JX sxuFO{0nM.R}ѢhdH.z%̞y}:cd#TE!fC:Rpt]lb~v뭢s}YC)zT# JDu(fpeh(*Izw}W`PRr;yO0v,	B4K(<-Ajls`PL5r$D43wǨ$z\
-ꉕ4dP>㗿X&r֣MYPIW_ų;ߡ\21RP&TLb%}o
-J;pI"d]є
-8e<),([aO6wyfxθɉQ`XX.sKm.s8[PTBg'Ky7;(xɡ	YG֯Yf'-Cɝg$Q(zu\+VHE#D!d4Bib\?!%j ѳTH'TɰID%̟OC r+==EJ\nwiD%tuU91%wunjl,Q	ӧ={$V-xņNa|[XL4ټy&Of۶IJӣb7ᗙ72D%OsbM:O=%&1Ypfy+^SҬuبQb_͊e#b{Sυp^Qٜh6E%w_kر}[J<8z,Qbs$}>yx^yo$<زy҂رX_DLq	+n6[}'ϲػx~_!Eʶ6ѤS⇉JZc=Do}{	W`.09P/+tX5+IPvU kS1O5e8by{HoO  (0kA[0TqESCO$>ԥ4c?N>\NU\ Nv5śa6ĉᇅ|<j£ks9#3K\'6ɐ.x΄~.jJW5ER-T>NM
-.WFҍ?Oy˦?&; \N~C+c0YOm{xZiUSn<	o~SBNu7LCX>0!ė-teGB>m9'U'6%̘jXZ]1:`  AU5ȀߖpԊkBxOEtC}q|{_kk5|Z~!W܀T*5֗U**ncUɀߖ+%M#Ds`Yl;?.&[^[;apy!D,hD˗׫MF>+:<Lũun]TLѯ섫\knXN',@]HC1w,/R)ŷ@n&l>
-_m~>$KMFK'1CkyÆ
-9T*G`\OZo-9Q\:f~pKzpfV
-%U~oKGׇBݱo%a8ږ̞l},J׵DơY׬+Da7@RJų?wR n dϯOň~W*s9;Dgʾ}ŵ!2=2෢\}B:5
-=Cc<~iJ@-~WD!§0LO5{s/ijۓ.ח-b&0_p0df]C;aHJ":!v
-ޜ
-0nA	|\Z,FcDg)c.1Ŵw/n?j̹	߼d|Q^.`Ur9<%zx&xP^/1c؄	]L;<&C;J!ōC`ZWo֮Ȅ%K-;`X+4Mz"Hj<P#7C&r2i!sD-쵇ĔI3~;∳ '/Qݤ	;@'@u)uU A2AP(1a%4f!x<`$7\
-R&ȫ:LJ9RpK&C(9  8{;A:
-endstream
-endobj
-7 0 obj
-   4730
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000005430 00000 n 
-0000000157 00000 n 
-0000000015 00000 n 
-0000000136 00000 n 
-0000000464 00000 n 
-0000000257 00000 n 
-0000005407 00000 n 
-0000005495 00000 n 
-0000005622 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-5674
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/WithoutPrecision.png ns-3.20/src/netanim/doc/figures/WithoutPrecision.png
--- ns-3.19/src/netanim/doc/figures/WithoutPrecision.png	2014-06-17 10:34:00.543635851 -0700
+++ ns-3.20/src/netanim/doc/figures/WithoutPrecision.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,65 +0,0 @@
-PNG
-
-   IHDR         PX  iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       IDATx{|U(7^V
-KKWDYP_/+ﮮ]~V.Fрd	*A^S4 Հ1URh2@L!m6ӤMd&m9̯gy9Ϥ$<b; H: $Ht H:#@ 2u7NBm-PTy%!4]޽xMlL46E8s◿DvU"G"j08/GC:DRYc\TUb>+YYXKt?	aM＃Qۀhcdl"uRt`6cBlk0f>yy],A"t
-̚uPR
-uastW 'XH$ۃ9s{x11UƨQ)M"Donlߞ0 x}JH(u|9.\HdUر|2%D?wߍ{%LnE_[],+m`r?\5"ߡCIif$Gj@]xӌ{J׉*ɑ)H0^܊ ǠiB=8y2%!b.kqˏ,r`x:8HQtPXV.@k7`2<M?nlp	ѣcy&lbPԴ5{`(ȑ(|b %cPָ3$_?=HA@`w[㇘:,!Qtp2$R{.658?ǵ&tKd}~a^uqXxosNOɆTTD@(OGC[[.(?VZDmH]XAQCP.PD4gd SpwfB%'O<=X\@>>\lYz+t1/}cc_x~ WNKm:55o={0o^?evO?Ei)*~g%Fle2~(( _d1gǹQL?I D}=mH?)egSa!efrTPpG׿;2mڔDWgk[Μ]8x_ga0v,JJ0`YS/ߟ[C&ܣ6y^_0kaBBŤ%H]&
-:kͩ;H.7Scc2RDAVrޙ?GYN#'')HtJt!ǏqSjEQHiHލS9ݻ1y2|>Q<눖'>++QZ#4̗Krϱ}H>UDΛgŪUHoHm-nk׊V#%'>06o`㷿œOSCBDNz+c\ /y 3fcl9?!HRK NĬY8öm6L$ )?hعgs}|H>RN y3|c<~'㣏D򩷓: ^Os29ӱqxn^Rczלőᐃq+ ܉oٳ#`D$C/̙[۰~91 QVc,-֭4H$z=a-.Ʈ]fq^Lď;It ض1>Iq'xI: ur JH>
-z<4֬AFFy~;F|~b{{wLвeXBC` Sdj5֮MJZ^L#G0s&c67_?|x 8u
-gcq8lۆH$z=c@3c<x8xP$zA d2X,xQo1e
-v|Q HOgA̜7ϭBAK曜}<#O=OlϮ]Pp4xENIީ fıcYظQlz TWp7܀wߍ+ipr%p80c'(-"'NQQAyxJKwUE~L)dfbZ<xn	OCDD]]pU
-?[z:\)X: " 6+X۷SA?KcIYDk): 
-V4l_
-wIuu^	]A""mBv/o$FT!<fCWЍ7pt예N:u L5:rJ5ZB;R6ȁBP0.# p4 T:n3j	F+!46Ғ%|)}0mћm->k9 kpF+)=#Lz=HD71N%`t~=`7$͛)70<.ر;2 Xlee~;> rO<G AOQn:g;3c=,k-;,WtVa:wN DDL|f@tiPj7Z+Pϱn/_4DPЬzÆXi"X4WuZCm-͚ŗ¥# (h7jQ*w?kX:pѾzz C0FtQ(Ĳ,f zG
-Pl8\/z-AK	h,/)
-b:H!-{N_K*(qC/9TXo-mN-t LpgeT+6"Mn70gƺKYpl	w?p}0U\1nތn©S¸|b|0.C!9CӦ[ӓtY X5.=0t(}X%AФ""bJ)hCc#O|)ӻWwIqauX
-y4!ښ{
-5^M)ddК5՞R]DD+[!(Pi.T.&"hV7@'c@E!.%`k~W8
-E	do̗}ŋ0R^SZ8LFZ@ew.=rձKGptN$&T&5u,^"r
-(0)N
-[\H =A C6c P
-9/u<v_
-#F]zL<jѪdc2*9d2j'N˅cn.~<1~LΝy=bW	t
-@m_b=&W<SZU&YWꀈu2mơVA!+7lT3A:۠T<DnѪ :?݅zާ֬n~)gB>tFKal\ަY(m6i *KaD
-<C^Mie*ЋۂAFÇvszFB]Yk-*AW<p"-X A.I|B>+ #@Bam,*hmBz𥐛K[B'^0N%1{Q*KPK̿!KתU{ުƠBߴCqw c۶Yǔ[u@`\SUh߆&A_8Y\t%|)̟O.BdzBdȚ^ŗ`?xs;}Ņ+wkW@R?{bqL3gq!
-"PȒj E©S4e
-U;	.}A2ֈOڡW@i~@ɲ4w._
-Çg	
-DcVZH/v]'h<<?KWVnQ#-MCæM$˅B~0נ4`n**KaY*+}i@GH]/6}_e%]~9_
-eeT[={H#(3r׏#23ihhϞjS:hl
-6Ӵ^#jDEu5M	T]"F~.(ѣj꾥"b|27CԴ:ٯmQ0jkX/*+jjhTϏ4u*tZoA6eSES_OhQah|?KO,GV@H |[W'!xR?PMe:hi:\ 逈(1(7;AaT:?+t4<vB:z4Z]a< %"Q	Ċ6ab<׈uNW_m$* !eiT	9g=yxES,o(Y$D hDjEG<6J@er&R$p#3].!G\</ 2!]	hn"bF &	K9 yl*NrCK-?;yt<GqYMt[(v"
-zy%jMki/ {>%΅IaܸUI:萐O 6ƩNNlɎ6=KټG؈?@{83Avv<:#kkN(I1TTP~*<LcA~TQMA,0zC~9KY&B"cT83?'cA^^nvjB+\tݹ5Y3KL5sº	h'UV` |֨㿆% p}>`I9y[Q[8jn˿fvל޵~yZnQMBC;8_^U'0 Iɍ>& F|?{֕iiE|UAQ4T8ˑ%݋҉ql4tRrv6<v
-Rk0D^5`IT z~tٰ'ְRa!mʫMA`N *@crS80&lEh5x!7̅K*ֻ87~bqs}eӾ1lg/ظRec6CB7&J}ڝKKveIGV=X~bB-R@'Pw2QǇBFFbj!#>PUy1cc!	Z]1(W1;ϏXY
-CzCDǌiRSzBhi$$^7Z(sJ c~iK:H,PDz ^Ǥi+VtM
-SOuPt
-@	M0,mcʮ}!KRhA^Xqˤ4^C8P؇ܲ򸺍L õl篲jZCDn;H&^kdfRnnpc/ 
-%kTȽҢETTDyy$~:.#rϧi"bF@銡kFv!HNZ>F.@39Ҵ`@\qGu'1՟rZݦk^:S<V]YkrDf&{cЩ<NVI큠TmZ<j&W`_- 侕CJϽv֌KSfWg%zy{eY*}UDJҁ(X:kӾwXWpAq)]v˸Ĭl
-R{f]O1I"Qbʕ'?j¢E!n$D}XyUqVڵ_~KW 2NTiͼE/(pgDpCAPúZݢ$H R@"	@ҁDI0M2Yԅ    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/doc/figures/WithPrecision.pdf ns-3.20/src/netanim/doc/figures/WithPrecision.pdf
--- ns-3.19/src/netanim/doc/figures/WithPrecision.pdf	2014-06-17 10:34:00.542635859 -0700
+++ ns-3.20/src/netanim/doc/figures/WithPrecision.pdf	1969-12-31 16:00:00.000000000 -0800
@@ -1,104 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
-   /Filter /FlateDecode
->>
-stream
-x+*243R0 BC#=K Lsҋ+L\ L
-endstream
-endobj
-4 0 obj
-   57
-endobj
-2 0 obj
-<<
-   /ExtGState <<
-      /a0 << /CA 1 /ca 1 >>
-   >>
-   /XObject << /x5 5 0 R >>
->>
-endobj
-6 0 obj
-<< /Type /Page
-   /Parent 1 0 R
-   /MediaBox [ 0 0 139.199997 128.800003 ]
-   /Contents 3 0 R
-   /Group <<
-      /Type /Group
-      /S /Transparency
-      /CS /DeviceRGB
-   >>
-   /Resources 2 0 R
->>
-endobj
-5 0 obj
-<< /Length 7 0 R
-   /Filter /FlateDecode
-   /Type /XObject
-   /Subtype /Image
-   /Width 174
-   /Height 161
-   /ColorSpace /DeviceRGB
-   /Interpolate true
-   /BitsPerComponent 8
->>
-stream
-xlG'GS]Oq SlKh_Yd,Z.UCi+3jP~V׺n{\\1`z8,d7iάy7o:    W7nnk;9s3o_woxrU?Pҫh$mL!,mJֲn4opn62RyDbt b U0q~: A8L Uw,`}@ǌ]R+;Ν]\Xƍ˃/X+gtIChY
-
-%KX+rȃCXX++WM~a}K@N<!e#	{9w-91gN6x$[rwFZ*nf~ˬo		٩o!49Ow_:"TNx䊪v֟DȂ_ie=tJ""N{%E7t܌Fh2BOۗD O9'ٌ_6.S[OB~YϐbX'*+#xЯ 48ej&b$
-{y߾`EhZa#G OoEva"H=-'{7eOaa={X?.]W&ݛh}Do"jjTVt'@ihЏ#k^VFG{׮=x8G"aIgΜ7nܫʰ 5!B\Pn|X?>}ҥKkaQOk&$T-b555ϟ={v5B-=K˯;.0h@MI$d{)hv6ﾣ(۲k.Y7`vɺ! {~ÇuC TTT<C?|]] QeܹͻYz<-_|ڴidu[ _~ѧNb=;v(..oX7`O (,,ܽ{7 	Cٲe 9w<+4@J,3g\hѭ[X`͛7~Yf]zu[ pL8w:tѣGY7`'|bXϺ! {bQY7`ω'FoXq؞̥KNxK?CxlOgS+o8Nڵ╖3ea /Y7`Oe&۷JUPoȺM #ktng zQ\z-qt~5.\ꝿܺukɒ%3f̸iz</Ϟ=˺- {{nMN$i~p޽r@{Br,IJJJoN. a'PӧǌkQ#Wr"ꪬ|G-[8A
-JCMMj3glP"dhpA99@׿>`"AcTnpٽ	XHp9lVS'̗7>7&6(a+BM¢V'G-ˁ̮Ȍu9)7:rQȦ 	ڡ<BH@vcM2JCm&6eIgpw^*
-$X\r%Ld3vI>`t		7TWWc5:#yg}*++MȀblʪʒ7Q>Znرccd0%(߭^l#|(m?HR߶m[II$ *hZSY"N;شI*pX00ػwoaaS%Bq@d	ˇl	Z3uVj5PX9^h5'ʖ={vk֬|_LH>-rʌ3,Yr2l3@A˂xvYN2a'=Nk]~ժU&M)Td l`Rw)--=v튁Lhq=|?gR{GK9-	r>`؆K<U]ڱrVb*mΧh4:rȷ~$\ghѪH^G]ŋ?n"{s2T
-GqO?O>Sׯ_P@% ID8HݬޔݩE6}4瞛:uK̮hDbuȚھ<B
-!yDn1o5ɓ2xT"B\J$FZ#@iE(ŇSІ(6/Mm.Dn[,O?Z@3ZőyhBNsAD͂Oa=ztС!h
-Ԙ89JD9چқ'NK/Dv7!i5n1+yWΚ5gy&~-d^@ X-Z4sL|K-"du.aYry<:^z	x[7@9mFH$o@We˖!C|:F%kry!\ށ4vލ@ @Z=	7@z=ajG^QÇ4*2Z`%#*ȝr=%IG#-ũSFShI܇NG,I
-Ji6/_6m5Z,UnUh0E57nܘ7oO<B8D-xW㩫[bŔ)S***̯@2:~ƧVZ.61Z Ggl3r4]bvYTTtAAKHvP*-ˮ]W
-2KDyfV Z̉PtZ8mB"].\0y䲲2ňG\)Ԩ+#~
-P]]={C/ă/bn?hVZZ6}*
-5"]͇fx T淧çt:Ǎwj5tv;&pRLB#GЬh&mIGSLDމİ(D¶eϞ=VgWV'Oi$$pREO=2\]MҞ9S^o_}@R\Q$N%9$7Cߑluk׶:ud햻h)OinQC/bTHlG`kW!T߿ChYiS"NmN;DOfgϮ3}  +1H|2_o]^&K0DI[El+Sh]֑pL#yGVGFU~0"	ï~êhqwp69~;rxާ~ AEqlQH֩{ {O?Ӄ!312<m7/hR"dU+Vz|ІJd7[\:kBSZP]_
-Z8wPVXv7k<H
-BO 4KB@Hx)h?!70ߝ~~}=YMC($%F7vZj #;vѣ:B:em[~d@E+18$?l̆/_p証7KI-lLAI>#K0oM	y'>L2vLKA)$E3z'%8+///b8m<Sݺ.K4	8Ԩ+|?7I;7?MnAHyYWoYK惟>g$qJHՈreuՄ	y|*d
-0$0J<9ll6%Ș~hmiH|*ٗ[!chϰKaMLQΨQdxPHU⛗Ye)aH $A^Q:It^MҝfN	ҷ7B(ܑD<q,6+Ź}?clMƎUkMI4$!VKg޻7^ĽD^->8s&slhHҀ$tNHR㒓#挾qCL
-~i@QN# d>jJ`!Tw%fOaSwU&vx$'@'ICV5sP$[Da#dbZ*DHpLUI/ِ#K~X%r20GMJ~\D'x10     0
-endstream
-endobj
-7 0 obj
-   4527
-endobj
-1 0 obj
-<< /Type /Pages
-   /Kids [ 6 0 R ]
-   /Count 1
->>
-endobj
-8 0 obj
-<< /Creator (cairo 1.10.2 (http://cairographics.org))
-   /Producer (cairo 1.10.2 (http://cairographics.org))
->>
-endobj
-9 0 obj
-<< /Type /Catalog
-   /Pages 1 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f 
-0000005247 00000 n 
-0000000170 00000 n 
-0000000015 00000 n 
-0000000149 00000 n 
-0000000484 00000 n 
-0000000270 00000 n 
-0000005224 00000 n 
-0000005312 00000 n 
-0000005439 00000 n 
-trailer
-<< /Size 10
-   /Root 9 0 R
-   /Info 8 0 R
->>
-startxref
-5491
-%%EOF
diff -Naur ns-3.19/src/netanim/doc/figures/WithPrecision.png ns-3.20/src/netanim/doc/figures/WithPrecision.png
--- ns-3.19/src/netanim/doc/figures/WithPrecision.png	2014-06-17 10:34:00.542635859 -0700
+++ ns-3.20/src/netanim/doc/figures/WithPrecision.png	1969-12-31 16:00:00.000000000 -0800
@@ -1,65 +0,0 @@
-PNG
-
-   IHDR         8l  iCCPICC Profile  XY	8UQpM<,s9cf"k⺄4R$2BRBHB4Q)oxϳy:k묽= pג""Ba& ©{3CAW7wA(F B"GEYھh> )E Co9 * My{Y).p&x< D @E1 D= XpߠpU@/ lX؞M`IdI"ſֲAQ9g~G8X"wvnd9|"74jhDpܴF;S!NEjM~N0g-Y,J2r%Vttcgl`ċ`W?Q1F6I;6i$Z\Py|%j{PkSLenEt4%DEL/P?t-FƢ)vE_o4_/
-) 
-> A` BGd""	3yOt>!R@ԟh]6
-#]g~Vt@>柵
-J#]'S~Ko*i?b	k5Jn:Q-G&T=D5Pݨ_f!
-ekȌ~ zW(/o*4*AyKtDR0XZ*1=PEF:Uo2fk-!è~MG7G	
-
- OV",/+6cW{~+BOAK@3]
- ͇ĢW+r4%y Z$.$r IDOe>0;-pn`7b@h$D
-)pMt.0&
-A8 !.H d eH҅L +r (d(ʂA
-:tjA}4}aL|8 k%{p$'\-pgE@ѡQB(9erG(4TUjD|q 5EDcD ZIsD@gϡuzCbd0Z+& bnaڑyŲc%ꈷa}lvqdp:8[	GťpWp͸~/Wƛ$|ߏį0шhќ)iyJ3ABL+ACHLHK[MN;J;OGG'LI.].5to~ҳK{Gӟ/O~@ 	*FxE@dg`e8ȐP𙑆Qрq7c<cMƧL4LLFL$LLJ̶a̏̕Xp,,&,,),,m,(шH&&K	V,k0k:U96mllllwQ'o/sqpqXL|ι%eU5ƍɽw;,+6'K^Wמwo1o7"?___,?;>06=i@@@GA6AP\sBBBBzV%kDhE4DEEZEDDEDD_шi[w?"^/>%)a!/Q%1*Iԓ,|&Ґ
-:/+KJJK?eddbd5eedbȳ['VUpWTTXWTUU,QQbQڡԨMYZLbrPA6m~.lV%ZQmU]SSWUM{ijidh<hjlEպE[N;DR{jv%t.
-z^#/՟426bPѐbxpHh}cqq	9W¦Usffc-3͇,,s;w[+i+U5lMM-=m;f'aiwg'v;^O:8I:E;:3:{8W8/d*wrvrkpǹ;/2ufׄGǠgܻCwb"yxxWzlIEE9,yW7wO/o_?*@'tt^`NlQйK!!e!.5a0,!!1y&rbI)<H-}8MnL~̏{o2ǆvI75A(!1~@|9rp١DĐ'IIYI.ɍ)|)R6;\ʐJI:}(hўc*򎭧=NWLI_ g<>t<	='N^8=~j0S/<9+>iuقig<ٖSxl\܆<ѼSy=7̯)-8Vt|Յ|._2TW$^S-)P\yYrE)wizZYxx}
-JʓUpUt+W6TU_aIE_x75nV׊"Jnڨx&lwOޣro9y~ٖw^#mm|nôӠæGZn?x\ߥU׭}[=j=uO՟6j6mׯ2`<Ys}NCCþS/B_|}re(f4mi,﫢Rk1~;QW'R>>L
-LVL)O5MN~qb&bfe6ϒksJ-cklaBaW~p(seyre*n5wMjqr}t#lc#D!m( |+C7  2~7|H0 CP]tbqoZy:4+F]I,׉lng9Gx"x3
-6-KIFHI(+*%*VIڶ_SCZJvh']u=}X`ȰqIiYyžTp k?_[_;ߝTN'\κhl43D}=$lz4JxHF56:#&{q	~:%'V&$OU:btXXڑ_Nf<㔓wv4{قBjJ/{R(l2WMѾt=Z-:zjéUw7MzoyՊn>iuu>}Tҥ5ٝDxO^>|_3g?f5^pX{fW~y<~[.݄e_'_N=nX;s}ڧ]mnAc`Uul,'HnՊd+NƃVvn H`e`'RYϰ5Oppp;/&@$+][L[|D1<"brB핶)'Un"`ƤBH#TSMh=#EQ慨!.RL}W-Fv4ZYZيwPXBq%9RdM{k{g<;7?0:uXH˰#{ƐH=A`	KOPۯw!r"5)59?Tg8SZ3C9_rA9|9w/N$ adR꒚k77kol(]ygif-*mb}caգ	]~6O4z$
-qsp?.2(90B͘E?לss:cˬħK_~PG#Ղ"p(9Cy{xOlPhEt5Fӊu.)˴tV1F&3"X1lXvFNq.Ung P~WAK"HF%vQ<\BC-pi1!H|¬btuNΨU7Ti9m=PJnކ~Ppި8Ddɴ,\|V:ܖ`̮`gЇHgfSdKw I_|W|OE
-a\=0B&,F>n)ޛ+JX> 9Ēȝ$,rX+UQcvi锌O<qj(s"39빴yS
-(9%_n+UV
-]p}&vȺCi4}ȶo;1>*~oeY۠0QWo&O/|#lX5  pYTFΏf  8j+@'dV` He
-N"Us"Pt	=`nXE<nR(~T94t##cI4b0'".׌Żh`;|HE7DD?Hp%20L3F2.3032HMYYWٲإpxqprsrp4]w
-q	bD;ĎJKHJHJ),CaҠeTԸ!YU,Hӣ̠Ѱ[&n߶qݲҪM-Վ^AQ܉ߙӅݕݍ]pnk]x^?s@n`ЌΔQ7b$Fv&8Xȑr8Ѻ4Tʪ.̹ǐE̒ҍ
-ݪW[o+lc3E-c=}Fϻ;_'zCԧg|:uaRƏg+*P  v0?	"u:,[p!^@jvT
-5CΕ=" caj8]px9}Z|:F2&;ID&f?K=ѓb-cc[ep$pqVKS[#(h.$4"\&B5c'#%e'-/C$#W#@UtSUSaP+G-ZmS[W_jPfXctɐ
-V6v;ۗ;:98pYvcve;7I_ɂ~BØ.j$;.8)i{8#S$'9V.Qpd~@Vi♻gr)@-Y^tIek7kK2"T4ϵ]m?޹S5f;dixMD$fG_ύ|cW__#gr؊޺Mb	}`K8GP(T*=D?A
-c#m8.\/aɤe-SO!
-]XY\Bolr9wpqy>	
-U	]ސeSpRU:\rg۸^]YK=9]VFƻMrL{	6;,_XmlP8lnWRg_d@P3U_t^ب}r	8ecݩ3GH7̸t:{Q349g{Ws]Eŗ.KUP+?]	tBUs?Vվcacn'OWx:3雡w?p,(<c5)9_/sEǖ)3rrJڪj˚ځu3s;6J6?_EydƼ8 , 276V66֊bcl5L l~F) 8P5.dF   	pHYs       IDATxTgǿ)?Ph-jEG=RSE[ڟ7a6Su=]ƭnpo-ujl\+v`51uݨKCl%{BI$a>g7>#"@@  A
-N
-mm~3(-Bc#vcaHDG#%ÇC,ԩa2(H.mllƍر܃74X};X\N㏃X<jDF g.;_'Ez:ȑ{7VoIp| '"
-̙UL/~~\eKSj8|),v`<ܻ?Po7ob*Jܸ ? 4̤7t)0oĮ]1%PI(EM)>s{J?~a k0Bm-V_mLډŸz_a&dJ,[DhmeWCI!1IGkk
-p3)< ""m`K[ 0O3IalsM0"#).a&l̍ʁ=bbM	p3)x)|(:Bpƍ֞d ' ps*:=pc)Lի{@? blkAJO'`x   lV Xtf+N" -oV=>aς`'Fٳx&O rqqo4vӧO >8t(At]6騨@Nȴ߾_dɒ?߀Xgߓ_'#FxE$Æ(T`hN[Ԁ"NJMMUՁx	R=IN֭ǹs8}V+~b1ƎŃ"+n@  =t񜜜˗/oڴ)@(}ekv`vJ L0ĉO<DmmΝ;#2 [ Nb re˖-X0ۮwjNԺz5hoo_fEQ/_f5~w,sښ8LW?OO~n0wo-vw^Dd,R ;v,99@)? |růow,ŋgffn߾=A@:) hjjZ|ytt޽{c}`ܡ-!!СCFJ|3XF) 2dȮ].\yEm폿/)))׿$	v)Bt:]RRҁ$	nco***.]nݺիWKR `rrrd2ٖ-[D"!!# 2l̘1qTTA:ʈ#{|n DGGӧO'1) D۶mS(YYYgϞ;0 ؿD"9r߁	!,BSRR4߁4JUUŋWXo~RS$ ի?Is:e0t(1   uu7Lq45@Q8|cSz#q 0(ۍW^w6@*/P#L
-ؽouab
-5D
-JѵeTk+r: (-Y|-& 998v P.֭[| ̜	?Ν}[qp&#ںbŊDfUNНGy[7j#D**--mΜ93g;ɰNNـjIIIWRp
- XzoxFcjj;8Z!@΁/N8qƍ
-!E
-S@n_?/ʁ XFW6|M$5?$Q˯_dɒ&|kB\f N!5J\"_}iӦ\<(@QܵjP+s2yZkg_[lIKK;<랂2 pI  Suz:O
-P,#Hv*%@/ߦPbqnbJK$={*HU
-Ut=F)68UEiii
-B~@tiP*gӶ\^$!nO6mժUxe0	r(yzhJ=cR,2Gm0Ӄ|kPX_x^/̞=ugACIW,NM;%*ci,r3jslņ&Md!ΰ#@qՊh#XJ9땀~$裏RSSF#&ؤ@!鎯nPyt:/j
-J#	B!JJJjܸ㑠B'.s1 AF WiBf YGrX
-.Pt&isS'oLnݺ[nq3̵vDZZZ;IC\tiZZF	M(Л;t `HRZGo}ғe(|~/؞NLL<z?hѢF@PK.8b̕W\`۩X,޷o_FFƜ9s.]Ķ;	5 LxƎ_sMBX
-n[	 n\zo>D_BK
-.!8R_}Urr'|c$@lFE(^R.͖r,b?~˺'	1)Bq{CV[b.cq. 3?YQWW7cBƺ36	9)8:F$t\L455,YƍcPL6T>9vB<<伲Ǔcxaxhjh`5Ҕy]zU_,·}ehwdw{%VBQ%
-LJ*/bwޙ0aBUUNJ(h J i7!.!WJFw$<@,{b;Ñ#G$g}ƙǀ&R nji7{e,mBjRM?}̙{ｷuO#\@!A t]=ڪU"n6hܞ,P[[7	ypwzegUifQKCCܹsz꩖n<0ۦPm;N:Wm@---<LvvQ߄2mZ
- dF.
-ɭ[^tkg)XTOiR9ǌSQQOg)xRnTBG58 Ht:n2`WQB&\@I:jeik	r'Nܹg>2xYzvBBA9R r#Cl%r ӷ+A^JzYVXjX˄"BhmBnЫ_s͛O<].N1IjHW\N*͓6^ܶyllo{ϝ;eo[<0xJàd\-$7o7n\ee%Gf0Ji.Z2k cǎq7Q
-} h8jz^"ݻ{׷Љ$z4w@!m=nsIǬBmk֬eS0A
-GTmD=5 \Z Zظ`e˖577zQ=Ԗ>k.\.jSEЙp7F 1,KS,/<xpȑlc lti}AّyfZEgQ5'M<3Z
-"ϺtO8IԃZNMM=u7zL*
-RtVs<Ȩu}="UUį&)ƩBy.BhɣSNjɎ$;Đh@Ht4!dБ /, rӠJ;!f\5L<ywia#qq~xn@mi)PHRjV'!Ĩqpo]);^vUUEƎ%}KƎ%ww!H<	i<xꥹyٲe,h?H|<sD$>=z륀Lq 4f!ĢS( 2u{{3DE!'Ne\c\f U	!.l( -6ZlPr\Ff0r$vͫmA
-ඩ( ORۉV<}DE`/ ~H!*<Wۂ|9\N}:r._1 (1mA
-~@kPh:j@Z+IDD/lU
-d)SEI_ۮ:ya{WJ'5)s 	.khi)+3[c.\~-yjt*pX43
-9A
-~0d6o~3t%&{K4|g(&1f^$  )PZd$*+{VF!_uw^j9WHXtTbr`
-!. .2vNrHۅ?P8.%-z!3@_;z4sw"H! Ԝ(2}' /<;+EzaZb2loe9&""[	GU4D/!n͟9n%	&A$
-1D892kYiڡO/7T)dk+kQQq	6HHNTddDG !NYyIq@V\>LqǓÇ{xܶ*pbZ݄Жbt; H!=ݫmA
-PQ@&8!.A)P>}Fa40yNj[84r@vTFN	 W,UYR1c<nc%}6NIy7!n 4#i*+^VIv	 kbU4r@a-;k;*>>	L)pf* +*N$&?'&һKA+p/sN'/So\4YPU"̙HXDD "6Fq11_{B;f.7?sώr[Fk@,D ON' $&bd<bc}I/,ڎ7i4!NN~?Y;ޏ)SRpVY>twӊhR{Z /^+.LGL$tfuq˻]e{#H!(ٿvkLf$=E `s{XcNZSߎI\z쎜xAR"XPZXEEC e,z"H!XINuHlmɚ+[
-aԪ 
-][rWR\8rb,$!HA Ё )t HAB69&1    IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/examples/dumbbell-animation.cc ns-3.20/src/netanim/examples/dumbbell-animation.cc
--- ns-3.19/src/netanim/examples/dumbbell-animation.cc	2014-06-17 10:34:00.544635843 -0700
+++ ns-3.20/src/netanim/examples/dumbbell-animation.cc	2014-06-17 10:33:13.903995884 -0700
@@ -94,6 +94,7 @@
 
   // Create the animation object and configure for specified output
   AnimationInterface anim (animFile);
+  anim.EnablePacketMetadata (); // Optional
   
   // Set up the acutal simulation
   Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
diff -Naur ns-3.19/src/netanim/examples/resources_demo.cc ns-3.20/src/netanim/examples/resources_demo.cc
--- ns-3.19/src/netanim/examples/resources_demo.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/netanim/examples/resources_demo.cc	2014-06-17 10:33:13.904995877 -0700
@@ -0,0 +1,205 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: John Abraham <john.abraham.in@gmail.com>
+ */
+
+#include <iostream>
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/netanim-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/point-to-point-layout-module.h"
+
+using namespace ns3;
+
+AnimationInterface * pAnim = 0;
+
+struct rgb {
+  uint8_t r;
+  uint8_t g;
+  uint8_t b;
+};
+
+struct rgb colors [] = {
+                        { 255, 0, 0 }, // Red
+                        { 0, 255, 0 }, // Blue
+                        { 0, 0, 255 }  // Green
+                        };
+
+uint32_t resourceId1;
+uint32_t resourceId2;
+uint32_t nodeCounterIdUint32;
+uint32_t nodeCounterIdDouble1;
+uint32_t nodeCounterIdDouble2;
+
+void modify ()
+{
+  std::ostringstream oss;
+  oss << "Update:" << Simulator::Now ().GetSeconds ();
+  pAnim->UpdateLinkDescription (0, 1, oss.str ());
+  pAnim->UpdateLinkDescription (0, 2, oss.str ());
+  pAnim->UpdateLinkDescription (0, 3, oss.str ());
+  pAnim->UpdateLinkDescription (0, 4, oss.str ());
+  pAnim->UpdateLinkDescription (0, 5, oss.str ());
+  pAnim->UpdateLinkDescription (0, 6, oss.str ());
+  pAnim->UpdateLinkDescription (1, 7, oss.str ());
+  pAnim->UpdateLinkDescription (1, 8, oss.str ());
+  pAnim->UpdateLinkDescription (1, 9, oss.str ());
+  pAnim->UpdateLinkDescription (1, 10, oss.str ());
+  pAnim->UpdateLinkDescription (1, 11, oss.str ());
+  
+  // After 5 seconds mark node 3 as invisible 
+  if (Simulator::Now ().GetSeconds () > 5)
+  {
+    pAnim->ShowNode (3, false);
+  }
+
+  // Every update change the node description for node 2
+  std::ostringstream node0Oss;
+  node0Oss << "-----Node:" << Simulator::Now ().GetSeconds ();
+  pAnim->UpdateNodeDescription (2, node0Oss.str ());
+  static double size = 2;
+  static uint32_t currentResourceId = resourceId1;
+  pAnim->UpdateNodeSize (2, size, size);
+  pAnim->UpdateNodeImage (3, currentResourceId);
+  size *= 1.1;
+  if (size > 20)
+    size = 1;
+  pAnim->UpdateNodeSize (3, 10, 10);
+  if (currentResourceId == resourceId1)
+    currentResourceId = resourceId2;
+  else
+    currentResourceId = resourceId1;    
+
+  // Every update change the color for node 4
+  static uint32_t index = 0;
+  index++;
+  if (index == 3) 
+    index = 0;
+  struct rgb color = colors[index];
+  for (uint32_t nodeId = 4; nodeId < 12; ++nodeId)
+    pAnim->UpdateNodeColor (nodeId, color.r, color.g, color.b); 
+
+  // Update Node Counter for node 0 and node 5, use some random number between 0 to 1000 for value
+  Ptr <UniformRandomVariable> rv = CreateObject<UniformRandomVariable> ();
+  pAnim->UpdateNodeCounter (nodeCounterIdUint32, 0, rv->GetValue (0, 1000));
+  pAnim->UpdateNodeCounter (nodeCounterIdDouble1, 0, rv->GetValue (100.0, 200.0));
+  pAnim->UpdateNodeCounter (nodeCounterIdDouble2, 0, rv->GetValue (300.0, 400.0));
+  pAnim->UpdateNodeCounter (nodeCounterIdUint32, 5, rv->GetValue (0, 1000));
+  pAnim->UpdateNodeCounter (nodeCounterIdDouble1, 5, rv->GetValue (100.0, 200.0));
+  pAnim->UpdateNodeCounter (nodeCounterIdDouble2, 5, rv->GetValue (300.0, 400.0));
+
+  if (Simulator::Now ().GetSeconds () < 10) // This is important or the simulation
+    // will run endlessly
+    Simulator::Schedule (Seconds (0.1), modify);
+
+}
+
+int main (int argc, char *argv[])
+{
+  Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (512));
+  Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("500kb/s"));
+
+  uint32_t    nLeftLeaf = 5;
+  uint32_t    nRightLeaf = 5;
+  uint32_t    nLeaf = 0; // If non-zero, number of both left and right
+  std::string animFile = "resources_demo.xml" ;  // Name of file for animation output
+
+  CommandLine cmd;
+  cmd.AddValue ("nLeftLeaf", "Number of left side leaf nodes", nLeftLeaf);
+  cmd.AddValue ("nRightLeaf","Number of right side leaf nodes", nRightLeaf);
+  cmd.AddValue ("nLeaf",     "Number of left and right side leaf nodes", nLeaf);
+  cmd.AddValue ("animFile",  "File Name for Animation Output", animFile);
+
+  cmd.Parse (argc,argv);
+  if (nLeaf > 0)
+    {
+      nLeftLeaf = nLeaf;
+      nRightLeaf = nLeaf;
+    }
+
+  // Create the point-to-point link helpers
+  PointToPointHelper pointToPointRouter;
+  pointToPointRouter.SetDeviceAttribute  ("DataRate", StringValue ("10Mbps"));
+  pointToPointRouter.SetChannelAttribute ("Delay", StringValue ("1ms"));
+  PointToPointHelper pointToPointLeaf;
+  pointToPointLeaf.SetDeviceAttribute    ("DataRate", StringValue ("10Mbps"));
+  pointToPointLeaf.SetChannelAttribute   ("Delay", StringValue ("1ms"));
+
+  PointToPointDumbbellHelper d (nLeftLeaf, pointToPointLeaf,
+                                nRightLeaf, pointToPointLeaf,
+                                pointToPointRouter);
+
+  // Install Stack
+  InternetStackHelper stack;
+  d.InstallStack (stack);
+
+  // Assign IP Addresses
+  d.AssignIpv4Addresses (Ipv4AddressHelper ("10.1.1.0", "255.255.255.0"),
+                         Ipv4AddressHelper ("10.2.1.0", "255.255.255.0"),
+                         Ipv4AddressHelper ("10.3.1.0", "255.255.255.0"));
+
+  d.BoundingBox (1, 1, 100, 100);
+  // Install on/off app on all right side nodes
+  OnOffHelper clientHelper ("ns3::UdpSocketFactory", Address ());
+  clientHelper.SetAttribute 
+    ("OnTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
+  clientHelper.SetAttribute 
+    ("OffTime", StringValue ("ns3::UniformRandomVariable[Min=0.,Max=1.]"));
+  ApplicationContainer clientApps;
+
+  for (uint32_t i = 0; i < d.RightCount (); ++i)
+    {
+      // Create an on/off app sending packets to the same leaf right side
+      AddressValue remoteAddress (InetSocketAddress (d.GetLeftIpv4Address (i), 1000));
+      clientHelper.SetAttribute ("Remote", remoteAddress);
+      clientApps.Add (clientHelper.Install (d.GetRight (i)));
+    }
+
+  clientApps.Start (Seconds (0.0));
+  clientApps.Stop (Seconds (5.0));
+
+  // Set the bounding box for animation
+
+
+  // Create the animation object and configure for specified output
+  pAnim = new AnimationInterface (animFile); 
+  // Provide the absolute path to the resource
+  resourceId1 = pAnim->AddResource ("/Users/john/ns3/netanim-3.105/ns-3-logo1.png");
+  resourceId2 = pAnim->AddResource ("/Users/john/ns3/netanim-3.105/ns-3-logo2.png");
+  pAnim->SetBackgroundImage ("/Users/john/ns3/netanim-3.105/ns-3-background.png", 0, 0, 0.2, 0.2, 0.1);
+
+
+  // Add a node counter
+  nodeCounterIdUint32 = pAnim->AddNodeCounter ("Uint32 Counter", AnimationInterface::UINT32_COUNTER);
+  nodeCounterIdDouble1 = pAnim->AddNodeCounter ("Double Counter 1", AnimationInterface::DOUBLE_COUNTER);
+  nodeCounterIdDouble2 = pAnim->AddNodeCounter ("Double Counter 2", AnimationInterface::DOUBLE_COUNTER);
+
+  Simulator::Schedule (Seconds (0.1), modify);
+  
+  // Set up the acutal simulation
+  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+
+  Simulator::Run ();
+  std::cout << "Animation Trace file created:" << animFile.c_str ()<< std::endl;
+  Simulator::Destroy ();
+  delete pAnim;
+  return 0;
+}
+
diff -Naur ns-3.19/src/netanim/examples/uan-animation.cc ns-3.20/src/netanim/examples/uan-animation.cc
--- ns-3.19/src/netanim/examples/uan-animation.cc	2014-06-17 10:34:00.545635835 -0700
+++ ns-3.20/src/netanim/examples/uan-animation.cc	2014-06-17 10:33:13.905995869 -0700
@@ -47,8 +47,7 @@
 
 using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("UanCwExample")
-  ;
+NS_LOG_COMPONENT_DEFINE ("UanCwExample");
 
 NetAnimExperiment::NetAnimExperiment () 
   : m_numNodes (15),
diff -Naur ns-3.19/src/netanim/examples/waf ns-3.20/src/netanim/examples/waf
--- ns-3.19/src/netanim/examples/waf	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/netanim/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/netanim/examples/wireless-animation.cc ns-3.20/src/netanim/examples/wireless-animation.cc
--- ns-3.19/src/netanim/examples/wireless-animation.cc	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/netanim/examples/wireless-animation.cc	2014-06-17 10:33:13.905995869 -0700
@@ -170,11 +170,10 @@
   AnimationInterface::SetNodeColor (wifiApNode, 0, 255, 0); // Optional
   AnimationInterface::SetNodeColor (wifiStaNodes, 255, 0, 0); // Optional
   AnimationInterface::SetNodeColor (csmaNodes, 0, 0, 255); // Optional
-  AnimationInterface::SetBoundary (0, 0, 35, 35); // Optional
 
   AnimationInterface anim ("wireless-animation.xml"); // Mandatory
 
-  anim.EnablePacketMetadata (true); // Optional
+  anim.EnablePacketMetadata (); // Optional
   anim.EnableIpv4RouteTracking ("routingtable-wireless.xml", Seconds (0), Seconds (5), Seconds (0.25)); //Optional
   Simulator::Run ();
   Simulator::Destroy ();
diff -Naur ns-3.19/src/netanim/examples/wscript ns-3.20/src/netanim/examples/wscript
--- ns-3.19/src/netanim/examples/wscript	2014-06-17 10:34:00.546635828 -0700
+++ ns-3.20/src/netanim/examples/wscript	2014-06-17 10:33:13.906995861 -0700
@@ -24,3 +24,7 @@
     obj = bld.create_ns3_program('dynamic_linknode',
                                  ['netanim', 'applications', 'point-to-point-layout'])
     obj.source = 'dynamic_linknode.cc'
+
+    obj = bld.create_ns3_program('resources_demo',
+                                 ['netanim', 'applications', 'point-to-point-layout'])
+    obj.source = 'resources_demo.cc'
diff -Naur ns-3.19/src/netanim/model/animation-interface.cc ns-3.20/src/netanim/model/animation-interface.cc
--- ns-3.19/src/netanim/model/animation-interface.cc	2014-06-17 10:34:00.550635797 -0700
+++ ns-3.20/src/netanim/model/animation-interface.cc	2014-06-17 10:33:13.909995838 -0700
@@ -61,18 +61,18 @@
 std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
 std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
 std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
-Rectangle * AnimationInterface::userBoundary = 0;
 
 
-AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
-  : m_routingF (0), m_xml (usingXML), m_mobilityPollInterval (Seconds (0.25)), 
+AnimationInterface::AnimationInterface (const std::string fn, bool enable3105, uint64_t maxPktsPerFile)
+  : m_routingF (0), m_mobilityPollInterval (Seconds (0.25)), 
     m_outputFileName (fn),
     m_outputFileSet (false), gAnimUid (0), m_randomPosition (true),
     m_writeCallback (0), m_started (false), 
     m_enablePacketMetadata (false), m_startTime (Seconds (0)), m_stopTime (Seconds (3600 * 1000)),
     m_maxPktsPerFile (maxPktsPerFile), m_originalFileName (fn),
     m_routingStopTime (Seconds (0)), m_routingFileName (""),
-    m_routingPollInterval (Seconds (5))
+    m_routingPollInterval (Seconds (5)), m_enable3105 (enable3105),
+    m_trackPackets (true)
 {
   m_uniformRandomVariable = CreateObject<UniformRandomVariable> ();
   initialized = true;
@@ -81,13 +81,14 @@
 
 AnimationInterface::~AnimationInterface ()
 {
-  if (userBoundary)
-    {
-      delete userBoundary;
-    }
   StopAnimation ();
 }
 
+void AnimationInterface::SkipPacketTracing ()
+{
+  m_trackPackets = false;
+}
+
 AnimationInterface & AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval)
 {
   m_routingFileName = fileName;
@@ -291,12 +292,6 @@
   Simulator::Schedule (m_routingPollInterval, &AnimationInterface::TrackIpv4Route, this);
 }
 
-void AnimationInterface::SetXMLOutput ()
-{
-  NS_LOG_INFO ("XML output set");
-  m_xml = true;
-}
-
 
 void AnimationInterface::StartNewTraceFile ()
 {
@@ -317,7 +312,7 @@
 
 std::string AnimationInterface::GetNetAnimVersion ()
 {
-  return "netanim-3.104";
+  return "netanim-3.105";
 }
 
 void AnimationInterface::SetStartTime (Time t)
@@ -330,6 +325,26 @@
   m_stopTime = t;
 }
 
+uint32_t AnimationInterface::AddNodeCounter (std::string counterName, CounterType counterType)
+{
+  m_nodeCounters.push_back (counterName);
+  uint32_t counterId = m_nodeCounters.size () -1;
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseAddNodeCounter (counterId, counterName, counterType);
+  WriteN (oss.str (), m_f);
+  return counterId; 
+}
+
+uint32_t AnimationInterface::AddResource (std::string resourcePath)
+{
+  m_resources.push_back (resourcePath);
+  uint32_t resourceId = m_resources.size () -1;
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseAddResource (resourceId, resourcePath);
+  WriteN (oss.str (), m_f);
+  return resourceId; 
+}
+
 bool AnimationInterface::SetOutputFile (const std::string& fn)
 {
   if (m_outputFileSet)
@@ -644,8 +659,6 @@
   
   std::ostringstream oss;
   oss << GetXMLOpen_anim (0);
-  oss << GetPreamble ();
-  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
   WriteN (oss.str (), m_f);
   NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes");
   // Dump the topology
@@ -701,14 +714,7 @@
                       AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n1Id);
                       AddToIpv4AddressNodeIdTable (GetIpv4Address (chDev), n2Id);
                       std::ostringstream oss;
-                      if (m_xml)
-                        {
-                          oss << GetXMLOpenClose_link (0, n1Id, 0, n2Id);
-                        }
-                      else
-                        {
-                          oss << "0.0 L "  << n1Id << " " << n2Id << std::endl;
-                        }
+                      oss << GetXMLOpenClose_link (0, n1Id, 0, n2Id);
                       WriteN (oss.str (), m_f);
                     }
                 }
@@ -722,13 +728,35 @@
         }
     }
   linkProperties.clear ();
-  if (m_xml && !restart)
+  if (m_enable3105)
+    {
+      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+        {
+          Ptr<Node> n = *i;
+          NS_LOG_INFO ("Update Size for Node: " << n->GetId ());
+          struct NodeSize s = { 1, 1 };
+          m_nodeSizes[n->GetId ()] = s;
+          UpdateNodeSize (n->GetId (), s.width, s.height);
+        }
+    }
+  if (!restart)
     {
-      WriteN (GetXMLClose ("topology"), m_f);
       Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
     }
   if (!restart)
     ConnectCallbacks ();
+  if (m_enable3105)
+    {
+      m_remainingEnergyCounterId = AddNodeCounter ("RemainingEnergy", AnimationInterface::DOUBLE_COUNTER);
+      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+        {
+          Ptr<Node> n = *i;
+          if (NodeList::GetNode (n->GetId ())->GetObject<EnergySource> ())
+            {
+              UpdateNodeCounter (m_remainingEnergyCounterId, n->GetId (), 1);
+            }
+        }
+    }
 }
 
 void AnimationInterface::AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId)
@@ -861,10 +889,8 @@
   ResetAnimWriteCallback ();
   if (m_f) 
     {
-      if (m_xml)
-        { // Terminate the anim element
-          WriteN (GetXMLClose ("anim"), m_f);
-        }
+      // Terminate the anim element
+      WriteN (GetXMLClose ("anim"), m_f);
       std::fclose (m_f);
     }
     m_outputFileSet = false;
@@ -989,7 +1015,7 @@
                                      Ptr<NetDevice> tx, Ptr<NetDevice> rx,
                                      Time txTime, Time rxTime)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   NS_ASSERT (tx);
   NS_ASSERT (rx);
@@ -999,23 +1025,10 @@
   double lbTx = (now + txTime).GetSeconds ();
   double fbRx = (now + rxTime - txTime).GetSeconds ();
   double lbRx = (now + rxTime).GetSeconds ();
-  if (m_xml)
-    {
-      oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), 
-                                fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
-      StartNewTraceFile ();
-      ++m_currentPktCount;
-    }
-  else
-    {
-      oss << std::setprecision (10);
-      oss << now.GetSeconds () << " P "
-          << tx->GetNode ()->GetId () << " "
-          << rx->GetNode ()->GetId () << " "
-          << (now + txTime).GetSeconds () << " " // last bit tx time
-          << (now + rxTime - txTime).GetSeconds () << " " // first bit rx time
-          << (now + rxTime).GetSeconds () << std::endl;         // last bit rx time
-    }
+  oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), 
+         fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
+  StartNewTraceFile ();
+  ++m_currentPktCount;
   WriteN (oss.str (), m_f);
 }
 
@@ -1102,7 +1115,7 @@
 
 void AnimationInterface::UanPhyGenTxTrace (std::string context, Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1121,7 +1134,7 @@
 
 void AnimationInterface::UanPhyGenRxTrace (std::string context, Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1159,13 +1172,20 @@
   NS_LOG_INFO ("Total energy fraction on node " << nodeId << ": " << energyFraction);
 
   m_nodeEnergyFraction[nodeId] = energyFraction;
-  WriteNodeUpdate (nodeId);
+  if (!m_enable3105)
+    {
+      WriteNodeUpdate (nodeId);
+    }
+  else
+    {
+      UpdateNodeCounter (m_remainingEnergyCounterId, nodeId, energyFraction);
+    }
 }
 
 void AnimationInterface::WifiPhyTxBeginTrace (std::string context,
                                           Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context); 
   NS_ASSERT (ndev);
@@ -1195,7 +1215,7 @@
 void AnimationInterface::WifiPhyTxDropTrace (std::string context,
                                              Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1210,7 +1230,7 @@
 void AnimationInterface::WifiPhyRxBeginTrace (std::string context,
                                               Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1249,7 +1269,7 @@
 void AnimationInterface::WifiPhyRxEndTrace (std::string context,
                                             Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1276,7 +1296,7 @@
 void AnimationInterface::WifiMacRxTrace (std::string context,
                                          Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1305,7 +1325,7 @@
 
 void AnimationInterface::WimaxTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1324,7 +1344,7 @@
 
 void AnimationInterface::WimaxRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1343,7 +1363,7 @@
 
 void AnimationInterface::LteTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1362,7 +1382,7 @@
 
 void AnimationInterface::LteRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1385,7 +1405,7 @@
 
 void AnimationInterface::LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   if (!pb) 
     {
@@ -1417,7 +1437,7 @@
 
 void AnimationInterface::LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   if (!pb) 
     {
@@ -1454,7 +1474,7 @@
 
 void AnimationInterface::CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1472,7 +1492,7 @@
 
 void AnimationInterface::CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1494,7 +1514,7 @@
 
 void AnimationInterface::CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
   NS_ASSERT (ndev);
@@ -1523,7 +1543,7 @@
 void AnimationInterface::CsmaMacRxTrace (std::string context,
                                          Ptr<const Packet> p)
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   NS_LOG_FUNCTION (this);
   Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
@@ -1550,7 +1570,7 @@
 void AnimationInterface::MobilityCourseChangeTrace (Ptr <const MobilityModel> mobility)
 
 {
-  if (!m_started || !IsInTimeWindow ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
   Ptr <Node> n = mobility->GetObject <Node> ();
   NS_ASSERT (n);
@@ -1566,9 +1586,14 @@
   UpdatePosition (n,v);
   RecalcTopoBounds (v);
   std::ostringstream oss; 
-  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
-  oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]);
-  oss << GetXMLClose ("topology");
+  if (!m_enable3105)
+    {
+      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]);
+    }
+  else
+    {
+      oss << GetXMLOpenCloseUpdateNodePosition (n->GetId (), v.x, v.y);
+    }
   WriteN (oss.str (), m_f);
   WriteDummyPacket ();
 }
@@ -1594,17 +1619,28 @@
     return;
   std::vector <Ptr <Node> > MovedNodes = RecalcTopoBounds ();
   std::ostringstream oss;
-  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
   for (uint32_t i = 0; i < MovedNodes.size (); i++)
     {
       Ptr <Node> n = MovedNodes [i];
       NS_ASSERT (n);
       Vector v = GetPosition (n);
-      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y);
+      if (!m_enable3105)
+        {
+          oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y);
+        }
+      else
+        {
+          oss << GetXMLOpenCloseUpdateNodePosition (n->GetId () , v.x, v.y);
+        }
+    }
+  if (!m_enable3105)
+    {
+      WriteDummyPacket ();
+    }
+  else
+    {
+      WriteN (oss.str (), m_f);
     }
-  oss << GetXMLClose ("topology");
-  WriteN (oss.str (), m_f);
-  WriteDummyPacket ();
   if (!Simulator::IsFinished ())
     {
       PurgePendingWifi ();
@@ -1615,6 +1651,19 @@
     }
 }
 
+void AnimationInterface::UpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
+{
+  NS_LOG_INFO ("Setting node image for Node Id:" << nodeId);
+  if (resourceId > (m_resources.size ()-1))
+    {
+      NS_FATAL_ERROR ("Resource Id:" << resourceId << " not found. Did you use AddResource?");
+    } 
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseUpdateNodeImage (nodeId, resourceId);
+  WriteN (oss.str (), m_f);
+}
+
+
 std::string AnimationInterface::GetPacketMetadata (Ptr<const Packet> p)
 {
   std::ostringstream oss;
@@ -1645,6 +1694,24 @@
 
 // Helper to output a wireless packet.
 // For now, only the XML interface is supported
+std::string AnimationInterface::CounterTypeToString (CounterType counterType)
+{
+  std::string typeString = "unknown";
+  switch (counterType)
+    {
+      case UINT32_COUNTER:
+        {
+          typeString = "UINT32";
+          break;
+        } 
+      case DOUBLE_COUNTER:
+        {
+          typeString = "DOUBLE";
+          break;
+        } 
+    }
+  return typeString;
+}
 
 
 std::string AnimationInterface::GetPreamble ()
@@ -1708,7 +1775,6 @@
 void AnimationInterface::OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
 {
   StartNewTraceFile ();
-  NS_ASSERT (m_xml);
   std::ostringstream oss;
   uint32_t nodeId =  0;
   if (pktInfo.m_txnd)
@@ -1727,7 +1793,6 @@
 void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
 {
   StartNewTraceFile ();
-  NS_ASSERT (m_xml);
   std::ostringstream oss;
   NS_ASSERT (pktInfo.m_txnd);
   uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
@@ -1753,22 +1818,29 @@
 
 }
 
-void AnimationInterface::SetBoundary (double minX, double minY, double maxX, double maxY)
+void AnimationInterface::UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter)
 {
-  if (initialized)
-    NS_FATAL_ERROR ("SetBoundary must be used prior to creating the AnimationInterface object");
-  NS_ASSERT (minX < maxX);
-  NS_ASSERT (minY < maxY);
-  if (!userBoundary)
-    {
-      userBoundary = new Rectangle;
-    }
-  userBoundary->xMax = maxX;
-  userBoundary->yMax = maxY;
-  userBoundary->xMin = minX;
-  userBoundary->yMin = minY;
+  if (nodeCounterId > (m_nodeCounters.size ()-1))
+    {
+      NS_FATAL_ERROR ("NodeCounter Id:" << nodeCounterId << " not found. Did you use AddNodeCounter?");
+    }
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseUpdateNodeCounter (nodeCounterId, nodeId, counter);
+  WriteN (oss.str (), m_f);
 }
 
+void AnimationInterface::SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
+{
+  if ((opacity < 0) || (opacity > 1))
+    {
+      NS_FATAL_ERROR ("Opacity must be between 0.0 and 1.0");
+    }
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseUpdateBackground (fileName, x, y, scaleX, scaleY, opacity);
+  WriteN (oss.str (), m_f);
+}
+
+
 void AnimationInterface::SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
 {
   if (initialized)
@@ -1798,6 +1870,16 @@
   WriteN (oss.str (), m_f);
 }
 
+void AnimationInterface::UpdateNodeSize (uint32_t nodeId, double width, double height)
+{
+  NodeSize s = { width, height };
+  m_nodeSizes[nodeId] = s;
+  std::ostringstream oss;
+  oss << GetXMLOpenCloseUpdateNodeSize (nodeId, s.width, s.height);
+  WriteN (oss.str (), m_f);
+}
+
+
 void AnimationInterface::UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
 {
   UpdateNodeColor (n->GetId (), r, g, b);
@@ -1809,7 +1891,16 @@
   NS_LOG_INFO ("Setting node color for Node Id:" << nodeId); 
   struct Rgb rgb = {r, g, b};
   nodeColors[nodeId] = rgb;
-  WriteNodeUpdate (nodeId);
+  if (!m_enable3105)
+    {
+      WriteNodeUpdate (nodeId);
+    }
+  else
+    {
+      std::ostringstream oss;
+      oss << GetXMLOpenCloseUpdateNodeColor (nodeId, r, g, b);
+      WriteN (oss.str (), m_f);
+    }
 }
 
 
@@ -1896,7 +1987,14 @@
   NS_ASSERT (NodeList::GetNode (nodeId));
   nodeDescriptions[nodeId] = descr;
   std::ostringstream oss;
-  oss << GetXMLOpenClose_nodeupdate (nodeId);
+  if (!m_enable3105)
+    {
+      oss << GetXMLOpenClose_nodeupdate (nodeId);
+    }
+  else
+    {
+      oss << GetXMLOpenCloseUpdateNodeDescription (nodeId);
+    }
   WriteN (oss.str (), m_f);
 }
 
@@ -1923,22 +2021,6 @@
   oss <<"<anim ver=\"" << GetNetAnimVersion () << "\">\n";
   return oss.str ();
 }
-std::string AnimationInterface::GetXMLOpen_topology (double minX, double minY, double maxX, double maxY)
-{
-  if (userBoundary)
-    {
-      minX = userBoundary->xMin;
-      minY = userBoundary->yMin;
-      maxX = userBoundary->xMax;
-      maxY = userBoundary->yMax;
-    }
-  std::ostringstream oss;
-  oss << "<topology minX = \"" << minX << "\" minY = \"" << minY
-      << "\" maxX = \"" << maxX << "\" maxY = \"" << maxY
-      << "\">" << std::endl;
-  return oss.str ();
-
-}
 
 std::string AnimationInterface::GetXMLOpenClose_nodeupdate (uint32_t id, bool visible)
 {
@@ -2124,6 +2206,118 @@
   return oss.str ();      
 }
 
+std::string AnimationInterface::GetXMLOpenCloseAddNodeCounter (uint32_t nodeCounterId, std::string counterName, CounterType counterType)
+{
+  std::ostringstream oss;
+  oss << "<ncs ncId=\"" << nodeCounterId << "\""
+      << " n=\"" << counterName << "\""
+      << " t=\"" << CounterTypeToString (counterType) << "\""
+      << " />" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseAddResource (uint32_t resourceId, std::string resourcePath)
+{
+  std::ostringstream oss;
+  oss << "<res rid=\"" << resourceId << "\""
+      << " p=\"" << resourcePath << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
+{
+  std::ostringstream oss;
+  oss << "<nu p=\"i\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " id=\"" << nodeId << "\""
+      << " rid=\"" << resourceId << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodeSize (uint32_t nodeId, double width, double height)
+{
+  std::ostringstream oss;
+  oss << std::setprecision (10);
+  oss << "<nu p=\"s\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " id=\"" << nodeId << "\""
+      << " w=\"" << width << "\""
+      << " h=\"" << height << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodePosition (uint32_t nodeId, double x, double y)
+{
+  std::ostringstream oss;
+  oss << "<nu p=\"p\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " id=\"" << nodeId << "\""
+      << " x=\"" << x << "\""
+      << " y=\"" << y << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
+{
+  std::ostringstream oss;
+  oss << "<nu p=\"c\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " id=\"" << nodeId << "\""
+      << " r=\"" << (uint32_t)r << "\""
+      << " g=\"" << (uint32_t)g << "\""
+      << " b=\"" << (uint32_t)b << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodeDescription (uint32_t nodeId)
+{
+  std::ostringstream oss;
+  oss << "<nu p=\"d\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " id=\"" << nodeId << "\"";
+  if (nodeDescriptions.find (nodeId) != nodeDescriptions.end ())
+    {
+      oss << " descr=\""<< nodeDescriptions[nodeId] << "\"";
+    }
+  else
+    {
+      oss << " descr=\"\"";
+    }
+
+  oss << "/>" << std::endl;
+  return oss.str ();
+}
+
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counterValue)
+{
+  std::ostringstream oss;
+  oss << "<nc c=\"" << nodeCounterId << "\""
+      << " i=\"" << nodeId << "\""
+      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
+      << " v=\"" << counterValue << "\""
+      << " />" << std::endl;
+  return oss.str ();
+}
+
+std::string AnimationInterface::GetXMLOpenCloseUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
+{
+  std::ostringstream oss;
+  oss << "<bg f=\"" << fileName << "\""
+      << " x=\"" << x << "\""
+      << " y=\"" << y << "\""
+      << " sx=\"" << scaleX << "\""
+      << " sy=\"" << scaleY << "\""
+      << " o=\"" << opacity << "\""
+      << "/>" << std::endl;
+  return oss.str ();
+}
+
 
 std::string AnimationInterface::GetXMLOpenClose_NonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
 {
diff -Naur ns-3.19/src/netanim/model/animation-interface.h ns-3.20/src/netanim/model/animation-interface.h
--- ns-3.19/src/netanim/model/animation-interface.h	2014-06-17 10:34:00.551635789 -0700
+++ ns-3.20/src/netanim/model/animation-interface.h	2014-06-17 10:33:13.911995823 -0700
@@ -45,6 +45,7 @@
 
 #define MAX_PKTS_PER_TRACE_FILE 100000
 struct Rgb;
+struct NodeSize;
 typedef struct 
 {
   uint32_t fromNode;
@@ -58,6 +59,7 @@
   std::string linkDescription;
 } LinkProperties;
 
+
 struct LinkPairCompare
 {
   bool operator () (P2pLinkNodeIdPair first, P2pLinkNodeIdPair second) const
@@ -110,16 +112,25 @@
   /**
    * \brief Constructor
    * \param filename The Filename for the trace file used by the Animator
+   * \param enable3105 Enables 3.105 behavior. This flag will be made obsolete after
+   *        the transition period
    * \param maxPktsPerFile The maximum number of packets per trace file.
 	    AnimationInterface will create trace files with the following 
             filenames : filename, filename-1, filename-2..., filename-N
 	    where each file contains packet info for 'maxPktPerFile' number of packets
-   * \param usingXML Set to true if XML output traces are required
    *
    */
-  AnimationInterface (const std::string filename, 
-	uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE, 
-	bool usingXML = true);
+  AnimationInterface (const std::string filename, bool enable3105 = true, 
+	uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE);
+
+  /**
+   * Counter Types 
+   */
+  typedef enum
+    {
+      UINT32_COUNTER,
+      DOUBLE_COUNTER
+    } CounterType;
 
   /**
    * \brief Destructor for the animator interface.
@@ -230,16 +241,6 @@
   static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
 
   /**
-   * \brief Helper function to set the topology boundary rectangle
-   * \param minX X value of the lower left corner
-   * \param minY Y value of the lower left corner
-   * \param maxX X value of the upper right corner
-   * \param maxY Y value of the upper right corner
-   *
-   */
-  static void SetBoundary (double minX, double minY, double maxX, double maxY);
-
-  /**
    * \brief Helper function to set a brief description for a given node
    * \param n Ptr to the node
    * \param descr A string to briefly describe the node
@@ -297,6 +298,21 @@
    */
   static void SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b);
 
+  /**
+   * \brief Helper function to update the image of a node
+   * \param nodeId Id of the node
+   * \param resourceId Id of the image resource that was previously added
+   *
+   */
+  void UpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
+  /**
+   * \brief Helper function to update the size of a node
+   * \param nodeId Id of the node
+   * \param width Width of the node
+   * \param height Height of the node
+   *
+   */
+  void UpdateNodeSize (uint32_t nodeId, double width, double height); 
 
   /**
    * \brief Helper function to update the node color
@@ -329,6 +345,28 @@
    */
   static void SetNodeColor (NodeContainer nc, uint8_t r, uint8_t g, uint8_t b);
 
+
+  /**
+   * \brief Helper function to update a node's counter referenced by the nodeCounterId
+   * \param nodeCounterId The counter Id obtained from AddNodeCounter
+   * \param nodeId Node Id of the node
+   * \param counter Current value of the counter
+   *
+   */
+  void UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter);
+
+  /**
+   * \brief Helper function to set the background image
+   * \param fileName File name of the background image
+   * \param x X co-ordinate of the image
+   * \param y Y co-ordinate of the image
+   * \param scaleX X scale of the image
+   * \param scaleY Y scale of the image
+   * \param opacity Opacity of the background: A value between 0.0 and 1.0. 0.0 is transparent,
+   *        1.0 is opaque
+   */
+  void SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity); 
+
   /**
    * \brief Helper function to set the description for a link
    * \param fromNode Node Id of the "from Node" of the p2p link
@@ -395,12 +433,18 @@
   bool IsStarted (void);
 
   /**
+   * \brief Do not trace packets. This helps reduce the trace file size if AnimationInterface is solely
+   *        used for tracking mobility, routing paths and counters
+   */
+  void SkipPacketTracing ();
+
+  /**
    *
    * \brief Enable Packet metadata
    * \param enable if true enables writing the packet metadata to the XML trace file
    *        if false disables writing the packet metadata
    */
-  void EnablePacketMetadata (bool enable);
+  void EnablePacketMetadata (bool enable = true);
 
   /**
    *
@@ -413,6 +457,26 @@
 
   /**
    *
+   * \brief Setup a node counter
+   * \param counterName A string to identify the counter
+   * \param counterType The type of the counter, such as uint32, double etc
+   * 
+   * returns The id of the counter to be used as a reference for future
+   */
+  uint32_t AddNodeCounter (std::string counterName, CounterType counterType); 
+
+  /**
+   *
+   * \brief Add a resource such as the path to an image file
+   * \param resourcePath Absolute Path to an image/resource
+   * 
+   * returns a number identifying the resource
+   *
+   */
+  uint32_t AddResource (std::string resourcePath);
+
+  /**
+   *
    * \brief Get node's energy fraction (This used only for testing)
    *
    * returns current node's remaining energy (between [0, 1])
@@ -435,7 +499,6 @@
   FILE * m_routingF; // File handle for routing table output (0 if None);
   // Write specified amount of data to the specified handle
   int WriteN (const char*, uint32_t, FILE * f);
-  bool m_xml;      // True if xml format desired
   Time m_mobilityPollInterval;
   std::string m_outputFileName;
   bool m_outputFileSet;
@@ -630,6 +693,9 @@
   EnergyFractionMap m_nodeEnergyFraction;
   uint64_t m_currentPktCount;
 
+  std::map <uint32_t, NodeSize> m_nodeSizes;
+  std::vector <std::string> m_resources;
+  std::vector <std::string> m_nodeCounters;
   void StartNewTraceFile ();
 
   std::string GetMacAddress (Ptr <NetDevice> nd);
@@ -642,16 +708,27 @@
 
   // XML helpers
   std::string GetPreamble (void);
+  std::string CounterTypeToString (CounterType counterType);
   // Topology element dimensions
   double m_topoMinX;
   double m_topoMinY;
   double m_topoMaxX;
   double m_topoMaxY;
-  static Rectangle * userBoundary;
 
+  bool m_enable3105;
+  bool m_trackPackets;
+  uint32_t m_remainingEnergyCounterId;
   std::string GetPacketMetadata (Ptr<const Packet> p);
 
   std::string GetXMLOpen_anim (uint32_t lp);
+  std::string GetXMLOpenCloseUpdateNodePosition (uint32_t nodeId, double x, double y);
+  std::string GetXMLOpenCloseUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
+  std::string GetXMLOpenCloseUpdateNodeDescription (uint32_t nodeId);
+  std::string GetXMLOpenCloseUpdateNodeSize (uint32_t nodeId, double width, double height);
+  std::string GetXMLOpenCloseAddResource (uint32_t resourceId, std::string resourcePath);
+  std::string GetXMLOpenCloseAddNodeCounter (uint32_t counterId, std::string counterName, CounterType counterType);
+  std::string GetXMLOpenCloseUpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
+  std::string GetXMLOpenCloseUpdateNodeCounter (uint32_t counterId, uint32_t nodeId, double value);
   std::string GetXMLOpen_topology (double minX, double minY, double maxX, double maxY);
   std::string GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY);
   std::string GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY, struct Rgb rgb);
@@ -668,6 +745,7 @@
   std::string GetXMLOpenClose_NonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
   std::string GetXMLOpenClose_routing (uint32_t id, std::string routingInfo);
   std::string GetXMLOpenClose_rp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
+  std::string GetXMLOpenCloseUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
 
   void AppendXMLNodeDescription (std::ostream& ostream, uint32_t id) const;
   void AppendXMLNodeColor (std::ostream& ostream, const Rgb& color) const;
@@ -691,6 +769,18 @@
 
 /**
  * \ingroup netanim
+ * \brief A structure to store the width and height of a node` 
+ *
+ */
+struct NodeSize 
+{
+  double width;
+  double height;
+};
+
+
+/**
+ * \ingroup netanim
  *
  * \brief Byte tag using by Anim to uniquely identify packets
  *
diff -Naur ns-3.19/src/netanim/test/netanim-test.cc ns-3.20/src/netanim/test/netanim-test.cc
--- ns-3.19/src/netanim/test/netanim-test.cc	2014-06-17 10:34:00.552635781 -0700
+++ ns-3.20/src/netanim/test/netanim-test.cc	2014-06-17 10:33:13.912995815 -0700
@@ -30,7 +30,7 @@
 #include "ns3/basic-energy-source.h"
 #include "ns3/simple-device-energy-model.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class AbstractAnimationInterfaceTestCase : public TestCase
 {
@@ -238,5 +238,3 @@
     AddTestCase (new AnimationRemainingEnergyTestCase (), TestCase::QUICK);
   }
 } g_animationInterfaceTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/netanim/waf ns-3.20/src/netanim/waf
--- ns-3.19/src/netanim/waf	2014-06-17 10:34:00.552635781 -0700
+++ ns-3.20/src/netanim/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/netanim/wscript ns-3.20/src/netanim/wscript
--- ns-3.19/src/netanim/wscript	2014-06-17 10:34:00.552635781 -0700
+++ ns-3.20/src/netanim/wscript	2014-06-17 10:33:13.912995815 -0700
@@ -3,7 +3,7 @@
 import wutils
 
 # Required NetAnim version
-NETANIM_RELEASE_NAME = "netanim-3.104"
+NETANIM_RELEASE_NAME = "netanim-3.105"
 
 
 def build (bld) :
diff -Naur ns-3.19/src/network/bindings/modulegen__gcc_ILP32.py ns-3.20/src/network/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/network/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.558635735 -0700
+++ ns-3.20/src/network/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.918995769 -0700
@@ -145,7 +145,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'])
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True)
     ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int> [class]
@@ -164,6 +164,8 @@
     module.add_class('Tag', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -176,6 +178,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
     ## packet-socket.h (module 'network'): ns3::DeviceNameTag [class]
@@ -456,29 +460,32 @@
     module.add_class('PacketProbe', parent=root_module['ns3::Probe'])
     ## packetbb.h (module 'network'): ns3::PbbAddressTlv [class]
     module.add_class('PbbAddressTlv', parent=root_module['ns3::PbbTlv'])
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -513,12 +520,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -605,6 +612,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1194,6 +1202,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1206,6 +1218,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3151,11 +3167,11 @@
 
 def register_Ns3SequenceNumber32_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3176,11 +3192,11 @@
 
 def register_Ns3SequenceNumber16_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('ns3::SequenceNumber< unsigned short, short > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('short int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('short int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('ns3::SequenceNumber< unsigned short, short > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('short int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('short int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3463,6 +3479,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -3662,68 +3686,26 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3764,6 +3746,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5347,13 +5331,15 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
     ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -5378,6 +5364,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6531,10 +6522,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -7774,10 +7765,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, cls):
diff -Naur ns-3.19/src/network/bindings/modulegen__gcc_LP64.py ns-3.20/src/network/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/network/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.564635689 -0700
+++ ns-3.20/src/network/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.924995722 -0700
@@ -145,7 +145,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'])
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'])
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True)
     ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned int, int> [class]
@@ -164,6 +164,8 @@
     module.add_class('Tag', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -176,6 +178,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
     ## packet-socket.h (module 'network'): ns3::DeviceNameTag [class]
@@ -456,29 +460,32 @@
     module.add_class('PacketProbe', parent=root_module['ns3::Probe'])
     ## packetbb.h (module 'network'): ns3::PbbAddressTlv [class]
     module.add_class('PbbAddressTlv', parent=root_module['ns3::PbbTlv'])
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >', 'ns3::SequenceNumber16')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >*', 'ns3::SequenceNumber16*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned short, short >&', 'ns3::SequenceNumber16&')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >', 'ns3::SequenceNumber32')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >*', 'ns3::SequenceNumber32*')
-    typehandlers.add_type_alias('ns3::SequenceNumber< unsigned int, int >&', 'ns3::SequenceNumber32&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >', u'ns3::SequenceNumber16')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >*', u'ns3::SequenceNumber16*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >&', u'ns3::SequenceNumber16&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
+    typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -513,12 +520,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -605,6 +612,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1194,6 +1202,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1206,6 +1218,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3151,11 +3167,11 @@
 
 def register_Ns3SequenceNumber32_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('ns3::SequenceNumber< unsigned int, int > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber32'], root_module['ns3::SequenceNumber32'], param('int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3176,11 +3192,11 @@
 
 def register_Ns3SequenceNumber16_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('ns3::SequenceNumber< unsigned short, short > const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('short int', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('short int', 'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('ns3::SequenceNumber< unsigned short, short > const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('short int', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SequenceNumber16'], root_module['ns3::SequenceNumber16'], param('short int', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('short int', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3463,6 +3479,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -3662,68 +3686,26 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3764,6 +3746,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5347,13 +5331,15 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
     ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -5378,6 +5364,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6531,10 +6522,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -7774,10 +7765,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, cls):
diff -Naur ns-3.19/src/network/helper/application-container.h ns-3.20/src/network/helper/application-container.h
--- ns-3.19/src/network/helper/application-container.h	2014-06-17 10:34:00.571635634 -0700
+++ ns-3.20/src/network/helper/application-container.h	2014-06-17 10:33:13.931995668 -0700
@@ -64,6 +64,7 @@
    */
   ApplicationContainer (std::string name);
 
+  /// Application container iterator
   typedef std::vector<Ptr<Application> >::const_iterator Iterator;
 
   /**
@@ -209,7 +210,7 @@
   void Stop (Time stop);
 
 private:
-  std::vector<Ptr<Application> > m_applications;
+  std::vector<Ptr<Application> > m_applications; //!< Applications smart pointers
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/helper/delay-jitter-estimation.cc ns-3.20/src/network/helper/delay-jitter-estimation.cc
--- ns-3.19/src/network/helper/delay-jitter-estimation.cc	2014-06-17 10:34:00.572635627 -0700
+++ ns-3.20/src/network/helper/delay-jitter-estimation.cc	2014-06-17 10:33:13.931995668 -0700
@@ -25,10 +25,20 @@
 
 namespace ns3 {
 
+/**
+ * Tag to perform Delay and Jitter estimations
+ *
+ * The tag holds the packet's creation timestamp
+ */
 class DelayJitterEstimationTimestampTag : public Tag
 {
 public:
   DelayJitterEstimationTimestampTag ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
 
@@ -37,9 +47,13 @@
   virtual void Deserialize (TagBuffer i);
   virtual void Print (std::ostream &os) const;
 
+  /**
+   * \brief Get the Transmission time stored in the tag
+   * \return the transmission time
+   */
   Time GetTxTime (void) const;
 private:
-  uint64_t m_creationTime;
+  uint64_t m_creationTime; //!< The time stored in the tag
 };
 
 DelayJitterEstimationTimestampTag::DelayJitterEstimationTimestampTag ()
diff -Naur ns-3.19/src/network/helper/delay-jitter-estimation.h ns-3.20/src/network/helper/delay-jitter-estimation.h
--- ns-3.19/src/network/helper/delay-jitter-estimation.h	2014-06-17 10:34:00.572635627 -0700
+++ ns-3.20/src/network/helper/delay-jitter-estimation.h	2014-06-17 10:33:13.932995661 -0700
@@ -69,10 +69,10 @@
   uint64_t GetLastJitter (void) const;
 
 private:
-  Time m_previousRx;
-  Time m_previousRxTx;
-  int64x64_t m_jitter;
-  Time m_delay;
+  Time m_previousRx;   //!< Previous Rx time
+  Time m_previousRxTx; //!< Previous Rx or Tx time
+  int64x64_t m_jitter; //!< Jitter estimation
+  Time m_delay;        //!< Delay estimation
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/helper/net-device-container.h ns-3.20/src/network/helper/net-device-container.h
--- ns-3.19/src/network/helper/net-device-container.h	2014-06-17 10:34:00.573635619 -0700
+++ ns-3.20/src/network/helper/net-device-container.h	2014-06-17 10:33:13.932995661 -0700
@@ -41,6 +41,7 @@
 class NetDeviceContainer
 {
 public:
+  /// NetDevice container iterator
   typedef std::vector<Ptr<NetDevice> >::const_iterator Iterator;
 
   /**
@@ -195,7 +196,7 @@
   void Add (std::string deviceName);
 
 private:
-  std::vector<Ptr<NetDevice> > m_devices;
+  std::vector<Ptr<NetDevice> > m_devices; //!< NetDevices smart pointers
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/helper/node-container.h ns-3.20/src/network/helper/node-container.h
--- ns-3.19/src/network/helper/node-container.h	2014-06-17 10:34:00.573635619 -0700
+++ ns-3.20/src/network/helper/node-container.h	2014-06-17 10:33:13.933995653 -0700
@@ -38,6 +38,7 @@
 class NodeContainer
 {
 public:
+  /// Node container iterator
   typedef std::vector<Ptr<Node> >::const_iterator Iterator;
 
   /**
@@ -288,7 +289,7 @@
   static NodeContainer GetGlobal (void);
 
 private:
-  std::vector<Ptr<Node> > m_nodes;
+  std::vector<Ptr<Node> > m_nodes; //!< Nodes smart pointers
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/helper/trace-helper.h ns-3.20/src/network/helper/trace-helper.h
--- ns-3.19/src/network/helper/trace-helper.h	2014-06-17 10:34:00.575635604 -0700
+++ ns-3.20/src/network/helper/trace-helper.h	2014-06-17 10:33:13.935995638 -0700
@@ -51,7 +51,8 @@
     DLT_RAW = 101,
     DLT_IEEE802_11 = 105,
     DLT_PRISM_HEADER = 119,
-    DLT_IEEE802_11_RADIO = 127
+    DLT_IEEE802_11_RADIO = 127,
+    DLT_IEEE802_15_4 = 195
   };
 
   /**
@@ -71,6 +72,7 @@
    * @param prefix prefix string
    * @param device NetDevice
    * @param useObjectNames use node and device names instead of indexes
+   * @returns file name
    */
   std::string GetFilenameFromDevice (std::string prefix, Ptr<NetDevice> device, bool useObjectNames = true);
 
@@ -82,6 +84,7 @@
    * @param object interface (such as Ipv4Interface or Ipv6Interface)
    * @param interface interface id
    * @param useObjectNames use node and device names instead of indexes
+   * @returns file name
    */
   std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Object> object, 
                                             uint32_t interface, bool useObjectNames = true);
@@ -94,6 +97,7 @@
    * @param dataLinkType data link type of packet data
    * @param snapLen maximum length of packet data stored in records
    * @param tzCorrection time zone correction to be applied to timestamps of packets
+   * @returns a smart pointer to the Pcap file
    */
   Ptr<PcapFileWrapper> CreateFile (std::string filename, std::ios::openmode filemode,
                                    uint32_t dataLinkType,  uint32_t snapLen = 65535, int32_t tzCorrection = 0);
@@ -107,6 +111,15 @@
   template <typename T> void HookDefaultSink (Ptr<T> object, std::string traceName, Ptr<PcapFileWrapper> file);
 
 private:
+  /**
+   * The basic default trace sink.
+   *
+   * This one just writes the packet to the pcap
+   * file which is good enough for most kinds of captures.
+   *
+   * @param file the file to write to
+   * @param p the packet to write
+   */
   static void DefaultSink (Ptr<PcapFileWrapper> file, Ptr<const Packet> p);
 };
 
@@ -145,6 +158,7 @@
    * @param prefix prefix string
    * @param device NetDevice
    * @param useObjectNames use node and device names instead of indexes
+   * @returns file name
    */
   std::string GetFilenameFromDevice (std::string prefix, Ptr<NetDevice> device, bool useObjectNames = true);
 
@@ -156,6 +170,7 @@
    * @param object interface (such as Ipv4Interface or Ipv6Interface)
    * @param interface interface id
    * @param useObjectNames use node and device names instead of indexes
+   * @returns file name
    */
   std::string GetFilenameFromInterfacePair (std::string prefix, Ptr<Object> object, 
                                             uint32_t interface, bool useObjectNames = true);
@@ -182,6 +197,7 @@
    * 
    * @param filename file name
    * @param filemode file mode
+   * @returns a smart pointer to the output stream
    */
   Ptr<OutputStreamWrapper> CreateFileStream (std::string filename, 
                                              std::ios::openmode filemode = std::ios::out);
@@ -282,16 +298,142 @@
   void HookDefaultReceiveSinkWithContext (Ptr<T> object, 
                                           std::string context, std::string traceName, Ptr<OutputStreamWrapper> stream);
 
+  /**
+   * @brief Basic Enqueue default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue even if it does not
+   * have to delay the packet at all, if only to trigger this event.  This
+   * event will eventually translate into a '+' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Enqueue" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param p the packet
+   */
   static void DefaultEnqueueSinkWithoutContext (Ptr<OutputStreamWrapper> file, Ptr<const Packet> p);
+
+  /**
+   * @brief Basic Enqueue default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue even if it does not
+   * have to delay the packet at all, if only to trigger this event.  This
+   * event will eventually translate into a '+' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Enqueue" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param context the context
+   * @param p the packet
+   */
   static void DefaultEnqueueSinkWithContext (Ptr<OutputStreamWrapper> file, std::string context, Ptr<const Packet> p);
 
+  /**
+   * @brief Basic Drop default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue.  If this queue is
+   * full the packet will be dropped.  The device is expected to trigger an
+   * event to indicate that an outbound packet is being dropped.  This event
+   * will eventually translate into a 'd' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Drop" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param p the packet
+   */
   static void DefaultDropSinkWithoutContext (Ptr<OutputStreamWrapper> file, Ptr<const Packet> p);
+
+  /**
+   * @brief Basic Drop default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue.  If this queue is
+   * full the packet will be dropped.  The device is expected to trigger an
+   * event to indicate that an outbound packet is being dropped.  This event
+   * will eventually translate into a 'd' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Drop" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param context the context
+   * @param p the packet
+   */
   static void DefaultDropSinkWithContext (Ptr<OutputStreamWrapper> file, std::string context, Ptr<const Packet> p);
 
+  /**
+   * @brief Basic Dequeue default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue even if it does not
+   * have to delay the packet at all.  The device removes the packet from the
+   * transmit queue when the packet is ready to send, and this dequeue will
+   * fire a corresponding event.  This event will eventually translate into a
+   * '-' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Dequeue" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param p the packet
+   */
   static void DefaultDequeueSinkWithoutContext (Ptr<OutputStreamWrapper> file, Ptr<const Packet> p);
+
+  /**
+   * @brief Basic Dequeue default trace sink.
+   *
+   * When a packet has been sent to a device for transmission, the device is
+   * expected to place the packet onto a transmit queue even if it does not
+   * have to delay the packet at all.  The device removes the packet from the
+   * transmit queue when the packet is ready to send, and this dequeue will
+   * fire a corresponding event.  This event will eventually translate into a
+   * '-' operation in the trace file.
+   *
+   * This is typically implemented by hooking the "TxQueue/Dequeue" trace hook
+   * in the device (actually the Queue in the device).
+   *
+   * @param file the output file
+   * @param context the context
+   * @param p the packet
+   */
   static void DefaultDequeueSinkWithContext (Ptr<OutputStreamWrapper> file, std::string context, Ptr<const Packet> p);
 
+  /**
+   * @brief Basic Receive default trace sink.
+   *
+   * When a packet is received by a device for transmission, the device is
+   * expected to trigger this event to indicate the reception has occurred.
+   * This event will eventually translate into an 'r' operation in the trace
+   * file.
+   *
+   * This is typically implemented by hooking the "MacRx" trace hook in the
+   * device.
+   *
+   * @param file the output file
+   * @param p the packet
+   */
   static void DefaultReceiveSinkWithoutContext (Ptr<OutputStreamWrapper> file, Ptr<const Packet> p);
+
+  /**
+   * @brief Basic Receive default trace sink.
+   *
+   * When a packet is received by a device for transmission, the device is
+   * expected to trigger this event to indicate the reception has occurred.
+   * This event will eventually translate into an 'r' operation in the trace
+   * file.
+   *
+   * This is typically implemented by hooking the "MacRx" trace hook in the
+   * device.
+   *
+   * @param file the output file
+   * @param context the context
+   * @param p the packet
+   */
   static void DefaultReceiveSinkWithContext (Ptr<OutputStreamWrapper> file, std::string context, Ptr<const Packet> p);
 };
 
@@ -562,7 +704,7 @@
    * of the appropriate type.
    *
    * @param prefix Filename prefix to use for ascii files.
-   * @param d container of devices of type ns3::CsmaNetDevice
+   * @param d container of devices
    */
   void EnableAscii (std::string prefix, NetDeviceContainer d);
 
@@ -572,7 +714,7 @@
    *
    * @param stream An OutputStreamWrapper representing an existing file to use
    *               when writing trace data.
-   * @param d container of devices of type ns3::CsmaNetDevice
+   * @param d container of devices
    */
   void EnableAscii (Ptr<OutputStreamWrapper> stream, NetDeviceContainer d);
 
@@ -640,6 +782,19 @@
 
 private:
   /**
+   * @brief Enable ascii trace output on the device specified by a global
+   * node-id (of a previously created node) and associated device-id (implementation)
+   *
+   * @param stream An OutputStreamWrapper representing an existing file to use
+   *               when writing trace data.
+   * @param prefix Filename prefix to use for ascii trace files.
+   * @param nodeid The node identifier/number of the node on which to enable
+   *               ascii tracing
+   * @param deviceid The device identifier/index of the device on which to enable
+   *               ascii tracing
+   * @param explicitFilename Treat the prefix as an explicit filename if true
+   */
+  /**
    * @internal Avoid code duplication.
    */
   void EnableAsciiImpl (Ptr<OutputStreamWrapper> stream, 
@@ -649,22 +804,47 @@
                         bool explicitFilename);
 
   /**
-   * @internal Avoid code duplication.
+   * @brief Enable ascii trace output on each device (which is of the
+   * appropriate type) in the nodes provided in the container (implementation).
+   *
+   * @param stream An OutputStreamWrapper representing an existing file to use
+   *               when writing trace data.
+   * @param prefix Filename prefix to use for ascii files.
+   * @param n container of nodes.
    */
   void EnableAsciiImpl (Ptr<OutputStreamWrapper> stream, std::string prefix, NodeContainer n);
 
   /**
-   * @internal Avoid code duplication.
+   * @brief Enable ascii trace output on each device in the container which is
+   * of the appropriate type (implementation).
+   *
+   * @param stream An OutputStreamWrapper representing an existing file to use
+   *               when writing trace data.
+   * @param prefix Filename prefix to use for ascii files.
+   * @param d container of devices
    */
   void EnableAsciiImpl (Ptr<OutputStreamWrapper> stream, std::string prefix, NetDeviceContainer d);
 
   /**
-   * @internal Avoid code duplication.
+   * @brief Enable ascii trace output the indicated net device using a device
+   * previously named using the ns-3 object name service (implementation).
+   *
+   * @param stream An OutputStreamWrapper representing an existing file to use
+   *               when writing trace data.
+   * @param prefix filename prefix to use for ascii files.
+   * @param ndName The name of the net device in which you want to enable tracing.
+   * @param explicitFilename Treat the prefix as an explicit filename if true
    */
   void EnableAsciiImpl (Ptr<OutputStreamWrapper> stream, std::string prefix, std::string ndName, bool explicitFilename);
 
   /**
-   * @internal Avoid code duplication.
+   * @brief Enable ascii trace output the indicated net device (implementation).
+   *
+   * @param stream An OutputStreamWrapper representing an existing file to use
+   *               when writing trace data.
+   * @param prefix filename prefix to use for ascii files.
+   * @param nd Net device for which you want to enable tracing
+   * @param explicitFilename Treat the prefix as an explicit filename if true
    */
   void EnableAsciiImpl (Ptr<OutputStreamWrapper> stream, std::string prefix, Ptr<NetDevice> nd, bool explicitFilename);
 };
diff -Naur ns-3.19/src/network/model/address.cc ns-3.20/src/network/model/address.cc
--- ns-3.19/src/network/model/address.cc	2014-06-17 10:34:00.575635604 -0700
+++ ns-3.20/src/network/model/address.cc	2014-06-17 10:33:13.935995638 -0700
@@ -90,7 +90,7 @@
 Address::CopyAllTo (uint8_t *buffer, uint8_t len) const
 {
   NS_LOG_FUNCTION (this << &buffer << static_cast<uint32_t> (len));
-  NS_ASSERT (len >= m_len + 2);
+  NS_ASSERT (len - m_len > 1);
   buffer[0] = m_type;
   buffer[1] = m_len;
   std::memcpy (buffer + 2, m_data, m_len);
@@ -114,7 +114,7 @@
   m_type = buffer[0];
   m_len = buffer[1];
 
-  NS_ASSERT (len >= m_len + 2);
+  NS_ASSERT (len - m_len > 1);
   std::memcpy (m_data, buffer + 2, m_len);
   return m_len + 2;
 }
@@ -169,7 +169,7 @@
   buffer.Read (m_data, m_len);
 }
 
-ATTRIBUTE_HELPER_CPP (Address);   /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Address);   //!< Macro to make help make class an ns-3 attribute
 
 
 bool operator == (const Address &a, const Address &b)
@@ -248,17 +248,6 @@
   return os;
 }
 
-static uint8_t
-AsInt (std::string v)
-{
-  NS_LOG_FUNCTION_NOARGS ();
-  std::istringstream iss;
-  iss.str (v);
-  uint8_t retval;
-  iss >> std::hex >> retval >> std::dec;
-  return retval;
-}
-
 std::istream& operator>> (std::istream& is, Address & address)
 {
   std::string v;
@@ -269,8 +258,8 @@
   std::string type = v.substr (0, firstDash-0);
   std::string len = v.substr (firstDash+1, secondDash-(firstDash+1));
 
-  address.m_type = AsInt (type);
-  address.m_len = AsInt (len);
+  address.m_type = strtoul (type.c_str(), 0, 16);
+  address.m_len = strtoul (len.c_str(), 0, 16);
   NS_ASSERT (address.m_len <= Address::MAX_SIZE);
 
   std::string::size_type col = secondDash + 1;
@@ -282,13 +271,13 @@
       if (next == std::string::npos)
         {
           tmp = v.substr (col, v.size ()-col);
-          address.m_data[i] = AsInt (tmp);
+          address.m_data[i] = strtoul (tmp.c_str(), 0, 16);
           break;
         }
       else
         {
           tmp = v.substr (col, next-col);
-          address.m_data[i] = AsInt (tmp);
+          address.m_data[i] = strtoul (tmp.c_str(), 0, 16);
           col = next + 1;
         }
     }
diff -Naur ns-3.19/src/network/model/address.h ns-3.20/src/network/model/address.h
--- ns-3.19/src/network/model/address.h	2014-06-17 10:34:00.576635596 -0700
+++ ns-3.20/src/network/model/address.h	2014-06-17 10:33:13.936995630 -0700
@@ -99,19 +99,29 @@
    */
   Address ();
   /**
+   * \brief Create an address from a type and a buffer.
+   *
+   * This constructor is typically invoked from the conversion
+   * functions of various address types when they have to
+   * convert themselves to an Address instance.
+   *
    * \param type the type of the Address to create
    * \param buffer a pointer to a buffer of bytes which hold
    *        a serialized representation of the address in network
    *        byte order.
    * \param len the length of the buffer.
-   * 
-   * Create an address from a type and a buffer. This constructor
-   * is typically invoked from the conversion functions of various
-   * address types when they have to convert themselves to an 
-   * Address instance.
    */
   Address (uint8_t type, const uint8_t *buffer, uint8_t len);
+  /**
+   * \brief Create an address from another address.
+   * \param address the address to copy
+   */
   Address (const Address & address);
+  /**
+   * \brief Basic assignment operator.
+   * \param address the address to copy
+   * \returns the address
+   */
   Address &operator = (const Address &address);
 
   /**
@@ -123,10 +133,12 @@
    */
   bool IsInvalid (void) const;
   /**
+   * \brief Get the length of the underlying address.
    * \returns the length of the underlying address.
    */
   uint8_t GetLength (void) const;
   /**
+   * \brief Copy the address bytes into a buffer.
    * \param buffer buffer to copy the address bytes to.
    * \returns the number of bytes copied.
    */
@@ -209,14 +221,54 @@
   void Deserialize (TagBuffer buffer);
 
 private:
+  /**
+   * \brief Equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are equal
+   */
   friend bool operator == (const Address &a, const Address &b);
+
+  /**
+   * \brief Not equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are not equal
+   */
+  friend bool operator != (const Address &a, const Address &b);
+
+  /**
+   * \brief Less than operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operand a is less than operand b
+   */
   friend bool operator < (const Address &a, const Address &b);
+
+  /**
+   * \brief Stream insertion operator.
+   *
+   * \param os the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
   friend std::ostream& operator<< (std::ostream& os, const Address & address);
+
+  /**
+   * \brief Stream extraction operator.
+   *
+   * \param is the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
   friend std::istream& operator>> (std::istream& is, Address & address);
 
-  uint8_t m_type;
-  uint8_t m_len;
-  uint8_t m_data[MAX_SIZE];
+  uint8_t m_type; //!< Type of the address
+  uint8_t m_len;  //!< Length of the address
+  uint8_t m_data[MAX_SIZE]; //!< The address value
 };
 
 /**
@@ -224,7 +276,7 @@
  * \brief hold objects of type ns3::Address
  */
 
-ATTRIBUTE_HELPER_HEADER (Address);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Address);  //!< Macro to make help make class an ns-3 attribute
 
 bool operator == (const Address &a, const Address &b);
 bool operator != (const Address &a, const Address &b);
diff -Naur ns-3.19/src/network/model/application.cc ns-3.20/src/network/model/application.cc
--- ns-3.19/src/network/model/application.cc	2014-06-17 10:34:00.576635596 -0700
+++ ns-3.20/src/network/model/application.cc	2014-06-17 10:33:13.936995630 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Application)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Application);
 
 // Application Methods
 
diff -Naur ns-3.19/src/network/model/application.h ns-3.20/src/network/model/application.h
--- ns-3.19/src/network/model/application.h	2014-06-17 10:34:00.576635596 -0700
+++ ns-3.20/src/network/model/application.h	2014-06-17 10:33:13.936995630 -0700
@@ -30,7 +30,6 @@
 namespace ns3 {
 
 class Node;
-class RandomVariable;
 
 /**
  * \addtogroup applications Applications
@@ -61,6 +60,10 @@
 class Application : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   Application ();
   virtual ~Application ();
@@ -123,11 +126,11 @@
   virtual void DoDispose (void);
   virtual void DoInitialize (void);
 
-  Ptr<Node>       m_node;   /// The node that this application is installed on
-  Time m_startTime;         /// The simulation time that the appliacation will start
-  Time m_stopTime;          /// The simulation time that the appliacation will end
-  EventId m_startEvent;     /// The event that will fire at m_startTime to start the application
-  EventId m_stopEvent;      /// The event that will fire at m_stopTime to end the application
+  Ptr<Node>       m_node;   //!< The node that this application is installed on
+  Time m_startTime;         //!< The simulation time that the application will start
+  Time m_stopTime;          //!< The simulation time that the application will end
+  EventId m_startEvent;     //!< The event that will fire at m_startTime to start the application
+  EventId m_stopEvent;      //!< The event that will fire at m_stopTime to end the application
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/buffer.cc ns-3.20/src/network/model/buffer.cc
--- ns-3.19/src/network/model/buffer.cc	2014-06-17 10:34:00.577635588 -0700
+++ ns-3.20/src/network/model/buffer.cc	2014-06-17 10:33:13.937995622 -0700
@@ -30,6 +30,10 @@
 
 namespace {
 
+/**
+ * \ingroup packet
+ * \brief Zero-filled buffer.
+ */
 static struct Zeroes
 {
   Zeroes ()
@@ -37,9 +41,9 @@
   {
     memset (buffer, 0, size);
   }
-  char buffer[1000];
-  const uint32_t size;
-} g_zeroes;
+  char buffer[1000];    //!< buffer containing zero values
+  const uint32_t size;  //!< buffer size
+} g_zeroes; //!< Zero-filled buffer
 
 }
 
diff -Naur ns-3.19/src/network/model/buffer.h ns-3.20/src/network/model/buffer.h
--- ns-3.19/src/network/model/buffer.h	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/network/model/buffer.h	2014-06-17 10:33:13.938995614 -0700
@@ -25,7 +25,7 @@
 #include <ostream>
 #include "ns3/assert.h"
 
-#define noBUFFER_FREE_LIST 1
+#define BUFFER_FREE_LIST 1
 
 namespace ns3 {
 
@@ -80,7 +80,7 @@
  *                        |--------^ m_start
  *                        |-------------------^ m_zeroAreaStart
  *                        |-----------------------------^ m_end - (m_zeroAreaEnd - m_zeroAreaStart)
- * virtual byte buffer:           |xxxxxxxxxxxx0000000000000.........|
+ * Virtual byte buffer:           |xxxxxxxxxxxx0000000000000.........|
  *                        |--------^ m_start
  *                        |--------------------^ m_zeroAreaStart
  *                        |---------------------------------^ m_zeroAreaEnd
@@ -253,6 +253,13 @@
     /**
      * \return the byte read in the buffer.
      *
+     * Read data, but do not advance the Iterator read.
+     */
+    inline uint8_t  PeekU8 (void);
+
+    /**
+     * \return the byte read in the buffer.
+     *
      * Read data and advance the Iterator by the number of bytes
      * read.
      */
@@ -334,12 +341,22 @@
      * \param size number of bytes to copy
      *
      * Copy size bytes of data from the internal buffer to the
-     * input buffer and avance the Iterator by the number of
+     * input buffer and advance the Iterator by the number of
      * bytes read.
      */
     void Read (uint8_t *buffer, uint32_t size);
 
     /**
+     * \param start start iterator of the buffer to copy data into
+     * \param size  number of bytes to copy
+     *
+     * Copy size bytes of data from the internal buffer to the input buffer via
+     * the provided iterator and advance the Iterator by the number of bytes
+     * read.
+     */
+    inline void Read (Iterator start, uint32_t size);
+
+    /**
      * \brief Calculate the checksum.
      * \param size size of the buffer.
      * \return checksum
@@ -361,37 +378,101 @@
 
 private:
     friend class Buffer;
+    /**
+     * Constructor - initializes the iterator to point to the buffer start
+     *
+     * \param buffer the buffer this iterator refers to
+     */
     inline Iterator (Buffer const*buffer);
-    inline Iterator (Buffer const*buffer, bool);
+    /**
+     * Constructor - initializes the iterator to point to the buffer end
+     *
+     * \param buffer the buffer this iterator refers to
+     * \param dummy not used param
+     */
+    inline Iterator (Buffer const*buffer, bool dummy);
+    /**
+     * Initializes the iterator values
+     *
+     * \param buffer the buffer this iterator refers to
+     */
     inline void Construct (const Buffer *buffer);
+    /**
+     * Checks that the [start, end) is not in the "virtual zero area".
+     *
+     * \param start start buffer position
+     * \param end end buffer position
+     * \returns true if [start, end) is not in the "virtual zero area".
+     */
     bool CheckNoZero (uint32_t start, uint32_t end) const;
+    /**
+     * Checks that the buffer position is not in the "virtual zero area".
+     *
+     * \param i buffer position
+     * \returns true if not in the "virtual zero area".
+     */
     bool Check (uint32_t i) const;
+    /**
+     * \return the two bytes read in the buffer.
+     *
+     * Read data and advance the Iterator by the number of bytes
+     * read.
+     * The data is read in network format and return in host format.
+     *
+     * \warning this is the slow version, please use ReadNtohU16 (void)
+     */
     uint16_t SlowReadNtohU16 (void);
+    /**
+     * \return the four bytes read in the buffer.
+     *
+     * Read data and advance the Iterator by the number of bytes
+     * read.
+     * The data is read in network format and return in host format.
+     *
+     * \warning this is the slow version, please use ReadNtohU32 (void)
+     */
     uint32_t SlowReadNtohU32 (void);
+    /**
+     * \brief Returns an appropriate message indicating a read error
+     * \returns the error message
+     */
     std::string GetReadErrorMessage (void) const;
+    /**
+     * \brief Returns an appropriate message indicating a write error
+     *
+     * The message depends on the actual Buffer::Iterator status.
+     *
+     * \returns the error message
+     */
     std::string GetWriteErrorMessage (void) const;
 
-    /* offset in virtual bytes from the start of the data buffer to the
+    /**
+     * offset in virtual bytes from the start of the data buffer to the
      * start of the "virtual zero area".
      */
     uint32_t m_zeroStart;
-    /* offset in virtual bytes from the start of the data buffer to the
+    /**
+     * offset in virtual bytes from the start of the data buffer to the
      * end of the "virtual zero area".
      */
     uint32_t m_zeroEnd;
-    /* offset in virtual bytes from the start of the data buffer to the
+    /**
+     * offset in virtual bytes from the start of the data buffer to the
      * start of the data which can be read by this iterator
      */
     uint32_t m_dataStart;
-    /* offset in virtual bytes from the start of the data buffer to the
+    /**
+     * offset in virtual bytes from the start of the data buffer to the
      * end of the data which can be read by this iterator
      */
     uint32_t m_dataEnd;
-    /* offset in virtual bytes from the start of the data buffer to the
+    /**
+     * offset in virtual bytes from the start of the data buffer to the
      * current position represented by this iterator.
      */
     uint32_t m_current;
-    /* a pointer to the underlying byte buffer. All offsets are relative
+    /**
+     * a pointer to the underlying byte buffer. All offsets are relative
      * to this pointer.
      */
     uint8_t *m_data;
@@ -481,10 +562,17 @@
    */
   inline Buffer::Iterator End (void) const;
 
+  /**
+   * \brief Create a full copy of the buffer, including
+   * all the internal structures.
+   *
+   * \returns a copy of the buffer
+   */
   Buffer CreateFullCopy (void) const;
 
   /**
-   * \return the number of bytes required for serialization 
+   * \brief Return the number of bytes required for serialization.
+   * \return the number of bytes.
    */
   uint32_t GetSerializedSize (void) const;
 
@@ -510,7 +598,15 @@
    */
   uint32_t Deserialize (const uint8_t* buffer, uint32_t size);
 
+  /**
+   * \brief Returns the current buffer start offset
+   * \return the offset
+   */
   int32_t GetCurrentStartOffset (void) const;
+  /**
+   * \brief Returns the current buffer end offset
+   * \return the offset
+   */
   int32_t GetCurrentEndOffset (void) const;
 
   /** 
@@ -521,12 +617,44 @@
    */
   void CopyData (std::ostream *os, uint32_t size) const;
 
+  /**
+   * Copy the specified amount of data from the buffer to the given buffer.
+   *
+   * @param buffer the output buffer
+   * @param size the maximum amount of bytes to copy. If zero, nothing is copied.
+   * @returns the amount of bytes copied
+   */
   uint32_t CopyData (uint8_t *buffer, uint32_t size) const;
 
+  /**
+   * \brief Copy constructor
+   * \param o the buffer to copy
+   */
   inline Buffer (Buffer const &o);
+  /**
+   * \brief Assignment operator
+   * \param o the buffer to copy
+   * \return a reference to the buffer
+   */
   Buffer &operator = (Buffer const &o);
   Buffer ();
+  /**
+   * \brief Constructor
+   *
+   * The buffer will be initialized with zeroes up to its size.
+   *
+   * \param dataSize the buffer size
+   */
   Buffer (uint32_t dataSize);
+  /**
+   * \brief Constructor
+   *
+   * If initialize is set to true, the buffer will be initialized
+   * with zeroes up to its size.
+   *
+   * \param dataSize the buffer size.
+   * \param initialize initialize the buffer with zeroes.
+   */
   Buffer (uint32_t dataSize, bool initialize);
   ~Buffer ();
 private:
@@ -546,40 +674,92 @@
    */
   struct Data
   {
-    /* The reference count of an instance of this data structure.
+    /**
+     * The reference count of an instance of this data structure.
      * Each buffer which references an instance holds a count.
-       */
+     */
     uint32_t m_count;
-    /* the size of the m_data field below.
+    /**
+     * the size of the m_data field below.
      */
     uint32_t m_size;
-    /* offset from the start of the m_data field below to the
+    /**
+     * offset from the start of the m_data field below to the
      * start of the area in which user bytes were written.
      */
     uint32_t m_dirtyStart;
-    /* offset from the start of the m_data field below to the
+    /**
+     * offset from the start of the m_data field below to the
      * end of the area in which user bytes were written.
      */
     uint32_t m_dirtyEnd;
-    /* The real data buffer holds _at least_ one byte.
+    /**
+     * The real data buffer holds _at least_ one byte.
      * Its real size is stored in the m_size field.
      */
     uint8_t m_data[1];
   };
 
+  /**
+   * \brief Transform a "Virtual byte buffer" into a "Real byte buffer"
+   */
   void TransformIntoRealBuffer (void) const;
+  /**
+   * \brief Checks the internal buffer structures consistency
+   *
+   * Used only for debugging purposes.
+   *
+   * \returns true if the buffer status is consistent.
+   */
   bool CheckInternalState (void) const;
+
+  /**
+   * \brief Initializes the buffer with a number of zeroes.
+   *
+   * \param zeroSize the zeroes size
+   */
   void Initialize (uint32_t zeroSize);
+
+  /**
+   * \brief Get the buffer real size.
+   * \warning The real size is the actual memory used by the buffer.
+   * \returns the memory used by the buffer.
+   */
   uint32_t GetInternalSize (void) const;
+
+  /**
+   * \brief Get the buffer end position.
+   * \returns the buffer end index.
+   */
   uint32_t GetInternalEnd (void) const;
+
+  /**
+   * \brief Recycle the buffer memory
+   * \param data the buffer data storage
+   */
   static void Recycle (struct Buffer::Data *data);
+  /**
+   * \brief Create a buffer data storage
+   * \param size the storage size to create
+   * \returns a pointer to the created buffer storage
+   */
   static struct Buffer::Data *Create (uint32_t size);
+  /**
+   * \brief Allocate a buffer data storage
+   * \param reqSize the storage size to create
+   * \returns a pointer to the allocated buffer storage
+   */
   static struct Buffer::Data *Allocate (uint32_t reqSize);
+  /**
+   * \brief Deallocate the buffer memory
+   * \param data the buffer data storage
+   */
   static void Deallocate (struct Buffer::Data *data);
 
-  struct Data *m_data;
+  struct Data *m_data; //!< the buffer data storage
 
-  /* keep track of the maximum value of m_zeroAreaStart across
+  /**
+   * keep track of the maximum value of m_zeroAreaStart across
    * the lifetime of a Buffer instance. This variable is used
    * purely as a source of information for the heuristics which
    * decide on the position of the zero area in new buffers.
@@ -596,32 +776,38 @@
    */
   static uint32_t g_recommendedStart;
 
-  /* offset to the start of the virtual zero area from the start 
+  /**
+   * offset to the start of the virtual zero area from the start
    * of m_data->m_data
    */
   uint32_t m_zeroAreaStart;
-  /* offset to the end of the virtual zero area from the start 
+  /**
+   * offset to the end of the virtual zero area from the start
    * of m_data->m_data
    */
   uint32_t m_zeroAreaEnd;
-  /* offset to the start of the data referenced by this Buffer
+  /**
+   * offset to the start of the data referenced by this Buffer
    * instance from the start of m_data->m_data
    */
   uint32_t m_start;
-  /* offset to the end of the data referenced by this Buffer
+  /**
+   * offset to the end of the data referenced by this Buffer
    * instance from the start of m_data->m_data
    */
   uint32_t m_end;
 
 #ifdef BUFFER_FREE_LIST
+  /// Container for buffer data
   typedef std::vector<struct Buffer::Data*> FreeList;
+  /// Local static destructor structure
   struct LocalStaticDestructor 
   {
     ~LocalStaticDestructor ();
   };
-  static uint32_t g_maxSize;
-  static FreeList *g_freeList;
-  static struct LocalStaticDestructor g_localStaticDestructor;
+  static uint32_t g_maxSize; //!< Max observed data size
+  static FreeList *g_freeList; //!< Buffer data container
+  static struct LocalStaticDestructor g_localStaticDestructor; //!< Local static destructor
 #endif
 };
 
@@ -816,7 +1002,7 @@
 }
 
 uint8_t
-Buffer::Iterator::ReadU8 (void)
+Buffer::Iterator::PeekU8 (void)
 {
   NS_ASSERT_MSG (m_current >= m_dataStart &&
                  m_current <= m_dataEnd,
@@ -825,22 +1011,27 @@
   if (m_current < m_zeroStart)
     {
       uint8_t data = m_data[m_current];
-      m_current++;
       return data;
     }
   else if (m_current < m_zeroEnd)
     {
-      m_current++;
       return 0;
     }
   else
     {
       uint8_t data = m_data[m_current - (m_zeroEnd-m_zeroStart)];
-      m_current++;
       return data;
     }
 }
 
+uint8_t
+Buffer::Iterator::ReadU8 (void)
+{
+  uint8_t ret = PeekU8 ();
+  m_current ++;
+  return ret;
+}
+
 uint16_t 
 Buffer::Iterator::ReadU16 (void)
 {
@@ -853,6 +1044,16 @@
   return data;
 }
 
+void
+Buffer::Iterator::Read (Buffer::Iterator start, uint32_t size)
+{
+  Buffer::Iterator end = *this;
+  end.Next (size);
+  
+  start.Write (*this, end);
+}
+
+
 Buffer::Buffer (Buffer const&o)
   : m_data (o.m_data),
     m_maxZeroAreaStart (o.m_zeroAreaStart),
diff -Naur ns-3.19/src/network/model/byte-tag-list.cc ns-3.20/src/network/model/byte-tag-list.cc
--- ns-3.19/src/network/model/byte-tag-list.cc	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/network/model/byte-tag-list.cc	2014-06-17 10:33:13.938995614 -0700
@@ -30,20 +30,34 @@
 
 namespace ns3 {
 
+/**
+ * \ingroup packet
+ *
+ * \brief Internal representation of the byte tags stored in a packet.
+ *
+ * This structure is only used by ByteTagList and should not be accessed directly.
+ */
 struct ByteTagListData {
-  uint32_t size;
-  uint32_t count;
-  uint32_t dirty;
-  uint8_t data[4];
+  uint32_t size;   //!< size of the data
+  uint32_t count;  //!< use counter (for smart deallocation)
+  uint32_t dirty;  //!< number of bytes actually in use
+  uint8_t data[4]; //!< data
 };
 
 #ifdef USE_FREE_LIST
+/**
+ * \ingroup packet
+ *
+ * \brief Container class for struct ByteTagListData
+ *
+ * Internal use only.
+ */
 static class ByteTagListDataFreeList : public std::vector<struct ByteTagListData *>
 {
 public:
   ~ByteTagListDataFreeList ();
-} g_freeList;
-static uint32_t g_maxSize = 0;
+} g_freeList; //!< Container for struct ByteTagListData
+static uint32_t g_maxSize = 0; //!< maximum data size (used for allocation)
 
 ByteTagListDataFreeList::~ByteTagListDataFreeList ()
 {
diff -Naur ns-3.19/src/network/model/byte-tag-list.h ns-3.20/src/network/model/byte-tag-list.h
--- ns-3.19/src/network/model/byte-tag-list.h	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/network/model/byte-tag-list.h	2014-06-17 10:33:13.939995607 -0700
@@ -68,7 +68,7 @@
 class ByteTagList
 {
 public:
-  /*
+  /**
    * \brief An iterator for iterating through a byte tag list
    *
    * An iterator for iterating through a byte tag list
@@ -77,7 +77,7 @@
   class Iterator
   {
 public:
-    /*
+    /**
      * \brief An item specifies an individual tag within a byte buffer
      *
      * An item specifies an individual tag within a byte buffer
@@ -85,32 +85,32 @@
      */
     struct Item 
     {
-      TypeId tid;             /// type of the tag
-      uint32_t size;          /// size of tag data
-      int32_t start;          /// offset to the start of the tag from the virtual byte buffer 
-      int32_t end;            /// offset to the end of the tag from the virtual byte buffer
-      TagBuffer buf;          /// the data for the tag as generated by Tag::Serialize
-      Item (TagBuffer buf);   /// constructs an item with the given TagBuffer
+      TypeId tid;             //!< type of the tag
+      uint32_t size;          //!< size of tag data
+      int32_t start;          //!< offset to the start of the tag from the virtual byte buffer
+      int32_t end;            //!< offset to the end of the tag from the virtual byte buffer
+      TagBuffer buf;          //!< the data for the tag as generated by Tag::Serialize
+      Item (TagBuffer buf);   //!< constructs an item with the given TagBuffer
 private:
       friend class ByteTagList;
       friend class ByteTagList::Iterator;
     };
     
-    /*
+    /**
      * \brief Used to determine if the iterator is at the end of the byteTagList
      *
      * \returns true if there are more Items in the list
      */
     bool HasNext (void) const;
 
-    /*
+    /**
      * \brief Returns the next Item from the ByteTagList
      *
      * \returns the next Item in the ByteTagList
      */        
     struct ByteTagList::Iterator::Item Next (void);
     
-    /*
+    /**
      * \brief Returns the offset from the start of the virtual byte buffer to the ByteTagList
      *
      * \returns offset to the start of this ByteTagList
@@ -118,16 +118,28 @@
     uint32_t GetOffsetStart (void) const;
 private:
     friend class ByteTagList;
+
+    /**
+     * \brief Constructor
+     * \param start Starting tag
+     * \param end End tag
+     * \param offsetStart offset to the start of the tag from the virtual byte buffer
+     * \param offsetEnd offset to the end of the tag from the virtual byte buffer
+     */
     Iterator (uint8_t *start, uint8_t *end, int32_t offsetStart, int32_t offsetEnd);
+
+    /**
+     * \brief Prepare the iterator for the next tag
+     */
     void PrepareForNext (void);
-    uint8_t *m_current;
-    uint8_t *m_end;
-    int32_t m_offsetStart;
-    int32_t m_offsetEnd;
-    uint32_t m_nextTid;
-    uint32_t m_nextSize;
-    int32_t m_nextStart;
-    int32_t m_nextEnd;
+    uint8_t *m_current;     //!< Current tag
+    uint8_t *m_end;         //!< End tag
+    int32_t m_offsetStart;  //!< Offset to the start of the tag from the virtual byte buffer
+    int32_t m_offsetEnd;    //!< Offset to the end of the tag from the virtual byte buffer
+    uint32_t m_nextTid;     //!< TypeId of the next tag
+    uint32_t m_nextSize;    //!< Size of the next tag
+    int32_t m_nextStart;    //!< Start of the next tag
+    int32_t m_nextEnd;      //!< End of the next tag
   };
 
   ByteTagList ();
@@ -214,15 +226,41 @@
   void AddAtStart (int32_t adjustment, int32_t prependOffset);
 
 private:
+  /**
+   * \brief Check that all offsets are smaller than appendOffset
+   * \param appendOffset the append offset to check
+   * \returns true if the check is false
+   */
   bool IsDirtyAtEnd (int32_t appendOffset);
+  /**
+   * \brief Check that all offsets are bigger than prependOffset
+   * \param prependOffset the prepend offset to check
+   * \returns true if the check is false
+   */
   bool IsDirtyAtStart (int32_t prependOffset);
+
+  /**
+   * \brief Returns an iterator pointing to the very first tag in this list.
+   *
+   * \returns an iterator
+   */
   ByteTagList::Iterator BeginAll (void) const;
 
+  /**
+   * \brief Allocate the memory for the ByteTagListData
+   * \param size the memory to allocate
+   * \returns the ByteTagListData structure
+   */
   struct ByteTagListData *Allocate (uint32_t size);
+
+  /**
+   * \brief Deallocates a ByteTagListData
+   * \param data the ByteTagListData to deallocate
+   */
   void Deallocate (struct ByteTagListData *data);
 
-  uint16_t m_used;
-  struct ByteTagListData *m_data;
+  uint16_t m_used; //!< the number of used bytes in the buffer
+  struct ByteTagListData *m_data; //!< the ByteTagListData structure
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/channel.cc ns-3.20/src/network/model/channel.cc
--- ns-3.19/src/network/model/channel.cc	2014-06-17 10:34:00.579635573 -0700
+++ ns-3.20/src/network/model/channel.cc	2014-06-17 10:33:13.940995599 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Channel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Channel);
 
 TypeId 
 Channel::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/channel.h ns-3.20/src/network/model/channel.h
--- ns-3.19/src/network/model/channel.h	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/network/model/channel.h	2014-06-17 10:33:13.940995599 -0700
@@ -43,6 +43,10 @@
 class Channel : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   Channel ();
@@ -71,7 +75,7 @@
   virtual Ptr<NetDevice> GetDevice (uint32_t i) const = 0;
 
 private:
-  uint32_t m_id; // Channel id for this channel
+  uint32_t m_id; //!< Channel id for this channel
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/channel-list.cc ns-3.20/src/network/model/channel-list.cc
--- ns-3.19/src/network/model/channel-list.cc	2014-06-17 10:34:00.579635573 -0700
+++ ns-3.20/src/network/model/channel-list.cc	2014-06-17 10:33:13.939995607 -0700
@@ -26,38 +26,82 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("ChannelList")
-  ;
+NS_LOG_COMPONENT_DEFINE ("ChannelList");
 
 /**
+ * \ingroup network
+ *
  * \brief private implementation detail of the ChannelList API.
  */
 class ChannelListPriv : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   ChannelListPriv ();
   ~ChannelListPriv ();
 
+  /**
+   * \param channel channel to add
+   * \returns index of channel in list.
+   *
+   * This method is called automatically from Channel::Channel so
+   * the user has little reason to call it himself.
+   */
   uint32_t Add (Ptr<Channel> channel);
 
+  /**
+   * \returns a C++ iterator located at the beginning of this
+   *          list.
+   */
   ChannelList::Iterator Begin (void) const;
+  /**
+   * \returns a C++ iterator located at the end of this
+   *          list.
+   */
   ChannelList::Iterator End (void) const;
 
+  /**
+   * \param n index of requested channel.
+   * \returns the Channel associated to index n.
+   */
   Ptr<Channel> GetChannel (uint32_t n);
+
+  /**
+   * \returns the number of channels currently in the list.
+   */
   uint32_t GetNChannels (void);
 
+  /**
+   * \brief Get the channel list object
+   * \returns the channel list
+   */
   static Ptr<ChannelListPriv> Get (void);
 
 private:
+  /**
+   * \brief Get the channel list object
+   * \returns the channel list
+   */
   static Ptr<ChannelListPriv> *DoGet (void);
+
+  /**
+   * \brief Delete the channel list object
+   */
   static void Delete (void);
+
+  /**
+   * \brief Dispose the channels in the list
+   */
   virtual void DoDispose (void);
-  std::vector<Ptr<Channel> > m_channels;
+
+  std::vector<Ptr<Channel> > m_channels; //!< channel objects container
 };
 
-NS_OBJECT_ENSURE_REGISTERED (ChannelListPriv)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ChannelListPriv);
 
 TypeId 
 ChannelListPriv::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/channel-list.h ns-3.20/src/network/model/channel-list.h
--- ns-3.19/src/network/model/channel-list.h	2014-06-17 10:34:00.579635573 -0700
+++ ns-3.20/src/network/model/channel-list.h	2014-06-17 10:33:13.939995607 -0700
@@ -38,6 +38,7 @@
 class ChannelList
 {
 public:
+  /// Channel container iterator
   typedef std::vector< Ptr<Channel> >::const_iterator Iterator;
 
   /**
diff -Naur ns-3.19/src/network/model/chunk.cc ns-3.20/src/network/model/chunk.cc
--- ns-3.19/src/network/model/chunk.cc	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/network/model/chunk.cc	2014-06-17 10:33:13.940995599 -0700
@@ -2,8 +2,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Chunk)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Chunk);
 
 TypeId 
 Chunk::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/chunk.h ns-3.20/src/network/model/chunk.h
--- ns-3.19/src/network/model/chunk.h	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/network/model/chunk.h	2014-06-17 10:33:13.940995599 -0700
@@ -14,9 +14,23 @@
 class Chunk : public ObjectBase
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void); 
 
+  /**
+   * \brief Deserialize the object from a buffer iterator
+   * \param start the buffer iterator
+   * \returns the number of deserialized bytes
+   */
   virtual uint32_t Deserialize (Buffer::Iterator start) = 0;
+
+  /**
+   * \brief Print the object contents
+   * \param os the output stream
+   */
   virtual void Print (std::ostream &os) const = 0;
 };
 
diff -Naur ns-3.19/src/network/model/header.cc ns-3.20/src/network/model/header.cc
--- ns-3.19/src/network/model/header.cc	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/network/model/header.cc	2014-06-17 10:33:13.941995591 -0700
@@ -5,8 +5,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Header)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Header);
 
 Header::~Header ()
 {
diff -Naur ns-3.19/src/network/model/header.h ns-3.20/src/network/model/header.h
--- ns-3.19/src/network/model/header.h	2014-06-17 10:34:00.581635557 -0700
+++ ns-3.20/src/network/model/header.h	2014-06-17 10:33:13.941995591 -0700
@@ -42,6 +42,10 @@
 class Header : public Chunk
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual ~Header ();
   /**
@@ -91,6 +95,14 @@
   virtual void Print (std::ostream &os) const = 0;
 };
 
+
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param header the header
+ * \returns a reference to the stream
+ */
 std::ostream & operator << (std::ostream &os, const Header &header);
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/net-device.cc ns-3.20/src/network/model/net-device.cc
--- ns-3.19/src/network/model/net-device.cc	2014-06-17 10:34:00.581635557 -0700
+++ ns-3.20/src/network/model/net-device.cc	2014-06-17 10:33:13.941995591 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (NetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NetDevice);
 
 TypeId NetDevice::GetTypeId (void)
 {
diff -Naur ns-3.19/src/network/model/net-device.h ns-3.20/src/network/model/net-device.h
--- ns-3.19/src/network/model/net-device.h	2014-06-17 10:34:00.582635549 -0700
+++ ns-3.20/src/network/model/net-device.h	2014-06-17 10:33:13.942995584 -0700
@@ -75,6 +75,10 @@
 class NetDevice : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual ~NetDevice();
 
diff -Naur ns-3.19/src/network/model/nix-vector.cc ns-3.20/src/network/model/nix-vector.cc
--- ns-3.19/src/network/model/nix-vector.cc	2014-06-17 10:34:00.582635549 -0700
+++ ns-3.20/src/network/model/nix-vector.cc	2014-06-17 10:33:13.942995584 -0700
@@ -27,7 +27,7 @@
 
 namespace ns3 {
 
-typedef std::vector<uint32_t> NixBits_t;  ///typedef for the nixVector
+typedef std::vector<uint32_t> NixBits_t;  //!< typedef for the nixVector
 
 NixVector::NixVector ()
   : m_nixVector (0),
diff -Naur ns-3.19/src/network/model/nix-vector.h ns-3.20/src/network/model/nix-vector.h
--- ns-3.19/src/network/model/nix-vector.h	2014-06-17 10:34:00.582635549 -0700
+++ ns-3.20/src/network/model/nix-vector.h	2014-06-17 10:33:13.943995576 -0700
@@ -152,38 +152,58 @@
 
 
 private:
+  /// Typedef: the NixVector bits storage.
   typedef std::vector<uint32_t> NixBits_t;
 
+  /**
+   * \brief Print the NixVector.
+   *
+   * \param os the output stream
+   */
   /* for printing of nix-vector */
   void DumpNixVector (std::ostream &os) const;
-  /* for printing of nix-vector */
-  friend std::ostream & operator << ( std::ostream &outs, const NixVector &nix);
-
-  /* the actual nix-vector */
-  NixBits_t m_nixVector;
 
-  /* for tracking where we are
-   * in the nix-vector
+  /**
+   * \brief Stream insertion operator.
+   *
+   * \param os the stream
+   * \param nix the Nixvector
+   * \returns a reference to the stream
    */
-  uint32_t m_used;
+  friend std::ostream & operator << ( std::ostream &os, const NixVector &nix);
 
-  /* for tracking how many bits we
+  NixBits_t m_nixVector; //!< the actual nix-vector
+  uint32_t m_used; //!< For tracking where we are in the nix-vector
+
+  /**
+   * For tracking how many bits we
    * have used in the current vector
    * entry. need this in order to
    * expand the vector passed 32bits
    */
   uint32_t m_currentVectorBitSize;
 
-  /* a counter of how total bits are in
+  /**
+   * A counter of how total bits are in
    * the nix-vector
    */
   uint32_t m_totalBitSize;
 
-  /* internal for pretty printing of nix-vector */
-  void PrintDec2BinNixFill (uint32_t, uint32_t, std::ostream &os) const;
+  /**
+   * Internal for pretty printing of nix-vector (fill)
+   * \param decimalNum decimal divider
+   * \param bitCount bit counter
+   * \param os output stream
+   */
+  void PrintDec2BinNixFill (uint32_t decimalNum, uint32_t bitCount, std::ostream &os) const;
 
-  /* internal for pretty printing of nix-vector */
-  void PrintDec2BinNix (uint32_t, uint32_t, std::ostream &os) const;
+  /**
+   * Internal for pretty printing of nix-vector (no fill)
+   * \param decimalNum decimal divider
+   * \param bitCount bit counter
+   * \param os output stream
+   */
+  void PrintDec2BinNix (uint32_t decimalNum, uint32_t bitCount, std::ostream &os) const;
 };
 } // namespace ns3
 
diff -Naur ns-3.19/src/network/model/node.cc ns-3.20/src/network/model/node.cc
--- ns-3.19/src/network/model/node.cc	2014-06-17 10:34:00.584635534 -0700
+++ ns-3.20/src/network/model/node.cc	2014-06-17 10:33:13.944995568 -0700
@@ -36,13 +36,15 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Node)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Node);
 
-GlobalValue g_checksumEnabled  = GlobalValue ("ChecksumEnabled",
-                                              "A global switch to enable all checksums for all protocols",
-                                              BooleanValue (false),
-                                              MakeBooleanChecker ());
+/**
+ * \brief A global switch to enable all checksums for all protocols.
+ */
+static GlobalValue g_checksumEnabled  = GlobalValue ("ChecksumEnabled",
+                                                     "A global switch to enable all checksums for all protocols",
+                                                     BooleanValue (false),
+                                                     MakeBooleanChecker ());
 
 TypeId 
 Node::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/node.h ns-3.20/src/network/model/node.h
--- ns-3.19/src/network/model/node.h	2014-06-17 10:34:00.584635534 -0700
+++ ns-3.20/src/network/model/node.h	2014-06-17 10:33:13.944995568 -0700
@@ -55,6 +55,10 @@
 class Node : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   Node();
@@ -175,7 +179,7 @@
    * \param listener the listener to add
    *
    * Add a new listener to the list of listeners for the device-added
-   * event. When a new listener is added, it is notified of the existance
+   * event. When a new listener is added, it is notified of the existence
    * of all already-added devices to make discovery of devices easier.
    */
   void RegisterDeviceAdditionListener (DeviceAdditionListener listener);
@@ -204,30 +208,75 @@
   virtual void DoDispose (void);
   virtual void DoInitialize (void);
 private:
+
+  /**
+   * \brief Notifies all the DeviceAdditionListener about the new device added.
+   * \param device the added device to notify.
+   */
   void NotifyDeviceAdded (Ptr<NetDevice> device);
-  bool NonPromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet>, uint16_t protocol, const Address &from);
-  bool PromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet>, uint16_t protocol,
+
+  /**
+   * \brief Receive a packet from a device in non-promiscuous mode.
+   * \param device the device
+   * \param packet the packet
+   * \param protocol the protocol
+   * \param from the sender
+   * \returns true if the packet has been delivered to a protocol handler.
+   */
+  bool NonPromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet> packet, uint16_t protocol, const Address &from);
+  /**
+   * \brief Receive a packet from a device in promiscuous mode.
+   * \param device the device
+   * \param packet the packet
+   * \param protocol the protocol
+   * \param from the sender
+   * \param to the destination
+   * \param packetType the packet type
+   * \returns true if the packet has been delivered to a protocol handler.
+   */
+  bool PromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet> packet, uint16_t protocol,
                                  const Address &from, const Address &to, NetDevice::PacketType packetType);
+  /**
+   * \brief Receive a packet from a device.
+   * \param device the device
+   * \param packet the packet
+   * \param protocol the protocol
+   * \param from the sender
+   * \param to the destination
+   * \param packetType the packet type
+   * \param promisc true if received in promiscuous mode
+   * \returns true if the packet has been delivered to a protocol handler.
+   */
   bool ReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet>, uint16_t protocol,
                           const Address &from, const Address &to, NetDevice::PacketType packetType, bool promisc);
 
+  /**
+   * \brief Finish node's construction by setting the correct node ID.
+   */
   void Construct (void);
 
+  /**
+   * \brief Protocol handler entry.
+   * This structure is used to demultiplex all the protocols.
+   */
   struct ProtocolHandlerEntry {
-    ProtocolHandler handler;
-    Ptr<NetDevice> device;
-    uint16_t protocol;
-    bool promiscuous;
+    ProtocolHandler handler; //!< the protocol handler
+    Ptr<NetDevice> device;   //!< the NetDevice
+    uint16_t protocol;       //!< the protocol number
+    bool promiscuous;        //!< true if it is a promiscuous handler
   };
+
+  /// Typedef for protocol handlers container
   typedef std::vector<struct Node::ProtocolHandlerEntry> ProtocolHandlerList;
+  /// Typedef for NetDevice addition listeners container
   typedef std::vector<DeviceAdditionListener> DeviceAdditionListenerList;
 
-  uint32_t    m_id;         // Node id for this node
-  uint32_t    m_sid;        // System id for this node
-  std::vector<Ptr<NetDevice> > m_devices;
-  std::vector<Ptr<Application> > m_applications;
-  ProtocolHandlerList m_handlers;
-  DeviceAdditionListenerList m_deviceAdditionListeners;
+  uint32_t    m_id;         //!< Node id for this node
+  uint32_t    m_sid;        //!< System id for this node
+  std::vector<Ptr<NetDevice> > m_devices; //!< Devices associated to this node
+  std::vector<Ptr<Application> > m_applications; //!< Applications associated to this node
+  ProtocolHandlerList m_handlers; //!< Protocol handlers in the node
+  DeviceAdditionListenerList m_deviceAdditionListeners; //!< Device addition listeners in the node
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/node-list.cc ns-3.20/src/network/model/node-list.cc
--- ns-3.19/src/network/model/node-list.cc	2014-06-17 10:34:00.583635542 -0700
+++ ns-3.20/src/network/model/node-list.cc	2014-06-17 10:33:13.943995576 -0700
@@ -29,36 +29,82 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("NodeList")
-  ;
+NS_LOG_COMPONENT_DEFINE ("NodeList");
 
 /**
+ * \ingroup network
  * \brief private implementation detail of the NodeList API.
  */
 class NodeListPriv : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   NodeListPriv ();
   ~NodeListPriv ();
 
+  /**
+   * \param node node to add
+   * \returns index of node in list.
+   *
+   * This method is called automatically from Node::Node so
+   * the user has little reason to call it himself.
+   */
   uint32_t Add (Ptr<Node> node);
+
+  /**
+   * \returns a C++ iterator located at the beginning of this
+   *          list.
+   */
   NodeList::Iterator Begin (void) const;
+
+  /**
+   * \returns a C++ iterator located at the end of this
+   *          list.
+   */
   NodeList::Iterator End (void) const;
+
+  /**
+   * \param n index of requested node.
+   * \returns the Node associated to index n.
+   */
   Ptr<Node> GetNode (uint32_t n);
+
+  /**
+   * \returns the number of nodes currently in the list.
+   */
   uint32_t GetNNodes (void);
 
+  /**
+   * \brief Get the node list object
+   * \returns the node list
+   */
   static Ptr<NodeListPriv> Get (void);
 
 private:
-  virtual void DoDispose (void);
+  /**
+   * \brief Get the node list object
+   * \returns the node list
+   */
   static Ptr<NodeListPriv> *DoGet (void);
+
+  /**
+   * \brief Delete the nodes list object
+   */
   static void Delete (void);
-  std::vector<Ptr<Node> > m_nodes;
+
+  /**
+   * \brief Dispose the nodes in the list
+   */
+  virtual void DoDispose (void);
+
+  std::vector<Ptr<Node> > m_nodes; //!< node objects container
 };
 
-NS_OBJECT_ENSURE_REGISTERED (NodeListPriv)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NodeListPriv);
 
 TypeId 
 NodeListPriv::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/node-list.h ns-3.20/src/network/model/node-list.h
--- ns-3.19/src/network/model/node-list.h	2014-06-17 10:34:00.583635542 -0700
+++ ns-3.20/src/network/model/node-list.h	2014-06-17 10:33:13.943995576 -0700
@@ -40,6 +40,7 @@
 class NodeList
 {
 public:
+  /// Node container iterator
   typedef std::vector< Ptr<Node> >::const_iterator Iterator;
 
   /**
diff -Naur ns-3.19/src/network/model/packet.h ns-3.20/src/network/model/packet.h
--- ns-3.19/src/network/model/packet.h	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/network/model/packet.h	2014-06-17 10:33:13.948995537 -0700
@@ -51,7 +51,7 @@
 {
 public:
   /**
-   * Identifies a byte tag and a set of bytes within a packet
+   * \brief Identifies a byte tag and a set of bytes within a packet
    * to which the tag applies.
    */
   class Item
@@ -64,17 +64,17 @@
     /**
      * \returns the index of the first byte tagged by this tag.
      *
-     * The index is an offset from the start of the packet.
+     * \brief The index is an offset from the start of the packet.
      */
     uint32_t GetStart (void) const;
     /**
      * \returns the index of the last byte tagged by this tag.
      *
-     * The index is an offset from the start of the packet.
+     * \brief The index is an offset from the start of the packet.
      */
     uint32_t GetEnd (void) const;
     /**
-     * Read the requested tag and store it in the user-provided tag instance.
+     * \brief Read the requested tag and store it in the user-provided tag instance.
      *
      * \param tag the user tag to which the data should be copied.
      *
@@ -84,11 +84,19 @@
     void GetTag (Tag &tag) const;
 private:
     friend class ByteTagIterator;
+    /**
+     * \brief Constructor
+     * \param tid the ns3::TypeId associated to this tag.
+     * \param start the index of the first byte tagged by this tag.
+     * \param end the index of the last byte tagged by this tag.
+     * \param buffer the buffer associated with this tag.
+     */
     Item (TypeId tid, uint32_t start, uint32_t end, TagBuffer buffer);
-    TypeId m_tid;
-    uint32_t m_start;
-    uint32_t m_end;
-    TagBuffer m_buffer;
+
+    TypeId m_tid;       //!< the ns3::TypeId associated to this tag.
+    uint32_t m_start;   //!< the index of the first byte tagged by this tag.
+    uint32_t m_end;     //!< the index of the last byte tagged by this tag.
+    TagBuffer m_buffer; //!< the buffer associated with this tag.
   };
   /**
    * \returns true if calling Next is safe, false otherwise.
@@ -100,8 +108,12 @@
   Item Next (void);
 private:
   friend class Packet;
+  /**
+   * Copy Constructor
+   * \param i object to copy
+   */
   ByteTagIterator (ByteTagList::Iterator i);
-  ByteTagList::Iterator m_current;
+  ByteTagList::Iterator m_current; //!< actual position over the set of byte tags in a packet
 };
 
 /**
@@ -134,8 +146,12 @@
     void GetTag (Tag &tag) const;
 private:
     friend class PacketTagIterator;
+    /**
+     * Constructor
+     * \param data the data to copy.
+     */
     Item (const struct PacketTagList::TagData *data);
-    const struct PacketTagList::TagData *m_data;
+    const struct PacketTagList::TagData *m_data; //!< the tag data
   };
   /**
    * \returns true if calling Next is safe, false otherwise.
@@ -147,8 +163,12 @@
   Item Next (void);
 private:
   friend class Packet;
+  /**
+   * Constructor
+   * \param head head of the items
+   */
   PacketTagIterator (const struct PacketTagList::TagData *head);
-  const struct PacketTagList::TagData *m_current;
+  const struct PacketTagList::TagData *m_current;  //!< actual position over the set of tags in a packet
 };
 
 /**
@@ -205,14 +225,24 @@
 public:
 
   /**
-   * Create an empty packet with a new uid (as returned
+   * \brief Create an empty packet with a new uid (as returned
    * by getUid).
    */
   Packet ();
+  /**
+   * \brief Copy constructor
+   * \param o object to copy
+   */
   Packet (const Packet &o);
+  /**
+   * \brief Basic assignment
+   * \param o object to copy
+   * \return the copied object
+   */
   Packet &operator = (const Packet &o);
   /**
-   * Create a packet with a zero-filled payload.
+   * \brief Create a packet with a zero-filled payload.
+   *
    * The memory necessary for the payload is not allocated:
    * it will be allocated at any later point if you attempt
    * to fragment this packet or to access the zero-filled
@@ -223,7 +253,9 @@
    */
   Packet (uint32_t size);
   /**
-   * Create a new packet from the serialized buffer. This new packet 
+   * \brief Create a new packet from the serialized buffer.
+   *
+   * This new packet
    * is identical to the serialized packet contained in the buffer 
    * and is magically deserialized for you
    * 
@@ -234,8 +266,10 @@
    */
   Packet (uint8_t const*buffer, uint32_t size, bool magic);
   /**
-   * Create a packet with payload filled with the content
-   * of this buffer. The input data is copied: the input
+   * \brief Create a packet with payload filled with the content
+   * of this buffer.
+   *
+   * The input data is copied: the input
    * buffer is untouched.
    *
    * \param buffer the data to store in the packet.
@@ -243,8 +277,10 @@
    */
   Packet (uint8_t const*buffer, uint32_t size);
   /**
-   * Create a new packet which contains a fragment of the original
-   * packet. The returned packet shares the same uid as this packet.
+   * \brief Create a new packet which contains a fragment of the original
+   * packet.
+   *
+   * The returned packet shares the same uid as this packet.
    *
    * \param start offset from start of packet to start of fragment to create
    * \param length length of fragment to create
@@ -252,12 +288,16 @@
    */
   Ptr<Packet> CreateFragment (uint32_t start, uint32_t length) const;
   /**
-   * \returns the size in bytes of the packet (including the zero-filled
-   *          initial payload)
+   * \brief Returns the the size in bytes of the packet (including the zero-filled
+   * initial payload).
+   *
+   * \returns the size in bytes of the packet
    */
   inline uint32_t GetSize (void) const;
   /**
-   * Add header to this packet. This method invokes the
+   * \brief Add header to this packet.
+   *
+   * This method invokes the
    * Header::GetSerializedSize and Header::Serialize
    * methods to reserve space in the buffer and request the 
    * header to serialize itself in the packet buffer.
@@ -266,7 +306,8 @@
    */
   void AddHeader (const Header & header);
   /**
-   * Deserialize and remove the header from the internal buffer.
+   * \brief Deserialize and remove the header from the internal buffer.
+   *
    * This method invokes Header::Deserialize.
    *
    * \param header a reference to the header to remove from the internal buffer.
@@ -274,7 +315,8 @@
    */
   uint32_t RemoveHeader (Header &header);
   /**
-   * Deserialize but does _not_ remove the header from the internal buffer.
+   * \brief Deserialize but does _not_ remove the header from the internal buffer.
+   * s
    * This method invokes Header::Deserialize.
    *
    * \param header a reference to the header to read from the internal buffer.
@@ -282,7 +324,9 @@
    */
   uint32_t PeekHeader (Header &header) const;
   /**
-   * Add trailer to this packet. This method invokes the
+   * \brief Add trailer to this packet.
+   *
+   * This method invokes the
    * Trailer::GetSerializedSize and Trailer::Serialize
    * methods to reserve space in the buffer and request the trailer 
    * to serialize itself in the packet buffer.
@@ -291,7 +335,8 @@
    */
   void AddTrailer (const Trailer &trailer);
   /**
-   * Remove a deserialized trailer from the internal buffer.
+   * \brief Remove a deserialized trailer from the internal buffer.
+   *
    * This method invokes the Deserialize method.
    *
    * \param trailer a reference to the trailer to remove from the internal buffer.
@@ -299,7 +344,8 @@
    */
   uint32_t RemoveTrailer (Trailer &trailer);
   /**
-   * Deserialize but does _not_ remove a trailer from the internal buffer.
+   * \brief Deserialize but does _not_ remove a trailer from the internal buffer.
+   *
    * This method invokes the Trailer::Deserialize method.
    *
    * \param trailer a reference to the trailer to read from the internal buffer.
@@ -308,18 +354,23 @@
   uint32_t PeekTrailer (Trailer &trailer);
 
   /**
-   * Concatenate the input packet at the end of the current
-   * packet. This does not alter the uid of either packet.
+   * \brief Concatenate the input packet at the end of the current
+   * packet.
+   *
+   * This does not alter the uid of either packet.
    *
    * \param packet packet to concatenate
    */
   void AddAtEnd (Ptr<const Packet> packet);
   /**
+   * \brief Add a zero-filled padding to the packet.
+   *
    * \param size number of padding bytes to add.
    */
   void AddPaddingAtEnd (uint32_t size);
   /** 
-   * Remove size bytes from the end of the current packet
+   * \brief Remove size bytes from the end of the current packet.
+   *
    * It is safe to remove more bytes than are present in
    * the packet.
    *
@@ -327,7 +378,8 @@
    */
   void RemoveAtEnd (uint32_t size);
   /** 
-   * Remove size bytes from the start of the current packet.
+   * \brief Remove size bytes from the start of the current packet.
+   *
    * It is safe to remove more bytes than are present in
    * the packet.
    *
@@ -351,7 +403,7 @@
   uint8_t const *PeekData (void) const NS_DEPRECATED;
 
   /**
-   * Copy the packet contents to a byte buffer.
+   * \brief Copy the packet contents to a byte buffer.
    *
    * \param buffer a pointer to a byte buffer where the packet data 
    *        should be copied.
@@ -363,7 +415,7 @@
   uint32_t CopyData (uint8_t *buffer, uint32_t size) const;
 
   /**
-   * Copy the packet contents to an output stream.
+   * \brief Copy the packet contents to an output stream.
    *
    * \param os pointer to output stream in which we want
    *        to write the packet data.
@@ -373,6 +425,8 @@
   void CopyData (std::ostream *os, uint32_t size) const;
 
   /**
+   * \brief performs a COW copy of the packet.
+   *
    * \returns a COW copy of the packet.
    *
    * The returns packet will behave like an independent copy of
@@ -382,6 +436,8 @@
   Ptr<Packet> Copy (void) const;
 
   /**
+   * \brief Returns the packet's Uid.
+   *
    * A packet is allocated a new uid when it is created
    * empty or with zero-filled payload.
    *
@@ -401,6 +457,8 @@
   uint64_t GetUid (void) const;
 
   /**
+   * \brief Print the packet contents.
+   *
    * \param os output stream in which the data should be printed.
    *
    * Iterate over the headers and trailers present in this packet, 
@@ -411,16 +469,22 @@
   void Print (std::ostream &os) const;
 
   /**
-   * \returns an iterator which points to the first 'item'
-   * stored in this buffer. Note that this iterator will point
+   * \brief Returns an iterator which points to the first 'item'
+   * stored in this buffer.
+   *
+   * Note that this iterator will point
    * to an empty array of items if you don't call EnablePrinting
    * or EnableChecking before.
    *
+   * \returns an iterator
+   *
    * \sa EnablePrinting EnableChecking
    */
   PacketMetadata::ItemIterator BeginItem (void) const;
 
   /**
+   * \brief Enable printing packets metadata.
+   *
    * By default, packets do not keep around enough metadata to
    * perform the operations requested by the Print methods. If you
    * want to be able the Packet::Print method, 
@@ -429,6 +493,8 @@
    */
   static void EnablePrinting (void);
   /**
+   * \brief Enable packets metadata checking.
+   *
    * The packet metadata is also used to perform extensive
    * sanity checks at runtime when performing operations on a 
    * Packet. For example, this metadata is used to verify that
@@ -439,6 +505,9 @@
   static void EnableChecking (void);
 
   /**
+   * \brief Returns number of bytes required for packet
+   * serialization.
+   *
    * \returns number of bytes required for packet
    * serialization
    *
@@ -449,7 +518,7 @@
   uint32_t GetSerializedSize (void) const;
 
   /**
-   * Serialize a packet, tags, and metadata into a byte buffer.
+   * \brief Serialize a packet, tags, and metadata into a byte buffer.
    *
    * \param buffer a raw byte buffer to which the packet will be serialized
    * \param maxSize the max size of the buffer for bounds checking
@@ -459,7 +528,7 @@
   uint32_t Serialize (uint8_t* buffer, uint32_t maxSize) const;
 
   /**
-   * Tag each byte included in this packet with a new byte tag.
+   * \brief Tag each byte included in this packet with a new byte tag.
    *
    * \param tag the new tag to add to this packet
    *
@@ -476,10 +545,14 @@
    */
   void AddByteTag (const Tag &tag) const;
   /**
+   * \brief Retiurns an iterator over the set of byte tags included in this packet
+   *
    * \returns an iterator over the set of byte tags included in this packet.
    */
   ByteTagIterator GetByteTagIterator (void) const;
   /**
+   * \brief Finds the first tag matching the parameter Tag type
+   *
    * \param tag the byte tag type to search in this packet
    * \returns true if the requested tag type was found, false otherwise.
    *
@@ -489,20 +562,20 @@
   bool FindFirstMatchingByteTag (Tag &tag) const;
 
   /**
-   * Remove all byte tags stored in this packet.
+   * \brief Remove all byte tags stored in this packet.
    */
   void RemoveAllByteTags (void);
 
   /**
    * \param os output stream in which the data should be printed.
    *
-   * Iterate over the byte tags present in this packet, and
+   * \brief Iterate over the byte tags present in this packet, and
    * invoke the Print method of each tag stored in the packet.
    */
   void PrintByteTags (std::ostream &os) const;
 
   /**
-   * Add a packet tag.
+   * \brief Add a packet tag.
    *
    * \param tag the packet tag type to add.
    *
@@ -512,7 +585,7 @@
    */
   void AddPacketTag (const Tag &tag) const;
   /**
-   * Remove a packet tag.
+   * \brief Remove a packet tag.
    *
    * \param tag the packet tag type to remove from this packet.
    *        The tag parameter is set to the value of the tag found.
@@ -521,7 +594,7 @@
    */
   bool RemovePacketTag (Tag &tag);
   /**
-   * Replace the value of a packet tag.
+   * \brief Replace the value of a packet tag.
    *
    * \param tag the packet tag type to replace.  To get the old
    *        value of the tag, use PeekPacketTag first.
@@ -532,7 +605,7 @@
    */
   bool ReplacePacketTag (Tag & tag);
   /**
-   * Search a matching tag and call Tag::Deserialize if it is found.
+   * \brief Search a matching tag and call Tag::Deserialize if it is found.
    *
    * \param tag the tag to search in this packet
    * \returns true if the requested tag is found, false
@@ -540,12 +613,12 @@
    */
   bool PeekPacketTag (Tag &tag) const;
   /**
-   * Remove all packet tags.
+   * \brief Remove all packet tags.
    */
   void RemoveAllPacketTags (void);
 
   /**
-   * Print the list of packet tags.
+   * \brief Print the list of packet tags.
    *
    * \param os the stream on which to print the tags.
    *
@@ -555,13 +628,16 @@
   void PrintPacketTags (std::ostream &os) const;
 
   /**
+   * \brief Returns an object which can be used to iterate over the list of
+   *  packet tags.
+   *
    * \returns an object which can be used to iterate over the list of
    *  packet tags.
    */
   PacketTagIterator GetPacketTagIterator (void) const;
 
   /**
-   * Set the packet nix-vector.
+   * \brief Set the packet nix-vector.
    *
    * Note: This function supports a temporary solution
    * to a specific problem in this generic class, i.e. 
@@ -569,32 +645,50 @@
    * with a packet.  This design methodology 
    * should _not_ be followed, and is only here as an 
    * impetus to fix this general issue.
+   *
+   * \param nixVector the nix vector
    */
-  void SetNixVector (Ptr<NixVector>);
+  void SetNixVector (Ptr<NixVector> nixVector);
   /**
-   * Get the packet nix-vector.
+   * \brief Get the packet nix-vector.
    *
    * See the comment on SetNixVector
+   *
+   * \returns the Nix vector
    */
   Ptr<NixVector> GetNixVector (void) const; 
 
 private:
+  /**
+   * \brief Constructor
+   * \param buffer the packet buffer
+   * \param byteTagList the ByteTag list
+   * \param packetTagList the packet's Tag list
+   * \param metadata the packet's metadata
+   */
   Packet (const Buffer &buffer, const ByteTagList &byteTagList, 
           const PacketTagList &packetTagList, const PacketMetadata &metadata);
 
   uint32_t Deserialize (uint8_t const*buffer, uint32_t size);
 
-  Buffer m_buffer;
-  ByteTagList m_byteTagList;
-  PacketTagList m_packetTagList;
-  PacketMetadata m_metadata;
+  Buffer m_buffer;                //!< the packet buffer (it's actual contents)
+  ByteTagList m_byteTagList;      //!< the ByteTag list
+  PacketTagList m_packetTagList;  //!< the packet's Tag list
+  PacketMetadata m_metadata;      //!< the packet's metadata
 
   /* Please see comments above about nix-vector */
-  Ptr<NixVector> m_nixVector;
+  Ptr<NixVector> m_nixVector; //!< the packet's Nix vector
 
-  static uint32_t m_globalUid;
+  static uint32_t m_globalUid; //!< Global counter of packets Uid
 };
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param packet the packet
+ * \returns a reference to the stream
+ */
 std::ostream& operator<< (std::ostream& os, const Packet &packet);
 
 /**
diff -Naur ns-3.19/src/network/model/packet-metadata.cc ns-3.20/src/network/model/packet-metadata.cc
--- ns-3.19/src/network/model/packet-metadata.cc	2014-06-17 10:34:00.585635527 -0700
+++ ns-3.20/src/network/model/packet-metadata.cc	2014-06-17 10:33:13.945995560 -0700
@@ -447,12 +447,6 @@
   return n;
 }
 
-/**
- * \param item the item data to write
- * \param extraItem the extra item data to write
- * \param available the number of bytes which can 
- *        be written without having to rewrite the buffer entirely.
- */
 void
 PacketMetadata::ReplaceTail (PacketMetadata::SmallItem *item, 
                              PacketMetadata::ExtraItem *extraItem,
@@ -530,12 +524,7 @@
   *this = h;
 }
 
-/**
- * \param current the offset we should start reading the data from
- * \param item pointer to where we should store the data to return to the caller
- * \param extraItem pointer to where we should store the data to return to the caller
- * \returns the number of bytes read.
- */
+
 uint32_t
 PacketMetadata::ReadItems (uint16_t current, 
                            struct PacketMetadata::SmallItem *item,
diff -Naur ns-3.19/src/network/model/packet-metadata.h ns-3.20/src/network/model/packet-metadata.h
--- ns-3.19/src/network/model/packet-metadata.h	2014-06-17 10:34:00.585635527 -0700
+++ ns-3.20/src/network/model/packet-metadata.h	2014-06-17 10:33:13.946995553 -0700
@@ -38,7 +38,7 @@
 /**
  * \internal
  * \ingroup packet
- * \brief handle packet metadata about packet headers and trailers
+ * \brief Handle packet metadata about packet headers and trailers
  *
  * This class is used by the Packet class to record every operation
  * performed on the packet's buffer. This class also provides
@@ -79,132 +79,322 @@
 class PacketMetadata 
 {
 public:
+
+  /**
+   * \brief structure describing a packet metadata item
+   */
   struct Item 
   {
     enum {
       PAYLOAD,
       HEADER,
       TRAILER
-    } type;
-    /* true: this is a fragmented header, trailer, or, payload.
+    } type; //!< metadata type
+    /**
+     * true: this is a fragmented header, trailer, or, payload.
      * false: this is a whole header, trailer, or, payload.
      */
     bool isFragment;
-    /* TypeId of Header or Trailer. Valid only if type is 
+    /**
+     * TypeId of Header or Trailer. Valid only if type is
      * header or trailer.
      */
     TypeId tid;
-    /* size of item. If fragment, size of fragment. Otherwise, 
+    /**
+     * size of item. If fragment, size of fragment. Otherwise,
      * size of original item. 
      */
     uint32_t currentSize;
-    /* how many bytes were trimed from the start of a fragment.
+    /**
+     * how many bytes were trimed from the start of a fragment.
      * if isFragment is true, this field is zero.
      */
     uint32_t currentTrimedFromStart;
-    /* how many bytes were trimed from the end of a fragment.
+    /**
+     * how many bytes were trimed from the end of a fragment.
      * if isFragment is true, this field is zero.
      */
     uint32_t currentTrimedFromEnd;
-    /* an iterator which can be fed to Deserialize. Valid only
+    /**
+     * an iterator which can be fed to Deserialize. Valid only
      * if isFragment and isPayload are false.
      */
     Buffer::Iterator current;
   };
+
+  /**
+   * \brief Iterator class for metadata items.
+   */
   class ItemIterator 
   {
 public:
+    /**
+     * \brief Constructor
+     * \param metadata a pointer to the metadata
+     * \param buffer the buffer the metadata refers to
+     */
     ItemIterator (const PacketMetadata *metadata, Buffer buffer);
+    /**
+     * \brief Checks if there is another metadata item
+     * \returns true if there is another item
+     */
     bool HasNext (void) const;
+    /**
+     * \brief Retrieve the next metadata item
+     * \returns the next metadata item
+     */
     Item Next (void);
 private:
-    const PacketMetadata *m_metadata;
-    Buffer m_buffer;
-    uint16_t m_current;
-    uint32_t m_offset;
-    bool m_hasReadTail;
+    const PacketMetadata *m_metadata; //!< pointer to the metadata
+    Buffer m_buffer; //!< buffer the metadata refers to
+    uint16_t m_current; //!< current position
+    uint32_t m_offset; //!< offset
+    bool m_hasReadTail; //!< true if the metadata tail has been read
   };
 
+  /**
+   * \brief Enable the packet metadata
+   */
   static void Enable (void);
+  /**
+   * \brief Enable the packet metadata checking
+   */
   static void EnableChecking (void);
 
+  /**
+   * \brief Constructor
+   * \param uid packet uid
+   * \param size size of the header
+   */
   inline PacketMetadata (uint64_t uid, uint32_t size);
+  /**
+   * \brief Copy constructor
+   * \param o the object to copy
+   */
   inline PacketMetadata (PacketMetadata const &o);
+  /**
+   * \brief Basic assignment
+   * \param o the object to copy
+   * \return a copied object
+   */
   inline PacketMetadata &operator = (PacketMetadata const& o);
   inline ~PacketMetadata ();
 
+  /**
+   * \brief Add an header
+   * \param header header to add
+   * \param size header serialized size
+   */
   void AddHeader (Header const &header, uint32_t size);
+  /**
+   * \brief Remove an header
+   * \param header header to remove
+   * \param size header serialized size
+   */
   void RemoveHeader (Header const &header, uint32_t size);
 
+  /**
+   * Add a trailer
+   * \param trailer trailer to add
+   * \param size trailer serialized size
+   */
   void AddTrailer (Trailer const &trailer, uint32_t size);
+  /**
+   * Remove a trailer
+   * \param trailer trailer to remove
+   * \param size trailer serialized size
+   */
   void RemoveTrailer (Trailer const &trailer, uint32_t size);
 
   /**
+   * \brief Creates a fragment.
+   *
    * \param start the amount of stuff to remove from the start
    * \param end the amount of stuff to remove from the end
+   * \return the fragment's metadata
    *
    * Calling this method is equivalent to calling RemoveAtStart (start)
    * and then, RemoveAtEnd (end).
    */
   PacketMetadata CreateFragment (uint32_t start, uint32_t end) const;
+
+  /**
+   * \brief Add a metadata at the metadata start
+   * \param o the metadata to add
+   */
   void AddAtEnd (PacketMetadata const&o);
+  /**
+   * \brief Add some padding at the end
+   * \param end size of padding
+   */
   void AddPaddingAtEnd (uint32_t end);
+  /**
+   * \brief Remove a chunk of metadata at the metadata start
+   * \param start the size of metadata to remove
+   */
   void RemoveAtStart (uint32_t start);
+  /**
+   * \brief Remove a chunk of metadata at the metadata end
+   * \param end the size of metadata to remove
+   */
   void RemoveAtEnd (uint32_t end);
 
+  /**
+   * \brief Get the packet Uid
+   * \return the packet Uid
+   */
   uint64_t GetUid (void) const;
 
+  /**
+   * \brief Get the metadata serialized size
+   * \return the seralized size
+   */
   uint32_t GetSerializedSize (void) const;
 
+  /**
+   * \brief Initialize the item iterator to the buffer begin
+   */
   ItemIterator BeginItem (Buffer buffer) const;
 
-  // Serialization to/from raw uint8_t*
+  /**
+   *  \brief Serialization to raw uint8_t*
+   *  \param buffer the buffer to serialize to
+   *  \param maxSize the maximum serialization size
+   *  \return 1 on success, 0 on failure
+   */
   uint32_t Serialize   (uint8_t* buffer, uint32_t maxSize) const;
+  /**
+   *  \brief Deserialization from raw uint8_t*
+   *  \param buffer the buffer to deserialize from
+   *  \param size the size
+   *  \return 1 on success, 0 on failure
+   */
   uint32_t Deserialize (const uint8_t* buffer, uint32_t size);
 
 private:
-  // Helper for the raw serilization/deserialization
+  /**
+   * \brief Helper for the raw serialization.
+   *
+   * \param data the buffer to write to
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* AddToRawU8 (const uint8_t& data,
                               uint8_t* start,
                               uint8_t* current,
                               uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw serialization.
+   *
+   * \param data the buffer to write to
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* AddToRawU16 (const uint16_t& data,
                                uint8_t* start,
                                uint8_t* current,
                                uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw serialization.
+   *
+   * \param data the buffer to write to
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* AddToRawU32 (const uint32_t& data,
                                uint8_t* start,
                                uint8_t* current,
                                uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw serialization.
+   *
+   * \param data the buffer to write to
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* AddToRawU64 (const uint64_t& data,
                                uint8_t* start,
                                uint8_t* current,
                                uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw serialization.
+   *
+   * \param data the buffer to write to
+   * \param dataSize the data size to write to
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* AddToRaw (const uint8_t* data,
                             uint32_t dataSize,
                             uint8_t* start,
                             uint8_t* current,
                             uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw deserialization.
+   *
+   * \param data the buffer to read from
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* ReadFromRawU8 (uint8_t& data,
                                  const uint8_t* start,
                                  const uint8_t* current,
                                  uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw deserialization.
+   *
+   * \param data the buffer to read from
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* ReadFromRawU16 (uint16_t& data,
                                   const uint8_t* start,
                                   const uint8_t* current,
                                   uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw deserialization.
+   *
+   * \param data the buffer to read from
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* ReadFromRawU32 (uint32_t& data,
                                   const uint8_t* start,
                                   const uint8_t* current,
                                   uint32_t maxSize);
 
+  /**
+   * \brief Helper for the raw deserialization.
+   *
+   * \param data the buffer to read from
+   * \param start start index
+   * \param current current index
+   * \param maxSize maximum size
+   * \return updated current index
+   */
   static uint8_t* ReadFromRawU64 (uint64_t& data,
                                   const uint8_t* start,
                                   const uint8_t* current,
@@ -216,15 +406,18 @@
    */ 
 #define PACKET_METADATA_DATA_M_DATA_SIZE 8
   
+  /**
+   * Data structure
+   */
   struct Data {
-    /* number of references to this struct Data instance. */
+    /** number of references to this struct Data instance. */
     uint32_t m_count;
-    /* size (in bytes) of m_data buffer below */
+    /** size (in bytes) of m_data buffer below */
     uint16_t m_size;
-    /* max of the m_used field over all objects which 
+    /** max of the m_used field over all objects which
      * reference this struct Data instance */
     uint16_t m_dirtyEnd;
-    /* variable-sized buffer of bytes */
+    /** variable-sized buffer of bytes */
     uint8_t m_data[PACKET_METADATA_DATA_M_DATA_SIZE]; 
   };
   /* Note that since the next and prev fields are 16 bit integers
@@ -233,20 +426,23 @@
      only a limited number of elements can be stored in 
      a m_data byte buffer.
    */
+  /**
+   * \brief SmallItem structure
+   */
   struct SmallItem {
-    /* offset (in bytes) from start of m_data buffer 
+    /** offset (in bytes) from start of m_data buffer
        to next element in linked list. value is 0xffff 
        if next element does not exist.
        stored as a fixed-size 16 bit integer.
     */
     uint16_t next;
-    /* offset (in bytes) from start of m_data buffer 
+    /** offset (in bytes) from start of m_data buffer
        to previous element in linked list. value is 0xffff 
        if previous element does not exist.
        stored as a fixed-size 16 bit integer.
      */
     uint16_t prev;
-    /* the high 31 bits of this field identify the 
+    /** the high 31 bits of this field identify the
        type of the header or trailer represented by 
        this item: the value zero represents payload.
        If the low bit of this uid is one, an ExtraItem
@@ -254,12 +450,12 @@
        stored as a variable-size 32 bit integer.
      */
     uint32_t typeUid;
-    /* the size (in bytes) of the header or trailer represented
+    /** the size (in bytes) of the header or trailer represented
        by this element.
        stored as a variable-size 32 bit integer.
      */
     uint32_t size;
-    /* this field tries to uniquely identify each header or 
+    /** this field tries to uniquely identify each header or
        trailer _instance_ while the typeUid field uniquely
        identifies each header or trailer _type_. This field
        is used to test whether two items are equal in the sense 
@@ -273,18 +469,22 @@
      */
     uint16_t chunkUid;
   };
+
+  /**
+   * \brief ExtraItem structure
+   */
   struct ExtraItem {
-    /* offset (in bytes) from start of original header to 
+    /** offset (in bytes) from start of original header to
        the start of the fragment still present.
        stored as a variable-size 32 bit integer.
      */
     uint32_t fragmentStart;
-    /* offset (in bytes) from start of original header to 
+    /** offset (in bytes) from start of original header to
        the end of the fragment still present.
        stored as a variable-size 32 bit integer.
      */
     uint32_t fragmentEnd;
-    /* the packetUid of the packet in which this header or trailer
+    /** the packetUid of the packet in which this header or trailer
        was first added. It could be different from the m_packetUid
        field if the user has aggregated multiple packets into one.
        stored as a fixed-size 64 bit integer.
@@ -292,6 +492,9 @@
     uint64_t packetUid;
   };
 
+  /**
+   * \brief Class to hold all the metadata
+   */
   class DataFreeList : public std::vector<struct Data *>
   {
 public:
@@ -303,60 +506,181 @@
 
   PacketMetadata ();
 
+  /**
+   * \brief Add a SmallItem
+   * \param item the SmallItem to add
+   * \return added size
+   */
   inline uint16_t AddSmall (const PacketMetadata::SmallItem *item);
+  /**
+   * \brief Add a "Big" Item (a SmallItem plus an ExtraItem)
+   * \param head the head
+   * \param tail the tail
+   * \param item the SmallItem to add
+   * \param extraItem the ExtraItem to add
+   * \return added size
+   */
   uint16_t AddBig (uint32_t head, uint32_t tail,
                    const PacketMetadata::SmallItem *item, 
                    const PacketMetadata::ExtraItem *extraItem);
+  /**
+   * \brief Replace the tail
+   * \param item the item data to write
+   * \param extraItem the extra item data to write
+   * \param available the number of bytes which can
+   *        be written without having to rewrite the buffer entirely.
+   */
   void ReplaceTail (PacketMetadata::SmallItem *item, 
                     PacketMetadata::ExtraItem *extraItem,
                     uint32_t available);
+  /**
+   * \brief Update the head
+   * \param written the used bytes
+   */
   inline void UpdateHead (uint16_t written);
+  /**
+   * \brief Update the tail
+   * \param written the used bytes
+   */
   inline void UpdateTail (uint16_t written);
+
+  /**
+   * \brief Get the ULEB128 (Unsigned Little Endian Base 128) size
+   * \param value the value
+   * \returns the value's ULEB128 size
+   */
   inline uint32_t GetUleb128Size (uint32_t value) const;
+  /**
+   * \brief Read a ULEB128 (Unsigned Little Endian Base 128) coded number
+   * \param pBuffer the buffer to read from
+   * \returns the value
+   */
   uint32_t ReadUleb128 (const uint8_t **pBuffer) const;
+  /**
+   * \brief Append a 16-bit value to the buffer
+   * \param value the value to add
+   * \param buffer the buffer to write to
+   */
   inline void Append16 (uint16_t value, uint8_t *buffer);
+  /**
+   * \brief Append a 32-bit value to the buffer
+   * \param value the value to add
+   * \param buffer the buffer to write to
+   */
   inline void Append32 (uint32_t value, uint8_t *buffer);
+  /**
+   * \brief Append a value to the buffer
+   * \param value the value to add
+   * \param buffer the buffer to write to
+   */
   inline void AppendValue (uint32_t value, uint8_t *buffer);
+  /**
+   * \brief Append a value to the buffer - extra
+   *
+   * This function is called by AppendValue
+   *
+   * \param value the value to add
+   * \param buffer the buffer to write to
+   */
   void AppendValueExtra (uint32_t value, uint8_t *buffer);
+
+  /**
+   * \brief Reserve space
+   * \param n space to reserve
+   */
   inline void Reserve (uint32_t n);
+  /**
+   * \brief Reserve space and make a metadata copy
+   * \param n space to reserve
+   */
   void ReserveCopy (uint32_t n);
+
+  /**
+   * \brief Get the total size used by the metadata
+   */
   uint32_t GetTotalSize (void) const;
+
+  /**
+   * \brief Read items
+   * \param current the offset we should start reading the data from
+   * \param item pointer to where we should store the data to return to the caller
+   * \param extraItem pointer to where we should store the data to return to the caller
+   * \returns the number of bytes read.
+   */
   uint32_t ReadItems (uint16_t current, 
                       struct PacketMetadata::SmallItem *item,
                       struct PacketMetadata::ExtraItem *extraItem) const;
+  /**
+   * \brief Add an header
+   * \param uid header's uid to add
+   * \param size header serialized size
+   */
   void DoAddHeader (uint32_t uid, uint32_t size);
+  /**
+   * \brief Check if the metadata state is ok
+   * \returns true if the internal state is ok
+   */
   bool IsStateOk (void) const;
+  /**
+   * \brief Check if the position is valid
+   * \param pointer the position to check
+   * \returns true if the position is valid
+   */
   bool IsPointerOk (uint16_t pointer) const;
+  /**
+   * \brief Check if the position is valid
+   * \param pointer the position to check
+   * \returns true if the position is valid
+   */
   bool IsSharedPointerOk (uint16_t pointer) const;
 
-
-  static struct PacketMetadata::Data *Create (uint32_t size);
+  /**
+   * \brief Recycle the buffer memory
+   * \param data the buffer data storage
+   */
   static void Recycle (struct PacketMetadata::Data *data);
+  /**
+   * \brief Create a buffer data storage
+   * \param size the storage size to create
+   * \returns a pointer to the created buffer storage
+   */
+  static struct PacketMetadata::Data *Create (uint32_t size);
+  /**
+   * \brief Allocate a buffer data storage
+   * \param n the storage size to create
+   * \returns a pointer to the allocated buffer storage
+   */
   static struct PacketMetadata::Data *Allocate (uint32_t n);
+  /**
+   * \brief Deallocate the buffer memory
+   * \param data the buffer data storage
+   */
   static void Deallocate (struct PacketMetadata::Data *data);
 
-  static DataFreeList m_freeList;
-  static bool m_enable;
-  static bool m_enableChecking;
-
-  // set to true when adding metadata to a packet is skipped because
-  // m_enable is false; used to detect enabling of metadata in the
-  // middle of a simulation, which isn't allowed.
+  static DataFreeList m_freeList; //!< the metadata data storage
+  static bool m_enable; //!< Enable the packet metadata
+  static bool m_enableChecking; //!< Enable the packet metadata checking
+
+  /**
+   * Set to true when adding metadata to a packet is skipped because
+   * m_enable is false; used to detect enabling of metadata in the
+   * middle of a simulation, which isn't allowed.
+   */
   static bool m_metadataSkipped;
 
-  static uint32_t m_maxSize;
-  static uint16_t m_chunkUid;
+  static uint32_t m_maxSize; //!< maximum metadata size
+  static uint16_t m_chunkUid; //!< Chunk Uid
 
-  struct Data *m_data;
-  /**
+  struct Data *m_data; //!< Metadata storage
+  /*
      head -(next)-> tail
        ^             |
         \---(prev)---|
    */
-  uint16_t m_head;
-  uint16_t m_tail;
-  uint16_t m_used;
-  uint64_t m_packetUid;
+  uint16_t m_head; //!< list head
+  uint16_t m_tail; //!< list tail
+  uint16_t m_used; //!< used portion
+  uint64_t m_packetUid; //!< packet Uid
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/packet-tag-list.cc ns-3.20/src/network/model/packet-tag-list.cc
--- ns-3.19/src/network/model/packet-tag-list.cc	2014-06-17 10:34:00.586635519 -0700
+++ ns-3.20/src/network/model/packet-tag-list.cc	2014-06-17 10:33:13.946995553 -0700
@@ -30,8 +30,7 @@
 #include "ns3/log.h"
 #include <cstring>
 
-NS_LOG_COMPONENT_DEFINE ("PacketTagList")
-  ;
+NS_LOG_COMPONENT_DEFINE ("PacketTagList");
 
 namespace ns3 {
 
diff -Naur ns-3.19/src/network/model/packet-tag-list.h ns-3.20/src/network/model/packet-tag-list.h
--- ns-3.19/src/network/model/packet-tag-list.h	2014-06-17 10:34:00.586635519 -0700
+++ ns-3.20/src/network/model/packet-tag-list.h	2014-06-17 10:33:13.947995545 -0700
@@ -184,6 +184,7 @@
    * Assignment
    *
    * \param [in] o The PacketTagList to copy.
+   * \returns the copied object
    *
    * This makes a light-weight copy by #RemoveAll, then
    * pointing to the same \ref TagData as \pname{o}.
diff -Naur ns-3.19/src/network/model/socket.cc ns-3.20/src/network/model/socket.cc
--- ns-3.19/src/network/model/socket.cc	2014-06-17 10:34:00.589635496 -0700
+++ ns-3.20/src/network/model/socket.cc	2014-06-17 10:33:13.949995529 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Socket)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Socket);
 
 TypeId
 Socket::GetTypeId (void)
@@ -533,8 +532,7 @@
   return m_address;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (SocketAddressTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SocketAddressTag);
 
 TypeId
 SocketAddressTag::GetTypeId (void)
@@ -594,8 +592,7 @@
   return m_ttl;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (SocketIpTtlTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SocketIpTtlTag);
 
 TypeId
 SocketIpTtlTag::GetTypeId (void)
@@ -653,8 +650,7 @@
   return m_hopLimit;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (SocketIpv6HopLimitTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SocketIpv6HopLimitTag);
 
 TypeId
 SocketIpv6HopLimitTag::GetTypeId (void)
@@ -715,8 +711,7 @@
   return m_dontFragment;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (SocketSetDontFragmentTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SocketSetDontFragmentTag);
 
 TypeId 
 SocketSetDontFragmentTag::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/socket-factory.cc ns-3.20/src/network/model/socket-factory.cc
--- ns-3.19/src/network/model/socket-factory.cc	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/network/model/socket-factory.cc	2014-06-17 10:33:13.948995537 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SocketFactory);
 
 TypeId SocketFactory::GetTypeId (void)
 {
diff -Naur ns-3.19/src/network/model/socket-factory.h ns-3.20/src/network/model/socket-factory.h
--- ns-3.19/src/network/model/socket-factory.h	2014-06-17 10:34:00.588635503 -0700
+++ ns-3.20/src/network/model/socket-factory.h	2014-06-17 10:33:13.949995529 -0700
@@ -48,6 +48,10 @@
 class SocketFactory : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   SocketFactory ();
diff -Naur ns-3.19/src/network/model/tag-buffer.h ns-3.20/src/network/model/tag-buffer.h
--- ns-3.19/src/network/model/tag-buffer.h	2014-06-17 10:34:00.590635488 -0700
+++ ns-3.20/src/network/model/tag-buffer.h	2014-06-17 10:33:13.951995514 -0700
@@ -51,8 +51,24 @@
 class TagBuffer
 {
 public:
+
+  /**
+   * \brief Constructor
+   * \param start start position
+   * \param end end position
+   */
   TagBuffer (uint8_t *start, uint8_t *end);
+
+  /**
+   * \brief Trim some space from the end
+   * \param trim space to remove
+   */
   void TrimAtEnd (uint32_t trim);
+
+  /**
+   * \brief Copy the nternal structure of another TagBuffer
+   * \param o the TagBuffer to copy from
+   */
   void CopyFrom (TagBuffer o);
 
   /**
@@ -140,8 +156,8 @@
   void Read (uint8_t *buffer, uint32_t size);
 private:
 
-  uint8_t *m_current;
-  uint8_t *m_end;
+  uint8_t *m_current; //!< current TagBuffer position
+  uint8_t *m_end;     //!< end TagBuffer position
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/model/tag.cc ns-3.20/src/network/model/tag.cc
--- ns-3.19/src/network/model/tag.cc	2014-06-17 10:34:00.591635480 -0700
+++ ns-3.20/src/network/model/tag.cc	2014-06-17 10:33:13.951995514 -0700
@@ -21,8 +21,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Tag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Tag);
 
 TypeId 
 Tag::GetTypeId (void)
diff -Naur ns-3.19/src/network/model/tag.h ns-3.20/src/network/model/tag.h
--- ns-3.19/src/network/model/tag.h	2014-06-17 10:34:00.591635480 -0700
+++ ns-3.20/src/network/model/tag.h	2014-06-17 10:33:13.952995506 -0700
@@ -36,6 +36,10 @@
 class Tag : public ObjectBase
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   /**
diff -Naur ns-3.19/src/network/model/trailer.cc ns-3.20/src/network/model/trailer.cc
--- ns-3.19/src/network/model/trailer.cc	2014-06-17 10:34:00.591635480 -0700
+++ ns-3.20/src/network/model/trailer.cc	2014-06-17 10:33:13.952995506 -0700
@@ -5,8 +5,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Trailer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Trailer);
 
 Trailer::~Trailer ()
 {
diff -Naur ns-3.19/src/network/model/trailer.h ns-3.20/src/network/model/trailer.h
--- ns-3.19/src/network/model/trailer.h	2014-06-17 10:34:00.591635480 -0700
+++ ns-3.20/src/network/model/trailer.h	2014-06-17 10:33:13.952995506 -0700
@@ -40,6 +40,10 @@
 class Trailer : public Chunk
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual ~Trailer ();
   /**
@@ -93,6 +97,13 @@
   virtual void Print (std::ostream &os) const = 0;
 };
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param trailer the trailer
+ * \returns a reference to the stream
+ */
 std::ostream & operator << (std::ostream &os, const Trailer &trailer);
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/test/pcap-file-test-suite.cc ns-3.20/src/network/test/pcap-file-test-suite.cc
--- ns-3.19/src/network/test/pcap-file-test-suite.cc	2014-06-17 10:34:00.597635434 -0700
+++ ns-3.20/src/network/test/pcap-file-test-suite.cc	2014-06-17 10:33:13.958995460 -0700
@@ -993,8 +993,8 @@
 {
 }
 
-const uint32_t N_KNOWN_PACKETS = 6;
-const uint32_t N_PACKET_BYTES = 16;
+static const uint32_t N_KNOWN_PACKETS = 6;
+static const uint32_t N_PACKET_BYTES = 16;
 
 typedef struct PACKET_ENTRY {
   uint32_t tsSec;
@@ -1004,7 +1004,7 @@
   uint16_t data[N_PACKET_BYTES];
 } PacketEntry;
 
-PacketEntry knownPackets[] = {
+static const PacketEntry knownPackets[] = {
   { 2, 3696,   46,   46, { 0x0001, 0x0800, 0x0604, 0x0001, 0x0000, 0x0000, 0x0003, 0x0a01,
                            0x0201, 0xffff, 0xffff, 0xffff, 0x0a01, 0x0204, 0x0000, 0x0000}},
   { 2, 3707,   46,   46, { 0x0001, 0x0800, 0x0604, 0x0002, 0x0000, 0x0000, 0x0006, 0x0a01,
@@ -1043,16 +1043,16 @@
   uint8_t data[N_PACKET_BYTES];
   uint32_t tsSec, tsUsec, inclLen, origLen, readLen;
 
-  PacketEntry *p = knownPackets;
-
-  for (uint32_t i = 0; i < N_KNOWN_PACKETS; ++i, ++p)
+  for (uint32_t i = 0; i < N_KNOWN_PACKETS; ++i)
     {
+      PacketEntry const & p = knownPackets[i];
+
       f.Read (data, sizeof(data), tsSec, tsUsec, inclLen, origLen, readLen);
       NS_TEST_ASSERT_MSG_EQ (f.Fail (), false, "Read() of known good pcap file returns error");
-      NS_TEST_ASSERT_MSG_EQ (tsSec, p->tsSec, "Incorrectly read seconds timestap from known good pcap file");
-      NS_TEST_ASSERT_MSG_EQ (tsUsec, p->tsUsec, "Incorrectly read microseconds timestap from known good pcap file");
-      NS_TEST_ASSERT_MSG_EQ (inclLen, p->inclLen, "Incorrectly read included length from known good packet");
-      NS_TEST_ASSERT_MSG_EQ (origLen, p->origLen, "Incorrectly read original length from known good packet");
+      NS_TEST_ASSERT_MSG_EQ (tsSec, p.tsSec, "Incorrectly read seconds timestap from known good pcap file");
+      NS_TEST_ASSERT_MSG_EQ (tsUsec, p.tsUsec, "Incorrectly read microseconds timestap from known good pcap file");
+      NS_TEST_ASSERT_MSG_EQ (inclLen, p.inclLen, "Incorrectly read included length from known good packet");
+      NS_TEST_ASSERT_MSG_EQ (origLen, p.origLen, "Incorrectly read original length from known good packet");
       NS_TEST_ASSERT_MSG_EQ (readLen, N_PACKET_BYTES, "Incorrect actual read length from known good packet given buffer size");
     }
 
diff -Naur ns-3.19/src/network/utils/ascii-file.h ns-3.20/src/network/utils/ascii-file.h
--- ns-3.19/src/network/utils/ascii-file.h	2014-06-17 10:34:00.599635419 -0700
+++ ns-3.20/src/network/utils/ascii-file.h	2014-06-17 10:33:13.960995444 -0700
@@ -85,8 +85,8 @@
                     uint64_t & lineNumber);
 
 private:
-  std::string    m_filename;
-  std::fstream   m_file;
+  std::string    m_filename; //!< output file name
+  std::fstream   m_file;     //!< output file
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/crc32.cc ns-3.20/src/network/utils/crc32.cc
--- ns-3.19/src/network/utils/crc32.cc	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/network/utils/crc32.cc	2014-06-17 10:33:13.960995444 -0700
@@ -29,6 +29,9 @@
 
 namespace ns3 {
 
+/**
+ * Table of CRC-32 values.
+ */
 static uint32_t crc32table[256] = {
 0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
 0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,
diff -Naur ns-3.19/src/network/utils/crc32.h ns-3.20/src/network/utils/crc32.h
--- ns-3.19/src/network/utils/crc32.h	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/network/utils/crc32.h	2014-06-17 10:33:13.961995437 -0700
@@ -24,9 +24,11 @@
 namespace ns3 {
 
 /**
+ * Calculates the CRC-32 for a given input
+ *
  * \param data buffer to calculate the checksum for
  * \param length the length of the buffer (bytes)
- * \returns the computed crc.
+ * \returns the computed crc-32.
  *
  */
 uint32_t CRC32Calculate (const uint8_t *data, int length);
diff -Naur ns-3.19/src/network/utils/data-rate.cc ns-3.20/src/network/utils/data-rate.cc
--- ns-3.19/src/network/utils/data-rate.cc	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/network/utils/data-rate.cc	2014-06-17 10:33:13.961995437 -0700
@@ -182,7 +182,7 @@
 
 namespace ns3 {
 
-ATTRIBUTE_HELPER_CPP (DataRate);  /// Macro to make help make data-rate an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (DataRate);  //!< Macro to make help make data-rate an ns-3 attribute
 
 DataRate::DataRate ()
   : m_bps (0)
@@ -269,26 +269,11 @@
   return is;
 }
 
-/**
-  * \brief Multiply datarate by a time value
-  *
-  * Calculates the number of bits that have been transmitted over a period of time
-  * \param lhs rate
-  * \param rhs time
-  * \return the number of bits over the period of time
-  */
 double operator* (const DataRate& lhs, const Time& rhs)
 {
   return rhs.GetSeconds ()*lhs.GetBitRate ();
 }
-/**
-  * \brief Multiply time value by a data rate
-  *
-  * Calculates the number of bits that have been transmitted over a period of time
-  * \param lhs time
-  * \param rhs rate
-  * \return the number of bits over the period of time
-  */
+
 double operator* (const Time& lhs, const DataRate& rhs)
 {
   return lhs.GetSeconds ()*rhs.GetBitRate ();
diff -Naur ns-3.19/src/network/utils/data-rate.h ns-3.20/src/network/utils/data-rate.h
--- ns-3.19/src/network/utils/data-rate.h	2014-06-17 10:34:00.601635403 -0700
+++ ns-3.20/src/network/utils/data-rate.h	2014-06-17 10:33:13.961995437 -0700
@@ -159,11 +159,25 @@
   uint64_t GetBitRate () const;
 
 private:
-  uint64_t m_bps;
-  static uint64_t Parse (const std::string);
+  uint64_t m_bps; //!< data rate [bps]
 };
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param rate the data rate
+ * \returns a reference to the stream
+ */
 std::ostream &operator << (std::ostream &os, const DataRate &rate);
+
+/**
+ * \brief Stream extraction operator.
+ *
+ * \param is the stream
+ * \param rate the data rate
+ * \returns a reference to the stream
+ */
 std::istream &operator >> (std::istream &is, DataRate &rate);
 
 /**
@@ -172,16 +186,29 @@
  */
 
 
-ATTRIBUTE_HELPER_HEADER (DataRate);   /// Macro to make help make data-rate an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (DataRate);   //!< Macro to make help make data-rate an ns-3 attribute
+
 
 /**
- * \param lhs
- * \param rhs
- * \return Bits transmitted in rhs seconds at lhs b/s
+ * \brief Multiply datarate by a time value
+ *
+ * Calculates the number of bits that have been transmitted over a period of time
+ * \param lhs rate
+ * \param rhs time
+ * \return the number of bits over the period of time
  */
 double operator* (const DataRate& lhs, const Time& rhs);
+/**
+ * \brief Multiply time value by a data rate
+ *
+ * Calculates the number of bits that have been transmitted over a period of time
+ * \param lhs time
+ * \param rhs rate
+ * \return the number of bits over the period of time
+ */
 double operator* (const Time& lhs, const DataRate& rhs);
 
+
 } // namespace ns3
 
 #endif /* DATA_RATE_H */
diff -Naur ns-3.19/src/network/utils/drop-tail-queue.cc ns-3.20/src/network/utils/drop-tail-queue.cc
--- ns-3.19/src/network/utils/drop-tail-queue.cc	2014-06-17 10:34:00.601635403 -0700
+++ ns-3.20/src/network/utils/drop-tail-queue.cc	2014-06-17 10:33:13.962995429 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DropTailQueue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DropTailQueue);
 
 TypeId DropTailQueue::GetTypeId (void) 
 {
diff -Naur ns-3.19/src/network/utils/drop-tail-queue.h ns-3.20/src/network/utils/drop-tail-queue.h
--- ns-3.19/src/network/utils/drop-tail-queue.h	2014-06-17 10:34:00.601635403 -0700
+++ ns-3.20/src/network/utils/drop-tail-queue.h	2014-06-17 10:33:13.962995429 -0700
@@ -34,6 +34,10 @@
  */
 class DropTailQueue : public Queue {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   /**
    * \brief DropTailQueue Constructor
@@ -64,11 +68,11 @@
   virtual Ptr<Packet> DoDequeue (void);
   virtual Ptr<const Packet> DoPeek (void) const;
 
-  std::queue<Ptr<Packet> > m_packets;
-  uint32_t m_maxPackets;
-  uint32_t m_maxBytes;
-  uint32_t m_bytesInQueue;
-  QueueMode m_mode;
+  std::queue<Ptr<Packet> > m_packets; //!< the packets in the queue
+  uint32_t m_maxPackets;              //!< max packets in the queue
+  uint32_t m_maxBytes;                //!< max bytes in the queue
+  uint32_t m_bytesInQueue;            //!< actual bytes in the queue
+  QueueMode m_mode;                   //!< queue mode (packets or bytes limited)
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/error-model.cc ns-3.20/src/network/utils/error-model.cc
--- ns-3.19/src/network/utils/error-model.cc	2014-06-17 10:34:00.602635395 -0700
+++ ns-3.20/src/network/utils/error-model.cc	2014-06-17 10:33:13.963995421 -0700
@@ -77,8 +77,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ErrorModel);
 
 TypeId ErrorModel::GetTypeId (void)
 { 
@@ -146,8 +145,7 @@
 // RateErrorModel
 //
 
-NS_OBJECT_ENSURE_REGISTERED (RateErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RateErrorModel);
 
 TypeId RateErrorModel::GetTypeId (void)
 { 
@@ -286,8 +284,7 @@
 // BurstErrorModel
 //
 
-NS_OBJECT_ENSURE_REGISTERED (BurstErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BurstErrorModel);
 
 TypeId BurstErrorModel::GetTypeId (void)
 {
@@ -415,8 +412,7 @@
 // ListErrorModel
 //
 
-NS_OBJECT_ENSURE_REGISTERED (ListErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ListErrorModel);
 
 TypeId ListErrorModel::GetTypeId (void)
 { 
@@ -485,8 +481,7 @@
 // ReceiveListErrorModel
 //
 
-NS_OBJECT_ENSURE_REGISTERED (ReceiveListErrorModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ReceiveListErrorModel);
 
 TypeId ReceiveListErrorModel::GetTypeId (void)
 { 
diff -Naur ns-3.19/src/network/utils/error-model.h ns-3.20/src/network/utils/error-model.h
--- ns-3.19/src/network/utils/error-model.h	2014-06-17 10:34:00.603635387 -0700
+++ ns-3.20/src/network/utils/error-model.h	2014-06-17 10:33:13.963995421 -0700
@@ -115,6 +115,10 @@
 class ErrorModel : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   ErrorModel ();
@@ -146,13 +150,18 @@
   bool IsEnabled (void) const;
 
 private:
-  /*
-   * These methods must be implemented by subclasses
+  /**
+   * Corrupt a packet according to the specified model.
+   * \param p the packet to corrupt
+   * \returns true if the packet is corrupted
+   */
+  virtual bool DoCorrupt (Ptr<Packet> p) = 0;
+  /**
+   * Re-initialize any state
    */
-  virtual bool DoCorrupt (Ptr<Packet>) = 0;
   virtual void DoReset (void) = 0;
 
-  bool m_enable;
+  bool m_enable; //!< True if the error model is enabled
 };
 
 /**
@@ -173,11 +182,18 @@
 class RateErrorModel : public ErrorModel
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   RateErrorModel ();
   virtual ~RateErrorModel ();
 
+  /**
+   * Error unit. The error model can be packet, Byte or bit based.
+   */
   enum ErrorUnit
   {
     ERROR_UNIT_BIT,
@@ -220,15 +236,30 @@
 
 private:
   virtual bool DoCorrupt (Ptr<Packet> p);
+  /**
+   * Corrupt a packet (packet unit).
+   * \param p the packet to corrupt
+   * \returns true if the packet is corrupted
+   */
   virtual bool DoCorruptPkt (Ptr<Packet> p);
+  /**
+   * Corrupt a packet (Byte unit).
+   * \param p the packet to corrupt
+   * \returns true if the packet is corrupted
+   */
   virtual bool DoCorruptByte (Ptr<Packet> p);
+  /**
+   * Corrupt a packet (bit unit).
+   * \param p the packet to corrupt
+   * \returns true if the packet is corrupted
+   */
   virtual bool DoCorruptBit (Ptr<Packet> p);
   virtual void DoReset (void);
 
-  enum ErrorUnit m_unit;
-  double m_rate;
+  enum ErrorUnit m_unit; //!< Error rate unit
+  double m_rate; //!< Error rate
 
-  Ptr<RandomVariableStream> m_ranvar;
+  Ptr<RandomVariableStream> m_ranvar; //!< rng stream
 };
 
 
@@ -267,6 +298,10 @@
 class BurstErrorModel : public ErrorModel
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   BurstErrorModel ();
@@ -305,16 +340,16 @@
   virtual bool DoCorrupt (Ptr<Packet> p);
   virtual void DoReset (void);
 
-  double m_burstRate;                         //the burst error event
-
-  Ptr<RandomVariableStream> m_burstStart;     //the error decision variable
-
-  Ptr<RandomVariableStream> m_burstSize;      //the number of packets being flagged as errored
-
-  uint32_t m_counter;                         //keep track of the number of packets being errored
-                                              //until it reaches m_burstSize
+  double m_burstRate;                         //!< the burst error event
+  Ptr<RandomVariableStream> m_burstStart;     //!< the error decision variable
+  Ptr<RandomVariableStream> m_burstSize;      //!< the number of packets being flagged as errored
 
-  uint32_t m_currentBurstSz;                  //the current burst size
+  /**
+   * keep track of the number of packets being errored
+   * until it reaches m_burstSize
+   */
+  uint32_t m_counter;
+  uint32_t m_currentBurstSz;                  //!< the current burst size
 
 };
 
@@ -344,6 +379,10 @@
 class ListErrorModel : public ErrorModel
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   ListErrorModel ();
   virtual ~ListErrorModel ();
@@ -363,10 +402,12 @@
   virtual bool DoCorrupt (Ptr<Packet> p);
   virtual void DoReset (void);
 
+  /// Typedef: packet Uid list
   typedef std::list<uint32_t> PacketList;
+  /// Typedef: packet Uid list const iterator
   typedef std::list<uint32_t>::const_iterator PacketListCI;
 
-  PacketList m_packetList;
+  PacketList m_packetList; //!< container of Uid of packets to corrupt
 
 };
 
@@ -385,6 +426,10 @@
 class ReceiveListErrorModel : public ErrorModel
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   ReceiveListErrorModel ();
   virtual ~ReceiveListErrorModel ();
@@ -404,11 +449,13 @@
   virtual bool DoCorrupt (Ptr<Packet> p);
   virtual void DoReset (void);
 
+  /// Typedef: packet sequence number list
   typedef std::list<uint32_t> PacketList;
+  /// Typedef: packet sequence number list const iterator
   typedef std::list<uint32_t>::const_iterator PacketListCI;
 
-  PacketList m_packetList;
-  uint32_t m_timesInvoked;
+  PacketList m_packetList; //!< container of sequence number of packets to corrupt
+  uint32_t m_timesInvoked; //!< number of times the error model has been invoked
 
 };
 
diff -Naur ns-3.19/src/network/utils/ethernet-header.cc ns-3.20/src/network/utils/ethernet-header.cc
--- ns-3.19/src/network/utils/ethernet-header.cc	2014-06-17 10:34:00.603635387 -0700
+++ ns-3.20/src/network/utils/ethernet-header.cc	2014-06-17 10:33:13.964995414 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (EthernetHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EthernetHeader);
 
 EthernetHeader::EthernetHeader (bool hasPreamble)
   : m_enPreambleSfd (hasPreamble),
diff -Naur ns-3.19/src/network/utils/ethernet-header.h ns-3.20/src/network/utils/ethernet-header.h
--- ns-3.19/src/network/utils/ethernet-header.h	2014-06-17 10:34:00.603635387 -0700
+++ ns-3.20/src/network/utils/ethernet-header.h	2014-06-17 10:33:13.964995414 -0700
@@ -103,6 +103,10 @@
    */
   uint32_t GetHeaderSize () const;
 
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual void Print (std::ostream &os) const;
@@ -110,18 +114,18 @@
   virtual void Serialize (Buffer::Iterator start) const;
   virtual uint32_t Deserialize (Buffer::Iterator start);
 private:
-  static const int PREAMBLE_SIZE = 8; /// size of the preamble_sfd header field
-  static const int LENGTH_SIZE = 2;   /// size of the length_type header field
-  static const int MAC_ADDR_SIZE = 6; /// size of src/dest addr header fields
+  static const int PREAMBLE_SIZE = 8; //!< size of the preamble_sfd header field
+  static const int LENGTH_SIZE = 2;   //!< size of the length_type header field
+  static const int MAC_ADDR_SIZE = 6; //!< size of src/dest addr header fields
 
   /**
    * If false, the preamble/sfd are not serialised/deserialised.
    */
   bool m_enPreambleSfd;
-  uint64_t m_preambleSfd;     /// Value of the Preamble/SFD fields
-  uint16_t m_lengthType;      /// Length or type of the packet
-  Mac48Address m_source;        /// Source address
-  Mac48Address m_destination;   /// Destination address
+  uint64_t m_preambleSfd;     //!< Value of the Preamble/SFD fields
+  uint16_t m_lengthType;      //!< Length or type of the packet
+  Mac48Address m_source;        //!< Source address
+  Mac48Address m_destination;   //!< Destination address
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/ethernet-trailer.cc ns-3.20/src/network/utils/ethernet-trailer.cc
--- ns-3.19/src/network/utils/ethernet-trailer.cc	2014-06-17 10:34:00.604635380 -0700
+++ ns-3.20/src/network/utils/ethernet-trailer.cc	2014-06-17 10:33:13.964995414 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (EthernetTrailer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EthernetTrailer);
 
 EthernetTrailer::EthernetTrailer ()
   : m_calcFcs (false),
diff -Naur ns-3.19/src/network/utils/ethernet-trailer.h ns-3.20/src/network/utils/ethernet-trailer.h
--- ns-3.19/src/network/utils/ethernet-trailer.h	2014-06-17 10:34:00.604635380 -0700
+++ ns-3.20/src/network/utils/ethernet-trailer.h	2014-06-17 10:33:13.965995406 -0700
@@ -90,6 +90,10 @@
    */ 
   uint32_t GetTrailerSize () const;
 
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual void Print (std::ostream &os) const;
@@ -102,7 +106,7 @@
    * returns true.
    */
   bool m_calcFcs;
-  uint32_t m_fcs; /// Value of the fcs contained in the trailer
+  uint32_t m_fcs; //!< Value of the fcs contained in the trailer
 
 };
 
diff -Naur ns-3.19/src/network/utils/flow-id-tag.cc ns-3.20/src/network/utils/flow-id-tag.cc
--- ns-3.19/src/network/utils/flow-id-tag.cc	2014-06-17 10:34:00.604635380 -0700
+++ ns-3.20/src/network/utils/flow-id-tag.cc	2014-06-17 10:33:13.965995406 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (FlowIdTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FlowIdTag);
 
 TypeId 
 FlowIdTag::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/flow-id-tag.h ns-3.20/src/network/utils/flow-id-tag.h
--- ns-3.19/src/network/utils/flow-id-tag.h	2014-06-17 10:34:00.604635380 -0700
+++ ns-3.20/src/network/utils/flow-id-tag.h	2014-06-17 10:33:13.965995406 -0700
@@ -27,6 +27,10 @@
 class FlowIdTag : public Tag
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual uint32_t GetSerializedSize (void) const;
@@ -57,7 +61,7 @@
    */
   static uint32_t AllocateFlowId (void);
 private:
-  uint32_t m_flowId;
+  uint32_t m_flowId; //!< Flow ID
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/inet-socket-address.h ns-3.20/src/network/utils/inet-socket-address.h
--- ns-3.19/src/network/utils/inet-socket-address.h	2014-06-17 10:34:00.605635372 -0700
+++ ns-3.20/src/network/utils/inet-socket-address.h	2014-06-17 10:33:13.966995398 -0700
@@ -99,18 +99,27 @@
   operator Address () const;
 
   /**
-   * \param address the Address instance to convert from.
+   * \brief Returns an InetSocketAddress which corresponds to the input
+   * Address.
    *
-   * Returns an InetSocketAddress which corresponds to the input
-   * Address
+   * \param address the Address instance to convert from.
+   * \returns an InetSocketAddress
    */
   static InetSocketAddress ConvertFrom (const Address &address);
 private:
+  /**
+   * \brief Convert to an Address type
+   */
   Address ConvertTo (void) const;
 
+  /**
+   * \brief Get the underlying address type (automatically assigned).
+   *
+   * \returns the address type
+   */
   static uint8_t GetType (void);
-  Ipv4Address m_ipv4;
-  uint16_t m_port;
+  Ipv4Address m_ipv4; //!< the IPv4 address
+  uint16_t m_port;    //!< the port
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/ipv4-address.cc ns-3.20/src/network/utils/ipv4-address.cc
--- ns-3.19/src/network/utils/ipv4-address.cc	2014-06-17 10:34:00.606635364 -0700
+++ ns-3.20/src/network/utils/ipv4-address.cc	2014-06-17 10:33:13.967995390 -0700
@@ -31,6 +31,11 @@
 #define ASCII_ZERO (0x30)
 #define ASCII_SLASH (0x2f)
 
+/**
+ * \brief Converts a string representing an IP address into the address
+ * \param address the address string
+ * \returns the address
+ */
 static uint32_t 
 AsciiToIpv4Host (char const *address)
 {
@@ -417,7 +422,7 @@
   return !a.IsEqual (b);
 }
 
-ATTRIBUTE_HELPER_CPP (Ipv4Address); /// Macro to make help make class an ns-3 attribute
-ATTRIBUTE_HELPER_CPP (Ipv4Mask);    /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Ipv4Address); //!< Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Ipv4Mask);    //!< Macro to make help make class an ns-3 attribute
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/ipv4-address.h ns-3.20/src/network/utils/ipv4-address.h
--- ns-3.19/src/network/utils/ipv4-address.h	2014-06-17 10:34:00.607635357 -0700
+++ ns-3.20/src/network/utils/ipv4-address.h	2014-06-17 10:33:13.968995383 -0700
@@ -123,6 +123,7 @@
    * address.
    *
    * \param mask a network mask 
+   * \returns the address combined with the mask
    */
   Ipv4Address CombineMask (Ipv4Mask const &mask) const;
   /**
@@ -134,6 +135,7 @@
    * there is no subnet associated with a /32 address.
    *
    * \param mask a network mask 
+   * \returns a broadcast address for the subnet.
    */
   Ipv4Address GetSubnetDirectedBroadcast (Ipv4Mask const &mask) const;
   /**
@@ -189,13 +191,23 @@
   static Ipv4Address GetLoopback (void);
 
 private:
+
+  /**
+   * \brief Convert to an Address type
+   */
   Address ConvertTo (void) const;
+
+  /**
+   * \brief Get the underlying address type (automatically assigned).
+   *
+   * \returns the address type
+   */
   static uint8_t GetType (void);
-  uint32_t m_address;
+  uint32_t m_address; //!< IPv4 address
 
   friend bool operator == (Ipv4Address const &a, Ipv4Address const &b);
   friend bool operator != (Ipv4Address const &a, Ipv4Address const &b);
-  friend bool operator < (Ipv4Address const &addrA, Ipv4Address const &addrB);
+  friend bool operator < (Ipv4Address const &a, Ipv4Address const &b);
 };
 
 /**
@@ -274,7 +286,7 @@
   static Ipv4Mask GetOnes (void);
 
 private:
-  uint32_t m_mask;
+  uint32_t m_mask; //!< IP mask
 };
 
 /**
@@ -286,34 +298,106 @@
  * \brief hold objects of type ns3::Ipv4Mask
  */
 
-ATTRIBUTE_HELPER_HEADER (Ipv4Address);  /// Macro to make help make class an ns-3 attribute
-ATTRIBUTE_HELPER_HEADER (Ipv4Mask);     /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Ipv4Address);  //!< Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Ipv4Mask);     //!< Macro to make help make class an ns-3 attribute
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param address the address
+ * \returns a reference to the stream
+ */
 std::ostream& operator<< (std::ostream& os, Ipv4Address const& address);
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param mask the mask
+ * \returns a reference to the stream
+ */
 std::ostream& operator<< (std::ostream& os, Ipv4Mask const& mask);
+/**
+ * \brief Stream extraction operator.
+ *
+ * \param is the stream
+ * \param address the address
+ * \returns a reference to the stream
+ */
 std::istream & operator >> (std::istream &is, Ipv4Address &address);
+/**
+ * \brief Stream extraction operator.
+ *
+ * \param is the stream
+ * \param mask the mask
+ * \returns a reference to the stream
+ */
 std::istream & operator >> (std::istream &is, Ipv4Mask &mask);
 
+/**
+ * \brief Equal to operator.
+ *
+ * \param a the first operand
+ * \param b the first operand
+ * \returns true if the operands are equal
+ */
 inline bool operator == (const Ipv4Address &a, const Ipv4Address &b)
 {
   return (a.m_address == b.m_address);
 }
+/**
+ * \brief Not equal to operator.
+ *
+ * \param a the first operand
+ * \param b the first operand
+ * \returns true if the operands are not equal
+ */
 inline bool operator != (const Ipv4Address &a, const Ipv4Address &b)
 {
   return (a.m_address != b.m_address);
 }
+/**
+ * \brief Less than operator.
+ *
+ * \param a the first operand
+ * \param b the first operand
+ * \returns true if the operand a is less than operand b
+ */
 inline bool operator < (const Ipv4Address &a, const Ipv4Address &b)
 {
   return (a.m_address < b.m_address);
 }
 
-
+/**
+ * \ingroup address
+ *
+ * \brief Class providing an hash for IPv4 addresses
+ */
 class Ipv4AddressHash : public std::unary_function<Ipv4Address, size_t> {
 public:
+  /**
+   * Returns the hash of the address
+   * \param x the address
+   * \return the hash
+   */
   size_t operator() (Ipv4Address const &x) const;
 };
 
+/**
+ * \brief Equal to operator.
+ *
+ * \param a the first operand
+ * \param b the first operand
+ * \returns true if the operands are equal
+ */
 bool operator == (Ipv4Mask const &a, Ipv4Mask const &b);
+/**
+ * \brief Not equal to operator.
+ *
+ * \param a the first operand
+ * \param b the first operand
+ * \returns true if the operands are not equal
+ */
 bool operator != (Ipv4Mask const &a, Ipv4Mask const &b);
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/ipv6-address.cc ns-3.20/src/network/utils/ipv6-address.cc
--- ns-3.19/src/network/utils/ipv6-address.cc	2014-06-17 10:34:00.608635349 -0700
+++ ns-3.20/src/network/utils/ipv6-address.cc	2014-06-17 10:33:13.969995375 -0700
@@ -154,7 +154,7 @@
   static const char xdigits_u[] = "0123456789ABCDEF";
   unsigned char tmp[16];
   unsigned char* tp = tmp;
-  unsigned char* endp = 0;
+  unsigned char* const endp = tp + 16;
   unsigned char* colonp = 0;
   const char* xdigits = 0;
 #if 0
@@ -165,7 +165,6 @@
   unsigned int val = 0;
 
   memset (tp, 0x00, 16);
-  endp = tp + 16;
 
   /* Leading :: requires some special handling. */
   if (*address == ':')
@@ -212,7 +211,7 @@
               continue;
             }
 
-          if (tp + 2 > endp)
+          if (endp - tp < 2)
             {
               return (0);
             }
@@ -226,7 +225,7 @@
 
       /* \todo Handle IPv4 mapped address (2001::192.168.0.1) */
 #if 0
-      if (ch == '.' && ((tp + 4 /*NS_INADDRSZ*/) <= endp) &&
+      if (ch == '.' && (endp - tp > 3 /* NS_INADDRSZ - 1 */)) &&
           inet_pton4 (curtok, tp) > 0)
         {
           tp += 4 /*NS_INADDRSZ*/;
@@ -239,7 +238,7 @@
 
   if (seen_xdigits)
     {
-      if (tp + 2 > endp)
+      if ( endp - tp < 2)
         {
           return (0);
         }
@@ -1011,8 +1010,8 @@
   return lookuphash (buf, sizeof (buf), 0);
 }
 
-ATTRIBUTE_HELPER_CPP (Ipv6Address); /// Macro to make help make class an ns-3 attribute
-ATTRIBUTE_HELPER_CPP (Ipv6Prefix);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Ipv6Address); //!< Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Ipv6Prefix);  //!< Macro to make help make class an ns-3 attribute
 
 } /* namespace ns3 */
 
diff -Naur ns-3.19/src/network/utils/ipv6-address.h ns-3.20/src/network/utils/ipv6-address.h
--- ns-3.19/src/network/utils/ipv6-address.h	2014-06-17 10:34:00.608635349 -0700
+++ ns-3.20/src/network/utils/ipv6-address.h	2014-06-17 10:33:13.969995375 -0700
@@ -510,13 +510,13 @@
  * \class ns3::Ipv6AddressValue
  * \brief Hold objects of type ns3::Ipv6Address
  */
-ATTRIBUTE_HELPER_HEADER (Ipv6Address);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Ipv6Address);  //!< Macro to make help make class an ns-3 attribute
 
 /**
  * \class ns3::Ipv6PrefixValue
  * \brief Hold objects of type ns3::Ipv6Prefix
  */
-ATTRIBUTE_HELPER_HEADER (Ipv6Prefix);   /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Ipv6Prefix);   //!< Macro to make help make class an ns-3 attribute
 
 /**
  * \brief Stream insertion operator.
diff -Naur ns-3.19/src/network/utils/llc-snap-header.cc ns-3.20/src/network/utils/llc-snap-header.cc
--- ns-3.19/src/network/utils/llc-snap-header.cc	2014-06-17 10:34:00.608635349 -0700
+++ ns-3.20/src/network/utils/llc-snap-header.cc	2014-06-17 10:33:13.970995367 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (LlcSnapHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LlcSnapHeader);
 
 LlcSnapHeader::LlcSnapHeader ()
 {
diff -Naur ns-3.19/src/network/utils/llc-snap-header.h ns-3.20/src/network/utils/llc-snap-header.h
--- ns-3.19/src/network/utils/llc-snap-header.h	2014-06-17 10:34:00.609635341 -0700
+++ ns-3.20/src/network/utils/llc-snap-header.h	2014-06-17 10:33:13.970995367 -0700
@@ -36,15 +36,29 @@
  * \ingroup network
  *
  * \brief Header for the LLC/SNAP encapsulation
+ *
+ * For a list of EtherTypes, see http://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml
  */
 class LlcSnapHeader : public Header 
 {
 public:
   LlcSnapHeader ();
 
+  /**
+   * \brief Set the Ethertype.
+   * \param type the Ethertype
+   */
   void SetType (uint16_t type);
+  /**
+   * \brief Return the Ethertype.
+   * \return Ethertype
+   */
   uint16_t GetType (void);
 
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual void Print (std::ostream &os) const;
@@ -52,7 +66,7 @@
   virtual void Serialize (Buffer::Iterator start) const;
   virtual uint32_t Deserialize (Buffer::Iterator start);
 private:
-  uint16_t m_etherType;
+  uint16_t m_etherType; //!< the Ethertype
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/mac16-address.cc ns-3.20/src/network/utils/mac16-address.cc
--- ns-3.19/src/network/utils/mac16-address.cc	2014-06-17 10:34:00.609635341 -0700
+++ ns-3.20/src/network/utils/mac16-address.cc	2014-06-17 10:33:13.970995367 -0700
@@ -30,7 +30,7 @@
 
 namespace ns3 {
 
-ATTRIBUTE_HELPER_CPP (Mac16Address);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Mac16Address);  //!< Macro to make help make class an ns-3 attribute
 
 #define ASCII_a (0x41)
 #define ASCII_z (0x5a)
@@ -39,6 +39,11 @@
 #define ASCII_COLON (0x3a)
 #define ASCII_ZERO (0x30)
 
+/**
+ * Converts a char to lower case.
+ * \param c the char
+ * \returns the lower case
+ */
 static char
 AsciiToLowCase (char c)
 {
@@ -169,17 +174,6 @@
   return os;
 }
 
-static uint8_t
-AsInt (std::string v)
-{
-  NS_LOG_FUNCTION (v);
-  std::istringstream iss;
-  iss.str (v);
-  uint32_t retval;
-  iss >> std::hex >> retval >> std::dec;
-  return retval;
-}
-
 std::istream& operator>> (std::istream& is, Mac16Address & address)
 {
   std::string v;
@@ -194,13 +188,13 @@
       if (next == std::string::npos)
         {
           tmp = v.substr (col, v.size ()-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           break;
         }
       else
         {
           tmp = v.substr (col, next-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           col = next + 1;
         }
     }
diff -Naur ns-3.19/src/network/utils/mac16-address.h ns-3.20/src/network/utils/mac16-address.h
--- ns-3.19/src/network/utils/mac16-address.h	2014-06-17 10:34:00.609635341 -0700
+++ ns-3.20/src/network/utils/mac16-address.h	2014-06-17 10:33:13.971995360 -0700
@@ -91,13 +91,59 @@
    * Convert an instance of this class to a polymorphic Address instance.
    */
   Address ConvertTo (void) const;
+
+  /**
+   * \brief Return the Type of address.
+   * \return type of address
+   */
   static uint8_t GetType (void);
-  friend bool operator < (const Mac16Address &a, const Mac16Address &b);
+
+  /**
+   * \brief Equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are equal
+   */
   friend bool operator == (const Mac16Address &a, const Mac16Address &b);
+
+  /**
+   * \brief Not equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are not equal
+   */
   friend bool operator != (const Mac16Address &a, const Mac16Address &b);
+
+  /**
+   * \brief Less than operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operand a is less than operand b
+   */
+  friend bool operator < (const Mac16Address &a, const Mac16Address &b);
+
+  /**
+   * \brief Stream insertion operator.
+   *
+   * \param os the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
+  friend std::ostream& operator<< (std::ostream& os, const Mac16Address & address);
+
+  /**
+   * \brief Stream extraction operator.
+   *
+   * \param is the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
   friend std::istream& operator>> (std::istream& is, Mac16Address & address);
 
-  uint8_t m_address[2];
+  uint8_t m_address[2]; //!< address value
 };
 
 /**
@@ -105,7 +151,7 @@
  * \brief hold objects of type ns3::Mac16Address
  */
 
-ATTRIBUTE_HELPER_HEADER (Mac16Address); /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Mac16Address); //!< Macro to make help make class an ns-3 attribute
 
 inline bool operator == (const Mac16Address &a, const Mac16Address &b)
 {
diff -Naur ns-3.19/src/network/utils/mac48-address.cc ns-3.20/src/network/utils/mac48-address.cc
--- ns-3.19/src/network/utils/mac48-address.cc	2014-06-17 10:34:00.610635334 -0700
+++ ns-3.20/src/network/utils/mac48-address.cc	2014-06-17 10:33:13.971995360 -0700
@@ -29,7 +29,7 @@
 
 namespace ns3 {
 
-ATTRIBUTE_HELPER_CPP (Mac48Address);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Mac48Address);  //!< Macro to make help make class an ns-3 attribute
 
 #define ASCII_a (0x41)
 #define ASCII_z (0x5a)
@@ -38,6 +38,11 @@
 #define ASCII_COLON (0x3a)
 #define ASCII_ZERO (0x30)
 
+/**
+ * Converts a char to lower case.
+ * \param c the char
+ * \returns the lower case
+ */
 static char
 AsciiToLowCase (char c)
 {
@@ -259,17 +264,6 @@
   return os;
 }
 
-static uint8_t
-AsInt (std::string v)
-{
-  NS_LOG_FUNCTION (v);
-  std::istringstream iss;
-  iss.str (v);
-  uint8_t retval;
-  iss >> std::hex >> retval >> std::dec;
-  return retval;
-}
-
 std::istream& operator>> (std::istream& is, Mac48Address & address)
 {
   std::string v;
@@ -284,13 +278,13 @@
       if (next == std::string::npos)
         {
           tmp = v.substr (col, v.size ()-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           break;
         }
       else
         {
           tmp = v.substr (col, next-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           col = next + 1;
         }
     }
diff -Naur ns-3.19/src/network/utils/mac48-address.h ns-3.20/src/network/utils/mac48-address.h
--- ns-3.19/src/network/utils/mac48-address.h	2014-06-17 10:34:00.610635334 -0700
+++ ns-3.20/src/network/utils/mac48-address.h	2014-06-17 10:33:13.971995360 -0700
@@ -133,13 +133,59 @@
    * Convert an instance of this class to a polymorphic Address instance.
    */
   Address ConvertTo (void) const;
+
+  /**
+   * \brief Return the Type of address.
+   * \return type of address
+   */
   static uint8_t GetType (void);
-  friend bool operator < (const Mac48Address &a, const Mac48Address &b);
+
+  /**
+   * \brief Equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are equal
+   */
   friend bool operator == (const Mac48Address &a, const Mac48Address &b);
+
+  /**
+   * \brief Not equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are not equal
+   */
   friend bool operator != (const Mac48Address &a, const Mac48Address &b);
+
+  /**
+   * \brief Less than operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operand a is less than operand b
+   */
+  friend bool operator < (const Mac48Address &a, const Mac48Address &b);
+
+  /**
+   * \brief Stream insertion operator.
+   *
+   * \param os the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
+  friend std::ostream& operator<< (std::ostream& os, const Mac48Address & address);
+
+  /**
+   * \brief Stream extraction operator.
+   *
+   * \param is the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
   friend std::istream& operator>> (std::istream& is, Mac48Address & address);
 
-  uint8_t m_address[6];
+  uint8_t m_address[6]; //!< address value
 };
 
 /**
@@ -147,7 +193,7 @@
  * \brief hold objects of type ns3::Mac48Address
  */
 
-ATTRIBUTE_HELPER_HEADER (Mac48Address); /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Mac48Address); //!< Macro to make help make class an ns-3 attribute
 
 inline bool operator == (const Mac48Address &a, const Mac48Address &b)
 {
diff -Naur ns-3.19/src/network/utils/mac64-address.cc ns-3.20/src/network/utils/mac64-address.cc
--- ns-3.19/src/network/utils/mac64-address.cc	2014-06-17 10:34:00.611635326 -0700
+++ ns-3.20/src/network/utils/mac64-address.cc	2014-06-17 10:33:13.972995352 -0700
@@ -29,7 +29,7 @@
 
 namespace ns3 {
 
-ATTRIBUTE_HELPER_CPP (Mac64Address);  /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_CPP (Mac64Address);  //!< Macro to make help make class an ns-3 attribute
 
 #define ASCII_a (0x41)
 #define ASCII_z (0x5a)
@@ -38,6 +38,11 @@
 #define ASCII_COLON (0x3a)
 #define ASCII_ZERO (0x30)
 
+/**
+ * Converts a char to lower case.
+ * \param c the char
+ * \returns the lower case
+ */
 static char
 AsciiToLowCase (char c)
 {
@@ -171,17 +176,6 @@
   return os;
 }
 
-static uint8_t
-AsInt (std::string v)
-{
-  NS_LOG_FUNCTION (v);
-  std::istringstream iss;
-  iss.str (v);
-  uint32_t retval;
-  iss >> std::hex >> retval >> std::dec;
-  return retval;
-}
-
 std::istream& operator>> (std::istream& is, Mac64Address & address)
 {
   std::string v;
@@ -196,13 +190,13 @@
       if (next == std::string::npos)
         {
           tmp = v.substr (col, v.size ()-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           break;
         }
       else
         {
           tmp = v.substr (col, next-col);
-          address.m_address[i] = AsInt (tmp);
+          address.m_address[i] = strtoul (tmp.c_str(), 0, 16);
           col = next + 1;
         }
     }
diff -Naur ns-3.19/src/network/utils/mac64-address.h ns-3.20/src/network/utils/mac64-address.h
--- ns-3.19/src/network/utils/mac64-address.h	2014-06-17 10:34:00.611635326 -0700
+++ ns-3.20/src/network/utils/mac64-address.h	2014-06-17 10:33:13.972995352 -0700
@@ -93,13 +93,59 @@
    * Convert an instance of this class to a polymorphic Address instance.
    */
   Address ConvertTo (void) const;
+
+  /**
+   * \brief Return the Type of address.
+   * \return type of address
+   */
   static uint8_t GetType (void);
-  friend bool operator < (const Mac64Address &a, const Mac64Address &b);
+
+  /**
+   * \brief Equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are equal
+   */
   friend bool operator == (const Mac64Address &a, const Mac64Address &b);
+
+  /**
+   * \brief Not equal to operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operands are not equal
+   */
   friend bool operator != (const Mac64Address &a, const Mac64Address &b);
+
+  /**
+   * \brief Less than operator.
+   *
+   * \param a the first operand
+   * \param b the first operand
+   * \returns true if the operand a is less than operand b
+   */
+  friend bool operator < (const Mac64Address &a, const Mac64Address &b);
+
+  /**
+   * \brief Stream insertion operator.
+   *
+   * \param os the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
+  friend std::ostream& operator<< (std::ostream& os, const Mac64Address & address);
+
+  /**
+   * \brief Stream extraction operator.
+   *
+   * \param is the stream
+   * \param address the address
+   * \returns a reference to the stream
+   */
   friend std::istream& operator>> (std::istream& is, Mac64Address & address);
 
-  uint8_t m_address[8];
+  uint8_t m_address[8]; //!< address value
 };
 
 /**
@@ -107,7 +153,7 @@
  * \brief hold objects of type ns3::Mac64Address
  */
 
-ATTRIBUTE_HELPER_HEADER (Mac64Address); /// Macro to make help make class an ns-3 attribute
+ATTRIBUTE_HELPER_HEADER (Mac64Address); //!< Macro to make help make class an ns-3 attribute
 
 inline bool operator == (const Mac64Address &a, const Mac64Address &b)
 {
diff -Naur ns-3.19/src/network/utils/output-stream-wrapper.h ns-3.20/src/network/utils/output-stream-wrapper.h
--- ns-3.19/src/network/utils/output-stream-wrapper.h	2014-06-17 10:34:00.612635318 -0700
+++ ns-3.20/src/network/utils/output-stream-wrapper.h	2014-06-17 10:33:13.973995344 -0700
@@ -26,8 +26,8 @@
 
 namespace ns3 {
 
-/*
- * @brief A class encapsulating an STL output stream.
+/**
+ * @brief A class encapsulating an output stream.
  *
  * This class wraps a pointer to a C++ std::ostream and provides 
  * reference counting of the object.  This class is recommended for users 
@@ -70,7 +70,16 @@
 class OutputStreamWrapper : public SimpleRefCount<OutputStreamWrapper>
 {
 public:
+  /**
+   * Constructor
+   * \param filename file name
+   * \param filemode std::ios::openmode flags
+   */
   OutputStreamWrapper (std::string filename, std::ios::openmode filemode);
+  /**
+   * Constructor
+   * \param os output stream
+   */
   OutputStreamWrapper (std::ostream* os);
   ~OutputStreamWrapper ();
 
@@ -84,8 +93,8 @@
   std::ostream *GetStream (void);
 
 private:
-  std::ostream *m_ostream;
-  bool m_destroyable;
+  std::ostream *m_ostream; //!< The output stream
+  bool m_destroyable; //!< Can be destroyed
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/packetbb.cc ns-3.20/src/network/utils/packetbb.cc
--- ns-3.19/src/network/utils/packetbb.cc	2014-06-17 10:34:00.616635287 -0700
+++ ns-3.20/src/network/utils/packetbb.cc	2014-06-17 10:33:13.978995306 -0700
@@ -58,8 +58,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PbbPacket)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PbbPacket);
 
 PbbTlvBlock::PbbTlvBlock (void)
 {
@@ -2517,7 +2516,7 @@
         }
 
       /* If headlen == fulllen - 1, then tail is 0 */
-      if (headlen <= GetAddressLength () - 1)
+      if (GetAddressLength () - headlen > 0)
         {
           for (i = GetAddressLength () - 1;
                GetAddressLength () - 1 - i <= taillen && i > headlen;
diff -Naur ns-3.19/src/network/utils/packetbb.h ns-3.20/src/network/utils/packetbb.h
--- ns-3.19/src/network/utils/packetbb.h	2014-06-17 10:34:00.617635279 -0700
+++ ns-3.20/src/network/utils/packetbb.h	2014-06-17 10:33:13.979995298 -0700
@@ -55,8 +55,10 @@
 class PbbTlvBlock
 {
 public:
-  typedef std::list< Ptr<PbbTlv> >::iterator Iterator;              /// this is an iterator
-  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstIterator;   /// this is a const iterator
+  /// PbbTlv container iterator
+  typedef std::list< Ptr<PbbTlv> >::iterator Iterator;
+  /// PbbTlv container const iterator
+  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstIterator;
 
   PbbTlvBlock (void);
   ~PbbTlvBlock (void);
@@ -206,7 +208,7 @@
   bool operator!= (const PbbTlvBlock &other) const;
 
 private:
-  std::list< Ptr<PbbTlv> > m_tlvList;
+  std::list< Ptr<PbbTlv> > m_tlvList; //!< PbbTlv container
 };
 
 /**
@@ -217,8 +219,10 @@
 class PbbAddressTlvBlock
 {
 public:
-  typedef std::list< Ptr<PbbAddressTlv> >::iterator Iterator;               /// This is a PbbAddressTlv iterator for PbbAddressTlvBlock
-  typedef std::list< Ptr<PbbAddressTlv> >::const_iterator ConstIterator;    /// This is a const PbbAddressTlv iterator for PbbAddressTlvBlock
+  /// PbbAddressTlv iterator for PbbAddressTlvBlock
+  typedef std::list< Ptr<PbbAddressTlv> >::iterator Iterator;
+  /// PbbAddressTlv const iterator for PbbAddressTlvBlock
+  typedef std::list< Ptr<PbbAddressTlv> >::const_iterator ConstIterator;
 
   PbbAddressTlvBlock (void);
   ~PbbAddressTlvBlock (void);
@@ -371,7 +375,7 @@
   bool operator!= (const PbbAddressTlvBlock &other) const;
 
 private:
-  std::list< Ptr<PbbAddressTlv> > m_tlvList;
+  std::list< Ptr<PbbAddressTlv> > m_tlvList; //!< PbbAddressTlv container
 };
 
 /**
@@ -385,10 +389,14 @@
 class PbbPacket : public SimpleRefCount<PbbPacket,Header>
 {
 public:
-  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;                       /// This is a PbbTlv iterator for PbbPacket
-  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;            /// This is a const PbbTlv iterator for PbbPacket
-  typedef std::list< Ptr<PbbMessage> >::iterator MessageIterator;               /// This is a PbbMessageIterator for PbbPacket
-  typedef std::list< Ptr<PbbMessage> >::const_iterator ConstMessageIterator;    /// This is a const PbbMessageIterator for PbbPacket
+  /// PbbTlv iterator for PbbPacket
+  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;
+  /// PbbTlv const iterator for PbbPacket
+  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;
+  /// PbbMessage Iterator for PbbPacket
+  typedef std::list< Ptr<PbbMessage> >::iterator MessageIterator;
+  /// PbbMessage Const Iterator for PbbPacket
+  typedef std::list< Ptr<PbbMessage> >::const_iterator ConstMessageIterator;
 
   PbbPacket (void);
   ~PbbPacket (void);
@@ -617,7 +625,10 @@
    */
   void MessageClear (void);
 
-  /* Methods implemented by all headers */
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
 
@@ -665,13 +676,13 @@
 protected:
 
 private:
-  PbbTlvBlock m_tlvList;
-  std::list< Ptr<PbbMessage> > m_messageList;
+  PbbTlvBlock m_tlvList; //!< PbbTlv container
+  std::list< Ptr<PbbMessage> > m_messageList; //!< PbbTlvBlock container
 
-  uint8_t m_version;
+  uint8_t m_version; //!< version
 
-  bool m_hasseqnum;
-  uint16_t m_seqnum;
+  bool m_hasseqnum; //!< Sequence number present
+  uint16_t m_seqnum; //!< Sequence number
 };
 
 /**
@@ -684,10 +695,14 @@
 class PbbMessage : public SimpleRefCount<PbbMessage>
 {
 public:
-  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;                                 /// This is a PbbTlv iterator for PbbMessage
-  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;                      /// This is a const PbbTlv iterator for PbbMessage
-  typedef std::list< Ptr<PbbAddressBlock> >::iterator AddressBlockIterator;               /// This is a PbbAddressBlock iterator for PbbMessage
-  typedef std::list< Ptr<PbbAddressBlock> >::const_iterator ConstAddressBlockIterator;    /// This is a const PbbAddressBlock iterator for PbbMessage
+  /// PbbTlv iterator
+  typedef std::list< Ptr<PbbTlv> >::iterator TlvIterator;
+  /// PbbTlv const iterator
+  typedef std::list< Ptr<PbbTlv> >::const_iterator ConstTlvIterator;
+  /// PbbAddressBlock iterator
+  typedef std::list< Ptr<PbbAddressBlock> >::iterator AddressBlockIterator;
+  /// PbbAddressBlock const iterator
+  typedef std::list< Ptr<PbbAddressBlock> >::const_iterator ConstAddressBlockIterator;
 
   PbbMessage ();
   virtual ~PbbMessage ();
@@ -1060,30 +1075,48 @@
    */
   virtual PbbAddressLength GetAddressLength (void) const = 0;
 
+  /**
+   * \brief Serialize the originator address
+   * \param start the buffer iterator start
+   */
   virtual void SerializeOriginatorAddress (Buffer::Iterator &start) const = 0;
+  /**
+   * \brief Deserialize the originator address
+   * \param start the buffer iterator start
+   * \returns the deserialized address
+   */
   virtual Address DeserializeOriginatorAddress (Buffer::Iterator &start) const = 0;
+  /**
+   * \brief Print the originator address
+   * \param os the output stream
+   */
   virtual void PrintOriginatorAddress (std::ostream &os) const = 0;
 
+  /**
+   * \brief Deserialize an address block
+   * \param start the buffer iterator start
+   * \returns the deserialized address block
+   */
   virtual Ptr<PbbAddressBlock> AddressBlockDeserialize (Buffer::Iterator &start) const = 0;
 
 private:
-  PbbTlvBlock m_tlvList;
-  std::list< Ptr<PbbAddressBlock> > m_addressBlockList;
+  PbbTlvBlock m_tlvList; //!< PbbTlvBlock
+  std::list< Ptr<PbbAddressBlock> > m_addressBlockList; //!< PbbAddressBlock container
 
-  uint8_t m_type;
-  PbbAddressLength m_addrSize;
+  uint8_t m_type; //!< the type for this message
+  PbbAddressLength m_addrSize; //!< the address size
 
-  bool m_hasOriginatorAddress;
-  Address m_originatorAddress;
+  bool m_hasOriginatorAddress; //!< Originator address present
+  Address m_originatorAddress; //!< originator address
 
-  bool m_hasHopLimit;
-  uint8_t m_hopLimit;
+  bool m_hasHopLimit; //!< Hop limit present
+  uint8_t m_hopLimit; //!< Hop limit
 
-  bool m_hasHopCount;
-  uint8_t m_hopCount;
+  bool m_hasHopCount; //!< Hop count present
+  uint8_t m_hopCount; //!< Hop count
 
-  bool m_hasSequenceNumber;
-  uint16_t m_sequenceNumber;
+  bool m_hasSequenceNumber;  //!< Sequence number present
+  uint16_t m_sequenceNumber; //!< Sequence number
 };
 
 /**
@@ -1151,14 +1184,20 @@
 class PbbAddressBlock : public SimpleRefCount<PbbAddressBlock>
 {
 public:
-  typedef std::list< Address >::iterator AddressIterator;             /// this is an address iterator for PbbAddressBlock
-  typedef std::list< Address >::const_iterator ConstAddressIterator;  /// this is an const address iterator for PbbAddressBlock
-
-  typedef std::list<uint8_t>::iterator PrefixIterator;                /// this is a prefix iterator for PbbAddressBlock
-  typedef std::list<uint8_t>::const_iterator ConstPrefixIterator;     /// this is a const prefix iterator for PbbAddressBlock
-
-  typedef PbbAddressTlvBlock::Iterator TlvIterator;                   /// this is a tlvblock iterator for PbbAddressBlock
-  typedef PbbAddressTlvBlock::ConstIterator ConstTlvIterator;         /// this is a const tlvblock iterator for PbbAddressBlock
+  /// Address iterator
+  typedef std::list< Address >::iterator AddressIterator;
+  /// Address const iterator
+  typedef std::list< Address >::const_iterator ConstAddressIterator;
+
+  /// Prefix iterator
+  typedef std::list<uint8_t>::iterator PrefixIterator;
+  /// Prefix const iterator
+  typedef std::list<uint8_t>::const_iterator ConstPrefixIterator;
+
+  /// tlvblock iterator
+  typedef PbbAddressTlvBlock::Iterator TlvIterator;
+  /// tlvblock const iterator
+  typedef PbbAddressTlvBlock::ConstIterator ConstTlvIterator;
 
   PbbAddressBlock ();
   virtual ~PbbAddressBlock ();
@@ -1522,19 +1561,52 @@
    * \returns Address length
    */
   virtual uint8_t GetAddressLength (void) const = 0;
+  /**
+   * \brief Serialize one or more addresses
+   * \param buffer the buffer to serialize to
+   * \param iter the iterator to the addresses
+   */
   virtual void SerializeAddress (uint8_t *buffer, ConstAddressIterator iter) const = 0;
+  /**
+   * \brief Deserialize one address
+   * \param buffer the buffer to deserialize from
+   * \returns the address
+   */
   virtual Address DeserializeAddress (uint8_t *buffer) const = 0;
+  /**
+   * \brief Print one or more addresses
+   * \param os the output stream
+   * \param iter the iterator to the addresses
+   */
   virtual void PrintAddress (std::ostream &os, ConstAddressIterator iter) const = 0;
 
 private:
+  /**
+   * \brief Get the prefix flags
+   * \return the prefix flags
+   */
   uint8_t GetPrefixFlags (void) const;
+  /**
+   * \brief Get head and tail
+   * \param head the head
+   * \param headlen the head length
+   * \param tail the tail
+   * \param taillen the tail length
+   */
   void GetHeadTail (uint8_t *head, uint8_t &headlen,
                     uint8_t *tail, uint8_t &taillen) const;
+
+  /**
+   * \brief Check if the tail is empty
+   * \param tail the tail
+   * \param taillen the tail length
+   * \returns true if the tail is empty
+   */
   bool HasZeroTail (const uint8_t *tail, uint8_t taillen) const;
 
-  std::list<Address> m_addressList;
-  std::list<uint8_t> m_prefixList;
-  PbbAddressTlvBlock m_addressTlvList;
+  std::list<Address> m_addressList; //!< Addreses container
+  std::list<uint8_t> m_prefixList; //!< Prefixes container
+  PbbAddressTlvBlock m_addressTlvList; //!< PbbAddressTlv container
 };
 
 /**
@@ -1717,32 +1789,64 @@
   bool operator!= (const PbbTlv &other) const;
 
 protected:
+  /**
+   * \brief Set an index as starting point
+   * \param index the starting index
+   */
   void SetIndexStart (uint8_t index);
+  /**
+   * \brief Get the starting point index
+   * \returns the starting index
+   */
   uint8_t GetIndexStart (void) const;
+  /**
+   * \brief Checks if there is a starting index
+   * \returns true if the start index has been set
+   */
   bool HasIndexStart (void) const;
 
+  /**
+   * \brief Set an index as stop point
+   * \param index the stop index
+   */
   void SetIndexStop (uint8_t index);
+  /**
+   * \brief Get the stop point index
+   * \returns the stop index
+   */
   uint8_t GetIndexStop (void) const;
+  /**
+   * \brief Checks if there is a stop index
+   * \returns true if the stop index has been set
+   */
   bool HasIndexStop (void) const;
 
+  /**
+   * \brief Set the multivalue parameter
+   * \param isMultivalue the multivalue status
+   */
   void SetMultivalue (bool isMultivalue);
+  /**
+   * \brief Check the multivalue parameter
+   * \returns the multivalue status
+   */
   bool IsMultivalue (void) const;
 
 private:
-  uint8_t m_type;
+  uint8_t m_type; //!< Type of this TLV.
 
-  bool m_hasTypeExt;
-  uint8_t m_typeExt;
+  bool m_hasTypeExt; //!< Extended type present.
+  uint8_t m_typeExt; //!< Extended type.
 
-  bool m_hasIndexStart;
-  uint8_t m_indexStart;
+  bool m_hasIndexStart; //!< Start index present.
+  uint8_t m_indexStart; //!< Start index.
 
-  bool m_hasIndexStop;
-  uint8_t m_indexStop;
+  bool m_hasIndexStop; //!< Stop index present.
+  uint8_t m_indexStop; //!< Stop index.
 
-  bool m_isMultivalue;
-  bool m_hasValue;
-  Buffer m_value;
+  bool m_isMultivalue; //!< Is multivalue.
+  bool m_hasValue;     //!< Has value.
+  Buffer m_value;      //!< Value.
 };
 
 /**
diff -Naur ns-3.19/src/network/utils/packet-burst.cc ns-3.20/src/network/utils/packet-burst.cc
--- ns-3.19/src/network/utils/packet-burst.cc	2014-06-17 10:34:00.612635318 -0700
+++ ns-3.20/src/network/utils/packet-burst.cc	2014-06-17 10:33:13.973995344 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PacketBurst)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketBurst);
 
 TypeId
 PacketBurst::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/packet-burst.h ns-3.20/src/network/utils/packet-burst.h
--- ns-3.19/src/network/utils/packet-burst.h	2014-06-17 10:34:00.612635318 -0700
+++ ns-3.20/src/network/utils/packet-burst.h	2014-06-17 10:33:13.973995344 -0700
@@ -29,12 +29,16 @@
 
 class Packet;
 
+/**
+ * \brief this class implement a burst as a list of packets
+ */
 class PacketBurst : public Object
 {
+public:
   /**
-   * \brief this class implement a burst as a list of packets
+   * \brief Get the type ID.
+   * \return the object TypeId
    */
-public:
   static TypeId GetTypeId (void);
   PacketBurst (void);
   virtual ~PacketBurst (void);
@@ -60,11 +64,19 @@
    */
   uint32_t GetSize (void) const;
 
+  /**
+   * \brief Returns an iterator to the begin of the burst
+   * \return iterator to the burst list start
+   */
   std::list<Ptr<Packet> >::const_iterator Begin (void) const;
+  /**
+   * \brief Returns an iterator to the end of the burst
+   * \return iterator to the burst list end
+   */
   std::list<Ptr<Packet> >::const_iterator End (void) const;
 private:
   void DoDispose (void);
-  std::list<Ptr<Packet> > m_packets;
+  std::list<Ptr<Packet> > m_packets; //!< the list of packets in the burst
 };
 } // namespace ns3
 
diff -Naur ns-3.19/src/network/utils/packet-probe.cc ns-3.20/src/network/utils/packet-probe.cc
--- ns-3.19/src/network/utils/packet-probe.cc	2014-06-17 10:34:00.613635310 -0700
+++ ns-3.20/src/network/utils/packet-probe.cc	2014-06-17 10:33:13.974995337 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PacketProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketProbe);
 
 TypeId
 PacketProbe::GetTypeId ()
diff -Naur ns-3.19/src/network/utils/packet-probe.h ns-3.20/src/network/utils/packet-probe.h
--- ns-3.19/src/network/utils/packet-probe.h	2014-06-17 10:34:00.613635310 -0700
+++ ns-3.20/src/network/utils/packet-probe.h	2014-06-17 10:33:13.975995329 -0700
@@ -47,6 +47,10 @@
 class PacketProbe : public Probe
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId ();
   PacketProbe ();
   virtual ~PacketProbe ();
@@ -96,7 +100,9 @@
    */
   void TraceSink (Ptr<const Packet> packet);
 
+  /// Traced callback: packet received
   TracedCallback<Ptr<const Packet> > m_output;
+  /// Traced callback: size of previous packet receive, size of actual packet received
   TracedCallback<uint32_t, uint32_t> m_outputBytes;
 
   /// The traced packet.
diff -Naur ns-3.19/src/network/utils/packet-socket-address.h ns-3.20/src/network/utils/packet-socket-address.h
--- ns-3.19/src/network/utils/packet-socket-address.h	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/network/utils/packet-socket-address.h	2014-06-17 10:33:13.975995329 -0700
@@ -39,15 +39,52 @@
 {
 public:
   PacketSocketAddress ();
+
+  /**
+   * \brief Set the protocol
+   * \param protocol the protocol
+   */
   void SetProtocol (uint16_t protocol);
 
+  /**
+   * \brief Set the address to match all the outgoing NetDevice
+   */
   void SetAllDevices (void);
+
+  /**
+   * \brief Set the address to match only a specified NetDevice
+   * \param device the NetDevice index
+   */
   void SetSingleDevice (uint32_t device);
+
+  /**
+   * \brief Set the destination address
+   * \param address the destination address
+   */
   void SetPhysicalAddress (const Address address);
 
+  /**
+   * \brief Get the protocol
+   * \return the protocol
+   */
   uint16_t GetProtocol (void) const;
+
+  /**
+   * \brief Get the device this address is bound to
+   * \return the device index
+   */
   uint32_t GetSingleDevice (void) const;
+
+  /**
+   * \brief Checks if the address is bound to a specified NetDevice
+   * \return true if the address is bound to a NetDevice
+   */
   bool IsSingleDevice (void) const;
+
+  /**
+   * \brief Get the destination address
+   * \returns The destination address
+   */
   Address GetPhysicalAddress (void) const;
 
   /**
@@ -56,25 +93,38 @@
    * Convert an instance of this class to a polymorphic Address instance.
    */
   operator Address () const;
+
   /**
    * \param address a polymorphic address
-   *
+   * \returns an Address
    * Convert a polymorphic address to an Mac48Address instance.
    * The conversion performs a type check.
    */
   static PacketSocketAddress ConvertFrom (const Address &address);
+
   /**
    * \param address address to test
    * \returns true if the address matches, false otherwise.
    */
   static bool IsMatchingType (const Address &address);
 private:
+
+  /**
+   * \brief Return the Type of address.
+   * \return type of address
+   */
   static uint8_t GetType (void);
+
+  /**
+   * \brief Convert an instance of this class to a polymorphic Address instance.
+   * \returns a new Address instance
+   */
   Address ConvertTo (void) const;
-  uint16_t m_protocol;
-  bool m_isSingleDevice;
-  uint32_t m_device;
-  Address m_address;
+
+  uint16_t m_protocol;    //!< Protocol
+  bool m_isSingleDevice;  //!< True if directed to a specific outgoing NetDevice
+  uint32_t m_device;      //!< Outgoing NetDevice index
+  Address m_address;      //!< Destination address
 };
 
 
diff -Naur ns-3.19/src/network/utils/packet-socket.cc ns-3.20/src/network/utils/packet-socket.cc
--- ns-3.19/src/network/utils/packet-socket.cc	2014-06-17 10:34:00.615635295 -0700
+++ ns-3.20/src/network/utils/packet-socket.cc	2014-06-17 10:33:13.977995313 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PacketSocket)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketSocket);
 
 TypeId
 PacketSocket::GetTypeId (void)
@@ -537,8 +536,7 @@
   return m_destAddr;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (PacketSocketTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketSocketTag);
 
 TypeId
 PacketSocketTag::GetTypeId (void)
@@ -601,8 +599,7 @@
   return m_deviceName;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (DeviceNameTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DeviceNameTag);
 
 TypeId
 DeviceNameTag::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/packet-socket-factory.cc ns-3.20/src/network/utils/packet-socket-factory.cc
--- ns-3.19/src/network/utils/packet-socket-factory.cc	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/network/utils/packet-socket-factory.cc	2014-06-17 10:33:13.976995321 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PacketSocketFactory)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketSocketFactory);
 
 TypeId 
 PacketSocketFactory::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/packet-socket-factory.h ns-3.20/src/network/utils/packet-socket-factory.h
--- ns-3.19/src/network/utils/packet-socket-factory.h	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/network/utils/packet-socket-factory.h	2014-06-17 10:33:13.976995321 -0700
@@ -35,6 +35,10 @@
 class PacketSocketFactory : public SocketFactory
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   PacketSocketFactory ();
diff -Naur ns-3.19/src/network/utils/packet-socket.h ns-3.20/src/network/utils/packet-socket.h
--- ns-3.19/src/network/utils/packet-socket.h	2014-06-17 10:34:00.615635295 -0700
+++ ns-3.20/src/network/utils/packet-socket.h	2014-06-17 10:33:13.977995313 -0700
@@ -43,7 +43,7 @@
  *
  * A PacketSocket can be used to connect an application to a net
  * device. The application provides the buffers of data, the socket
- * conserts them to a raw packet and the net device then adds the
+ * converts them to a raw packet and the net device then adds the
  * protocol specific headers and trailers. This socket type
  * is very similar to the linux and BSD "packet" sockets.
  *
@@ -78,18 +78,47 @@
 class PacketSocket : public Socket
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   PacketSocket ();
   virtual ~PacketSocket ();
 
+  /**
+   * \brief Set the associated node.
+   * \param node the node
+   */
   void SetNode (Ptr<Node> node);
 
   virtual enum SocketErrno GetErrno (void) const;
   virtual enum SocketType GetSocketType (void) const;
   virtual Ptr<Node> GetNode (void) const;
+  /**
+   * \brief Bind the socket to the NetDevice and register the protocol handler.
+   *
+   * \warning this will actually bind protocol "0".
+   *
+   * \returns 0 on success, -1 on failure.
+   */
   virtual int Bind (void);
+  /**
+   * \brief Bind the socket to the NetDevice and register the protocol handler.
+   *
+   * \warning this will actually bind protocol "0".
+   *
+   * \returns 0 on success, -1 on failure.
+   */
   virtual int Bind6 (void);
+  /**
+   * \brief Bind the socket to the NetDevice and register the
+   *        protocol handler specified in the address.
+   *
+   * \param address the packet socket address
+   * \returns 0 on success, -1 on failure.
+   */
   virtual int Bind (const Address & address);
   virtual int Close (void);
   virtual int ShutdownSend (void);
@@ -108,42 +137,68 @@
   virtual bool GetAllowBroadcast () const;
 
 private:
+  /**
+   * \brief Called by the L3 protocol when it received a packet to pass on to TCP.
+   *
+   * \param device the incoming NetDevice
+   * \param packet the incoming packet
+   * \param protocol the protocol
+   * \param from sender address
+   * \param to destination address
+   * \param packetType packet type
+   */
   void ForwardUp (Ptr<NetDevice> device, Ptr<const Packet> packet, 
                   uint16_t protocol, const Address &from, const Address &to,
                   NetDevice::PacketType packetType);
+  /**
+   * \brief Bind the socket to the NetDevice and register the
+   *        protocol handler specified in the address.
+   * \param address the packet socket address
+   * \returns 0 on success, -1 on failure.
+   */
   int DoBind (const PacketSocketAddress &address);
+
+  /**
+   * \brief Get the minimum MTU supported by the NetDevices bound to a specific address
+   * \param ad the socket address to check for
+   * \returns The minimum MTU
+   */
   uint32_t GetMinMtu (PacketSocketAddress ad) const;
   virtual void DoDispose (void);
 
+  /**
+   * \brief States of the socket
+   */
   enum State {
     STATE_OPEN,
     STATE_BOUND,     // open and bound
     STATE_CONNECTED, // open, bound and connected
     STATE_CLOSED
   };
-  Ptr<Node> m_node;
-  enum SocketErrno m_errno;
-  bool m_shutdownSend;
-  bool m_shutdownRecv;
-  enum State m_state;
-  uint16_t m_protocol;
-  bool m_isSingleDevice;
-  uint32_t m_device;
-  Address m_destAddr; /// Default destination address
 
-  std::queue<Ptr<Packet> > m_deliveryQueue;
-  uint32_t m_rxAvailable;
+  Ptr<Node> m_node;         //!< the associated node
+  enum SocketErrno m_errno; //!< Socket error code
+  bool m_shutdownSend;      //!< Send no longer allowed
+  bool m_shutdownRecv;      //!< Receive no longer allowed
+  enum State m_state;       //!< Socket state
+  uint16_t m_protocol;      //!< Socket protocol
+  bool m_isSingleDevice;    //!< Is bound to a single netDevice
+  uint32_t m_device;        //!< index of the bound NetDevice
+  Address m_destAddr;       //!< Default destination address
+
+  std::queue<Ptr<Packet> > m_deliveryQueue; //!< Rx queue
+  uint32_t m_rxAvailable; //!< Rx queue size [Bytes]
 
+  /// Traced callback: dropped packets
   TracedCallback<Ptr<const Packet> > m_dropTrace;
 
   // Socket options (attributes)
-  uint32_t m_rcvBufSize;
+  uint32_t m_rcvBufSize; //!< Rx buffer size [Bytes]
 
 };
 
 /**
  * \brief  This class implements a tag that carries the dest address of a packet and the packet type.
- *
  */
 class PacketSocketTag : public Tag
 {
@@ -173,6 +228,10 @@
    */
   Address GetDestAddress (void) const;
 
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual uint32_t GetSerializedSize (void) const;
@@ -181,13 +240,11 @@
   virtual void Print (std::ostream &os) const;
 
 private:
-  std::string m_deviceName;
-  NetDevice::PacketType m_packetType;
-  Address m_destAddr;
+  NetDevice::PacketType m_packetType; //!< Packet type
+  Address m_destAddr; //!< Destination address
 };
 /**
  * \brief  This class implements a tag that carries the ns3 device name from where a packet is coming.
- *
  */
 class DeviceNameTag : public Tag
 {
@@ -206,6 +263,10 @@
    * @return the device name from where the corresponding packet is coming.
    */
   std::string GetDeviceName (void) const;
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
   virtual uint32_t GetSerializedSize (void) const;
@@ -214,7 +275,7 @@
   virtual void Print (std::ostream &os) const;
 
 private:
-  std::string m_deviceName;
+  std::string m_deviceName; //!< Device name
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/pcap-file.h ns-3.20/src/network/utils/pcap-file.h
--- ns-3.19/src/network/utils/pcap-file.h	2014-06-17 10:34:00.619635264 -0700
+++ ns-3.20/src/network/utils/pcap-file.h	2014-06-17 10:33:13.981995283 -0700
@@ -186,62 +186,78 @@
    * byteswapped.  Used primarily for testing the class itself, but may be 
    * useful as a flag indicating a difference in endianness of the writing 
    * system.
+   *
+   * \returns swap mode of the file
    */
   bool GetSwapMode (void);
 
-  /*
+  /**
    * \brief Returns the magic number of the pcap file as defined by the magic_number
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns magic number
    */ 
   uint32_t GetMagic (void);
 
-  /*
+  /**
    * \brief Returns the major version of the pcap file as defined by the version_major
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns major version
    */ 
   uint16_t GetVersionMajor (void);
 
-  /*
+  /**
    * \brief Returns the minor version of the pcap file as defined by the version_minor
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns minor version
    */ 
   uint16_t GetVersionMinor (void);
 
-  /*
+  /**
    * \brief Returns the time zone offset of the pcap file as defined by the thiszone
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns time zone offset
    */ 
   int32_t GetTimeZoneOffset (void);
 
-  /*
+  /**
    * \brief Returns the accuracy of timestamps field of the pcap file as defined
    * by the sigfigs field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns accuracy of timestamps
    */ 
   uint32_t GetSigFigs (void);
 
-  /*
+  /**
    * \brief Returns the max length of saved packets field of the pcap file as 
    * defined by the snaplen field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns max length of saved packets field
    */ 
   uint32_t GetSnapLen (void);
 
-  /*
+  /**
    * \brief Returns the data link type field of the pcap file as defined by the 
    * network field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns data link type field
    */ 
   uint32_t GetDataLinkType (void);
 
@@ -261,6 +277,9 @@
                     uint32_t snapLen = SNAPLEN_DEFAULT);
 
 private:
+  /**
+   * \brief Pcap file header
+   */
   typedef struct {
     uint32_t m_magicNumber;   /**< Magic number identifying this as a pcap file */
     uint16_t m_versionMajor;  /**< Major version identifying the version of pcap used in this file */
@@ -271,6 +290,9 @@
     uint32_t m_type;          /**< Data link type of packet data */
   } PcapFileHeader;
 
+  /**
+   * \brief Pcap record header
+   */
   typedef struct {
     uint32_t m_tsSec;         /**< seconds part of timestamp */
     uint32_t m_tsUsec;        /**< microseconds part of timestamp (nsecs for PCAP_NSEC_MAGIC) */
@@ -278,20 +300,59 @@
     uint32_t m_origLen;       /**< actual length of original packet */
   } PcapRecordHeader;
 
+  /**
+   * \brief Swap a value byte order
+   * \param val the value
+   * \returns the value with byte order swapped
+   */
   uint8_t Swap (uint8_t val);
+  /**
+   * \brief Swap a value byte order
+   * \param val the value
+   * \returns the value with byte order swapped
+   */
   uint16_t Swap (uint16_t val);
+  /**
+   * \brief Swap a value byte order
+   * \param val the value
+   * \returns the value with byte order swapped
+   */
   uint32_t Swap (uint32_t val);
+  /**
+   * \brief Swap the byte order of a Pcap file header
+   * \param from original file header
+   * \param to swapped file header
+   */
   void Swap (PcapFileHeader *from, PcapFileHeader *to);
+  /**
+   * \brief Swap the byte order of a Pcap record header
+   * \param from original record header
+   * \param to swapped record header
+   */
   void Swap (PcapRecordHeader *from, PcapRecordHeader *to);
 
+  /**
+   * \brief Write a Pcap file header
+   */
   void WriteFileHeader (void);
+  /**
+   * \brief Write a Pcap packet header
+   * \param tsSec Time stamp (seconds part)
+   * \param tsUsec Time stamp (microseconds part)
+   * \param totalLen total packet length
+   * \returns the length of the packet to write in the Pcap file
+   */
   uint32_t WritePacketHeader (uint32_t tsSec, uint32_t tsUsec, uint32_t totalLen);
+
+  /**
+   * \brief Read and verify a Pcap file header
+   */
   void ReadAndVerifyFileHeader (void);
 
-  std::string    m_filename;
-  std::fstream   m_file;
-  PcapFileHeader m_fileHeader;
-  bool m_swapMode;
+  std::string    m_filename;    //!< file name
+  std::fstream   m_file;        //!< file stream
+  PcapFileHeader m_fileHeader;  //!< file header
+  bool m_swapMode;              //!< swap mode
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/pcap-file-wrapper.cc ns-3.20/src/network/utils/pcap-file-wrapper.cc
--- ns-3.19/src/network/utils/pcap-file-wrapper.cc	2014-06-17 10:34:00.617635279 -0700
+++ ns-3.20/src/network/utils/pcap-file-wrapper.cc	2014-06-17 10:33:13.979995298 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PcapFileWrapper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PcapFileWrapper);
 
 TypeId 
 PcapFileWrapper::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/pcap-file-wrapper.h ns-3.20/src/network/utils/pcap-file-wrapper.h
--- ns-3.19/src/network/utils/pcap-file-wrapper.h	2014-06-17 10:34:00.618635272 -0700
+++ ns-3.20/src/network/utils/pcap-file-wrapper.h	2014-06-17 10:33:13.980995290 -0700
@@ -30,7 +30,7 @@
 
 namespace ns3 {
 
-/*
+/**
  * A class that wraps a PcapFile as an ns3::Object and provides a higher-layer
  * ns-3 interface to the low-level public methods of PcapFile.  Users are
  * encouraged to use this object instead of class ns3::PcapFile in ns-3
@@ -39,6 +39,10 @@
 class PcapFileWrapper : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   PcapFileWrapper ();
@@ -138,65 +142,79 @@
    */
   void Write (Time t, uint8_t const *buffer, uint32_t length);
 
-  /*
+  /**
    * \brief Returns the magic number of the pcap file as defined by the magic_number
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns magic number
    */ 
   uint32_t GetMagic (void);
 
-  /*
+  /**
    * \brief Returns the major version of the pcap file as defined by the version_major
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns major version
    */ 
   uint16_t GetVersionMajor (void);
 
-  /*
+  /**
    * \brief Returns the minor version of the pcap file as defined by the version_minor
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns minor version
    */ 
   uint16_t GetVersionMinor (void);
 
-  /*
+  /**
    * \brief Returns the time zone offset of the pcap file as defined by the thiszone
    * field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns time zone offset
    */ 
   int32_t GetTimeZoneOffset (void);
 
-  /*
+  /**
    * \brief Returns the accuracy of timestamps field of the pcap file as defined
    * by the sigfigs field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns accuracy of timestamps
    */ 
   uint32_t GetSigFigs (void);
 
-  /*
+  /**
    * \brief Returns the max length of saved packets field of the pcap file as 
    * defined by the snaplen field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns max length of saved packets field
    */ 
   uint32_t GetSnapLen (void);
 
-  /*
+  /**
    * \brief Returns the data link type field of the pcap file as defined by the 
    * network field in the pcap global header.
    *
    * See http://wiki.wireshark.org/Development/LibpcapFileFormat
+   *
+   * \returns data link type field
    */ 
   uint32_t GetDataLinkType (void);
 
 private:
-  PcapFile m_file;
-  uint32_t m_snapLen;
+  PcapFile m_file; //!< Pcap file
+  uint32_t m_snapLen; //!< max length of saved packets
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/queue.cc ns-3.20/src/network/utils/queue.cc
--- ns-3.19/src/network/utils/queue.cc	2014-06-17 10:34:00.619635264 -0700
+++ ns-3.20/src/network/utils/queue.cc	2014-06-17 10:33:13.981995283 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Queue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Queue);
 
 TypeId 
 Queue::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/queue.h ns-3.20/src/network/utils/queue.h
--- ns-3.19/src/network/utils/queue.h	2014-06-17 10:34:00.620635256 -0700
+++ ns-3.20/src/network/utils/queue.h	2014-06-17 10:33:13.982995275 -0700
@@ -45,6 +45,10 @@
 class Queue : public Object
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
 
   Queue ();
@@ -151,8 +155,21 @@
 
 private:
 
+  /**
+   * Push a packet in the queue
+   * \param p the packet to enqueue
+   * \return true if success, false if the packet has been dropped.
+   */
   virtual bool DoEnqueue (Ptr<Packet> p) = 0;
+  /**
+   * Pull a packet from the queue
+   * \return the packet.
+   */
   virtual Ptr<Packet> DoDequeue (void) = 0;
+  /**
+   * Peek the front packet in the queue
+   * \return the packet.
+   */
   virtual Ptr<const Packet> DoPeek (void) const = 0;
 
 protected:
@@ -164,16 +181,19 @@
   void Drop (Ptr<Packet> packet);
 
 private:
+  /// Traced callback: fired when a packet is enqueued
   TracedCallback<Ptr<const Packet> > m_traceEnqueue;
+  /// Traced callback: fired when a packet is dequeued
   TracedCallback<Ptr<const Packet> > m_traceDequeue;
+  /// Traced callback: fired when a packet is dropped
   TracedCallback<Ptr<const Packet> > m_traceDrop;
 
-  uint32_t m_nBytes;
-  uint32_t m_nTotalReceivedBytes;
-  uint32_t m_nPackets;
-  uint32_t m_nTotalReceivedPackets;
-  uint32_t m_nTotalDroppedBytes;
-  uint32_t m_nTotalDroppedPackets;
+  uint32_t m_nBytes;                //!< Number of bytes in the queue
+  uint32_t m_nTotalReceivedBytes;   //!< Total received bytes
+  uint32_t m_nPackets;              //!< Number of packets in the queue
+  uint32_t m_nTotalReceivedPackets; //!< Total received packets
+  uint32_t m_nTotalDroppedBytes;    //!< Total dropped bytes
+  uint32_t m_nTotalDroppedPackets;  //!< Total dropped packets
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/radiotap-header.cc ns-3.20/src/network/utils/radiotap-header.cc
--- ns-3.19/src/network/utils/radiotap-header.cc	2014-06-17 10:34:00.620635256 -0700
+++ ns-3.20/src/network/utils/radiotap-header.cc	2014-06-17 10:33:13.982995275 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RadiotapHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RadiotapHeader);
  
 RadiotapHeader::RadiotapHeader()
   : m_length (8),
diff -Naur ns-3.19/src/network/utils/radiotap-header.h ns-3.20/src/network/utils/radiotap-header.h
--- ns-3.19/src/network/utils/radiotap-header.h	2014-06-17 10:34:00.621635249 -0700
+++ ns-3.20/src/network/utils/radiotap-header.h	2014-06-17 10:33:13.982995275 -0700
@@ -35,7 +35,7 @@
  * from a userspace application to the driver for transmission. 
  *
  * @warning the radiotap header specification says that the fields included in
- * the header should be aligned to their natural ize (e.g., 16-bit fields 
+ * the header should be aligned to their natural size (e.g., 16-bit fields
  * aligned to 16-bit boundaries, 32-bit fields aligned to 32-bit boundaries, 
  * and so on.  This implementation does not enforce this.  However, the radiotap
  * specification enforces an order in which fields have to appear (if they 
@@ -49,6 +49,10 @@
 {
 public:
   RadiotapHeader();
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
 
@@ -242,18 +246,16 @@
     RADIOTAP_EXT               = 0x10000000
   };
  
-  void CheckAddChannelField ();
-
-  uint16_t m_length;
-  uint32_t m_present;
+  uint16_t m_length;        //!< entire length of radiotap data + header
+  uint32_t m_present;       //!< bits describing which fields follow header
 
-  uint64_t m_tsft;
-  uint8_t m_flags;
-  uint8_t m_rate;
-  uint16_t m_channelFreq;
-  uint16_t m_channelFlags;
-  int8_t m_antennaSignal;
-  int8_t m_antennaNoise;
+  uint64_t m_tsft;          //!< Time Synchronization Function Timer (when the first bit of the MPDU arrived at the MAC)
+  uint8_t m_flags;          //!< Properties of transmitted and received frames.
+  uint8_t m_rate;           //!< TX/RX data rate in units of 500 kbps
+  uint16_t m_channelFreq;   //!< Tx/Rx frequency in MHz.
+  uint16_t m_channelFlags;  //!< Tx/Rx channel flags.
+  int8_t m_antennaSignal;   //!< RF signal power at the antenna, dB difference from an arbitrary, fixed reference.
+  int8_t m_antennaNoise;    //!< RF noise power at the antenna, dB difference from an arbitrary, fixed reference.
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/red-queue.cc ns-3.20/src/network/utils/red-queue.cc
--- ns-3.19/src/network/utils/red-queue.cc	2014-06-17 10:34:00.621635249 -0700
+++ ns-3.20/src/network/utils/red-queue.cc	2014-06-17 10:33:13.983995267 -0700
@@ -69,8 +69,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RedQueue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RedQueue);
 
 TypeId RedQueue::GetTypeId (void)
 {
diff -Naur ns-3.19/src/network/utils/red-queue.h ns-3.20/src/network/utils/red-queue.h
--- ns-3.19/src/network/utils/red-queue.h	2014-06-17 10:34:00.622635241 -0700
+++ ns-3.20/src/network/utils/red-queue.h	2014-06-17 10:33:13.984995259 -0700
@@ -74,7 +74,7 @@
 class TraceContainer;
 class UniformRandomVariable;
 
-/*
+/**
  * \ingroup queue
  *
  * \brief A RED packet queue
@@ -82,6 +82,10 @@
 class RedQueue : public Queue
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   /**
    * \brief RedQueue Constructor
@@ -99,24 +103,22 @@
 
   /**
    * \brief Stats
-   *
    */
   typedef struct
   {   
-    uint32_t unforcedDrop;  /// Early probability drops 
-    uint32_t forcedDrop;    /// Forced drops, qavg > max threshold
-    uint32_t qLimDrop;      /// Drops due to queue limits
+    uint32_t unforcedDrop;  //!< Early probability drops
+    uint32_t forcedDrop;    //!< Forced drops, qavg > max threshold
+    uint32_t qLimDrop;      //!< Drops due to queue limits
   } Stats;
 
   /** 
    * \brief Drop types
-   *
    */
   enum
   {
-    DTYPE_NONE,        /// Ok, no drop
-    DTYPE_FORCED,      /// A "forced" drop
-    DTYPE_UNFORCED,    /// An "unforced" (random) drop
+    DTYPE_NONE,        //!< Ok, no drop
+    DTYPE_FORCED,      //!< A "forced" drop
+    DTYPE_UNFORCED,    //!< An "unforced" (random) drop
   };
 
   /**
@@ -179,90 +181,103 @@
   virtual Ptr<Packet> DoDequeue (void);
   virtual Ptr<const Packet> DoPeek (void) const;
 
-  // ...
+  /**
+   * \brief Initialize the queue parameters.
+   *
+   * Note: if the link bandwidth changes in the course of the
+   * simulation, the bandwidth-dependent RED parameters do not change.
+   * This should be fixed, but it would require some extra parameters,
+   * and didn't seem worth the trouble...
+   */
   void InitializeParams (void);
-  // Compute the average queue size
+  /**
+   * \brief Compute the average queue size
+   * \param nQueued number of queued packets
+   * \param m simulated number of packets arrival during idle period
+   * \param qAvg average queue size
+   * \param qW queue weight given to cur q size sample
+   * \returns new average queue size
+   */
   double Estimator (uint32_t nQueued, uint32_t m, double qAvg, double qW);
-  // Check if packet p needs to be dropped due to probability mark
+  /**
+   * \brief Check if packet p needs to be dropped due to probability mark
+   * \param p packet
+   * \param qSize queue size
+   * \returns 0 for no drop/mark, 1 for drop
+   */
   uint32_t DropEarly (Ptr<Packet> p, uint32_t qSize);
-  // Returns a probability using these function parameters for the DropEarly funtion
-  double CalculatePNew (double qAvg, double maxTh, bool gentle, double vA,
+  /**
+   * \brief Returns a probability using these function parameters for the DropEarly function
+   * \param qAvg Average queue length
+   * \param maxTh Max avg length threshold
+   * \param gentle "gentle" algorithm
+   * \param vA vA
+   * \param vB vB
+   * \param vC vC
+   * \param vD vD
+   * \param maxP max_p
+   * \returns Prob. of packet drop before "count"
+   */
+  double CalculatePNew (double qAvg, double , bool gentle, double vA,
                         double vB, double vC, double vD, double maxP);
-  // Returns a probability using these function parameters for the DropEarly funtion
+  /**
+   * \brief Returns a probability using these function parameters for the DropEarly function
+   * \param p Prob. of packet drop before "count"
+   * \param count number of packets since last random number generation
+   * \param countBytes number of bytes since last drop
+   * \param meanPktSize Avg pkt size
+   * \param wait True for waiting between dropped packets
+   * \param size packet size
+   * \returns Prob. of packet drop
+   */
   double ModifyP (double p, uint32_t count, uint32_t countBytes,
                   uint32_t meanPktSize, bool wait, uint32_t size);
 
-  std::list<Ptr<Packet> > m_packets;
+  std::list<Ptr<Packet> > m_packets; //!< packets in the queue
 
-  uint32_t m_bytesInQueue;
-  bool m_hasRedStarted;
-  Stats m_stats;
+  uint32_t m_bytesInQueue; //!< bytes in the queue
+  bool m_hasRedStarted; //!< True if RED has started
+  Stats m_stats; //!< RED statistics
 
   // ** Variables supplied by user
-  // Bytes or packets?
-  QueueMode m_mode;
-  // Avg pkt size
-  uint32_t m_meanPktSize;
-  // Avg pkt size used during idle times
-  uint32_t m_idlePktSize;
-  // True for waiting between dropped packets
-  bool m_isWait;
-  // True to increases dropping prob. slowly when ave queue exceeds maxthresh
-  bool m_isGentle;
-  // Min avg length threshold (bytes)
-  double m_minTh;
-  // Max avg length threshold (bytes), should be >= 2*minTh
-  double m_maxTh;
-  // Queue limit in bytes / packets
-  uint32_t m_queueLimit;
-  // Queue weight given to cur q size sample
-  double m_qW;
-  // The max probability of dropping a packet
-  double m_lInterm;
-  // Ns-1 compatibility
-  bool m_isNs1Compat;
-  // Link bandwidth
-  DataRate m_linkBandwidth;
-  // Link delay
-  Time m_linkDelay;
+  QueueMode m_mode;         //!< Mode (Bytes or packets)
+  uint32_t m_meanPktSize;   //!< Avg pkt size
+  uint32_t m_idlePktSize;   //!< Avg pkt size used during idle times
+  bool m_isWait;            //!< True for waiting between dropped packets
+  bool m_isGentle;          //!< True to increases dropping prob. slowly when ave queue exceeds maxthresh
+  double m_minTh;           //!< Min avg length threshold (bytes)
+  double m_maxTh;           //!< Max avg length threshold (bytes), should be >= 2*minTh
+  uint32_t m_queueLimit;    //!< Queue limit in bytes / packets
+  double m_qW;              //!< Queue weight given to cur queue size sample
+  double m_lInterm;         //!< The max probability of dropping a packet
+  bool m_isNs1Compat;       //!< Ns-1 compatibility
+  DataRate m_linkBandwidth; //!< Link bandwidth
+  Time m_linkDelay;         //!< Link delay
 
   // ** Variables maintained by RED
-  // Prob. of packet drop before "count"
-  double m_vProb1;
-  // v_prob = v_a * v_ave + v_b
-  double m_vA;
-  double m_vB;
-  // Used for "gentle" mode
-  double m_vC;
-  // Used for "gentle" mode
-  double m_vD;
-  // Current max_p
-  double m_curMaxP;
-  // Prob. of packet drop
-  double m_vProb;
-  // # of bytes since last drop
-  uint32_t m_countBytes;
-  // 0 when average queue first exceeds thresh
-  uint32_t m_old;
-  // 0/1 idle status
-  uint32_t m_idle;
-  // packet time constant in packets/second
-  double m_ptc;
-  // Average queue length
-  double m_qAvg;
-  // number of packets since last random number generation
-  uint32_t m_count;
-  /*
+  double m_vProb1;          //!< Prob. of packet drop before "count"
+  double m_vA;              //!< 1.0 / (m_maxTh - m_minTh)
+  double m_vB;              //!< -m_minTh / (m_maxTh - m_minTh)
+  double m_vC;              //!< (1.0 - m_curMaxP) / m_maxTh - used in "gentle" mode
+  double m_vD;              //!< 2.0 * m_curMaxP - 1.0 - used in "gentle" mode
+  double m_curMaxP;         //!< Current max_p
+  double m_vProb;           //!< Prob. of packet drop
+  uint32_t m_countBytes;    //!< Number of bytes since last drop
+  uint32_t m_old;           //!< 0 when average queue first exceeds threshold
+  uint32_t m_idle;          //!< 0/1 idle status
+  double m_ptc;             //!< packet time constant in packets/second
+  double m_qAvg;            //!< Average queue length
+  uint32_t m_count;         //!< Number of packets since last random number generation
+  /**
    * 0 for default RED
    * 1 experimental (see red-queue.cc)
    * 2 experimental (see red-queue.cc)
    * 3 use Idle packet size in the ptc
    */
   uint32_t m_cautious;
-  // Start of current idle period
-  Time m_idleTime;
+  Time m_idleTime;          //!< Start of current idle period
 
-  Ptr<UniformRandomVariable> m_uv;
+  Ptr<UniformRandomVariable> m_uv;  //!< rng stream
 };
 
 }; // namespace ns3
diff -Naur ns-3.19/src/network/utils/sequence-number.h ns-3.20/src/network/utils/sequence-number.h
--- ns-3.19/src/network/utils/sequence-number.h	2014-06-17 10:34:00.622635241 -0700
+++ ns-3.20/src/network/utils/sequence-number.h	2014-06-17 10:33:13.984995259 -0700
@@ -341,27 +341,107 @@
   friend std::istream & operator >> (std::istream &is, const SequenceNumber<NUMERIC_TYPE2, SIGNED_TYPE2> &val);
 
 private: // unimplemented operators
+  /**
+   * \brief Plus equals operator - unimplemented
+   * \param value value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator+= (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value);
+  /**
+   * \brief Minus equals operator - unimplemented
+   * \param value value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator-= (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value);
+  /**
+   * \brief Multiplication operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator* (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Division operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator/ (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Modulo operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator% (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Logical NOT operator - unimplemented
+   * \returns condition
+   */
   bool operator ! () const;
+  /**
+   * \brief Logical AND operator - unimplemented
+   * \param b value
+   * \returns condition
+   */
   bool operator && (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Logical OR operator - unimplemented
+   * \param b value
+   * \returns condition
+   */
   bool operator || (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Bitwise NOT operator - unimplemented
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator~ () const;
+  /**
+   * \brief Bitwise AND operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator& (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Bitwise OR operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator| (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Bitwise XOR operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator^ (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Bitwise left shift operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator<< (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Bitwise right shift operator - unimplemented
+   * \param b value
+   * \returns sequence number
+   */
   SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator>> (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
+  /**
+   * \brief Indirection operator - unimplemented
+   * \returns integer
+   */
   int operator* ();
   //SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>* operator& ();
 
 private:
-  NUMERIC_TYPE m_value;
+  NUMERIC_TYPE m_value; //!< Sequence number value
 };
 
+
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the stream
+ * \param val the value
+ * \returns a reference to the stream
+ */
 template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
 std::ostream &
 operator<< (std::ostream& os, const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &val)
@@ -370,6 +450,14 @@
   return os;
 }
 
+
+/**
+ * \brief Stream extraction operator.
+ *
+ * \param is the stream
+ * \param val the value
+ * \returns a reference to the stream
+ */
 template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
 std::istream & operator >> (std::istream &is, const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &val)
 {
@@ -377,9 +465,11 @@
   return is;
 }
 
-
+/// 32 bit Sequence number
 typedef SequenceNumber<uint32_t, int32_t> SequenceNumber32;
+/// 16 bit Sequence number
 typedef SequenceNumber<uint16_t, int16_t> SequenceNumber16;
+typedef SequenceNumber<uint8_t, int8_t> SequenceNumber8;
 
 } // namespace ns3
 
diff -Naur ns-3.19/src/network/utils/simple-channel.cc ns-3.20/src/network/utils/simple-channel.cc
--- ns-3.19/src/network/utils/simple-channel.cc	2014-06-17 10:34:00.623635233 -0700
+++ ns-3.20/src/network/utils/simple-channel.cc	2014-06-17 10:33:13.985995252 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SimpleChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SimpleChannel);
 
 TypeId 
 SimpleChannel::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/simple-channel.h ns-3.20/src/network/utils/simple-channel.h
--- ns-3.19/src/network/utils/simple-channel.h	2014-06-17 10:34:00.623635233 -0700
+++ ns-3.20/src/network/utils/simple-channel.h	2014-06-17 10:33:13.985995252 -0700
@@ -36,6 +36,10 @@
 class SimpleChannel : public Channel
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   SimpleChannel ();
 
@@ -66,7 +70,7 @@
   virtual Ptr<NetDevice> GetDevice (uint32_t i) const;
 
 private:
-  std::vector<Ptr<SimpleNetDevice> > m_devices;
+  std::vector<Ptr<SimpleNetDevice> > m_devices; //!< devices connected by the channel
 };
 
 } // namespace ns3
diff -Naur ns-3.19/src/network/utils/simple-net-device.cc ns-3.20/src/network/utils/simple-net-device.cc
--- ns-3.19/src/network/utils/simple-net-device.cc	2014-06-17 10:34:00.623635233 -0700
+++ ns-3.20/src/network/utils/simple-net-device.cc	2014-06-17 10:33:13.986995244 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SimpleNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SimpleNetDevice);
 
 TypeId 
 SimpleNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/network/utils/simple-net-device.h ns-3.20/src/network/utils/simple-net-device.h
--- ns-3.19/src/network/utils/simple-net-device.h	2014-06-17 10:34:00.624635225 -0700
+++ ns-3.20/src/network/utils/simple-net-device.h	2014-06-17 10:33:13.986995244 -0700
@@ -45,6 +45,10 @@
 class SimpleNetDevice : public NetDevice
 {
 public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   SimpleNetDevice ();
 
@@ -112,14 +116,14 @@
 protected:
   virtual void DoDispose (void);
 private:
-  Ptr<SimpleChannel> m_channel;
-  NetDevice::ReceiveCallback m_rxCallback;
-  NetDevice::PromiscReceiveCallback m_promiscCallback;
-  Ptr<Node> m_node;
-  uint16_t m_mtu;
-  uint32_t m_ifIndex;
-  Mac48Address m_address;
-  Ptr<ErrorModel> m_receiveErrorModel;
+  Ptr<SimpleChannel> m_channel; //!< the channel the device is connected to
+  NetDevice::ReceiveCallback m_rxCallback; //!< Receive callback
+  NetDevice::PromiscReceiveCallback m_promiscCallback; //!< Promiscuous receive callback
+  Ptr<Node> m_node; //!< Node this netDevice is associated to
+  uint16_t m_mtu;   //!< MTU
+  uint32_t m_ifIndex; //!< Interface index
+  Mac48Address m_address; //!< MAC address
+  Ptr<ErrorModel> m_receiveErrorModel; //!< Receive error model.
   /**
    * The trace source fired when the phy layer drops a packet it has received
    * due to the error model being active.  Although SimpleNetDevice doesn't 
diff -Naur ns-3.19/src/network/waf ns-3.20/src/network/waf
--- ns-3.19/src/network/waf	2014-06-17 10:34:00.624635225 -0700
+++ ns-3.20/src/network/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.629635187 -0700
+++ ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.991995205 -0700
@@ -56,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -100,12 +72,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -150,14 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -170,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -182,10 +144,6 @@
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-nix-vector-helper.h (module 'nix-vector-routing'): ns3::Ipv4NixVectorHelper [class]
     module.add_class('Ipv4NixVectorHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -260,10 +218,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -284,8 +238,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -328,13 +280,13 @@
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
     ## ipv4-nix-vector-routing.h (module 'nix-vector-routing'): ns3::Ipv4NixVectorRouting [class]
     module.add_class('Ipv4NixVectorRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >', 'ns3::NixMap_t')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >*', 'ns3::NixMap_t*')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >&', 'ns3::NixMap_t&')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >', 'ns3::Ipv4RouteMap_t')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >*', 'ns3::Ipv4RouteMap_t*')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >&', 'ns3::Ipv4RouteMap_t&')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >', u'ns3::NixMap_t')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >*', u'ns3::NixMap_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >&', u'ns3::NixMap_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >', u'ns3::Ipv4RouteMap_t')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >*', u'ns3::Ipv4RouteMap_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >&', u'ns3::Ipv4RouteMap_t&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -357,12 +309,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -398,19 +350,11 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
@@ -430,8 +374,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -441,7 +384,6 @@
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
     register_Ns3Ipv4NixVectorHelper_methods(root_module, root_module['ns3::Ipv4NixVectorHelper'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
@@ -475,7 +417,6 @@
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -486,7 +427,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3Mac48AddressChecker_methods(root_module, root_module['ns3::Mac48AddressChecker'])
@@ -759,6 +699,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -771,6 +715,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1152,55 +1100,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1669,61 +1568,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2482,88 +2326,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -2763,62 +2531,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2827,6 +2551,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2867,6 +2593,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3113,106 +2841,6 @@
                    is_const=True, is_virtual=True)
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4035,13 +3663,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4068,6 +3698,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4496,63 +4131,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5000,151 +4578,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -5716,10 +5149,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.633635156 -0700
+++ ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.994995182 -0700
@@ -56,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -100,12 +72,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -150,14 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -170,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -182,10 +144,6 @@
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-nix-vector-helper.h (module 'nix-vector-routing'): ns3::Ipv4NixVectorHelper [class]
     module.add_class('Ipv4NixVectorHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -260,10 +218,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -284,8 +238,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -328,13 +280,13 @@
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
     ## ipv4-nix-vector-routing.h (module 'nix-vector-routing'): ns3::Ipv4NixVectorRouting [class]
     module.add_class('Ipv4NixVectorRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >', 'ns3::NixMap_t')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >*', 'ns3::NixMap_t*')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >&', 'ns3::NixMap_t&')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >', 'ns3::Ipv4RouteMap_t')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >*', 'ns3::Ipv4RouteMap_t*')
-    typehandlers.add_type_alias('std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >&', 'ns3::Ipv4RouteMap_t&')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >', u'ns3::NixMap_t')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >*', u'ns3::NixMap_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::NixVector >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::NixVector > > > >&', u'ns3::NixMap_t&')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >', u'ns3::Ipv4RouteMap_t')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >*', u'ns3::Ipv4RouteMap_t*')
+    typehandlers.add_type_alias(u'std::map< ns3::Ipv4Address, ns3::Ptr< ns3::Ipv4Route >, std::less< ns3::Ipv4Address >, std::allocator< std::pair< ns3::Ipv4Address const, ns3::Ptr< ns3::Ipv4Route > > > >&', u'ns3::Ipv4RouteMap_t&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -357,12 +309,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -398,19 +350,11 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
@@ -430,8 +374,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -441,7 +384,6 @@
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
     register_Ns3Ipv4NixVectorHelper_methods(root_module, root_module['ns3::Ipv4NixVectorHelper'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
@@ -475,7 +417,6 @@
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -486,7 +427,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3Mac48AddressChecker_methods(root_module, root_module['ns3::Mac48AddressChecker'])
@@ -759,6 +699,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -771,6 +715,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1152,55 +1100,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1669,61 +1568,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2482,88 +2326,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -2763,62 +2531,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2827,6 +2551,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2867,6 +2593,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3113,106 +2841,6 @@
                    is_const=True, is_virtual=True)
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4035,13 +3663,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4068,6 +3698,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4496,63 +4131,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5000,151 +4578,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -5716,10 +5149,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/nix-vector-routing/model/ipv4-nix-vector-routing.cc ns-3.20/src/nix-vector-routing/model/ipv4-nix-vector-routing.cc
--- ns-3.19/src/nix-vector-routing/model/ipv4-nix-vector-routing.cc	2014-06-17 10:34:00.636635133 -0700
+++ ns-3.20/src/nix-vector-routing/model/ipv4-nix-vector-routing.cc	2014-06-17 10:33:13.997995159 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ipv4NixVectorRouting)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ipv4NixVectorRouting);
 
 TypeId 
 Ipv4NixVectorRouting::GetTypeId (void)
diff -Naur ns-3.19/src/nix-vector-routing/waf ns-3.20/src/nix-vector-routing/waf
--- ns-3.19/src/nix-vector-routing/waf	2014-06-17 10:34:00.637635125 -0700
+++ ns-3.20/src/nix-vector-routing/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/olsr/bindings/modulegen__gcc_ILP32.py ns-3.20/src/olsr/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/olsr/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.642635087 -0700
+++ ns-3.20/src/olsr/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:14.003995113 -0700
@@ -102,12 +102,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -120,8 +114,6 @@
     module.add_class('ObjectFactory', import_from_module='ns.core')
     ## olsr-helper.h (module 'olsr'): ns3::OlsrHelper [class]
     module.add_class('OlsrHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState [class]
-    module.add_class('OlsrState')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
     module.add_class('PacketMetadata', import_from_module='ns.network')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
@@ -150,6 +142,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -170,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -180,10 +176,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -282,10 +274,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -308,8 +296,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -348,18 +334,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::vector< ns3::olsr::MprSelectorTuple >', 'ns3::olsr::MprSelectorTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::NeighborTuple >', 'ns3::olsr::NeighborTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::TwoHopNeighborTuple >', 'ns3::olsr::TwoHopNeighborTuple', container_type='vector')
-    module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type='set')
-    module.add_container('std::vector< ns3::olsr::LinkTuple >', 'ns3::olsr::LinkTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::TopologyTuple >', 'ns3::olsr::TopologyTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::IfaceAssocTuple >', 'ns3::olsr::IfaceAssocTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::AssociationTuple >', 'ns3::olsr::AssociationTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::Association >', 'ns3::olsr::Association', container_type='vector')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -388,12 +364,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -448,6 +424,8 @@
     module.add_class('NeighborTuple')
     ## olsr-repositories.h (module 'olsr'): ns3::olsr::NeighborTuple::Status [enumeration]
     module.add_enum('Status', ['STATUS_NOT_SYM', 'STATUS_SYM'], outer_class=root_module['ns3::olsr::NeighborTuple'])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState [class]
+    module.add_class('OlsrState')
     ## olsr-header.h (module 'olsr'): ns3::olsr::PacketHeader [class]
     module.add_class('PacketHeader', parent=root_module['ns3::Header'])
     ## olsr-routing-protocol.h (module 'olsr'): ns3::olsr::RoutingProtocol [class]
@@ -458,43 +436,53 @@
     module.add_class('TopologyTuple')
     ## olsr-repositories.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple [struct]
     module.add_class('TwoHopNeighborTuple')
-    module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::RoutingTableEntry >', 'ns3::olsr::RoutingTableEntry', container_type='vector')
-    module.add_container('std::set< unsigned int >', 'unsigned int', container_type='set')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', 'ns3::olsr::DuplicateSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >*', 'ns3::olsr::DuplicateSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >&', 'ns3::olsr::DuplicateSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', 'ns3::olsr::MprSelectorSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >*', 'ns3::olsr::MprSelectorSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >&', 'ns3::olsr::MprSelectorSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', 'ns3::olsr::NeighborSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >*', 'ns3::olsr::NeighborSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >&', 'ns3::olsr::NeighborSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', 'ns3::olsr::LinkSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >*', 'ns3::olsr::LinkSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >&', 'ns3::olsr::LinkSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', 'ns3::olsr::MessageList')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >*', 'ns3::olsr::MessageList*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >&', 'ns3::olsr::MessageList&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >', 'ns3::olsr::AssociationSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >*', 'ns3::olsr::AssociationSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >&', 'ns3::olsr::AssociationSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >', 'ns3::olsr::Associations')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >*', 'ns3::olsr::Associations*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >&', 'ns3::olsr::Associations&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', 'ns3::olsr::IfaceAssocSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >*', 'ns3::olsr::IfaceAssocSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >&', 'ns3::olsr::IfaceAssocSet&')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', 'ns3::olsr::MprSet')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >*', 'ns3::olsr::MprSet*')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >&', 'ns3::olsr::MprSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', 'ns3::olsr::TwoHopNeighborSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >*', 'ns3::olsr::TwoHopNeighborSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >&', 'ns3::olsr::TwoHopNeighborSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', 'ns3::olsr::TopologySet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >*', 'ns3::olsr::TopologySet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >&', 'ns3::olsr::TopologySet&')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MprSelectorTuple >', 'ns3::olsr::MprSelectorTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::NeighborTuple >', 'ns3::olsr::NeighborTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::TwoHopNeighborTuple >', 'ns3::olsr::TwoHopNeighborTuple', container_type=u'vector')
+    module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type=u'set')
+    module.add_container('std::vector< ns3::olsr::LinkTuple >', 'ns3::olsr::LinkTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::TopologyTuple >', 'ns3::olsr::TopologyTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::IfaceAssocTuple >', 'ns3::olsr::IfaceAssocTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::AssociationTuple >', 'ns3::olsr::AssociationTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::Association >', 'ns3::olsr::Association', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::RoutingTableEntry >', 'ns3::olsr::RoutingTableEntry', container_type=u'vector')
+    module.add_container('std::set< unsigned int >', 'unsigned int', container_type=u'set')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', u'ns3::olsr::DuplicateSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >*', u'ns3::olsr::DuplicateSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >&', u'ns3::olsr::DuplicateSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', u'ns3::olsr::MprSelectorSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >*', u'ns3::olsr::MprSelectorSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >&', u'ns3::olsr::MprSelectorSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', u'ns3::olsr::NeighborSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >*', u'ns3::olsr::NeighborSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >&', u'ns3::olsr::NeighborSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', u'ns3::olsr::LinkSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >*', u'ns3::olsr::LinkSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >&', u'ns3::olsr::LinkSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', u'ns3::olsr::MessageList')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >*', u'ns3::olsr::MessageList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >&', u'ns3::olsr::MessageList&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >', u'ns3::olsr::AssociationSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >*', u'ns3::olsr::AssociationSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >&', u'ns3::olsr::AssociationSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >', u'ns3::olsr::Associations')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >*', u'ns3::olsr::Associations*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >&', u'ns3::olsr::Associations&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', u'ns3::olsr::IfaceAssocSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >*', u'ns3::olsr::IfaceAssocSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >&', u'ns3::olsr::IfaceAssocSet&')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', u'ns3::olsr::MprSet')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >*', u'ns3::olsr::MprSet*')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >&', u'ns3::olsr::MprSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', u'ns3::olsr::TwoHopNeighborSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >*', u'ns3::olsr::TwoHopNeighborSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >&', u'ns3::olsr::TwoHopNeighborSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', u'ns3::olsr::TopologySet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >*', u'ns3::olsr::TopologySet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >&', u'ns3::olsr::TopologySet&')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -525,14 +513,12 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3OlsrHelper_methods(root_module, root_module['ns3::OlsrHelper'])
-    register_Ns3OlsrState_methods(root_module, root_module['ns3::OlsrState'])
     register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
     register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
     register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
@@ -545,6 +531,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -555,7 +542,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -601,7 +587,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -613,7 +598,6 @@
     register_Ns3Ipv4StaticRouting_methods(root_module, root_module['ns3::Ipv4StaticRouting'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -651,6 +635,7 @@
     register_Ns3OlsrMessageHeaderTc_methods(root_module, root_module['ns3::olsr::MessageHeader::Tc'])
     register_Ns3OlsrMprSelectorTuple_methods(root_module, root_module['ns3::olsr::MprSelectorTuple'])
     register_Ns3OlsrNeighborTuple_methods(root_module, root_module['ns3::olsr::NeighborTuple'])
+    register_Ns3OlsrOlsrState_methods(root_module, root_module['ns3::olsr::OlsrState'])
     register_Ns3OlsrPacketHeader_methods(root_module, root_module['ns3::olsr::PacketHeader'])
     register_Ns3OlsrRoutingProtocol_methods(root_module, root_module['ns3::olsr::RoutingProtocol'])
     register_Ns3OlsrRoutingTableEntry_methods(root_module, root_module['ns3::olsr::RoutingTableEntry'])
@@ -903,6 +888,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -915,6 +904,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1824,61 +1817,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2139,234 +2077,6 @@
                    [param('ns3::NodeContainer', 'c'), param('int64_t', 'stream')])
     return
 
-def register_Ns3OlsrState_methods(root_module, cls):
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState::OlsrState(ns3::OlsrState const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::OlsrState const &', 'arg0')])
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState::OlsrState() [constructor]
-    cls.add_constructor([])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseAssociation(ns3::olsr::Association const & tuple) [member function]
-    cls.add_method('EraseAssociation', 
-                   'void', 
-                   [param('ns3::olsr::Association const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
-    cls.add_method('EraseAssociationTuple', 
-                   'void', 
-                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
-    cls.add_method('EraseDuplicateTuple', 
-                   'void', 
-                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
-    cls.add_method('EraseIfaceAssocTuple', 
-                   'void', 
-                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
-    cls.add_method('EraseLinkTuple', 
-                   'void', 
-                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
-    cls.add_method('EraseMprSelectorTuple', 
-                   'void', 
-                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseMprSelectorTuples(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('EraseMprSelectorTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseNeighborTuple(ns3::olsr::NeighborTuple const & neighborTuple) [member function]
-    cls.add_method('EraseNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::NeighborTuple const &', 'neighborTuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('EraseNeighborTuple', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseOlderTopologyTuples(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
-    cls.add_method('EraseOlderTopologyTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
-    cls.add_method('EraseTopologyTuple', 
-                   'void', 
-                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
-    cls.add_method('EraseTwoHopNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor) [member function]
-    cls.add_method('EraseTwoHopNeighborTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'neighbor')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
-    cls.add_method('EraseTwoHopNeighborTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationTuple * ns3::OlsrState::FindAssociationTuple(ns3::Ipv4Address const & gatewayAddr, ns3::Ipv4Address const & networkAddr, ns3::Ipv4Mask const & netmask) [member function]
-    cls.add_method('FindAssociationTuple', 
-                   'ns3::olsr::AssociationTuple *', 
-                   [param('ns3::Ipv4Address const &', 'gatewayAddr'), param('ns3::Ipv4Address const &', 'networkAddr'), param('ns3::Ipv4Mask const &', 'netmask')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::DuplicateTuple * ns3::OlsrState::FindDuplicateTuple(ns3::Ipv4Address const & address, uint16_t sequenceNumber) [member function]
-    cls.add_method('FindDuplicateTuple', 
-                   'ns3::olsr::DuplicateTuple *', 
-                   [param('ns3::Ipv4Address const &', 'address'), param('uint16_t', 'sequenceNumber')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple * ns3::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
-    cls.add_method('FindIfaceAssocTuple', 
-                   'ns3::olsr::IfaceAssocTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple const * ns3::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) const [member function]
-    cls.add_method('FindIfaceAssocTuple', 
-                   'ns3::olsr::IfaceAssocTuple const *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::OlsrState::FindLinkTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
-    cls.add_method('FindLinkTuple', 
-                   'ns3::olsr::LinkTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
-    ## olsr-state.h (module 'olsr'): bool ns3::OlsrState::FindMprAddress(ns3::Ipv4Address const & address) [member function]
-    cls.add_method('FindMprAddress', 
-                   'bool', 
-                   [param('ns3::Ipv4Address const &', 'address')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorTuple * ns3::OlsrState::FindMprSelectorTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('FindMprSelectorTuple', 
-                   'ns3::olsr::MprSelectorTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > ns3::OlsrState::FindNeighborInterfaces(ns3::Ipv4Address const & neighborMainAddr) const [member function]
-    cls.add_method('FindNeighborInterfaces', 
-                   'std::vector< ns3::Ipv4Address >', 
-                   [param('ns3::Ipv4Address const &', 'neighborMainAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('FindNeighborTuple', 
-                   'ns3::olsr::NeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr, uint8_t willingness) [member function]
-    cls.add_method('FindNeighborTuple', 
-                   'ns3::olsr::NeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr'), param('uint8_t', 'willingness')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::OlsrState::FindNewerTopologyTuple(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
-    cls.add_method('FindNewerTopologyTuple', 
-                   'ns3::olsr::TopologyTuple *', 
-                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::OlsrState::FindSymLinkTuple(ns3::Ipv4Address const & ifaceAddr, ns3::Time time) [member function]
-    cls.add_method('FindSymLinkTuple', 
-                   'ns3::olsr::LinkTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr'), param('ns3::Time', 'time')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple const * ns3::OlsrState::FindSymNeighborTuple(ns3::Ipv4Address const & mainAddr) const [member function]
-    cls.add_method('FindSymNeighborTuple', 
-                   'ns3::olsr::NeighborTuple const *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::OlsrState::FindTopologyTuple(ns3::Ipv4Address const & destAddr, ns3::Ipv4Address const & lastAddr) [member function]
-    cls.add_method('FindTopologyTuple', 
-                   'ns3::olsr::TopologyTuple *', 
-                   [param('ns3::Ipv4Address const &', 'destAddr'), param('ns3::Ipv4Address const &', 'lastAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple * ns3::OlsrState::FindTwoHopNeighborTuple(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
-    cls.add_method('FindTwoHopNeighborTuple', 
-                   'ns3::olsr::TwoHopNeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationSet const & ns3::OlsrState::GetAssociationSet() const [member function]
-    cls.add_method('GetAssociationSet', 
-                   'ns3::olsr::AssociationSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::Associations const & ns3::OlsrState::GetAssociations() const [member function]
-    cls.add_method('GetAssociations', 
-                   'ns3::olsr::Associations const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet const & ns3::OlsrState::GetIfaceAssocSet() const [member function]
-    cls.add_method('GetIfaceAssocSet', 
-                   'ns3::olsr::IfaceAssocSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet & ns3::OlsrState::GetIfaceAssocSetMutable() [member function]
-    cls.add_method('GetIfaceAssocSetMutable', 
-                   'ns3::olsr::IfaceAssocSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkSet const & ns3::OlsrState::GetLinks() const [member function]
-    cls.add_method('GetLinks', 
-                   'ns3::olsr::LinkSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorSet const & ns3::OlsrState::GetMprSelectors() const [member function]
-    cls.add_method('GetMprSelectors', 
-                   'ns3::olsr::MprSelectorSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSet ns3::OlsrState::GetMprSet() const [member function]
-    cls.add_method('GetMprSet', 
-                   'ns3::olsr::MprSet', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet const & ns3::OlsrState::GetNeighbors() const [member function]
-    cls.add_method('GetNeighbors', 
-                   'ns3::olsr::NeighborSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet & ns3::OlsrState::GetNeighbors() [member function]
-    cls.add_method('GetNeighbors', 
-                   'ns3::olsr::NeighborSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologySet const & ns3::OlsrState::GetTopologySet() const [member function]
-    cls.add_method('GetTopologySet', 
-                   'ns3::olsr::TopologySet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet const & ns3::OlsrState::GetTwoHopNeighbors() const [member function]
-    cls.add_method('GetTwoHopNeighbors', 
-                   'ns3::olsr::TwoHopNeighborSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet & ns3::OlsrState::GetTwoHopNeighbors() [member function]
-    cls.add_method('GetTwoHopNeighbors', 
-                   'ns3::olsr::TwoHopNeighborSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertAssociation(ns3::olsr::Association const & tuple) [member function]
-    cls.add_method('InsertAssociation', 
-                   'void', 
-                   [param('ns3::olsr::Association const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
-    cls.add_method('InsertAssociationTuple', 
-                   'void', 
-                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
-    cls.add_method('InsertDuplicateTuple', 
-                   'void', 
-                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
-    cls.add_method('InsertIfaceAssocTuple', 
-                   'void', 
-                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple & ns3::OlsrState::InsertLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
-    cls.add_method('InsertLinkTuple', 
-                   'ns3::olsr::LinkTuple &', 
-                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
-    cls.add_method('InsertMprSelectorTuple', 
-                   'void', 
-                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertNeighborTuple(ns3::olsr::NeighborTuple const & tuple) [member function]
-    cls.add_method('InsertNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::NeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
-    cls.add_method('InsertTopologyTuple', 
-                   'void', 
-                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
-    cls.add_method('InsertTwoHopNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): std::string ns3::OlsrState::PrintMprSelectorSet() const [member function]
-    cls.add_method('PrintMprSelectorSet', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::SetMprSet(ns3::olsr::MprSet mprSet) [member function]
-    cls.add_method('SetMprSet', 
-                   'void', 
-                   [param('ns3::olsr::MprSet', 'mprSet')])
-    return
-
 def register_Ns3PacketMetadata_methods(root_module, cls):
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
     cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
@@ -2775,6 +2485,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -3056,62 +2774,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3120,6 +2794,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3160,6 +2836,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3389,134 +3067,34 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
+def register_Ns3Object_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
+    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
+    cls.add_method('AggregateObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'other')])
+    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
+    cls.add_method('Dispose', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
+    cls.add_method('GetAggregateIterator', 
+                   'ns3::Object::AggregateIterator', 
                    [], 
                    is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
+    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
     cls.add_method('GetInstanceTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
+    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
-def register_Ns3Object_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::Object() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
-    cls.add_method('AggregateObject', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Object >', 'other')])
-    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
-    cls.add_method('Dispose', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
-    cls.add_method('GetAggregateIterator', 
-                   'ns3::Object::AggregateIterator', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
-    cls.add_method('Initialize', 
+    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
+    cls.add_method('Initialize', 
                    'void', 
                    [])
     ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
@@ -4394,13 +3972,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4427,6 +4007,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5228,63 +4813,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5858,151 +5386,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -6617,10 +6000,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -7347,6 +6730,234 @@
     cls.add_instance_attribute('willingness', 'uint8_t', is_const=False)
     return
 
+def register_Ns3OlsrOlsrState_methods(root_module, cls):
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState::OlsrState(ns3::olsr::OlsrState const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::olsr::OlsrState const &', 'arg0')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState::OlsrState() [constructor]
+    cls.add_constructor([])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseAssociation(ns3::olsr::Association const & tuple) [member function]
+    cls.add_method('EraseAssociation', 
+                   'void', 
+                   [param('ns3::olsr::Association const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
+    cls.add_method('EraseAssociationTuple', 
+                   'void', 
+                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
+    cls.add_method('EraseDuplicateTuple', 
+                   'void', 
+                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
+    cls.add_method('EraseIfaceAssocTuple', 
+                   'void', 
+                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
+    cls.add_method('EraseLinkTuple', 
+                   'void', 
+                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
+    cls.add_method('EraseMprSelectorTuple', 
+                   'void', 
+                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseMprSelectorTuples(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('EraseMprSelectorTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseNeighborTuple(ns3::olsr::NeighborTuple const & neighborTuple) [member function]
+    cls.add_method('EraseNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::NeighborTuple const &', 'neighborTuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('EraseNeighborTuple', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseOlderTopologyTuples(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
+    cls.add_method('EraseOlderTopologyTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
+    cls.add_method('EraseTopologyTuple', 
+                   'void', 
+                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
+    cls.add_method('EraseTwoHopNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor) [member function]
+    cls.add_method('EraseTwoHopNeighborTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'neighbor')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
+    cls.add_method('EraseTwoHopNeighborTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationTuple * ns3::olsr::OlsrState::FindAssociationTuple(ns3::Ipv4Address const & gatewayAddr, ns3::Ipv4Address const & networkAddr, ns3::Ipv4Mask const & netmask) [member function]
+    cls.add_method('FindAssociationTuple', 
+                   'ns3::olsr::AssociationTuple *', 
+                   [param('ns3::Ipv4Address const &', 'gatewayAddr'), param('ns3::Ipv4Address const &', 'networkAddr'), param('ns3::Ipv4Mask const &', 'netmask')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::DuplicateTuple * ns3::olsr::OlsrState::FindDuplicateTuple(ns3::Ipv4Address const & address, uint16_t sequenceNumber) [member function]
+    cls.add_method('FindDuplicateTuple', 
+                   'ns3::olsr::DuplicateTuple *', 
+                   [param('ns3::Ipv4Address const &', 'address'), param('uint16_t', 'sequenceNumber')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple * ns3::olsr::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
+    cls.add_method('FindIfaceAssocTuple', 
+                   'ns3::olsr::IfaceAssocTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple const * ns3::olsr::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) const [member function]
+    cls.add_method('FindIfaceAssocTuple', 
+                   'ns3::olsr::IfaceAssocTuple const *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::olsr::OlsrState::FindLinkTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
+    cls.add_method('FindLinkTuple', 
+                   'ns3::olsr::LinkTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
+    ## olsr-state.h (module 'olsr'): bool ns3::olsr::OlsrState::FindMprAddress(ns3::Ipv4Address const & address) [member function]
+    cls.add_method('FindMprAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address const &', 'address')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorTuple * ns3::olsr::OlsrState::FindMprSelectorTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('FindMprSelectorTuple', 
+                   'ns3::olsr::MprSelectorTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > ns3::olsr::OlsrState::FindNeighborInterfaces(ns3::Ipv4Address const & neighborMainAddr) const [member function]
+    cls.add_method('FindNeighborInterfaces', 
+                   'std::vector< ns3::Ipv4Address >', 
+                   [param('ns3::Ipv4Address const &', 'neighborMainAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::olsr::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('FindNeighborTuple', 
+                   'ns3::olsr::NeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::olsr::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr, uint8_t willingness) [member function]
+    cls.add_method('FindNeighborTuple', 
+                   'ns3::olsr::NeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr'), param('uint8_t', 'willingness')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::olsr::OlsrState::FindNewerTopologyTuple(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
+    cls.add_method('FindNewerTopologyTuple', 
+                   'ns3::olsr::TopologyTuple *', 
+                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::olsr::OlsrState::FindSymLinkTuple(ns3::Ipv4Address const & ifaceAddr, ns3::Time time) [member function]
+    cls.add_method('FindSymLinkTuple', 
+                   'ns3::olsr::LinkTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr'), param('ns3::Time', 'time')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple const * ns3::olsr::OlsrState::FindSymNeighborTuple(ns3::Ipv4Address const & mainAddr) const [member function]
+    cls.add_method('FindSymNeighborTuple', 
+                   'ns3::olsr::NeighborTuple const *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::olsr::OlsrState::FindTopologyTuple(ns3::Ipv4Address const & destAddr, ns3::Ipv4Address const & lastAddr) [member function]
+    cls.add_method('FindTopologyTuple', 
+                   'ns3::olsr::TopologyTuple *', 
+                   [param('ns3::Ipv4Address const &', 'destAddr'), param('ns3::Ipv4Address const &', 'lastAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple * ns3::olsr::OlsrState::FindTwoHopNeighborTuple(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
+    cls.add_method('FindTwoHopNeighborTuple', 
+                   'ns3::olsr::TwoHopNeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationSet const & ns3::olsr::OlsrState::GetAssociationSet() const [member function]
+    cls.add_method('GetAssociationSet', 
+                   'ns3::olsr::AssociationSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::Associations const & ns3::olsr::OlsrState::GetAssociations() const [member function]
+    cls.add_method('GetAssociations', 
+                   'ns3::olsr::Associations const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet const & ns3::olsr::OlsrState::GetIfaceAssocSet() const [member function]
+    cls.add_method('GetIfaceAssocSet', 
+                   'ns3::olsr::IfaceAssocSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet & ns3::olsr::OlsrState::GetIfaceAssocSetMutable() [member function]
+    cls.add_method('GetIfaceAssocSetMutable', 
+                   'ns3::olsr::IfaceAssocSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkSet const & ns3::olsr::OlsrState::GetLinks() const [member function]
+    cls.add_method('GetLinks', 
+                   'ns3::olsr::LinkSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorSet const & ns3::olsr::OlsrState::GetMprSelectors() const [member function]
+    cls.add_method('GetMprSelectors', 
+                   'ns3::olsr::MprSelectorSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSet ns3::olsr::OlsrState::GetMprSet() const [member function]
+    cls.add_method('GetMprSet', 
+                   'ns3::olsr::MprSet', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet const & ns3::olsr::OlsrState::GetNeighbors() const [member function]
+    cls.add_method('GetNeighbors', 
+                   'ns3::olsr::NeighborSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet & ns3::olsr::OlsrState::GetNeighbors() [member function]
+    cls.add_method('GetNeighbors', 
+                   'ns3::olsr::NeighborSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologySet const & ns3::olsr::OlsrState::GetTopologySet() const [member function]
+    cls.add_method('GetTopologySet', 
+                   'ns3::olsr::TopologySet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet const & ns3::olsr::OlsrState::GetTwoHopNeighbors() const [member function]
+    cls.add_method('GetTwoHopNeighbors', 
+                   'ns3::olsr::TwoHopNeighborSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet & ns3::olsr::OlsrState::GetTwoHopNeighbors() [member function]
+    cls.add_method('GetTwoHopNeighbors', 
+                   'ns3::olsr::TwoHopNeighborSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertAssociation(ns3::olsr::Association const & tuple) [member function]
+    cls.add_method('InsertAssociation', 
+                   'void', 
+                   [param('ns3::olsr::Association const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
+    cls.add_method('InsertAssociationTuple', 
+                   'void', 
+                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
+    cls.add_method('InsertDuplicateTuple', 
+                   'void', 
+                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
+    cls.add_method('InsertIfaceAssocTuple', 
+                   'void', 
+                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple & ns3::olsr::OlsrState::InsertLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
+    cls.add_method('InsertLinkTuple', 
+                   'ns3::olsr::LinkTuple &', 
+                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
+    cls.add_method('InsertMprSelectorTuple', 
+                   'void', 
+                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertNeighborTuple(ns3::olsr::NeighborTuple const & tuple) [member function]
+    cls.add_method('InsertNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::NeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
+    cls.add_method('InsertTopologyTuple', 
+                   'void', 
+                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
+    cls.add_method('InsertTwoHopNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): std::string ns3::olsr::OlsrState::PrintMprSelectorSet() const [member function]
+    cls.add_method('PrintMprSelectorSet', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::SetMprSet(ns3::olsr::MprSet mprSet) [member function]
+    cls.add_method('SetMprSet', 
+                   'void', 
+                   [param('ns3::olsr::MprSet', 'mprSet')])
+    return
+
 def register_Ns3OlsrPacketHeader_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## olsr-header.h (module 'olsr'): ns3::olsr::PacketHeader::PacketHeader(ns3::olsr::PacketHeader const & arg0) [copy constructor]
@@ -7425,6 +7036,11 @@
                    'std::set< unsigned int >', 
                    [], 
                    is_const=True)
+    ## olsr-routing-protocol.h (module 'olsr'): ns3::Ptr<const ns3::Ipv4StaticRouting> ns3::olsr::RoutingProtocol::GetRoutingTableAssociation() const [member function]
+    cls.add_method('GetRoutingTableAssociation', 
+                   'ns3::Ptr< ns3::Ipv4StaticRouting const >', 
+                   [], 
+                   is_const=True)
     ## olsr-routing-protocol.h (module 'olsr'): std::vector<ns3::olsr::RoutingTableEntry,std::allocator<ns3::olsr::RoutingTableEntry> > ns3::olsr::RoutingProtocol::GetRoutingTableEntries() const [member function]
     cls.add_method('GetRoutingTableEntries', 
                    'std::vector< ns3::olsr::RoutingTableEntry >', 
diff -Naur ns-3.19/src/olsr/bindings/modulegen__gcc_LP64.py ns-3.20/src/olsr/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/olsr/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.647635048 -0700
+++ ns-3.20/src/olsr/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:14.008995074 -0700
@@ -102,12 +102,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -120,8 +114,6 @@
     module.add_class('ObjectFactory', import_from_module='ns.core')
     ## olsr-helper.h (module 'olsr'): ns3::OlsrHelper [class]
     module.add_class('OlsrHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState [class]
-    module.add_class('OlsrState')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
     module.add_class('PacketMetadata', import_from_module='ns.network')
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
@@ -150,6 +142,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer [class]
     module.add_class('Timer', import_from_module='ns.core')
     ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -170,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -180,10 +176,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -282,10 +274,6 @@
     module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
     module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -308,8 +296,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -348,18 +334,8 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
     module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
-    module.add_container('std::vector< ns3::olsr::MprSelectorTuple >', 'ns3::olsr::MprSelectorTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::NeighborTuple >', 'ns3::olsr::NeighborTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::TwoHopNeighborTuple >', 'ns3::olsr::TwoHopNeighborTuple', container_type='vector')
-    module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type='set')
-    module.add_container('std::vector< ns3::olsr::LinkTuple >', 'ns3::olsr::LinkTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::TopologyTuple >', 'ns3::olsr::TopologyTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::IfaceAssocTuple >', 'ns3::olsr::IfaceAssocTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::AssociationTuple >', 'ns3::olsr::AssociationTuple', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::Association >', 'ns3::olsr::Association', container_type='vector')
-    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
-    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type='vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
+    module.add_container('std::vector< unsigned int >', 'unsigned int', container_type=u'vector')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -388,12 +364,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -448,6 +424,8 @@
     module.add_class('NeighborTuple')
     ## olsr-repositories.h (module 'olsr'): ns3::olsr::NeighborTuple::Status [enumeration]
     module.add_enum('Status', ['STATUS_NOT_SYM', 'STATUS_SYM'], outer_class=root_module['ns3::olsr::NeighborTuple'])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState [class]
+    module.add_class('OlsrState')
     ## olsr-header.h (module 'olsr'): ns3::olsr::PacketHeader [class]
     module.add_class('PacketHeader', parent=root_module['ns3::Header'])
     ## olsr-routing-protocol.h (module 'olsr'): ns3::olsr::RoutingProtocol [class]
@@ -458,43 +436,53 @@
     module.add_class('TopologyTuple')
     ## olsr-repositories.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple [struct]
     module.add_class('TwoHopNeighborTuple')
-    module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type='vector')
-    module.add_container('std::vector< ns3::olsr::RoutingTableEntry >', 'ns3::olsr::RoutingTableEntry', container_type='vector')
-    module.add_container('std::set< unsigned int >', 'unsigned int', container_type='set')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', 'ns3::olsr::DuplicateSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >*', 'ns3::olsr::DuplicateSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >&', 'ns3::olsr::DuplicateSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', 'ns3::olsr::MprSelectorSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >*', 'ns3::olsr::MprSelectorSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >&', 'ns3::olsr::MprSelectorSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', 'ns3::olsr::NeighborSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >*', 'ns3::olsr::NeighborSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >&', 'ns3::olsr::NeighborSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', 'ns3::olsr::LinkSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >*', 'ns3::olsr::LinkSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >&', 'ns3::olsr::LinkSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', 'ns3::olsr::MessageList')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >*', 'ns3::olsr::MessageList*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >&', 'ns3::olsr::MessageList&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >', 'ns3::olsr::AssociationSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >*', 'ns3::olsr::AssociationSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >&', 'ns3::olsr::AssociationSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >', 'ns3::olsr::Associations')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >*', 'ns3::olsr::Associations*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >&', 'ns3::olsr::Associations&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', 'ns3::olsr::IfaceAssocSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >*', 'ns3::olsr::IfaceAssocSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >&', 'ns3::olsr::IfaceAssocSet&')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', 'ns3::olsr::MprSet')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >*', 'ns3::olsr::MprSet*')
-    typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >&', 'ns3::olsr::MprSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', 'ns3::olsr::TwoHopNeighborSet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >*', 'ns3::olsr::TwoHopNeighborSet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >&', 'ns3::olsr::TwoHopNeighborSet&')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', 'ns3::olsr::TopologySet')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >*', 'ns3::olsr::TopologySet*')
-    typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >&', 'ns3::olsr::TopologySet&')
+    module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::MprSelectorTuple >', 'ns3::olsr::MprSelectorTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::NeighborTuple >', 'ns3::olsr::NeighborTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::TwoHopNeighborTuple >', 'ns3::olsr::TwoHopNeighborTuple', container_type=u'vector')
+    module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type=u'set')
+    module.add_container('std::vector< ns3::olsr::LinkTuple >', 'ns3::olsr::LinkTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::TopologyTuple >', 'ns3::olsr::TopologyTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::IfaceAssocTuple >', 'ns3::olsr::IfaceAssocTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::AssociationTuple >', 'ns3::olsr::AssociationTuple', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::Association >', 'ns3::olsr::Association', container_type=u'vector')
+    module.add_container('std::vector< ns3::olsr::RoutingTableEntry >', 'ns3::olsr::RoutingTableEntry', container_type=u'vector')
+    module.add_container('std::set< unsigned int >', 'unsigned int', container_type=u'set')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', u'ns3::olsr::DuplicateSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >*', u'ns3::olsr::DuplicateSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >&', u'ns3::olsr::DuplicateSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', u'ns3::olsr::MprSelectorSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >*', u'ns3::olsr::MprSelectorSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >&', u'ns3::olsr::MprSelectorSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', u'ns3::olsr::NeighborSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >*', u'ns3::olsr::NeighborSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >&', u'ns3::olsr::NeighborSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', u'ns3::olsr::LinkSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >*', u'ns3::olsr::LinkSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >&', u'ns3::olsr::LinkSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', u'ns3::olsr::MessageList')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >*', u'ns3::olsr::MessageList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >&', u'ns3::olsr::MessageList&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >', u'ns3::olsr::AssociationSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >*', u'ns3::olsr::AssociationSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::AssociationTuple, std::allocator< ns3::olsr::AssociationTuple > >&', u'ns3::olsr::AssociationSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >', u'ns3::olsr::Associations')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >*', u'ns3::olsr::Associations*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::Association, std::allocator< ns3::olsr::Association > >&', u'ns3::olsr::Associations&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', u'ns3::olsr::IfaceAssocSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >*', u'ns3::olsr::IfaceAssocSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >&', u'ns3::olsr::IfaceAssocSet&')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', u'ns3::olsr::MprSet')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >*', u'ns3::olsr::MprSet*')
+    typehandlers.add_type_alias(u'std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >&', u'ns3::olsr::MprSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', u'ns3::olsr::TwoHopNeighborSet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >*', u'ns3::olsr::TwoHopNeighborSet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >&', u'ns3::olsr::TwoHopNeighborSet&')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', u'ns3::olsr::TopologySet')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >*', u'ns3::olsr::TopologySet*')
+    typehandlers.add_type_alias(u'std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >&', u'ns3::olsr::TopologySet&')
 
 def register_methods(root_module):
     register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -525,14 +513,12 @@
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3OlsrHelper_methods(root_module, root_module['ns3::OlsrHelper'])
-    register_Ns3OlsrState_methods(root_module, root_module['ns3::OlsrState'])
     register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
     register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
     register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
@@ -545,6 +531,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -555,7 +542,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -601,7 +587,6 @@
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
     register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -613,7 +598,6 @@
     register_Ns3Ipv4StaticRouting_methods(root_module, root_module['ns3::Ipv4StaticRouting'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -651,6 +635,7 @@
     register_Ns3OlsrMessageHeaderTc_methods(root_module, root_module['ns3::olsr::MessageHeader::Tc'])
     register_Ns3OlsrMprSelectorTuple_methods(root_module, root_module['ns3::olsr::MprSelectorTuple'])
     register_Ns3OlsrNeighborTuple_methods(root_module, root_module['ns3::olsr::NeighborTuple'])
+    register_Ns3OlsrOlsrState_methods(root_module, root_module['ns3::olsr::OlsrState'])
     register_Ns3OlsrPacketHeader_methods(root_module, root_module['ns3::olsr::PacketHeader'])
     register_Ns3OlsrRoutingProtocol_methods(root_module, root_module['ns3::olsr::RoutingProtocol'])
     register_Ns3OlsrRoutingTableEntry_methods(root_module, root_module['ns3::olsr::RoutingTableEntry'])
@@ -903,6 +888,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -915,6 +904,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1824,61 +1817,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2139,234 +2077,6 @@
                    [param('ns3::NodeContainer', 'c'), param('int64_t', 'stream')])
     return
 
-def register_Ns3OlsrState_methods(root_module, cls):
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState::OlsrState(ns3::OlsrState const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::OlsrState const &', 'arg0')])
-    ## olsr-state.h (module 'olsr'): ns3::OlsrState::OlsrState() [constructor]
-    cls.add_constructor([])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseAssociation(ns3::olsr::Association const & tuple) [member function]
-    cls.add_method('EraseAssociation', 
-                   'void', 
-                   [param('ns3::olsr::Association const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
-    cls.add_method('EraseAssociationTuple', 
-                   'void', 
-                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
-    cls.add_method('EraseDuplicateTuple', 
-                   'void', 
-                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
-    cls.add_method('EraseIfaceAssocTuple', 
-                   'void', 
-                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
-    cls.add_method('EraseLinkTuple', 
-                   'void', 
-                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
-    cls.add_method('EraseMprSelectorTuple', 
-                   'void', 
-                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseMprSelectorTuples(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('EraseMprSelectorTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseNeighborTuple(ns3::olsr::NeighborTuple const & neighborTuple) [member function]
-    cls.add_method('EraseNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::NeighborTuple const &', 'neighborTuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('EraseNeighborTuple', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseOlderTopologyTuples(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
-    cls.add_method('EraseOlderTopologyTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
-    cls.add_method('EraseTopologyTuple', 
-                   'void', 
-                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
-    cls.add_method('EraseTwoHopNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor) [member function]
-    cls.add_method('EraseTwoHopNeighborTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'neighbor')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
-    cls.add_method('EraseTwoHopNeighborTuples', 
-                   'void', 
-                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationTuple * ns3::OlsrState::FindAssociationTuple(ns3::Ipv4Address const & gatewayAddr, ns3::Ipv4Address const & networkAddr, ns3::Ipv4Mask const & netmask) [member function]
-    cls.add_method('FindAssociationTuple', 
-                   'ns3::olsr::AssociationTuple *', 
-                   [param('ns3::Ipv4Address const &', 'gatewayAddr'), param('ns3::Ipv4Address const &', 'networkAddr'), param('ns3::Ipv4Mask const &', 'netmask')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::DuplicateTuple * ns3::OlsrState::FindDuplicateTuple(ns3::Ipv4Address const & address, uint16_t sequenceNumber) [member function]
-    cls.add_method('FindDuplicateTuple', 
-                   'ns3::olsr::DuplicateTuple *', 
-                   [param('ns3::Ipv4Address const &', 'address'), param('uint16_t', 'sequenceNumber')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple * ns3::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
-    cls.add_method('FindIfaceAssocTuple', 
-                   'ns3::olsr::IfaceAssocTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple const * ns3::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) const [member function]
-    cls.add_method('FindIfaceAssocTuple', 
-                   'ns3::olsr::IfaceAssocTuple const *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::OlsrState::FindLinkTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
-    cls.add_method('FindLinkTuple', 
-                   'ns3::olsr::LinkTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
-    ## olsr-state.h (module 'olsr'): bool ns3::OlsrState::FindMprAddress(ns3::Ipv4Address const & address) [member function]
-    cls.add_method('FindMprAddress', 
-                   'bool', 
-                   [param('ns3::Ipv4Address const &', 'address')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorTuple * ns3::OlsrState::FindMprSelectorTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('FindMprSelectorTuple', 
-                   'ns3::olsr::MprSelectorTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > ns3::OlsrState::FindNeighborInterfaces(ns3::Ipv4Address const & neighborMainAddr) const [member function]
-    cls.add_method('FindNeighborInterfaces', 
-                   'std::vector< ns3::Ipv4Address >', 
-                   [param('ns3::Ipv4Address const &', 'neighborMainAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
-    cls.add_method('FindNeighborTuple', 
-                   'ns3::olsr::NeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr, uint8_t willingness) [member function]
-    cls.add_method('FindNeighborTuple', 
-                   'ns3::olsr::NeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr'), param('uint8_t', 'willingness')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::OlsrState::FindNewerTopologyTuple(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
-    cls.add_method('FindNewerTopologyTuple', 
-                   'ns3::olsr::TopologyTuple *', 
-                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::OlsrState::FindSymLinkTuple(ns3::Ipv4Address const & ifaceAddr, ns3::Time time) [member function]
-    cls.add_method('FindSymLinkTuple', 
-                   'ns3::olsr::LinkTuple *', 
-                   [param('ns3::Ipv4Address const &', 'ifaceAddr'), param('ns3::Time', 'time')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple const * ns3::OlsrState::FindSymNeighborTuple(ns3::Ipv4Address const & mainAddr) const [member function]
-    cls.add_method('FindSymNeighborTuple', 
-                   'ns3::olsr::NeighborTuple const *', 
-                   [param('ns3::Ipv4Address const &', 'mainAddr')], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::OlsrState::FindTopologyTuple(ns3::Ipv4Address const & destAddr, ns3::Ipv4Address const & lastAddr) [member function]
-    cls.add_method('FindTopologyTuple', 
-                   'ns3::olsr::TopologyTuple *', 
-                   [param('ns3::Ipv4Address const &', 'destAddr'), param('ns3::Ipv4Address const &', 'lastAddr')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple * ns3::OlsrState::FindTwoHopNeighborTuple(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
-    cls.add_method('FindTwoHopNeighborTuple', 
-                   'ns3::olsr::TwoHopNeighborTuple *', 
-                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationSet const & ns3::OlsrState::GetAssociationSet() const [member function]
-    cls.add_method('GetAssociationSet', 
-                   'ns3::olsr::AssociationSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::Associations const & ns3::OlsrState::GetAssociations() const [member function]
-    cls.add_method('GetAssociations', 
-                   'ns3::olsr::Associations const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet const & ns3::OlsrState::GetIfaceAssocSet() const [member function]
-    cls.add_method('GetIfaceAssocSet', 
-                   'ns3::olsr::IfaceAssocSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet & ns3::OlsrState::GetIfaceAssocSetMutable() [member function]
-    cls.add_method('GetIfaceAssocSetMutable', 
-                   'ns3::olsr::IfaceAssocSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkSet const & ns3::OlsrState::GetLinks() const [member function]
-    cls.add_method('GetLinks', 
-                   'ns3::olsr::LinkSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorSet const & ns3::OlsrState::GetMprSelectors() const [member function]
-    cls.add_method('GetMprSelectors', 
-                   'ns3::olsr::MprSelectorSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSet ns3::OlsrState::GetMprSet() const [member function]
-    cls.add_method('GetMprSet', 
-                   'ns3::olsr::MprSet', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet const & ns3::OlsrState::GetNeighbors() const [member function]
-    cls.add_method('GetNeighbors', 
-                   'ns3::olsr::NeighborSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet & ns3::OlsrState::GetNeighbors() [member function]
-    cls.add_method('GetNeighbors', 
-                   'ns3::olsr::NeighborSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologySet const & ns3::OlsrState::GetTopologySet() const [member function]
-    cls.add_method('GetTopologySet', 
-                   'ns3::olsr::TopologySet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet const & ns3::OlsrState::GetTwoHopNeighbors() const [member function]
-    cls.add_method('GetTwoHopNeighbors', 
-                   'ns3::olsr::TwoHopNeighborSet const &', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet & ns3::OlsrState::GetTwoHopNeighbors() [member function]
-    cls.add_method('GetTwoHopNeighbors', 
-                   'ns3::olsr::TwoHopNeighborSet &', 
-                   [])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertAssociation(ns3::olsr::Association const & tuple) [member function]
-    cls.add_method('InsertAssociation', 
-                   'void', 
-                   [param('ns3::olsr::Association const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
-    cls.add_method('InsertAssociationTuple', 
-                   'void', 
-                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
-    cls.add_method('InsertDuplicateTuple', 
-                   'void', 
-                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
-    cls.add_method('InsertIfaceAssocTuple', 
-                   'void', 
-                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple & ns3::OlsrState::InsertLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
-    cls.add_method('InsertLinkTuple', 
-                   'ns3::olsr::LinkTuple &', 
-                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
-    cls.add_method('InsertMprSelectorTuple', 
-                   'void', 
-                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertNeighborTuple(ns3::olsr::NeighborTuple const & tuple) [member function]
-    cls.add_method('InsertNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::NeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
-    cls.add_method('InsertTopologyTuple', 
-                   'void', 
-                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::InsertTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
-    cls.add_method('InsertTwoHopNeighborTuple', 
-                   'void', 
-                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
-    ## olsr-state.h (module 'olsr'): std::string ns3::OlsrState::PrintMprSelectorSet() const [member function]
-    cls.add_method('PrintMprSelectorSet', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## olsr-state.h (module 'olsr'): void ns3::OlsrState::SetMprSet(ns3::olsr::MprSet mprSet) [member function]
-    cls.add_method('SetMprSet', 
-                   'void', 
-                   [param('ns3::olsr::MprSet', 'mprSet')])
-    return
-
 def register_Ns3PacketMetadata_methods(root_module, cls):
     ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
     cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
@@ -2775,6 +2485,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -3056,62 +2774,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3120,6 +2794,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3160,6 +2836,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3389,134 +3067,34 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
+def register_Ns3Object_methods(root_module, cls):
+    ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
+    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
+    cls.add_method('AggregateObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'other')])
+    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
+    cls.add_method('Dispose', 
+                   'void', 
+                   [])
+    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
+    cls.add_method('GetAggregateIterator', 
+                   'ns3::Object::AggregateIterator', 
                    [], 
                    is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
+    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
     cls.add_method('GetInstanceTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
+    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
-def register_Ns3Object_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::Object() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
-    cls.add_method('AggregateObject', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Object >', 'other')])
-    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
-    cls.add_method('Dispose', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
-    cls.add_method('GetAggregateIterator', 
-                   'ns3::Object::AggregateIterator', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
-    cls.add_method('Initialize', 
+    ## object.h (module 'core'): void ns3::Object::Initialize() [member function]
+    cls.add_method('Initialize', 
                    'void', 
                    [])
     ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
@@ -4394,13 +3972,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4427,6 +4007,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5228,63 +4813,6 @@
                    is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5858,151 +5386,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
@@ -6617,10 +6000,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -7347,6 +6730,234 @@
     cls.add_instance_attribute('willingness', 'uint8_t', is_const=False)
     return
 
+def register_Ns3OlsrOlsrState_methods(root_module, cls):
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState::OlsrState(ns3::olsr::OlsrState const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::olsr::OlsrState const &', 'arg0')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::OlsrState::OlsrState() [constructor]
+    cls.add_constructor([])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseAssociation(ns3::olsr::Association const & tuple) [member function]
+    cls.add_method('EraseAssociation', 
+                   'void', 
+                   [param('ns3::olsr::Association const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
+    cls.add_method('EraseAssociationTuple', 
+                   'void', 
+                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
+    cls.add_method('EraseDuplicateTuple', 
+                   'void', 
+                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
+    cls.add_method('EraseIfaceAssocTuple', 
+                   'void', 
+                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
+    cls.add_method('EraseLinkTuple', 
+                   'void', 
+                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
+    cls.add_method('EraseMprSelectorTuple', 
+                   'void', 
+                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseMprSelectorTuples(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('EraseMprSelectorTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseNeighborTuple(ns3::olsr::NeighborTuple const & neighborTuple) [member function]
+    cls.add_method('EraseNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::NeighborTuple const &', 'neighborTuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('EraseNeighborTuple', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseOlderTopologyTuples(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
+    cls.add_method('EraseOlderTopologyTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
+    cls.add_method('EraseTopologyTuple', 
+                   'void', 
+                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
+    cls.add_method('EraseTwoHopNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor) [member function]
+    cls.add_method('EraseTwoHopNeighborTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'neighbor')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::EraseTwoHopNeighborTuples(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
+    cls.add_method('EraseTwoHopNeighborTuples', 
+                   'void', 
+                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationTuple * ns3::olsr::OlsrState::FindAssociationTuple(ns3::Ipv4Address const & gatewayAddr, ns3::Ipv4Address const & networkAddr, ns3::Ipv4Mask const & netmask) [member function]
+    cls.add_method('FindAssociationTuple', 
+                   'ns3::olsr::AssociationTuple *', 
+                   [param('ns3::Ipv4Address const &', 'gatewayAddr'), param('ns3::Ipv4Address const &', 'networkAddr'), param('ns3::Ipv4Mask const &', 'netmask')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::DuplicateTuple * ns3::olsr::OlsrState::FindDuplicateTuple(ns3::Ipv4Address const & address, uint16_t sequenceNumber) [member function]
+    cls.add_method('FindDuplicateTuple', 
+                   'ns3::olsr::DuplicateTuple *', 
+                   [param('ns3::Ipv4Address const &', 'address'), param('uint16_t', 'sequenceNumber')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple * ns3::olsr::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
+    cls.add_method('FindIfaceAssocTuple', 
+                   'ns3::olsr::IfaceAssocTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocTuple const * ns3::olsr::OlsrState::FindIfaceAssocTuple(ns3::Ipv4Address const & ifaceAddr) const [member function]
+    cls.add_method('FindIfaceAssocTuple', 
+                   'ns3::olsr::IfaceAssocTuple const *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::olsr::OlsrState::FindLinkTuple(ns3::Ipv4Address const & ifaceAddr) [member function]
+    cls.add_method('FindLinkTuple', 
+                   'ns3::olsr::LinkTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr')])
+    ## olsr-state.h (module 'olsr'): bool ns3::olsr::OlsrState::FindMprAddress(ns3::Ipv4Address const & address) [member function]
+    cls.add_method('FindMprAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address const &', 'address')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorTuple * ns3::olsr::OlsrState::FindMprSelectorTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('FindMprSelectorTuple', 
+                   'ns3::olsr::MprSelectorTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): std::vector<ns3::Ipv4Address, std::allocator<ns3::Ipv4Address> > ns3::olsr::OlsrState::FindNeighborInterfaces(ns3::Ipv4Address const & neighborMainAddr) const [member function]
+    cls.add_method('FindNeighborInterfaces', 
+                   'std::vector< ns3::Ipv4Address >', 
+                   [param('ns3::Ipv4Address const &', 'neighborMainAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::olsr::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr) [member function]
+    cls.add_method('FindNeighborTuple', 
+                   'ns3::olsr::NeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple * ns3::olsr::OlsrState::FindNeighborTuple(ns3::Ipv4Address const & mainAddr, uint8_t willingness) [member function]
+    cls.add_method('FindNeighborTuple', 
+                   'ns3::olsr::NeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr'), param('uint8_t', 'willingness')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::olsr::OlsrState::FindNewerTopologyTuple(ns3::Ipv4Address const & lastAddr, uint16_t ansn) [member function]
+    cls.add_method('FindNewerTopologyTuple', 
+                   'ns3::olsr::TopologyTuple *', 
+                   [param('ns3::Ipv4Address const &', 'lastAddr'), param('uint16_t', 'ansn')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple * ns3::olsr::OlsrState::FindSymLinkTuple(ns3::Ipv4Address const & ifaceAddr, ns3::Time time) [member function]
+    cls.add_method('FindSymLinkTuple', 
+                   'ns3::olsr::LinkTuple *', 
+                   [param('ns3::Ipv4Address const &', 'ifaceAddr'), param('ns3::Time', 'time')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborTuple const * ns3::olsr::OlsrState::FindSymNeighborTuple(ns3::Ipv4Address const & mainAddr) const [member function]
+    cls.add_method('FindSymNeighborTuple', 
+                   'ns3::olsr::NeighborTuple const *', 
+                   [param('ns3::Ipv4Address const &', 'mainAddr')], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologyTuple * ns3::olsr::OlsrState::FindTopologyTuple(ns3::Ipv4Address const & destAddr, ns3::Ipv4Address const & lastAddr) [member function]
+    cls.add_method('FindTopologyTuple', 
+                   'ns3::olsr::TopologyTuple *', 
+                   [param('ns3::Ipv4Address const &', 'destAddr'), param('ns3::Ipv4Address const &', 'lastAddr')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborTuple * ns3::olsr::OlsrState::FindTwoHopNeighborTuple(ns3::Ipv4Address const & neighbor, ns3::Ipv4Address const & twoHopNeighbor) [member function]
+    cls.add_method('FindTwoHopNeighborTuple', 
+                   'ns3::olsr::TwoHopNeighborTuple *', 
+                   [param('ns3::Ipv4Address const &', 'neighbor'), param('ns3::Ipv4Address const &', 'twoHopNeighbor')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::AssociationSet const & ns3::olsr::OlsrState::GetAssociationSet() const [member function]
+    cls.add_method('GetAssociationSet', 
+                   'ns3::olsr::AssociationSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::Associations const & ns3::olsr::OlsrState::GetAssociations() const [member function]
+    cls.add_method('GetAssociations', 
+                   'ns3::olsr::Associations const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet const & ns3::olsr::OlsrState::GetIfaceAssocSet() const [member function]
+    cls.add_method('GetIfaceAssocSet', 
+                   'ns3::olsr::IfaceAssocSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::IfaceAssocSet & ns3::olsr::OlsrState::GetIfaceAssocSetMutable() [member function]
+    cls.add_method('GetIfaceAssocSetMutable', 
+                   'ns3::olsr::IfaceAssocSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkSet const & ns3::olsr::OlsrState::GetLinks() const [member function]
+    cls.add_method('GetLinks', 
+                   'ns3::olsr::LinkSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSelectorSet const & ns3::olsr::OlsrState::GetMprSelectors() const [member function]
+    cls.add_method('GetMprSelectors', 
+                   'ns3::olsr::MprSelectorSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::MprSet ns3::olsr::OlsrState::GetMprSet() const [member function]
+    cls.add_method('GetMprSet', 
+                   'ns3::olsr::MprSet', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet const & ns3::olsr::OlsrState::GetNeighbors() const [member function]
+    cls.add_method('GetNeighbors', 
+                   'ns3::olsr::NeighborSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::NeighborSet & ns3::olsr::OlsrState::GetNeighbors() [member function]
+    cls.add_method('GetNeighbors', 
+                   'ns3::olsr::NeighborSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TopologySet const & ns3::olsr::OlsrState::GetTopologySet() const [member function]
+    cls.add_method('GetTopologySet', 
+                   'ns3::olsr::TopologySet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet const & ns3::olsr::OlsrState::GetTwoHopNeighbors() const [member function]
+    cls.add_method('GetTwoHopNeighbors', 
+                   'ns3::olsr::TwoHopNeighborSet const &', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): ns3::olsr::TwoHopNeighborSet & ns3::olsr::OlsrState::GetTwoHopNeighbors() [member function]
+    cls.add_method('GetTwoHopNeighbors', 
+                   'ns3::olsr::TwoHopNeighborSet &', 
+                   [])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertAssociation(ns3::olsr::Association const & tuple) [member function]
+    cls.add_method('InsertAssociation', 
+                   'void', 
+                   [param('ns3::olsr::Association const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertAssociationTuple(ns3::olsr::AssociationTuple const & tuple) [member function]
+    cls.add_method('InsertAssociationTuple', 
+                   'void', 
+                   [param('ns3::olsr::AssociationTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertDuplicateTuple(ns3::olsr::DuplicateTuple const & tuple) [member function]
+    cls.add_method('InsertDuplicateTuple', 
+                   'void', 
+                   [param('ns3::olsr::DuplicateTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertIfaceAssocTuple(ns3::olsr::IfaceAssocTuple const & tuple) [member function]
+    cls.add_method('InsertIfaceAssocTuple', 
+                   'void', 
+                   [param('ns3::olsr::IfaceAssocTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): ns3::olsr::LinkTuple & ns3::olsr::OlsrState::InsertLinkTuple(ns3::olsr::LinkTuple const & tuple) [member function]
+    cls.add_method('InsertLinkTuple', 
+                   'ns3::olsr::LinkTuple &', 
+                   [param('ns3::olsr::LinkTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertMprSelectorTuple(ns3::olsr::MprSelectorTuple const & tuple) [member function]
+    cls.add_method('InsertMprSelectorTuple', 
+                   'void', 
+                   [param('ns3::olsr::MprSelectorTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertNeighborTuple(ns3::olsr::NeighborTuple const & tuple) [member function]
+    cls.add_method('InsertNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::NeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertTopologyTuple(ns3::olsr::TopologyTuple const & tuple) [member function]
+    cls.add_method('InsertTopologyTuple', 
+                   'void', 
+                   [param('ns3::olsr::TopologyTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::InsertTwoHopNeighborTuple(ns3::olsr::TwoHopNeighborTuple const & tuple) [member function]
+    cls.add_method('InsertTwoHopNeighborTuple', 
+                   'void', 
+                   [param('ns3::olsr::TwoHopNeighborTuple const &', 'tuple')])
+    ## olsr-state.h (module 'olsr'): std::string ns3::olsr::OlsrState::PrintMprSelectorSet() const [member function]
+    cls.add_method('PrintMprSelectorSet', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## olsr-state.h (module 'olsr'): void ns3::olsr::OlsrState::SetMprSet(ns3::olsr::MprSet mprSet) [member function]
+    cls.add_method('SetMprSet', 
+                   'void', 
+                   [param('ns3::olsr::MprSet', 'mprSet')])
+    return
+
 def register_Ns3OlsrPacketHeader_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## olsr-header.h (module 'olsr'): ns3::olsr::PacketHeader::PacketHeader(ns3::olsr::PacketHeader const & arg0) [copy constructor]
@@ -7425,6 +7036,11 @@
                    'std::set< unsigned int >', 
                    [], 
                    is_const=True)
+    ## olsr-routing-protocol.h (module 'olsr'): ns3::Ptr<const ns3::Ipv4StaticRouting> ns3::olsr::RoutingProtocol::GetRoutingTableAssociation() const [member function]
+    cls.add_method('GetRoutingTableAssociation', 
+                   'ns3::Ptr< ns3::Ipv4StaticRouting const >', 
+                   [], 
+                   is_const=True)
     ## olsr-routing-protocol.h (module 'olsr'): std::vector<ns3::olsr::RoutingTableEntry,std::allocator<ns3::olsr::RoutingTableEntry> > ns3::olsr::RoutingProtocol::GetRoutingTableEntries() const [member function]
     cls.add_method('GetRoutingTableEntries', 
                    'std::vector< ns3::olsr::RoutingTableEntry >', 
diff -Naur ns-3.19/src/olsr/model/olsr-header.cc ns-3.20/src/olsr/model/olsr-header.cc
--- ns-3.19/src/olsr/model/olsr-header.cc	2014-06-17 10:34:00.650635025 -0700
+++ ns-3.20/src/olsr/model/olsr-header.cc	2014-06-17 10:33:14.010995059 -0700
@@ -96,8 +96,7 @@
 
 // ---------------- OLSR Packet -------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (PacketHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PacketHeader);
 
 PacketHeader::PacketHeader ()
 {
@@ -154,8 +153,7 @@
 
 // ---------------- OLSR Message -------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (MessageHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MessageHeader);
 
 MessageHeader::MessageHeader ()
   : m_messageType (MessageHeader::MessageType (0))
diff -Naur ns-3.19/src/olsr/model/olsr-routing-protocol.cc ns-3.20/src/olsr/model/olsr-routing-protocol.cc
--- ns-3.19/src/olsr/model/olsr-routing-protocol.cc	2014-06-17 10:34:00.652635009 -0700
+++ ns-3.20/src/olsr/model/olsr-routing-protocol.cc	2014-06-17 10:33:14.013995036 -0700
@@ -146,8 +146,7 @@
 
 /********** OLSR class **********/
 
-NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol);
 
 TypeId 
 RoutingProtocol::GetTypeId (void)
@@ -2457,9 +2456,7 @@
 
   if (nb_tuple != NULL)
     {
-#ifdef NS3_LOG_ENABLE
       int statusBefore = nb_tuple->status;
-#endif // NS3_LOG_ENABLE
 
       bool hasSymmetricLink = false;
 
@@ -3359,6 +3356,12 @@
 #endif  //NS3_LOG_ENABLE
 }
 
+Ptr<const Ipv4StaticRouting>
+RoutingProtocol::GetRoutingTableAssociation () const
+{
+  return m_hnaRoutingTable;
+}
+
 } // namespace olsr
 } // namespace ns3
 
diff -Naur ns-3.19/src/olsr/model/olsr-routing-protocol.h ns-3.20/src/olsr/model/olsr-routing-protocol.h
--- ns-3.19/src/olsr/model/olsr-routing-protocol.h	2014-06-17 10:34:00.653635001 -0700
+++ ns-3.20/src/olsr/model/olsr-routing-protocol.h	2014-06-17 10:33:14.014995028 -0700
@@ -43,6 +43,8 @@
 #include <vector>
 #include <map>
 
+/// Testcase for MPR computation mechanism
+class OlsrMprTestCase;
 
 namespace ns3 {
 namespace olsr {
@@ -67,9 +69,6 @@
 
 class RoutingProtocol;
 
-/// Testcase for MPR computation mechanism
-class OlsrMprTestCase;
-
 ///
 /// \ingroup olsr
 ///
@@ -78,7 +77,7 @@
 class RoutingProtocol : public Ipv4RoutingProtocol
 {
 public:
-  friend class OlsrMprTestCase;
+  friend class ::OlsrMprTestCase;
   static TypeId GetTypeId (void);
 
   RoutingProtocol ();
@@ -132,6 +131,12 @@
   /// Inject Associations from an Ipv4StaticRouting instance
   void SetRoutingTableAssociation (Ptr<Ipv4StaticRouting> routingTable);
 
+  /**
+   * \brief Returns the internal HNA table
+   * \returns the internal HNA table
+   */
+  Ptr<const Ipv4StaticRouting> GetRoutingTableAssociation () const;
+
 protected:
   virtual void DoInitialize (void);
 private:
diff -Naur ns-3.19/src/olsr/model/olsr-state.cc ns-3.20/src/olsr/model/olsr-state.cc
--- ns-3.19/src/olsr/model/olsr-state.cc	2014-06-17 10:34:00.653635001 -0700
+++ ns-3.20/src/olsr/model/olsr-state.cc	2014-06-17 10:33:14.014995028 -0700
@@ -30,7 +30,7 @@
 
 
 namespace ns3 {
-
+namespace olsr {
 
 /********** MPR Selector Set Manipulation **********/
 
@@ -543,4 +543,4 @@
   m_associations.push_back (tuple);
 }
 
-} // namespace ns3
+}} // namespace olsr, ns3
diff -Naur ns-3.19/src/olsr/model/olsr-state.h ns-3.20/src/olsr/model/olsr-state.h
--- ns-3.19/src/olsr/model/olsr-state.h	2014-06-17 10:34:00.654634994 -0700
+++ ns-3.20/src/olsr/model/olsr-state.h	2014-06-17 10:33:14.014995028 -0700
@@ -28,8 +28,7 @@
 #include "olsr-repositories.h"
 
 namespace ns3 {
-
-using namespace olsr;
+namespace olsr {
 
 /// This class encapsulates all data structures needed for maintaining internal state of an OLSR node.
 class OlsrState
@@ -175,6 +174,6 @@
 
 };
 
-} // namespace ns3
+}} // namespace olsr,ns3
 
 #endif /* OLSR_STATE_H */
diff -Naur ns-3.19/src/olsr/test/bug780-0-0.pcap ns-3.20/src/olsr/test/bug780-0-0.pcap
--- ns-3.19/src/olsr/test/bug780-0-0.pcap	2014-06-17 10:34:00.655634986 -0700
+++ ns-3.20/src/olsr/test/bug780-0-0.pcap	2014-06-17 10:33:14.017995005 -0700
@@ -286,16 +286,16 @@
 
     2   S  @   @   :                          
      
-    2   ]        Ԁ           2   +  x   x   :                   E  T   @  
+    2   ]        Ԁ           2   +  x   x   :                   E  T    @  
 
                                                                    2           Ԁ           2   7  @   @                          
 
     2   8  @   @   :                          
      
     2   
-<        Ԁ           2   tB  x   x   :                   E  T   @  
+<        Ԁ           2   tB  x   x   :                   E  T    @  
 
-                                                                    2   ~B        Ԁ           2   B |   |                    E  X   @  
+                                                                    2   ~B        Ԁ           2   B |   |                    E  X   @  
 
  D   <  
   !   
@@ -303,119 +303,121 @@
   
   "    
   
-    2   ڿ \   \                   E  8   @  
+    2   ڿ \   \                   E  8   @  
 
  $     
     
   
-    3       x   x   :                   E  T   @  
+    3       x   x   :                   E  T   @  
 
                                                                   3           Ԁ           3   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T   @  
 
                                                                    3   w
-        Ԁ           4       x   x   :                   E  T   @  
+        Ԁ           4       x   x   :                   E  T   @  
 
                                                                   4           Ԁ           4   m
-  x   x   :                    E  T    @  
+  x   x   :                    E  T   @  
 
                                                                    4   w
-        Ԁ           4   ^9 \   \                   E  8   @  
+        Ԁ           4   ^9 \   \                   E  8   @  
 
  $     
     
   
-    4   8 d   d               0    E  @ !  @  
+    4   8 d   d               0    E  @   @  
 
  ,   $   
   #    
   
-    5       x   x   :                    E  T   @  
+    5       x   x   :                    E  T   @  
 
                                                                   5           Ԁ           5   m
-  x   x   :               @    E  T "  @  
+  x   x   :               @    E  T   @  
 
                                                                    5   w
-        Ԁ           6       x   x   :                   E  T   @  
+        Ԁ           6       x   x   :                   E  T   @  
 
                                                                   6           Ԁ           6   m
-  x   x   :               P    E  T #  @  
+  x   x   :               P    E  T   @  
 
                                                                    6   w
-        Ԁ           6   Z \   \                    E  8    @  
+        Ԁ           6   Z \   \                    E  8   @  
 
  $     
     
   
-    6   M7 d   d               `    E  @ $  @  
+    6   M7 d   d               `    E  @   @  
 
  ,   $   
   $    
   
-    7       x   x   :               0    E  T !  @  
+    7       x   x   :               0    E  T   @  
 
                                                                   7           Ԁ           7   m
-  x   x   :               p    E  T %  @  
+  x   x   :               p    E  T   @  
 
                                                                    7   w
-        Ԁ           7    \   \                   E  8 &  @  
+        Ԁ           7    \   \                   E  8    @  
 
  $      
   %   
 
-    8       x   x   :               @    E  T "  @  
+    8       x   x   :               @    E  T   @  
 
                                                                   8           Ԁ           8   m
-  x   x   :                   E  T '  @  
+  x   x   :                   E  T   @  
 
                                                                    8   w
-        Ԁ           8    d   d                   E  @ (  @  
+        Ԁ           8    d   d                   E  @ !  @  
 
  ,   $ !  
   &    
   
-    8   = \   \               P    E  8 #  @  
+    8   = \   \               P    E  8   @  
 
  $     
     
   
-    9       x   x   :               `    E  T $  @  
+    9       x   x   :               `    E  T   @  
 
                                                                   9           Ԁ           9   m
-  x   x   :                   E  T )  @  
+  x   x   :                   E  T   @  
 
                                                                    9   w
-        Ԁ           :       x   x   :               p    E  T %  @  
+        Ԁ           :       x   x   :               p    E  T   @  
 
                                                                   :           Ԁ           :   m
-  x   x   :                   E  T *  @  
+  x   x   :                   E  T   @  
 
                                                                    :   w
-        Ԁ           :   x[ d   d                   E  @ +  @  
+        Ԁ           :   x[ d   d                   E  @ "  @  
 
  ,   $ "  
   '    
   
-    :   / \   \                   E  8 &  @  
+    :   / \   \                   E  8   @  
 
  $     
     
   
-    ;       x   x   :                   E  T '  @  
+    ;       x   x   :                   E  T 	  @  
 
       	                                                            ;           Ԁ           ;   m
-  x   x   :                   E  T ,  @  
+  x   x   :                   E  T 	  @  
 
        	                                                            ;   w
-        Ԁ           <       x   x   :                   E  T (  @  
+        Ԁ           <       x   x   :                   E  T 
+  @  
 
       
                                                             <           Ԁ           <   m
-  x   x   :                   E  T -  @  
+  x   x   :                   E  T 
+  @  
 
        
                                                             <   w
-        Ԁ           <   Ɖ |   |                    E  X .  @  
+        Ԁ           <   Ɖ |   |                    E  X #  @  
 
  D   < # 
   (   
@@ -423,122 +425,122 @@
   
   )    
   
-    <   # \   \                   E  8 )  @  
+    <   # \   \                   E  8   @  
 
  $     
     
   
-    =       x   x   :                   E  T *  @  
+    =       x   x   :                   E  T   @  
 
                                                                   =           Ԁ           =   m
-  x   x   :                   E  T /  @  
+  x   x   :                   E  T   @  
 
                                                                    =   w
-        Ԁ           >       x   x   :                   E  T +  @  
+        Ԁ           >       x   x   :                   E  T   @  
 
                                                                   >           Ԁ           >   m
-  x   x   :                    E  T 0  @  
+  x   x   :                    E  T   @  
 
                                                                    >   w
-        Ԁ           >   r d   d               0    E  @ 1  @  
+        Ԁ           >   r d   d               0    E  @ $  @  
 
  ,   $ $  
   *    
   
-    >   E] \   \                   E  8 ,  @  
+    >   E] \   \                   E  8   @  
 
  $     
     
   
-    ?       x   x   :                   E  T -  @  
+    ?       x   x   :                   E  T   @  
 
                                                                   ?           Ԁ           ?   m
-  x   x   :               @    E  T 2  @  
+  x   x   :               @    E  T   @  
 
                                                                    ?   w
-        Ԁ           @       x   x   :                    E  T .  @  
+        Ԁ           @       x   x   :                    E  T   @  
 
                                                                   @           Ԁ           @   m
-  x   x   :               P    E  T 3  @  
+  x   x   :               P    E  T   @  
 
                                                                    @   w
-        Ԁ           @   Y d   d               `    E  @ 4  @  
+        Ԁ           @   Y d   d               `    E  @ %  @  
 
  ,   $ %  
   +    
   
-    @    \   \                   E  8 /  @  
+    @    \   \                   E  8    @  
 
  $      
      
   
-    A       x   x   :                    E  T 0  @  
+    A       x   x   :                    E  T   @  
 
                                                                   A           Ԁ           A   m
-  x   x   :               p    E  T 5  @  
+  x   x   :               p    E  T   @  
 
                                                                    A   w
-        Ԁ           A   b \   \                   E  8 6  @  
+        Ԁ           A   b \   \                   E  8 &  @  
 
  $    & 
   ,   
 
-    B       x   x   :               0    E  T 1  @  
+    B       x   x   :               0    E  T   @  
 
                                                                   B           Ԁ           B   m
-  x   x   :                   E  T 7  @  
+  x   x   :                   E  T   @  
 
                                                                    B   w
-        Ԁ           B   &| \   \               @    E  8 2  @  
+        Ԁ           B   &| \   \               @    E  8 !  @  
 
  $    ! 
   !  
   
-    B    d   d                   E  @ 8  @  
+    B    d   d                   E  @ '  @  
 
  ,   $ '  
   -    
   
-    C       x   x   :               P    E  T 3  @  
+    C       x   x   :               P    E  T   @  
 
                                                                   C           Ԁ           C   m
-  x   x   :                   E  T 9  @  
+  x   x   :                   E  T   @  
 
                                                                    C   w
-        Ԁ           D       x   x   :               `    E  T 4  @  
+        Ԁ           D       x   x   :               `    E  T   @  
 
                                                                   D           Ԁ           D   m
-  x   x   :                   E  T :  @  
+  x   x   :                   E  T   @  
 
                                                                    D   w
-        Ԁ           D   q d   d                   E  @ ;  @  
+        Ԁ           D   q d   d                   E  @ (  @  
 
  ,   $ (  
   .    
   
-    D    \   \               p    E  8 5  @  
+    D    \   \               p    E  8 "  @  
 
  $    " 
   "  
   
-    E       x   x   :                   E  T 6  @  
+    E       x   x   :                   E  T   @  
 
                                                                   E           Ԁ           E   m
-  x   x   :                   E  T <  @  
+  x   x   :                   E  T   @  
 
                                                                    E   w
-        Ԁ           F       x   x   :                   E  T 7  @  
+        Ԁ           F       x   x   :                   E  T   @  
 
                                                                   F           Ԁ           F   m
-  x   x   :                   E  T =  @  
+  x   x   :                   E  T   @  
 
                                                                    F   w
-        Ԁ           F   ) \   \                   E  8 8  @  
+        Ԁ           F   ) \   \                   E  8 #  @  
 
  $    # 
   #  
   
-    F   ni |   |                    E  X >  @  
+    F   ni |   |                    E  X )  @  
 
  D   < ) 
   /   
@@ -546,90 +548,90 @@
   
   0    
   
-    G       x   x   :                   E  T 9  @  
+    G       x   x   :                   E  T   @  
 
                                                                   G           Ԁ           G   m
-  x   x   :                   E  T ?  @  
+  x   x   :                   E  T   @  
 
                                                                    G   w
-        Ԁ           H       x   x   :                   E  T :  @  
+        Ԁ           H       x   x   :                   E  T   @  
 
                                                                   H           Ԁ           H   m
-  x   x   :                    E  T @  @  
+  x   x   :                    E  T   @  
 
                                                                    H   w
-        Ԁ           H   q d   d               0    E  @ A  @  
+        Ԁ           H   q d   d               0    E  @ *  @  
 
  ,   $ *  
   1    
   
-    H   Q \   \                   E  8 ;  @  
+    H   Q \   \                   E  8 $  @  
 
  $    $ 
   $  
   
-    I       x   x   :                   E  T <  @  
+    I       x   x   :                   E  T   @  
 
                                                                   I           Ԁ           I   m
-  x   x   :               @    E  T B  @  
+  x   x   :               @    E  T   @  
 
                                                                    I   w
-        Ԁ           J       x   x   :                   E  T =  @  
+        Ԁ           J       x   x   :                   E  T   @  
 
                                                                   J           Ԁ           J   m
-  x   x   :               P    E  T C  @  
+  x   x   :               P    E  T   @  
 
                                                                    J   w
-        Ԁ           J   = d   d               `    E  @ D  @  
+        Ԁ           J   = d   d               `    E  @ +  @  
 
  ,   $ +  
   2    
   
-    J   z \   \                    E  8 >  @  
+    J   z \   \                    E  8 %  @  
 
  $    % 
   %  
   
-    K       x   x   :                   E  T ?  @  
+    K       x   x   :                   E  T   @  
 
                                                                   K           Ԁ           K   m
-  x   x   :               p    E  T E  @  
+  x   x   :               p    E  T   @  
 
                                                                    K   w
-        Ԁ           K    \   \                   E  8 F  @  
+        Ԁ           K    \   \                   E  8 ,  @  
 
  $    , 
   3   
 
-    L       x   x   :                    E  T @  @  
+    L       x   x   :                    E  T   @  
 
                                                                   L           Ԁ           L   m
-  x   x   :                   E  T G  @  
+  x   x   :                   E  T   @  
 
                                                                    L   w
-        Ԁ           L   * \   \               0    E  8 A  @  
+        Ԁ           L   * \   \               0    E  8 &  @  
 
  $    & 
   &  
   
-    L    d   d                   E  @ H  @  
+    L    d   d                   E  @ -  @  
 
  ,   $ -  
   4    
   
-    M       x   x   :               @    E  T B  @  
+    M       x   x   :               @    E  T   @  
 
                                                                   M           Ԁ           M   m
-  x   x   :                   E  T I  @  
+  x   x   :                   E  T   @  
 
                                                                    M   w
-        Ԁ           N       x   x   :               P    E  T C  @  
+        Ԁ           N       x   x   :               P    E  T   @  
 
                                                                   N           Ԁ           N   m
-  x   x   :                   E  T J  @  
+  x   x   :                   E  T   @  
 
                                                                    N   w
-        Ԁ           N     d   d                   E  @ K  @  
+        Ԁ           N     d   d                   E  @ .  @  
 
  ,   $ .  
   5    
@@ -639,24 +641,24 @@
  $    ' 
   '  
   
-    N     \   \               `    E  8 D  @  
+    N     \   \               `    E  8 '  @  
 
  $    ' 
   '  
   
-    O       x   x   :               p    E  T E  @  
+    O       x   x   :               p    E  T   @  
 
                                                                   O           Ԁ           O   m
-  x   x   :                   E  T L  @  
+  x   x   :                   E  T   @  
 
                                                                    O   w
-        Ԁ           P       x   x   :                   E  T F  @  
+        Ԁ           P       x   x   :                   E  T   @  
 
                                                                   P           Ԁ           P   m
-  x   x   :                   E  T M  @  
+  x   x   :                   E  T   @  
 
                                                                    P   w
-        Ԁ           P    d   d                   E  @ G  @  
+        Ԁ           P    d   d                   E  @ (  @  
 
  ,   $ (  
   (  
@@ -668,7 +670,7 @@
   (  
   
   
-    P   N |   |                    E  X N  @  
+    P   N |   |                    E  X /  @  
 
  D   < / 
   6   
@@ -676,19 +678,19 @@
   
   7    
   
-    Q       x   x   :                   E  T H  @  
+    Q       x   x   :                   E  T   @  
 
                                                                   Q           Ԁ           Q   m
-  x   x   :                   E  T O  @  
+  x   x   :                   E  T   @  
 
                                                                    Q   w
-        Ԁ           R       x   x   :                   E  T I  @  
+        Ԁ           R       x   x   :                   E  T    @  
 
                                                                    R           Ԁ           R   m
-  x   x   :                    E  T P  @  
+  x   x   :                    E  T    @  
 
                                                                     R   w
-        Ԁ           R   G d   d               0    E  @ Q  @  
+        Ԁ           R   G d   d               0    E  @ 0  @  
 
  ,   $ 0  
   8    
@@ -698,24 +700,24 @@
  ,   $ )  
   )    
   
-    R   ۊ d   d                   E  @ J  @  
+    R   ۊ d   d                   E  @ )  @  
 
  ,   $ )  
   )    
   
-    S       x   x   :                   E  T K  @  
+    S       x   x   :                   E  T !  @  
 
       !                                                            S           Ԁ           S   m
-  x   x   :               @    E  T R  @  
+  x   x   :               @    E  T !  @  
 
        !                                                            S   w
-        Ԁ           T       x   x   :                   E  T L  @  
+        Ԁ           T       x   x   :                   E  T "  @  
 
       "                                                            T           Ԁ           T   m
-  x   x   :               P    E  T S  @  
+  x   x   :               P    E  T "  @  
 
        "                                                            T   w
-        Ԁ           T   ˧ d   d                   E  @ M  @  
+        Ԁ           T   ˧ d   d                   E  @ *  @  
 
  ,   $ *  
   *    
@@ -725,34 +727,34 @@
  ,   $ *  
   *    
   
-    T    d   d               `    E  @ T  @  
+    T    d   d               `    E  @ 1  @  
 
  ,   $ 1  
   9    
   
-    U       x   x   :                    E  T N  @  
+    U       x   x   :                    E  T #  @  
 
       #                                                            U           Ԁ           U   m
-  x   x   :               p    E  T U  @  
+  x   x   :               p    E  T #  @  
 
        #                                                            U   w
-        Ԁ           U   / \   \                   E  8 V  @  
+        Ԁ           U   / \   \                   E  8 2  @  
 
  $    2 
   :   
 
-    V       x   x   :                   E  T O  @  
+    V       x   x   :                   E  T $  @  
 
       $                                                            V           Ԁ           V   m
-  x   x   :                   E  T W  @  
+  x   x   :                   E  T $  @  
 
        $                                                            V   w
-        Ԁ           V   2 d   d                   E  @ X  @  
+        Ԁ           V   2 d   d                   E  @ 3  @  
 
  ,   $ 3  
   ;    
   
-    V   f d   d                    E  @ P  @  
+    V   f d   d                    E  @ +  @  
 
  ,   $ +  
   +    
@@ -762,16 +764,16 @@
  ,   $ +  
   +    
   
-    W       x   x   :               0    E  T Q  @  
+    W       x   x   :               0    E  T %  @  
 
       %                                                            W           Ԁ           W   m
-  x   x   :                   E  T Y  @  
+  x   x   :                   E  T %  @  
 
        %                                                            W   w
-        Ԁ           X       x   x   :               @    E  T R  @  
+        Ԁ           X       x   x   :               @    E  T &  @  
 
       &                                                            X           Ԁ           X   m
-  x   x   :                   E  T Z  @  
+  x   x   :                   E  T &  @  
 
        &                                                            X   w
         Ԁ           X    d   d                   E  @ ,  @  
@@ -779,29 +781,29 @@
  ,   $ ,  
   ,    
   
-    X   & d   d                   E  @ [  @  
+    X   & d   d                   E  @ 4  @  
 
  ,   $ 4  
   <    
   
-    X   U d   d               P    E  @ S  @  
+    X   U d   d               P    E  @ ,  @  
 
  ,   $ ,  
   ,    
   
-    Y       x   x   :               `    E  T T  @  
+    Y       x   x   :               `    E  T '  @  
 
       '                                                            Y           Ԁ           Y   m
-  x   x   :                   E  T \  @  
+  x   x   :                   E  T '  @  
 
        '                                                            Y   w
-        Ԁ           Z       x   x   :               p    E  T U  @  
+        Ԁ           Z       x   x   :               p    E  T (  @  
 
       (                                                            Z           Ԁ           Z   m
-  x   x   :                   E  T ]  @  
+  x   x   :                   E  T (  @  
 
        (                                                            Z   w
-        Ԁ           Z   h  d   d                    E  @ ^  @  
+        Ԁ           Z   h  d   d                    E  @ 5  @  
 
  ,   $ 5  
   =    
@@ -811,21 +813,21 @@
  ,   $ -  
   -    
   
-    Z    d   d                   E  @ V  @  
+    Z    d   d                   E  @ -  @  
 
  ,   $ -  
   -    
   
-    [       x   x   :                   E  T W  @  
+    [       x   x   :                   E  T )  @  
 
       )                                                            [           Ԁ           [   m
-  x   x   :                   E  T _  @  
+  x   x   :                   E  T )  @  
 
        )                                                            [   w
-        Ԁ           \       x   x   :                   E  T X  @  
+        Ԁ           \       x   x   :                   E  T *  @  
 
       *                                                            \           Ԁ           \   m
-  x   x   :                    E  T `  @  
+  x   x   :                    E  T *  @  
 
        *                                                            \   w
         Ԁ           \   Q  d   d                   E  @ .  @  
@@ -833,26 +835,26 @@
  ,   $ .  
   .    
   
-    \     d   d                   E  @ Y  @  
+    \     d   d                   E  @ .  @  
 
  ,   $ .  
   .    
   
-    \   U d   d               0    E  @ a  @  
+    \   U d   d               0    E  @ 6  @  
 
  ,   $ 6  
   >    
   
-    ]       x   x   :                   E  T Z  @  
+    ]       x   x   :                   E  T +  @  
 
       +                                                            ]           Ԁ           ]   m
-  x   x   :               @    E  T b  @  
+  x   x   :               @    E  T +  @  
 
        +                                                            ]   w
-        Ԁ           ^       x   x   :                   E  T [  @  
+        Ԁ           ^       x   x   :                   E  T ,  @  
 
       ,                                                            ^           Ԁ           ^   m
-  x   x   :               P    E  T c  @  
+  x   x   :               P    E  T ,  @  
 
        ,                                                            ^   w
         Ԁ           ^     d   d                   E  @ /  @  
@@ -860,34 +862,34 @@
  ,   $ /  
   /    
   
-    ^   M d   d               `    E  @ d  @  
+    ^   M d   d               `    E  @ 7  @  
 
  ,   $ 7  
   ?    
   
-    ^    d   d                   E  @ \  @  
+    ^    d   d                   E  @ /  @  
 
  ,   $ /  
   /    
   
-    _       x   x   :                   E  T ]  @  
+    _       x   x   :                   E  T -  @  
 
       -                                                            _           Ԁ           _   m
-  x   x   :               p    E  T e  @  
+  x   x   :               p    E  T -  @  
 
        -                                                            _   w
-        Ԁ           `       x   x   :                    E  T ^  @  
+        Ԁ           `       x   x   :                    E  T .  @  
 
       .                                                            `           Ԁ           `   m
-  x   x   :                   E  T f  @  
+  x   x   :                   E  T .  @  
 
        .                                                            `   w
-        Ԁ           `     d   d                   E  @ _  @  
+        Ԁ           `     d   d                   E  @ 0  @  
 
  ,   $ 0  
   0    
   
-    `   '7 d   d                   E  @ g  @  
+    `   '7 d   d                   E  @ 8  @  
 
  ,   $ 8  
   @    
@@ -897,16 +899,16 @@
  ,   $ 0  
   0    
   
-    a       x   x   :                    E  T `  @  
+    a       x   x   :                    E  T /  @  
 
       /                                                            a           Ԁ           a   m
-  x   x   :                   E  T h  @  
+  x   x   :                   E  T /  @  
 
        /                                                            a   w
-        Ԁ           b       x   x   :               0    E  T a  @  
+        Ԁ           b       x   x   :               0    E  T 0  @  
 
       0                                                            b           Ԁ           b   m
-  x   x   :                   E  T i  @  
+  x   x   :                   E  T 0  @  
 
        0                                                            b   w
         Ԁ           b    d   d                   E  @ 1  @  
@@ -914,29 +916,29 @@
  ,   $ 1  
   1    
   
-    b    d   d               @    E  @ b  @  
+    b    d   d               @    E  @ 1  @  
 
  ,   $ 1  
   1    
   
-    b   W d   d                   E  @ j  @  
+    b   W d   d                   E  @ 9  @  
 
  ,   $ 9  
   A    
   
-    c       x   x   :               P    E  T c  @  
+    c       x   x   :               P    E  T 1  @  
 
       1                                                            c           Ԁ           c   m
-  x   x   :                   E  T k  @  
+  x   x   :                   E  T 1  @  
 
        1                                                            c   w
-        Ԁ           d       x   x   :               `    E  T d  @  
+        Ԁ           d       x   x   :               `    E  T 2  @  
 
       2                                                            d           Ԁ           d   m
-  x   x   :                   E  T l  @  
+  x   x   :                   E  T 2  @  
 
        2                                                            d   w
-        Ԁ           d   * d   d               p    E  @ e  @  
+        Ԁ           d   * d   d               p    E  @ 2  @  
 
  ,   $ 2  
   2    
@@ -946,24 +948,24 @@
  ,   $ 2  
   2    
   
-    d   m d   d                   E  @ m  @  
+    d   m d   d                   E  @ :  @  
 
  ,   $ :  
   B    
   
-    e       x   x   :                   E  T f  @  
+    e       x   x   :                   E  T 3  @  
 
       3                                                            e           Ԁ           e   m
-  x   x   :                    E  T n  @  
+  x   x   :                    E  T 3  @  
 
        3                                                            e   w
-        Ԁ           f       x   x   :                   E  T g  @  
+        Ԁ           f       x   x   :                   E  T 4  @  
 
       4                                                            f           Ԁ           f   m
-  x   x   :                   E  T o  @  
+  x   x   :                   E  T 4  @  
 
        4                                                            f   w
-        Ԁ           f   & d   d                   E  @ h  @  
+        Ԁ           f   & d   d                   E  @ 3  @  
 
  ,   $ 3  
   3    
@@ -973,21 +975,21 @@
  ,   $ 3  
   3    
   
-    f    d   d                    E  @ p  @  
+    f    d   d                    E  @ ;  @  
 
  ,   $ ;  
   C    
   
-    g       x   x   :                   E  T i  @  
+    g       x   x   :                   E  T 5  @  
 
       5                                                            g           Ԁ           g   m
-  x   x   :               0    E  T q  @  
+  x   x   :               0    E  T 5  @  
 
        5                                                            g   w
-        Ԁ           h       x   x   :                   E  T j  @  
+        Ԁ           h       x   x   :                   E  T 6  @  
 
       6                                                            h           Ԁ           h   m
-  x   x   :               @    E  T r  @  
+  x   x   :               @    E  T 6  @  
 
        6                                                            h   w
         Ԁ           h   e  d   d               @    E  @ 4  @  
@@ -995,26 +997,26 @@
  ,   $ 4  
   4    
   
-    h    d   d               P    E  @ s  @  
+    h    d   d               P    E  @ <  @  
 
  ,   $ <  
   D    
   
-    h    d   d                   E  @ k  @  
+    h    d   d                   E  @ 4  @  
 
  ,   $ 4  
   4    
   
-    i       x   x   :                   E  T l  @  
+    i       x   x   :                   E  T 7  @  
 
       7                                                            i           Ԁ           i   m
-  x   x   :               `    E  T t  @  
+  x   x   :               `    E  T 7  @  
 
        7                                                            i   w
-        Ԁ           j       x   x   :                   E  T m  @  
+        Ԁ           j       x   x   :                   E  T 8  @  
 
       8                                                            j           Ԁ           j   m
-  x   x   :               p    E  T u  @  
+  x   x   :               p    E  T 8  @  
 
        8                                                            j   w
         Ԁ           j    d   d               P    E  @ 5  @  
@@ -1022,29 +1024,29 @@
  ,   $ 5  
   5    
   
-    j   \f d   d                    E  @ n  @  
+    j   \f d   d                    E  @ 5  @  
 
  ,   $ 5  
   5    
   
-    j    d   d                   E  @ v  @  
+    j    d   d                   E  @ =  @  
 
  ,   $ =  
   E    
   
-    k       x   x   :                   E  T o  @  
+    k       x   x   :                   E  T 9  @  
 
       9                                                            k           Ԁ           k   m
-  x   x   :                   E  T w  @  
+  x   x   :                   E  T 9  @  
 
        9                                                            k   w
-        Ԁ           l       x   x   :                    E  T p  @  
+        Ԁ           l       x   x   :                    E  T :  @  
 
       :                                                            l           Ԁ           l   m
-  x   x   :                   E  T x  @  
+  x   x   :                   E  T :  @  
 
        :                                                            l   w
-        Ԁ           l    d   d               0    E  @ q  @  
+        Ԁ           l    d   d               0    E  @ 6  @  
 
  ,   $ 6  
   6    
@@ -1054,29 +1056,29 @@
  ,   $ 6  
   6    
   
-    l   4 d   d                   E  @ y  @  
+    l   4 d   d                   E  @ >  @  
 
  ,   $ >  
   F    
   
-    m       x   x   :               @    E  T r  @  
+    m       x   x   :               @    E  T ;  @  
 
       ;                                                            m           Ԁ           m   m
-  x   x   :                   E  T z  @  
+  x   x   :                   E  T ;  @  
 
        ;                                                            m   w
-        Ԁ           n       x   x   :               P    E  T s  @  
+        Ԁ           n       x   x   :               P    E  T <  @  
 
-      <                                                            n           Ԁ           n   m
-  x   x   :                   E  T {  @  
+      <                                                            n           Ԁ           n   n
+  x   x   :                   E  T <  @  
 
-       <                                                            n   w
-        Ԁ           n   Q  d   d                   E  @ |  @  
+       <                                                            n   x
+        Ԁ           n   Q  d   d                   E  @ ?  @  
 
  ,   $ ?  
   G    
   
-    n   4T d   d               `    E  @ t  @  
+    n   4T d   d               `    E  @ 7  @  
 
  ,   $ 7  
   7    
@@ -1086,24 +1088,24 @@
  ,   $ 7  
   7    
   
-    o       x   x   :               p    E  T u  @  
+    o       x   x   :               p    E  T =  @  
 
       =                                                            o           Ԁ           o   n
-  x   x   :                   E  T }  @  
+  x   x   :                   E  T =  @  
 
        =                                                            o   x
-        Ԁ           p       x   x   :                   E  T v  @  
+        Ԁ           p       x   x   :                   E  T >  @  
 
       >                                                            p           Ԁ           p   n
-  x   x   :                    E  T ~  @  
+  x   x   :                    E  T >  @  
 
        >                                                            p   x
-        Ԁ           p     d   d                   E  @ w  @  
+        Ԁ           p     d   d                   E  @ 8  @  
 
  ,   $ 8  
   8    
   
-    p    d   d                   E  @   @  
+    p    d   d                   E  @ @  @  
 
  ,   $ @  
   H    
@@ -1113,19 +1115,19 @@
  ,   $ 8  
   8    
   
-    q       x   x   :                   E  T x  @  
+    q       x   x   :                   E  T ?  @  
 
       ?                                                            q           Ԁ           q   n
-  x   x   :                    E  T   @  
+  x   x   :                    E  T ?  @  
 
        ?                                                            q   x
-        Ԁ           r       x   x   :                   E  T y  @  
+        Ԁ           r       x   x   :                   E  T @  @  
 
       @                                                            r           Ԁ           r   n
-  x   x   :               0    E  T   @  
+  x   x   :               0    E  T @  @  
 
        @                                                            r   x
-        Ԁ           r   % d   d               @    E  @   @  
+        Ԁ           r   % d   d               @    E  @ A  @  
 
  ,   $ A  
   I    
@@ -1135,29 +1137,29 @@
  ,   $ 9  
   9    
   
-    r   & d   d                   E  @ z  @  
+    r   & d   d                   E  @ 9  @  
 
  ,   $ 9  
   9    
   
-    s       x   x   :                   E  T {  @  
+    s       x   x   :                   E  T A  @  
 
       A                                                            s           Ԁ           s   n
-  x   x   :               P    E  T   @  
+  x   x   :               P    E  T A  @  
 
        A                                                            s   x
-        Ԁ           t       x   x   :                   E  T |  @  
+        Ԁ           t       x   x   :                   E  T B  @  
 
       B                                                            t           Ԁ           t   n
-  x   x   :               `    E  T   @  
+  x   x   :               `    E  T B  @  
 
        B                                                            t   x
-        Ԁ           t    d   d               p    E  @   @  
+        Ԁ           t    d   d               p    E  @ B  @  
 
  ,   $ B  
   J    
   
-    t    d   d                   E  @ }  @  
+    t    d   d                   E  @ :  @  
 
  ,   $ :  
   :    
@@ -1167,24 +1169,24 @@
  ,   $ :  
   :    
   
-    u       x   x   :                    E  T ~  @  
+    u       x   x   :                    E  T C  @  
 
       C                                                            u           Ԁ           u   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T C  @  
 
        C                                                            u   x
-        Ԁ           v       x   x   :                   E  T   @  
+        Ԁ           v       x   x   :                   E  T D  @  
 
       D                                                            v           Ԁ           v   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T D  @  
 
        D                                                            v   x
-        Ԁ           v    d   d                    E  @   @  
+        Ԁ           v    d   d                    E  @ ;  @  
 
  ,   $ ;  
   ;    
   
-    v   S d   d                   E  @   @  
+    v   S d   d                   E  @ C  @  
 
  ,   $ C  
   K    
@@ -1194,16 +1196,16 @@
  ,   $ ;  
   ;    
   
-    w       x   x   :               0    E  T   @  
+    w       x   x   :               0    E  T E  @  
 
       E                                                            w           Ԁ           w   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T E  @  
 
        E                                                            w   x
-        Ԁ           x       x   x   :               @    E  T   @  
+        Ԁ           x       x   x   :               @    E  T F  @  
 
       F                                                            x           Ԁ           x   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T F  @  
 
        F                                                            x   x
         Ԁ           x   ^ d   d                   E  @ <  @  
@@ -1211,29 +1213,29 @@
  ,   $ <  
   <    
   
-    x   R d   d               P    E  @   @  
+    x   R d   d               P    E  @ <  @  
 
  ,   $ <  
   <    
   
-    x   O. d   d                   E  @   @  
+    x   O. d   d                   E  @ D  @  
 
  ,   $ D  
   L    
   
-    y       x   x   :               `    E  T   @  
+    y       x   x   :               `    E  T G  @  
 
       G                                                            y           Ԁ           y   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T G  @  
 
        G                                                            y   x
-        Ԁ           z       x   x   :               p    E  T   @  
+        Ԁ           z       x   x   :               p    E  T H  @  
 
       H                                                            z           Ԁ           z   n
-  x   x   :                   E  T   @  
+  x   x   :                   E  T H  @  
 
        H                                                            z   x
-        Ԁ           z    d   d                   E  @   @  
+        Ԁ           z    d   d                   E  @ =  @  
 
  ,   $ =  
   =    
@@ -1243,79 +1245,79 @@
  ,   $ =  
   =    
   
-    {       x   x   :                   E  T   @  
+    {       x   x   :                   E  T I  @  
 
       I                                                            {   
-  x   x   :                   E  T   @  
+  x   x   :                   E  T I  @  
 
-      I                                                            {     x   x   :                   E  T   @  
+      I                                                            {     x   x   :                   E  T I  @  
 
-      I                                                            {   "  x   x   :                   E  T   @  
+      I                                                            {   "  x   x   :                   E  T I  @  
 
-      I                                                            {   $4  x   x   :                   E  T   @  
+      I                                                            {   $4  x   x   :                   E  T I  @  
 
-      I                                                            {   Y  x   x   :                   E  T   @  
+      I                                                            {   Y  x   x   :                   E  T I  @  
 
-      I                                                            {   x  x   x   :                   E  T   @  
+      I                                                            {   x  x   x   :                   E  T I  @  
 
-      I                                                            |       x   x   :                   E  T   @  
+      I                                                            |       x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |   d  x   x   :                   E  T   @  
+      J                                                            |   d  x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |   <I  x   x   :                   E  T   @  
+      J                                                            |   <I  x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
       J                                                            |   0  d   d                   E  @ >  @  
 
  ,   $ >  
   >    
   
-    |    d   d                   E  @   @  
+    |    d   d                   E  @ >  @  
 
  ,   $ >  
   >    
   
-    }       x   x   :                   E  T   @  
+    }       x   x   :                   E  T K  @  
 
-      K                                                            }     x   x   :                   E  T   @  
+      K                                                            }     x   x   :                   E  T K  @  
 
-      K                                                            }     x   x   :                   E  T   @  
+      K                                                            }     x   x   :                   E  T K  @  
 
-      K                                                            }   (  x   x   :                   E  T   @  
+      K                                                            }   (  x   x   :                   E  T K  @  
 
-      K                                                            }   B  x   x   :                   E  T   @  
+      K                                                            }   B  x   x   :                   E  T K  @  
 
-      K                                                            }   VO  x   x   :                   E  T   @  
+      K                                                            }   VO  x   x   :                   E  T K  @  
 
-      K                                                            }     x   x   :                   E  T   @  
+      K                                                            }     x   x   :                   E  T K  @  
 
-      K                                                            ~       x   x   :                   E  T   @  
+      K                                                            ~       x   x   :                   E  T L  @  
 
-      L                                                            ~   b	  x   x   :                   E  T   @  
+      L                                                            ~   b	  x   x   :                   E  T L  @  
 
-      L                                                            ~     x   x   :                   E  T   @  
+      L                                                            ~     x   x   :                   E  T L  @  
 
-      L                                                            ~   -  x   x   :                   E  T   @  
+      L                                                            ~   -  x   x   :                   E  T L  @  
 
-      L                                                            ~    G  x   x   :                   E  T   @  
+      L                                                            ~    G  x   x   :                   E  T L  @  
 
-      L                                                            ~     x   x   :                   E  T   @  
+      L                                                            ~     x   x   :                   E  T L  @  
 
       L                                                            ~   A  d   d                   E  @ ?  @  
 
  ,   $ ?  
   ?    
   
-    ~     x   x   :                   E  T   @  
+    ~     x   x   :                   E  T L  @  
 
-      L                                                            ~     d   d                   E  @   @  
+      L                                                            ~     d   d                   E  @ ?  @  
 
  ,   $ ?  
   ?    
@@ -1324,11 +1326,11 @@
 
        $  @   @   :                           
      
-       $        Ԁ              '  x   x   :                	    E  T   @  
+       $        Ԁ              '  x   x   :                	    E  T M  @  
 
       M                                                               [-        Ԁ              >  @   @                          
 
-       B        Ԁ              dH  x   x   :                    E  T   ?  
+       B        Ԁ              dH  x   x   :                    E  T M  ?  
 
       M                                                               Q  @   @   :               0           
      
@@ -1336,16 +1338,16 @@
 
        l  @   @   :               	           
      
-       p        Ԁ              u  x   x   :               P    E  T   ?  
+       p        Ԁ              u  x   x   :               P    E  T I  ?  
 
-       M                                                               u        Ԁ                  x   x   :                	    E  T   @  
+       M                                                               u        Ԁ                  x   x   :                	    E  T N  @  
 
       N                                                                       Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T N  ?  
 
-      N                                                                       Ԁ                x   x   :               p    E  T   ?  
+      N                                                                       Ԁ                x   x   :               p    E  T J  ?  
 
-       N                                                                       Ԁ               d   d               0	    E  @   @  
+       N                                                                       Ԁ               d   d               0	    E  @ @  @  
 
  ,   $ @  
   @    
@@ -1356,21 +1358,21 @@
  ,   $ @  
   @    
   
-           x   x   :               @	    E  T   @  
+           x   x   :               @	    E  T O  @  
 
       O                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T O  ?  
 
-      O                                                                       Ԁ              "  x   x   :                   E  T   ?  
+      O                                                                       Ԁ              "  x   x   :                   E  T K  ?  
 
-       O                                                               ,        Ԁ                  x   x   :               P	    E  T   @  
+       O                                                               ,        Ԁ                  x   x   :               P	    E  T P  @  
 
       P                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T P  ?  
 
-      P                                                                       Ԁ                x   x   :                   E  T   ?  
+      P                                                                       Ԁ                x   x   :                   E  T L  ?  
 
-       P                                                                       Ԁ              7 d   d               `	    E  @   @  
+       P                                                                       Ԁ              7 d   d               `	    E  @ A  @  
 
  ,   $ A  
   A    
@@ -1384,77 +1386,77 @@
   
   B    
   
-           x   x   :               p	    E  T   @  
+           x   x   :               p	    E  T Q  @  
 
       Q                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T Q  ?  
 
-      Q                                                                       Ԁ                x   x   :                   E  T   ?  
+      Q                                                                       Ԁ                x   x   :                   E  T M  ?  
 
-       Q                                                                       Ԁ                  x   x   :               	    E  T   @  
+       Q                                                                       Ԁ                  x   x   :               	    E  T R  @  
 
       R                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T R  ?  
 
-      R                                                                       Ԁ              F  x   x   :                   E  T   ?  
+      R                                                                       Ԁ              F  x   x   :                   E  T N  ?  
 
        R                                                               P        Ԁ              ?| d   d                    E  @ B  @  
 
  ,   $ B  
   C    
   
-       + d   d               	    E  @   @  
+       + d   d               	    E  @ B  @  
 
  ,   $ B  
   B    
 
   
-           x   x   :               	    E  T   @  
+           x   x   :               	    E  T S  @  
 
       S                                                                       Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T S  ?  
 
-      S                                                                       Ԁ                x   x   :               @    E  T   ?  
+      S                                                                       Ԁ                x   x   :               @    E  T O  ?  
 
-       S                                                                       Ԁ                  x   x   :               	    E  T   @  
+       S                                                                       Ԁ                  x   x   :               	    E  T T  @  
 
       T                                                                       Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T T  ?  
 
-      T                                                                       Ԁ              6  x   x   :               `    E  T   ?  
+      T                                                                       Ԁ              6  x   x   :               `    E  T P  ?  
 
        T                                                               @        Ԁ               d   d               p    E  @ C  @  
 
  ,   $ C  
   D    
   
-        \   \               	    E  8   @  
+        \   \               	    E  8 C  @  
 
  $    C 
   C  
   
-           x   x   :               	    E  T   @  
+           x   x   :               	    E  T U  @  
 
       U                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T U  ?  
 
-      U                                                                       Ԁ                x   x   :                   E  T   ?  
+      U                                                                       Ԁ                x   x   :                   E  T Q  ?  
 
        U                                                                       Ԁ              qT  \   \                   E  8 D  @  
 
  $    D 
   E   
 
-           x   x   :               	    E  T   @  
+           x   x   :               	    E  T V  @  
 
       V                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T V  ?  
 
-      V                                                                 x   x   :                   E  T   ?  
+      V                                                                 x   x   :                   E  T V  ?  
 
-      V                                                                       Ԁ              T  x   x   :                   E  T   ?  
+      V                                                                       Ԁ              T  x   x   :                   E  T R  ?  
 
-       V                                                               ^        Ԁ               \   \               	    E  8   @  
+       V                                                               ^        Ԁ               \   \               	    E  8 D  @  
 
  $    D 
   D  
@@ -1465,23 +1467,23 @@
   F    
   
            x   x   :                
-    E  T   @  
+    E  T W  @  
 
       W                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T W  ?  
 
-      W                                                                       Ԁ              r  x   x   :                   E  T   ?  
+      W                                                                       Ԁ              r  x   x   :                   E  T S  ?  
 
        W                                                               |        Ԁ                  x   x   :               
-    E  T   @  
+    E  T X  @  
 
       X                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T X  ?  
 
-      X                                                                       Ԁ              6  x   x   :                   E  T   ?  
+      X                                                                       Ԁ              6  x   x   :                   E  T T  ?  
 
        X                                                               @        Ԁ              F  \   \                
-    E  8   @  
+    E  8 E  @  
 
  $    E 
   E  
@@ -1492,23 +1494,23 @@
   G    
   
            x   x   :               0
-    E  T   @  
+    E  T Y  @  
 
       Y                                                                       Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T Y  ?  
 
-      Y                                                                       Ԁ                x   x   :               @    E  T   ?  
+      Y                                                                       Ԁ                x   x   :               @    E  T U  ?  
 
        Y                                                                       Ԁ                  x   x   :               @
-    E  T   @  
+    E  T Z  @  
 
       Z                                                                       Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T Z  ?  
 
-      Z                                                                       Ԁ              J  x   x   :               `    E  T   ?  
+      Z                                                                       Ԁ              J  x   x   :               `    E  T V  ?  
 
        Z                                                               T        Ԁ              Tr  \   \               P
-    E  8   @  
+    E  8 F  @  
 
  $    F 
   F  
@@ -1522,23 +1524,23 @@
   I    
   
            x   x   :               `
-    E  T   @  
+    E  T [  @  
 
       [                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T [  ?  
 
-      [                                                                       Ԁ              O  x   x   :                   E  T   ?  
+      [                                                                       Ԁ              O  x   x   :                   E  T W  ?  
 
        [                                                               Y        Ԁ                  x   x   :               p
-    E  T   @  
+    E  T \  @  
 
       \                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T \  ?  
 
-      \                                                                       Ԁ                x   x   :                   E  T   ?  
+      \                                                                       Ԁ                x   x   :                   E  T X  ?  
 
        \                                                                       Ԁ              `% \   \               
-    E  8   @  
+    E  8 G  @  
 
  $    G 
   G  
@@ -1549,20 +1551,20 @@
   J    
   
            x   x   :               
-    E  T   @  
+    E  T ]  @  
 
       ]                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T ]  ?  
 
-      ]                                                                       Ԁ              '  x   x   :                   E  T   ?  
+      ]                                                                       Ԁ              '  x   x   :                   E  T Y  ?  
 
        ]                                                               1        Ԁ                  x   x   :               
-    E  T   @  
+    E  T ^  @  
 
       ^                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T ^  ?  
 
-      ^                                                                       Ԁ                x   x   :                    E  T   ?  
+      ^                                                                       Ԁ                x   x   :                    E  T Z  ?  
 
        ^                                                                       Ԁ              I  d   d                   E  @ I  @  
 
@@ -1570,18 +1572,18 @@
   K    
   
        <~ \   \               
-    E  8   @  
+    E  8 H  @  
 
  $    H 
   H  
   
            x   x   :               
-    E  T   @  
+    E  T _  @  
 
       _                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T _  ?  
 
-      _                                                                       Ԁ                x   x   :               0    E  T   ?  
+      _                                                                       Ԁ                x   x   :               0    E  T [  ?  
 
        _                                                                       Ԁ              k \   \               @    E  8 J  @  
 
@@ -1589,12 +1591,12 @@
   L   
 
            x   x   :               
-    E  T   @  
+    E  T `  @  
 
       `                                                                       Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T `  ?  
 
-      `                                                                       Ԁ                x   x   :               `    E  T   ?  
+      `                                                                       Ԁ                x   x   :               `    E  T \  ?  
 
        `                                                                       Ԁ              - d   d               p    E  @ K  @  
 
@@ -1602,49 +1604,49 @@
   M    
   
        ; \   \               
-    E  8   @  
+    E  8 I  @  
 
  $    I 
   I  
   
            x   x   :               
-    E  T   @  
+    E  T a  @  
 
       a                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T a  ?  
 
-      a                                                                       Ԁ              c  x   x   :                   E  T   ?  
+      a                                                                       Ԁ              c  x   x   :                   E  T ]  ?  
 
-       a                                                               m        Ԁ                  x   x   :                    E  T   @  
+       a                                                               m        Ԁ                  x   x   :                    E  T b  @  
 
       b                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T b  ?  
 
-      b                                                                       Ԁ                x   x   :                   E  T   ?  
+      b                                                                       Ԁ                x   x   :                   E  T ^  ?  
 
        b                                                               	        Ԁ              b7 d   d                   E  @ L  @  
 
  ,   $ L  
   N    
   
-       j~ \   \                   E  8   @  
+       j~ \   \                   E  8 J  @  
 
  $    J 
   J  
   
-           x   x   :                    E  T   @  
+           x   x   :                    E  T c  @  
 
       c                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T c  ?  
 
-      c                                                                       Ԁ              7  x   x   :                   E  T   ?  
+      c                                                                       Ԁ              7  x   x   :                   E  T _  ?  
 
-       c                                                               A        Ԁ                  x   x   :               0    E  T   @  
+       c                                                               A        Ԁ                  x   x   :               0    E  T d  @  
 
       d                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T d  ?  
 
-      d                                                                       Ԁ                x   x   :                    E  T   ?  
+      d                                                                       Ԁ                x   x   :                    E  T `  ?  
 
        d                                                                       Ԁ              s' |   |                   E  X M  @  
 
@@ -1654,26 +1656,26 @@
   
   P    
   
-       < \   \               @    E  8   @  
+       < \   \               @    E  8 K  @  
 
  $    K 
   K  
   
-           x   x   :               P    E  T   @  
+           x   x   :               P    E  T e  @  
 
       e                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T e  ?  
 
-      e                                                                       Ԁ              c  x   x   :               0    E  T   ?  
+      e                                                                       Ԁ              c  x   x   :               0    E  T a  ?  
 
-       e                                                               m        Ԁ                  x   x   :               `    E  T   @  
+       e                                                               m        Ԁ                  x   x   :               `    E  T f  @  
 
       f                                                                       Ԁ              m
-  x   x   :               @    E  T   ?  
+  x   x   :               @    E  T f  ?  
 
-      f                                                                       Ԁ              #  x   x   :               P    E  T   ?  
+      f                                                                       Ԁ              #  x   x   :               P    E  T b  ?  
 
-       f                                                               -        Ԁ              Y; \   \               p    E  8   @  
+       f                                                               -        Ԁ              Y; \   \               p    E  8 L  @  
 
  $    L 
   L  
@@ -1683,74 +1685,74 @@
  ,   $ N  
   Q    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T g  @  
 
       g                                                                       Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T g  ?  
 
-      g                                                                       Ԁ              o  x   x   :                   E  T   ?  
+      g                                                                       Ԁ              o  x   x   :                   E  T c  ?  
 
-       g                                                               y        Ԁ                  x   x   :                   E  T   @  
+       g                                                               y        Ԁ                  x   x   :                   E  T h  @  
 
       h                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T h  ?  
 
-      h                                                                       Ԁ                x   x   :                   E  T   ?  
+      h                                                                       Ԁ                x   x   :                   E  T d  ?  
 
        h                                                                       Ԁ              <  d   d                   E  @ O  @  
 
  ,   $ O  
   R    
   
-       |M \   \                   E  8   @  
+       |M \   \                   E  8 M  @  
 
  $    M 
   M  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T i  @  
 
       i                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T i  ?  
 
-      i                                                                       Ԁ                x   x   :                   E  T   ?  
+      i                                                                       Ԁ                x   x   :                   E  T e  ?  
 
        i                                                                       Ԁ               \   \                   E  8 P  @  
 
  $    P 
   S   
 
-           x   x   :                   E  T   @  
+           x   x   :                   E  T j  @  
 
       j                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T j  ?  
 
-      j                                                                       Ԁ              7  x   x   :                	    E  T   ?  
+      j                                                                       Ԁ              7  x   x   :                	    E  T f  ?  
 
        j                                                               A        Ԁ               d   d               	    E  @ Q  @  
 
  ,   $ Q  
   T    
   
-       rH \   \                   E  8   @  
+       rH \   \                   E  8 N  @  
 
  $    N 
   N  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T k  @  
 
       k                                                                       Ԁ              m
-  x   x   :                	    E  T   ?  
+  x   x   :                	    E  T k  ?  
 
-      k                                                                       Ԁ                x   x   :               0	    E  T   ?  
+      k                                                                       Ԁ                x   x   :               0	    E  T g  ?  
 
-       k                                                                       Ԁ                  x   x   :                   E  T   @  
+       k                                                                       Ԁ                  x   x   :                   E  T l  @  
 
       l                                                                       Ԁ              m
-  x   x   :               @	    E  T   ?  
+  x   x   :               @	    E  T l  ?  
 
-      l                                                                       Ԁ                x   x   :               P	    E  T   ?  
+      l                                                                       Ԁ                x   x   :               P	    E  T h  ?  
 
-       l                                                                       Ԁ              `) \   \                    E  8   @  
+       l                                                                       Ԁ              `) \   \                    E  8 O  @  
 
  $    O 
   O  
@@ -1760,21 +1762,21 @@
  ,   $ R  
   U    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T m  @  
 
       m                                                                       Ԁ              m
-  x   x   :               p	    E  T   ?  
+  x   x   :               p	    E  T m  ?  
 
-      m                                                                       Ԁ              7  x   x   :               	    E  T   ?  
+      m                                                                       Ԁ              7  x   x   :               	    E  T i  ?  
 
-       m                                                               A        Ԁ                  x   x   :                    E  T   @  
+       m                                                               A        Ԁ                  x   x   :                    E  T n  @  
 
       n                                                                       Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T n  ?  
 
-      n                                                                       Ԁ                x   x   :               	    E  T   ?  
+      n                                                                       Ԁ                x   x   :               	    E  T j  ?  
 
-       n                                                                       Ԁ              1 \   \               0    E  8   @  
+       n                                                                       Ԁ              1 \   \               0    E  8 P  @  
 
  $    P 
   P  
@@ -1787,19 +1789,19 @@
   
   W    
   
-           x   x   :               @    E  T   @  
+           x   x   :               @    E  T o  @  
 
       o                                                                       Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T o  ?  
 
-      o                                                                       Ԁ                x   x   :               	    E  T   ?  
+      o                                                                       Ԁ                x   x   :               	    E  T k  ?  
 
-       o                                                                       Ԁ                  x   x   :               P    E  T   @  
+       o                                                                       Ԁ                  x   x   :               P    E  T p  @  
 
       p                                                                       Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T p  ?  
 
-      p                                                                       Ԁ              c  x   x   :               	    E  T   ?  
+      p                                                                       Ԁ              c  x   x   :               	    E  T l  ?  
 
        p                                                               m        Ԁ              0 d   d                
     E  @ T  @  
@@ -1807,28 +1809,28 @@
  ,   $ T  
   X    
   
-       V_ \   \               `    E  8   @  
+       V_ \   \               `    E  8 Q  @  
 
  $    Q 
   Q  
   
-           x   x   :               p    E  T   @  
+           x   x   :               p    E  T q  @  
 
       q                                                                       Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
       q                                                                       Ԁ              w  x   x   :                
-    E  T   ?  
+    E  T m  ?  
 
-       q                                                                       Ԁ                  x   x   :                   E  T   @  
+       q                                                                       Ԁ                  x   x   :                   E  T r  @  
 
       r                                                                       Ԁ              m
   x   x   :               0
-    E  T   ?  
+    E  T r  ?  
 
       r                                                                       Ԁ                x   x   :               @
-    E  T   ?  
+    E  T n  ?  
 
        r                                                                       Ԁ               d   d               P
     E  @ U  @  
@@ -1836,19 +1838,19 @@
  ,   $ U  
   Y    
   
-       ; \   \                   E  8   @  
+       ; \   \                   E  8 R  @  
 
  $    R 
   R  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T s  @  
 
       s                                                                       Ԁ              m
   x   x   :               `
-    E  T   ?  
+    E  T s  ?  
 
       s                                                                       Ԁ              _  x   x   :               p
-    E  T   ?  
+    E  T o  ?  
 
        s                                                               i        Ԁ              f \   \               
     E  8 V  @  
@@ -1856,16 +1858,16 @@
  $    V 
   Z   
 
-           x   x   :                   E  T   @  
+           x   x   :                   E  T t  @  
 
       t                                                                       Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T t  ?  
 
       t                                                                       Ԁ              O  x   x   :               
-    E  T   ?  
+    E  T p  ?  
 
-       t                                                               Y        Ԁ               \   \                   E  8   @  
+       t                                                               Y        Ԁ               \   \                   E  8 S  @  
 
  $    S 
   S  
@@ -1876,25 +1878,25 @@
  ,   $ W  
   [    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T u  @  
 
       u                                                                       Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T u  ?  
 
       u                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
-       u                                                               	        Ԁ                  x   x   :                   E  T   @  
+       u                                                               	        Ԁ                  x   x   :                   E  T v  @  
 
       v                                                                       Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T v  ?  
 
       v                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T r  ?  
 
-       v                                                                       Ԁ               \   \                   E  8   @  
+       v                                                                       Ԁ               \   \                   E  8 T  @  
 
  $    T 
   T  
@@ -1904,19 +1906,19 @@
  ,   $ X  
   \    
   
-           x   x   :                    E  T   @  
+           x   x   :                    E  T w  @  
 
       w                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T w  ?  
 
-      w                                                                       Ԁ              G  x   x   :                    E  T   ?  
+      w                                                                       Ԁ              G  x   x   :                    E  T s  ?  
 
-       w                                                               Q        Ԁ                  x   x   :                   E  T   @  
+       w                                                               Q        Ԁ                  x   x   :                   E  T x  @  
 
       x                                                                       Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T x  ?  
 
-      x                                                                       Ԁ                x   x   :               @    E  T   ?  
+      x                                                                       Ԁ                x   x   :               @    E  T t  ?  
 
        x                                                                       Ԁ              h=  |   |               P    E  X Y  @  
 
@@ -1926,26 +1928,26 @@
   
   ^    
   
-       v \   \                    E  8   @  
+       v \   \                    E  8 U  @  
 
  $    U 
   U  
   
-           x   x   :               0    E  T   @  
+           x   x   :               0    E  T y  @  
 
       y                                                                       Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T y  ?  
 
-      y                                                                       Ԁ              K  x   x   :               p    E  T   ?  
+      y                                                                       Ԁ              K  x   x   :               p    E  T u  ?  
 
-       y                                                               U        Ԁ                  x   x   :               @    E  T   @  
+       y                                                               U        Ԁ                  x   x   :               @    E  T z  @  
 
       z                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T z  ?  
 
-      z                                                                       Ԁ                x   x   :                   E  T   ?  
+      z                                                                       Ԁ                x   x   :                   E  T v  ?  
 
-       z                                                                       Ԁ              M \   \               P    E  8   @  
+       z                                                                       Ԁ              M \   \               P    E  8 V  @  
 
  $    V 
   V  
@@ -1955,23 +1957,23 @@
  ,   $ Z  
   _    
   
-           x   x   :               `    E  T   @  
+           x   x   :               `    E  T {  @  
 
       {                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T {  ?  
 
-      {                                                                       Ԁ                x   x   :                   E  T   ?  
+      {                                                                       Ԁ                x   x   :                   E  T w  ?  
 
-       {                                                                       Ԁ                  x   x   :               p    E  T   @  
+       {                                                                       Ԁ                  x   x   :               p    E  T |  @  
 
       |                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T |  ?  
 
-      |                                                               +  x   x   :                   E  T   ?  
+      |                                                               +  x   x   :                   E  T |  ?  
 
-      |                                                               S        Ԁ              ]   x   x   :                   E  T   ?  
+      |                                                               S        Ԁ              ]   x   x   :                   E  T x  ?  
 
-       |                                                               g         Ԁ              +  \   \                   E  8   @  
+       |                                                               g         Ԁ              +  \   \                   E  8 W  @  
 
  $    W 
   W  
@@ -1981,50 +1983,50 @@
  ,   $ [  
   `    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T }  @  
 
       }                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T }  ?  
 
-      }                                                                       Ԁ              #  x   x   :                   E  T   ?  
+      }                                                                       Ԁ              #  x   x   :                   E  T y  ?  
 
        }                                                               -        Ԁ               \   \                    E  8 \  @  
 
  $    \ 
   a   
 
-           x   x   :                   E  T   @  
+           x   x   :                   E  T ~  @  
 
       ~                                                                       Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T ~  ?  
 
-      ~                                                                       Ԁ                x   x   :               @    E  T   ?  
+      ~                                                                       Ԁ                x   x   :               @    E  T z  ?  
 
        ~                                                                       Ԁ              y d   d               P    E  @ ]  @  
 
  ,   $ ]  
   b    
   
-       p9 \   \                   E  8   @  
+       p9 \   \                   E  8 X  @  
 
  $    X 
   X  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T   ?  
 
-                                                                             Ԁ                x   x   :               p    E  T   ?  
+                                                                             Ԁ                x   x   :               p    E  T {  ?  
 
-                                                                              Ԁ                  x   x   :                   E  T   @  
+                                                                              Ԁ                  x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              G  x   x   :                   E  T   ?  
+                                                                             Ԁ              G  x   x   :                   E  T |  ?  
 
-                                                                      Q        Ԁ               \   \                   E  8   @  
+                                                                      Q        Ԁ               \   \                   E  8 Y  @  
 
  $    Y 
   Y  
@@ -2034,21 +2036,21 @@
  ,   $ ^  
   c    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              _  x   x   :                   E  T   ?  
+                                                                             Ԁ              _  x   x   :                   E  T }  ?  
 
-                                                                      i        Ԁ                  x   x   :                    E  T   @  
+                                                                      i        Ԁ                  x   x   :                    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              7  x   x   :                   E  T   ?  
+                                                                             Ԁ              7  x   x   :                   E  T ~  ?  
 
-                                                                      A        Ԁ              _  \   \                   E  8   @  
+                                                                      A        Ԁ              _  \   \                   E  8 Z  @  
 
  $    Z 
   Z  
@@ -2061,21 +2063,21 @@
   
   e    
   
-           x   x   :                    E  T   @  
+           x   x   :                    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
-                                                                             Ԁ              s  x   x   :                   E  T   ?  
+                                                                             Ԁ              s  x   x   :                   E  T   ?  
 
-                                                                      }        Ԁ                  x   x   :               0    E  T   @  
+                                                                      }        Ԁ                  x   x   :               0    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
-                                                                             Ԁ                x   x   :               0    E  T   ?  
+                                                                             Ԁ                x   x   :               0    E  T   ?  
 
-                                                                              Ԁ               \   \               @    E  8   @  
+                                                                              Ԁ               \   \               @    E  8 [  @  
 
  $    [ 
   [  
@@ -2085,98 +2087,98 @@
  ,   $ `  
   f    
   
-           x   x   :               P    E  T   @  
+           x   x   :               P    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T   ?  
 
-                                                                             Ԁ              '  x   x   :               `    E  T   ?  
+                                                                             Ԁ              '  x   x   :               `    E  T   ?  
 
-                                                                      1        Ԁ                  x   x   :               `    E  T   @  
+                                                                      1        Ԁ                  x   x   :               `    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ               d   d                   E  @ a  @  
 
  ,   $ a  
   g    
   
-       P \   \               p    E  8   @  
+       P \   \               p    E  8 \  @  
 
  $    \ 
   \  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              K  x   x   :                   E  T   ?  
+                                                                             Ԁ              K  x   x   :                   E  T   ?  
 
                                                                       U        Ԁ              aQ \   \                   E  8 b  @  
 
  $    b 
   h   
 
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ              `  d   d                   E  @ c  @  
 
  ,   $ c  
   i    
   
-       [ \   \                   E  8   @  
+       [ \   \                   E  8 ]  @  
 
  $    ] 
   ]  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ                  x   x   :                   E  T   @  
+                                                                              Ԁ                  x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
-                                                                             Ԁ              ;  x   x   :               0    E  T   ?  
+                                                                             Ԁ              ;  x   x   :               0    E  T   ?  
 
                                                                       E        Ԁ              % d   d               @    E  @ d  @  
 
  ,   $ d  
   j    
   
-       ) \   \                   E  8   @  
+       ) \   \                   E  8 ^  @  
 
  $    ^ 
   ^  
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T   ?  
 
-                                                                             Ԁ              7  x   x   :               `    E  T   ?  
+                                                                             Ԁ              7  x   x   :               `    E  T   ?  
 
-                                                                      A        Ԁ                  x   x   :                   E  T   @  
+                                                                      A        Ԁ                  x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
-                                                                             Ԁ              #  x   x   :                   E  T   ?  
+                                                                             Ԁ              #  x   x   :                   E  T   ?  
 
-                                                                      -        Ԁ               \   \                    E  8   @  
+                                                                      -        Ԁ               \   \                    E  8 _  @  
 
  $    _ 
   _  
@@ -2189,21 +2191,21 @@
   
   l    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                      	        Ԁ                  x   x   :                    E  T   @  
+                                                                      	        Ԁ                  x   x   :                    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ              3 \   \               0    E  8   @  
+                                                                              Ԁ              3 \   \               0    E  8 `  @  
 
  $    ` 
   `  
@@ -2213,21 +2215,21 @@
  ,   $ f  
   m    
   
-           x   x   :               @    E  T   @  
+           x   x   :               @    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                              Ԁ                  x   x   :               P    E  T   @  
+                                                                              Ԁ                  x   x   :               P    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                              Ԁ              N  \   \               `    E  8   @  
+                                                                              Ԁ              N  \   \               `    E  8 a  @  
 
  $    a 
   a  
@@ -2237,26 +2239,26 @@
  ,   $ g  
   n    
   
-           x   x   :               p    E  T   @  
+           x   x   :               p    E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               @    E  T   ?  
+  x   x   :               @    E  T   ?  
 
-                                                                             Ԁ                x   x   :               P    E  T   ?  
+                                                                             Ԁ                x   x   :               P    E  T   ?  
 
                                                                               Ԁ              4 \   \               `    E  8 h  @  
 
  $    h 
   o   
 
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ              Z \   \                   E  8   @  
+                                                                              Ԁ              Z \   \                   E  8 b  @  
 
  $    b 
   b  
@@ -2266,21 +2268,21 @@
  ,   $ i  
   p    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              K  x   x   :                   E  T   ?  
+                                                                             Ԁ              K  x   x   :                   E  T   ?  
 
-                                                                      U        Ԁ                  x   x   :                   E  T   @  
+                                                                      U        Ԁ                  x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ              _  x   x   :                   E  T   ?  
+                                                                             Ԁ              _  x   x   :                   E  T   ?  
 
-                                                                      i        Ԁ              5 \   \                   E  8   @  
+                                                                      i        Ԁ              5 \   \                   E  8 c  @  
 
  $    c 
   c  
@@ -2290,11 +2292,11 @@
  ,   $ j  
   q    
   
-           x   x   :                   E  T   @  
+           x   x   :                   E  T   @  
 
                                                                              Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
                                                                               Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/olsr/test/bug780-1-0.pcap ns-3.20/src/olsr/test/bug780-1-0.pcap
--- ns-3.19/src/olsr/test/bug780-1-0.pcap	2014-06-17 10:34:00.657634971 -0700
+++ ns-3.20/src/olsr/test/bug780-1-0.pcap	2014-06-17 10:33:14.019994989 -0700
@@ -412,15 +412,15 @@
 
     2     @   @   :                          
      
-    2           Ԁ           2     x   x   :                   E  T   @  
+    2           Ԁ           2     x   x   :                   E  T    @  
 
                                                                    2           Ԁ           2   5  @   @                          
 
     2   :  @   @   :                          
      
-    2   :        Ԁ           2   =  x   x   :                   E  T   @  
+    2   :        Ԁ           2   =  x   x   :                   E  T    @  
 
-                                                                    2   C        Ԁ           2   > |   |                    E  X   @  
+                                                                    2   C        Ԁ           2   > |   |                    E  X   @  
 
  D   <  
   !   
@@ -433,94 +433,94 @@
  $     
     
   
-    2   { \   \                   E  8   @  
+    2   { \   \                   E  8   @  
 
  $     
     
   
-    3     x   x   :                   E  T   @  
+    3     x   x   :                   E  T   @  
 
-                                                                  3           Ԁ           3     x   x   :                   E  T   @  
+                                                                  3           Ԁ           3     x   x   :                   E  T   @  
 
-                                                                   3           Ԁ           4     x   x   :                   E  T   @  
+                                                                   3           Ԁ           4     x   x   :                   E  T   @  
 
-                                                                  4           Ԁ           4     x   x   :                    E  T    @  
+                                                                  4           Ԁ           4     x   x   :                    E  T   @  
 
                                                                    4           Ԁ           4   Q \   \                   E  8   @  
 
  $     
     
   
-    4   < \   \                   E  8   @  
+    4   < \   \                   E  8   @  
 
  $     
     
   
-    4   5 d   d               0    E  @ !  @  
+    4   5 d   d               0    E  @   @  
 
  ,   $   
   #    
   
-    5     x   x   :                    E  T   @  
+    5     x   x   :                    E  T   @  
 
-                                                                  5           Ԁ           5     x   x   :               @    E  T "  @  
+                                                                  5           Ԁ           5     x   x   :               @    E  T   @  
 
-                                                                   5           Ԁ           6     x   x   :                   E  T   @  
+                                                                   5           Ԁ           6     x   x   :                   E  T   @  
 
-                                                                  6           Ԁ           6     x   x   :               P    E  T #  @  
+                                                                  6           Ԁ           6     x   x   :               P    E  T   @  
 
                                                                    6           Ԁ           6   c \   \                   E  8   @  
 
  $     
     
   
-    6   ] \   \                    E  8    @  
+    6   ] \   \                    E  8   @  
 
  $     
     
   
-    6   l3 d   d               `    E  @ $  @  
+    6   l3 d   d               `    E  @   @  
 
  ,   $   
   $    
   
-    7     x   x   :               0    E  T !  @  
+    7     x   x   :               0    E  T   @  
 
-                                                                  7           Ԁ           7     x   x   :               p    E  T %  @  
+                                                                  7           Ԁ           7     x   x   :               p    E  T   @  
 
-                                                                   7           Ԁ           7   k \   \                   E  8 &  @  
+                                                                   7           Ԁ           7   k \   \                   E  8    @  
 
  $      
   %   
 
-    8     x   x   :               @    E  T "  @  
+    8     x   x   :               @    E  T   @  
 
-                                                                  8           Ԁ           8     x   x   :                   E  T '  @  
+                                                                  8           Ԁ           8     x   x   :                   E  T   @  
 
                                                                    8           Ԁ           8   T \   \                   E  8   @  
 
  $     
     
   
-    8   & d   d                   E  @ (  @  
+    8   & d   d                   E  @ !  @  
 
  ,   $ !  
   &    
   
-    8   ޢ \   \               P    E  8 #  @  
+    8   ޢ \   \               P    E  8   @  
 
  $     
     
   
-    9     x   x   :               `    E  T $  @  
+    9     x   x   :               `    E  T   @  
 
-                                                                  9           Ԁ           9     x   x   :                   E  T )  @  
+                                                                  9           Ԁ           9     x   x   :                   E  T   @  
 
-                                                                   9           Ԁ           :     x   x   :               p    E  T %  @  
+                                                                   9           Ԁ           :     x   x   :               p    E  T   @  
 
-                                                                  :           Ԁ           :     x   x   :                   E  T *  @  
+                                                                  :           Ԁ           :     x   x   :                   E  T   @  
 
-                                                                   :           Ԁ           :   W d   d                   E  @ +  @  
+                                                                   :           Ԁ           :   W d   d                   E  @ "  @  
 
  ,   $ "  
   '    
@@ -530,19 +530,21 @@
  $     
     
   
-    :   Љ \   \                   E  8 &  @  
+    :   Љ \   \                   E  8   @  
 
  $     
     
   
-    ;     x   x   :                   E  T '  @  
+    ;     x   x   :                   E  T 	  @  
 
-      	                                                            ;           Ԁ           ;     x   x   :                   E  T ,  @  
+      	                                                            ;           Ԁ           ;     x   x   :                   E  T 	  @  
 
-       	                                                            ;           Ԁ           <     x   x   :                   E  T (  @  
+       	                                                            ;           Ԁ           <     x   x   :                   E  T 
+  @  
 
       
-                                                            <           Ԁ           <     x   x   :                   E  T -  @  
+                                                            <           Ԁ           <     x   x   :                   E  T 
+  @  
 
        
                                                             <           Ԁ           <   %  \   \                   E  8   @  
@@ -550,7 +552,7 @@
  $     
     
   
-    <   % |   |                    E  X .  @  
+    <   % |   |                    E  X #  @  
 
  D   < # 
   (   
@@ -558,25 +560,25 @@
   
   )    
   
-    <   ' \   \                   E  8 )  @  
+    <   ' \   \                   E  8   @  
 
  $     
     
   
-    =     x   x   :                   E  T *  @  
+    =     x   x   :                   E  T   @  
 
-                                                                  =           Ԁ           =     x   x   :                   E  T /  @  
+                                                                  =           Ԁ           =     x   x   :                   E  T   @  
 
-                                                                   =           Ԁ           >     x   x   :                   E  T +  @  
+                                                                   =           Ԁ           >     x   x   :                   E  T   @  
 
-                                                                  >           Ԁ           >     x   x   :                    E  T 0  @  
+                                                                  >           Ԁ           >     x   x   :                    E  T   @  
 
-                                                                   >           Ԁ           >    d   d               0    E  @ 1  @  
+                                                                   >           Ԁ           >    d   d               0    E  @ $  @  
 
  ,   $ $  
   *    
   
-    >   ` \   \                   E  8 ,  @  
+    >   ` \   \                   E  8   @  
 
  $     
     
@@ -586,89 +588,89 @@
  $     
     
   
-    ?     x   x   :                   E  T -  @  
+    ?     x   x   :                   E  T   @  
 
-                                                                  ?           Ԁ           ?     x   x   :               @    E  T 2  @  
+                                                                  ?           Ԁ           ?     x   x   :               @    E  T   @  
 
-                                                                   ?           Ԁ           @     x   x   :                    E  T .  @  
+                                                                   ?           Ԁ           @     x   x   :                    E  T   @  
 
-                                                                  @           Ԁ           @     x   x   :               P    E  T 3  @  
+                                                                  @           Ԁ           @     x   x   :               P    E  T   @  
 
                                                                    @           Ԁ           @   . \   \                    E  8    @  
 
  $      
      
   
-    @   x d   d               `    E  @ 4  @  
+    @   x d   d               `    E  @ %  @  
 
  ,   $ %  
   +    
   
-    @   C \   \                   E  8 /  @  
+    @   C \   \                   E  8    @  
 
  $      
      
   
-    A     x   x   :                    E  T 0  @  
+    A     x   x   :                    E  T   @  
 
-                                                                  A           Ԁ           A     x   x   :               p    E  T 5  @  
+                                                                  A           Ԁ           A     x   x   :               p    E  T   @  
 
-                                                                   A           Ԁ           A   0_ \   \                   E  8 6  @  
+                                                                   A           Ԁ           A   0_ \   \                   E  8 &  @  
 
  $    & 
   ,   
 
-    B     x   x   :               0    E  T 1  @  
+    B     x   x   :               0    E  T   @  
 
-                                                                  B           Ԁ           B     x   x   :                   E  T 7  @  
+                                                                  B           Ԁ           B     x   x   :                   E  T   @  
 
                                                                    B           Ԁ           B     \   \                   E  8 !  @  
 
  $    ! 
   !  
   
-    B    \   \               @    E  8 2  @  
+    B    \   \               @    E  8 !  @  
 
  $    ! 
   !  
   
-    B    d   d                   E  @ 8  @  
+    B    d   d                   E  @ '  @  
 
  ,   $ '  
   -    
   
-    C     x   x   :               P    E  T 3  @  
+    C     x   x   :               P    E  T   @  
 
-                                                                  C           Ԁ           C     x   x   :                   E  T 9  @  
+                                                                  C           Ԁ           C     x   x   :                   E  T   @  
 
-                                                                   C           Ԁ           D     x   x   :               `    E  T 4  @  
+                                                                   C           Ԁ           D     x   x   :               `    E  T   @  
 
-                                                                  D           Ԁ           D     x   x   :                   E  T :  @  
+                                                                  D           Ԁ           D     x   x   :                   E  T   @  
 
                                                                    D           Ԁ           D     \   \                    E  8 "  @  
 
  $    " 
   "  
   
-    D   n d   d                   E  @ ;  @  
+    D   n d   d                   E  @ (  @  
 
  ,   $ (  
   .    
   
-    D   W \   \               p    E  8 5  @  
+    D   W \   \               p    E  8 "  @  
 
  $    " 
   "  
   
-    E     x   x   :                   E  T 6  @  
+    E     x   x   :                   E  T   @  
 
-                                                                  E           Ԁ           E     x   x   :                   E  T <  @  
+                                                                  E           Ԁ           E     x   x   :                   E  T   @  
 
-                                                                   E           Ԁ           F     x   x   :                   E  T 7  @  
+                                                                   E           Ԁ           F     x   x   :                   E  T   @  
 
-                                                                  F           Ԁ           F     x   x   :                   E  T =  @  
+                                                                  F           Ԁ           F     x   x   :                   E  T   @  
 
-                                                                   F           Ԁ           F   - \   \                   E  8 8  @  
+                                                                   F           Ԁ           F   - \   \                   E  8 #  @  
 
  $    # 
   #  
@@ -678,7 +680,7 @@
  $    # 
   #  
   
-    F   d |   |                    E  X >  @  
+    F   d |   |                    E  X )  @  
 
  D   < ) 
   /   
@@ -686,43 +688,43 @@
   
   0    
   
-    G     x   x   :                   E  T 9  @  
+    G     x   x   :                   E  T   @  
 
-                                                                  G           Ԁ           G     x   x   :                   E  T ?  @  
+                                                                  G           Ԁ           G     x   x   :                   E  T   @  
 
-                                                                   G           Ԁ           H     x   x   :                   E  T :  @  
+                                                                   G           Ԁ           H     x   x   :                   E  T   @  
 
-                                                                  H           Ԁ           H     x   x   :                    E  T @  @  
+                                                                  H           Ԁ           H     x   x   :                    E  T   @  
 
                                                                    H           Ԁ           H   5 \   \               @    E  8 $  @  
 
  $    $ 
   $  
   
-    H    d   d               0    E  @ A  @  
+    H    d   d               0    E  @ *  @  
 
  ,   $ *  
   1    
   
-    H    \   \                   E  8 ;  @  
+    H    \   \                   E  8 $  @  
 
  $    $ 
   $  
   
-    I     x   x   :                   E  T <  @  
+    I     x   x   :                   E  T   @  
 
-                                                                  I           Ԁ           I     x   x   :               @    E  T B  @  
+                                                                  I           Ԁ           I     x   x   :               @    E  T   @  
 
-                                                                   I           Ԁ           J     x   x   :                   E  T =  @  
+                                                                   I           Ԁ           J     x   x   :                   E  T   @  
 
-                                                                  J           Ԁ           J     x   x   :               P    E  T C  @  
+                                                                  J           Ԁ           J     x   x   :               P    E  T   @  
 
-                                                                   J           Ԁ           J   \ d   d               `    E  @ D  @  
+                                                                   J           Ԁ           J   \ d   d               `    E  @ +  @  
 
  ,   $ +  
   2    
   
-    J    \   \                    E  8 >  @  
+    J    \   \                    E  8 %  @  
 
  $    % 
   %  
@@ -732,43 +734,43 @@
  $    % 
   %  
   
-    K     x   x   :                   E  T ?  @  
+    K     x   x   :                   E  T   @  
 
-                                                                  K           Ԁ           K     x   x   :               p    E  T E  @  
+                                                                  K           Ԁ           K     x   x   :               p    E  T   @  
 
-                                                                   K           Ԁ           K   @ \   \                   E  8 F  @  
+                                                                   K           Ԁ           K   @ \   \                   E  8 ,  @  
 
  $    , 
   3   
 
-    L     x   x   :                    E  T @  @  
+    L     x   x   :                    E  T   @  
 
-                                                                  L           Ԁ           L     x   x   :                   E  T G  @  
+                                                                  L           Ԁ           L     x   x   :                   E  T   @  
 
                                                                    L           Ԁ           L   ; \   \               `    E  8 &  @  
 
  $    & 
   &  
   
-    L   . \   \               0    E  8 A  @  
+    L   . \   \               0    E  8 &  @  
 
  $    & 
   &  
   
-    L    d   d                   E  @ H  @  
+    L    d   d                   E  @ -  @  
 
  ,   $ -  
   4    
   
-    M     x   x   :               @    E  T B  @  
+    M     x   x   :               @    E  T   @  
 
-                                                                  M           Ԁ           M     x   x   :                   E  T I  @  
+                                                                  M           Ԁ           M     x   x   :                   E  T   @  
 
-                                                                   M           Ԁ           N     x   x   :               P    E  T C  @  
+                                                                   M           Ԁ           N     x   x   :               P    E  T   @  
 
-                                                                  N           Ԁ           N     x   x   :                   E  T J  @  
+                                                                  N           Ԁ           N     x   x   :                   E  T   @  
 
-                                                                   N           Ԁ           N     d   d                   E  @ K  @  
+                                                                   N           Ԁ           N     d   d                   E  @ .  @  
 
  ,   $ .  
   5    
@@ -778,20 +780,20 @@
  $    ' 
   '  
   
-    N   - \   \               `    E  8 D  @  
+    N   - \   \               `    E  8 '  @  
 
  $    ' 
   '  
   
-    O     x   x   :               p    E  T E  @  
+    O     x   x   :               p    E  T   @  
 
-                                                                  O           Ԁ           O     x   x   :                   E  T L  @  
+                                                                  O           Ԁ           O     x   x   :                   E  T   @  
 
-                                                                   O           Ԁ           P     x   x   :                   E  T F  @  
+                                                                   O           Ԁ           P     x   x   :                   E  T   @  
 
-                                                                  P           Ԁ           P     x   x   :                   E  T M  @  
+                                                                  P           Ԁ           P     x   x   :                   E  T   @  
 
-                                                                   P           Ԁ           P    d   d                   E  @ G  @  
+                                                                   P           Ԁ           P    d   d                   E  @ (  @  
 
  ,   $ (  
   (  
@@ -803,7 +805,7 @@
   (  
   
   
-    P   {I |   |                    E  X N  @  
+    P   {I |   |                    E  X /  @  
 
  D   < / 
   6   
@@ -811,15 +813,15 @@
   
   7    
   
-    Q     x   x   :                   E  T H  @  
+    Q     x   x   :                   E  T   @  
 
-                                                                  Q           Ԁ           Q     x   x   :                   E  T O  @  
+                                                                  Q           Ԁ           Q     x   x   :                   E  T   @  
 
-                                                                   Q           Ԁ           R     x   x   :                   E  T I  @  
+                                                                   Q           Ԁ           R     x   x   :                   E  T    @  
 
-                                                                   R           Ԁ           R     x   x   :                    E  T P  @  
+                                                                   R           Ԁ           R     x   x   :                    E  T    @  
 
-                                                                    R           Ԁ           R   C d   d               0    E  @ Q  @  
+                                                                    R           Ԁ           R   C d   d               0    E  @ 0  @  
 
  ,   $ 0  
   8    
@@ -829,20 +831,20 @@
  ,   $ )  
   )    
   
-    R    d   d                   E  @ J  @  
+    R    d   d                   E  @ )  @  
 
  ,   $ )  
   )    
   
-    S     x   x   :                   E  T K  @  
+    S     x   x   :                   E  T !  @  
 
-      !                                                            S           Ԁ           S     x   x   :               @    E  T R  @  
+      !                                                            S           Ԁ           S     x   x   :               @    E  T !  @  
 
-       !                                                            S           Ԁ           T     x   x   :                   E  T L  @  
+       !                                                            S           Ԁ           T     x   x   :                   E  T "  @  
 
-      "                                                            T           Ԁ           T     x   x   :               P    E  T S  @  
+      "                                                            T           Ԁ           T     x   x   :               P    E  T "  @  
 
-       "                                                            T           Ԁ           T    d   d                   E  @ M  @  
+       "                                                            T           Ԁ           T    d   d                   E  @ *  @  
 
  ,   $ *  
   *    
@@ -852,30 +854,30 @@
  ,   $ *  
   *    
   
-    T    d   d               `    E  @ T  @  
+    T    d   d               `    E  @ 1  @  
 
  ,   $ 1  
   9    
   
-    U     x   x   :                    E  T N  @  
+    U     x   x   :                    E  T #  @  
 
-      #                                                            U           Ԁ           U     x   x   :               p    E  T U  @  
+      #                                                            U           Ԁ           U     x   x   :               p    E  T #  @  
 
-       #                                                            U           Ԁ           U    \   \                   E  8 V  @  
+       #                                                            U           Ԁ           U    \   \                   E  8 2  @  
 
  $    2 
   :   
 
-    V     x   x   :                   E  T O  @  
+    V     x   x   :                   E  T $  @  
 
-      $                                                            V           Ԁ           V     x   x   :                   E  T W  @  
+      $                                                            V           Ԁ           V     x   x   :                   E  T $  @  
 
-       $                                                            V           Ԁ           V   Q d   d                   E  @ X  @  
+       $                                                            V           Ԁ           V   Q d   d                   E  @ 3  @  
 
  ,   $ 3  
   ;    
   
-    V   G d   d                    E  @ P  @  
+    V   G d   d                    E  @ +  @  
 
  ,   $ +  
   +    
@@ -885,38 +887,38 @@
  ,   $ +  
   +    
   
-    W     x   x   :               0    E  T Q  @  
+    W     x   x   :               0    E  T %  @  
 
-      %                                                            W           Ԁ           W     x   x   :                   E  T Y  @  
+      %                                                            W           Ԁ           W     x   x   :                   E  T %  @  
 
-       %                                                            W           Ԁ           X     x   x   :               @    E  T R  @  
+       %                                                            W           Ԁ           X     x   x   :               @    E  T &  @  
 
-      &                                                            X           Ԁ           X     x   x   :                   E  T Z  @  
+      &                                                            X           Ԁ           X     x   x   :                   E  T &  @  
 
        &                                                            X           Ԁ           X    d   d                   E  @ ,  @  
 
  ,   $ ,  
   ,    
   
-    X   " d   d                   E  @ [  @  
+    X   " d   d                   E  @ 4  @  
 
  ,   $ 4  
   <    
   
-    X   6 d   d               P    E  @ S  @  
+    X   6 d   d               P    E  @ ,  @  
 
  ,   $ ,  
   ,    
   
-    Y     x   x   :               `    E  T T  @  
+    Y     x   x   :               `    E  T '  @  
 
-      '                                                            Y           Ԁ           Y     x   x   :                   E  T \  @  
+      '                                                            Y           Ԁ           Y     x   x   :                   E  T '  @  
 
-       '                                                            Y           Ԁ           Z     x   x   :               p    E  T U  @  
+       '                                                            Y           Ԁ           Z     x   x   :               p    E  T (  @  
 
-      (                                                            Z           Ԁ           Z     x   x   :                   E  T ]  @  
+      (                                                            Z           Ԁ           Z     x   x   :                   E  T (  @  
 
-       (                                                            Z           Ԁ           Z     d   d                    E  @ ^  @  
+       (                                                            Z           Ԁ           Z     d   d                    E  @ 5  @  
 
  ,   $ 5  
   =    
@@ -926,71 +928,71 @@
  ,   $ -  
   -    
   
-    Z   j d   d                   E  @ V  @  
+    Z   j d   d                   E  @ -  @  
 
  ,   $ -  
   -    
   
-    [     x   x   :                   E  T W  @  
+    [     x   x   :                   E  T )  @  
 
-      )                                                            [           Ԁ           [     x   x   :                   E  T _  @  
+      )                                                            [           Ԁ           [     x   x   :                   E  T )  @  
 
-       )                                                            [           Ԁ           \     x   x   :                   E  T X  @  
+       )                                                            [           Ԁ           \     x   x   :                   E  T *  @  
 
-      *                                                            \           Ԁ           \     x   x   :                    E  T `  @  
+      *                                                            \           Ԁ           \     x   x   :                    E  T *  @  
 
        *                                                            \           Ԁ           \   Q  d   d                   E  @ .  @  
 
  ,   $ .  
   .    
   
-    \     d   d                   E  @ Y  @  
+    \     d   d                   E  @ .  @  
 
  ,   $ .  
   .    
   
-    \   R d   d               0    E  @ a  @  
+    \   R d   d               0    E  @ 6  @  
 
  ,   $ 6  
   >    
   
-    ]     x   x   :                   E  T Z  @  
+    ]     x   x   :                   E  T +  @  
 
-      +                                                            ]           Ԁ           ]     x   x   :               @    E  T b  @  
+      +                                                            ]           Ԁ           ]     x   x   :               @    E  T +  @  
 
-       +                                                            ]           Ԁ           ^     x   x   :                   E  T [  @  
+       +                                                            ]           Ԁ           ^     x   x   :                   E  T ,  @  
 
-      ,                                                            ^           Ԁ           ^     x   x   :               P    E  T c  @  
+      ,                                                            ^           Ԁ           ^     x   x   :               P    E  T ,  @  
 
        ,                                                            ^           Ԁ           ^     d   d                   E  @ /  @  
 
  ,   $ /  
   /    
   
-    ^   I d   d               `    E  @ d  @  
+    ^   I d   d               `    E  @ 7  @  
 
  ,   $ 7  
   ?    
   
-    ^    d   d                   E  @ \  @  
+    ^    d   d                   E  @ /  @  
 
  ,   $ /  
   /    
   
-    _     x   x   :                   E  T ]  @  
+    _     x   x   :                   E  T -  @  
 
-      -                                                            _           Ԁ           _     x   x   :               p    E  T e  @  
+      -                                                            _           Ԁ           _     x   x   :               p    E  T -  @  
 
-       -                                                            _           Ԁ           `     x   x   :                    E  T ^  @  
+       -                                                            _           Ԁ           `     x   x   :                    E  T .  @  
 
-      .                                                            `           Ԁ           `     x   x   :                   E  T f  @  
+      .                                                            `           Ԁ           `     x   x   :                   E  T .  @  
 
-       .                                                            `           Ԁ           `   d  d   d                   E  @ _  @  
+       .                                                            `           Ԁ           `   d  d   d                   E  @ 0  @  
 
  ,   $ 0  
   0    
   
-    `   F3 d   d                   E  @ g  @  
+    `   F3 d   d                   E  @ 8  @  
 
  ,   $ 8  
   @    
@@ -1000,39 +1002,39 @@
  ,   $ 0  
   0    
   
-    a     x   x   :                    E  T `  @  
+    a     x   x   :                    E  T /  @  
 
-      /                                                            a           Ԁ           a     x   x   :                   E  T h  @  
+      /                                                            a           Ԁ           a     x   x   :                   E  T /  @  
 
-       /                                                            a           Ԁ           b     x   x   :               0    E  T a  @  
+       /                                                            a           Ԁ           b     x   x   :               0    E  T 0  @  
 
-      0                                                            b           Ԁ           b     x   x   :                   E  T i  @  
+      0                                                            b           Ԁ           b     x   x   :                   E  T 0  @  
 
        0                                                            b           Ԁ           b    d   d                   E  @ 1  @  
 
  ,   $ 1  
   1    
   
-    b   p! d   d               @    E  @ b  @  
+    b   p! d   d               @    E  @ 1  @  
 
  ,   $ 1  
   1    
   
-    b   T d   d                   E  @ j  @  
+    b   T d   d                   E  @ 9  @  
 
  ,   $ 9  
   A    
   
-    c     x   x   :               P    E  T c  @  
+    c     x   x   :               P    E  T 1  @  
 
-      1                                                            c           Ԁ           c     x   x   :                   E  T k  @  
+      1                                                            c           Ԁ           c     x   x   :                   E  T 1  @  
 
-       1                                                            c           Ԁ           d     x   x   :               `    E  T d  @  
+       1                                                            c           Ԁ           d     x   x   :               `    E  T 2  @  
 
-      2                                                            d           Ԁ           d     x   x   :                   E  T l  @  
+      2                                                            d           Ԁ           d     x   x   :                   E  T 2  @  
 
        2                                                            d           Ԁ           d   
- d   d               p    E  @ e  @  
+ d   d               p    E  @ 2  @  
 
  ,   $ 2  
   2    
@@ -1042,20 +1044,20 @@
  ,   $ 2  
   2    
   
-    d    d   d                   E  @ m  @  
+    d    d   d                   E  @ :  @  
 
  ,   $ :  
   B    
   
-    e     x   x   :                   E  T f  @  
+    e     x   x   :                   E  T 3  @  
 
-      3                                                            e           Ԁ           e     x   x   :                    E  T n  @  
+      3                                                            e           Ԁ           e     x   x   :                    E  T 3  @  
 
-       3                                                            e           Ԁ           f     x   x   :                   E  T g  @  
+       3                                                            e           Ԁ           f     x   x   :                   E  T 4  @  
 
-      4                                                            f           Ԁ           f     x   x   :                   E  T o  @  
+      4                                                            f           Ԁ           f     x   x   :                   E  T 4  @  
 
-       4                                                            f           Ԁ           f   * d   d                   E  @ h  @  
+       4                                                            f           Ԁ           f   * d   d                   E  @ 3  @  
 
  ,   $ 3  
   3    
@@ -1065,66 +1067,66 @@
  ,   $ 3  
   3    
   
-    f    d   d                    E  @ p  @  
+    f    d   d                    E  @ ;  @  
 
  ,   $ ;  
   C    
   
-    g     x   x   :                   E  T i  @  
+    g     x   x   :                   E  T 5  @  
 
-      5                                                            g           Ԁ           g     x   x   :               0    E  T q  @  
+      5                                                            g           Ԁ           g     x   x   :               0    E  T 5  @  
 
-       5                                                            g           Ԁ           h     x   x   :                   E  T j  @  
+       5                                                            g           Ԁ           h     x   x   :                   E  T 6  @  
 
-      6                                                            h           Ԁ           h     x   x   :               @    E  T r  @  
+      6                                                            h           Ԁ           h     x   x   :               @    E  T 6  @  
 
        6                                                            h           Ԁ           h   d  d   d               @    E  @ 4  @  
 
  ,   $ 4  
   4    
   
-    h    d   d               P    E  @ s  @  
+    h    d   d               P    E  @ <  @  
 
  ,   $ <  
   D    
   
-    h   	 d   d                   E  @ k  @  
+    h   	 d   d                   E  @ 4  @  
 
  ,   $ 4  
   4    
   
-    i     x   x   :                   E  T l  @  
+    i     x   x   :                   E  T 7  @  
 
-      7                                                            i           Ԁ           i     x   x   :               `    E  T t  @  
+      7                                                            i           Ԁ           i     x   x   :               `    E  T 7  @  
 
-       7                                                            i           Ԁ           j     x   x   :                   E  T m  @  
+       7                                                            i           Ԁ           j     x   x   :                   E  T 8  @  
 
-      8                                                            j           Ԁ           j     x   x   :               p    E  T u  @  
+      8                                                            j           Ԁ           j     x   x   :               p    E  T 8  @  
 
        8                                                            j           Ԁ           j    d   d               P    E  @ 5  @  
 
  ,   $ 5  
   5    
   
-    j   =j d   d                    E  @ n  @  
+    j   =j d   d                    E  @ 5  @  
 
  ,   $ 5  
   5    
   
-    j    d   d                   E  @ v  @  
+    j    d   d                   E  @ =  @  
 
  ,   $ =  
   E    
   
-    k     x   x   :                   E  T o  @  
+    k     x   x   :                   E  T 9  @  
 
-      9                                                            k           Ԁ           k     x   x   :                   E  T w  @  
+      9                                                            k           Ԁ           k     x   x   :                   E  T 9  @  
 
-       9                                                            k           Ԁ           l     x   x   :                    E  T p  @  
+       9                                                            k           Ԁ           l     x   x   :                    E  T :  @  
 
-      :                                                            l           Ԁ           l     x   x   :                   E  T x  @  
+      :                                                            l           Ԁ           l     x   x   :                   E  T :  @  
 
-       :                                                            l           Ԁ           l    d   d               0    E  @ q  @  
+       :                                                            l           Ԁ           l    d   d               0    E  @ 6  @  
 
  ,   $ 6  
   6    
@@ -1135,25 +1137,25 @@
  ,   $ 6  
   6    
   
-    l   0 d   d                   E  @ y  @  
+    l   0 d   d                   E  @ >  @  
 
  ,   $ >  
   F    
   
-    m     x   x   :               @    E  T r  @  
+    m     x   x   :               @    E  T ;  @  
 
-      ;                                                            m           Ԁ           m     x   x   :                   E  T z  @  
+      ;                                                            m           Ԁ           m     x   x   :                   E  T ;  @  
 
-       ;                                                            m           Ԁ           n     x   x   :               P    E  T s  @  
+       ;                                                            m           Ԁ           n     x   x   :               P    E  T <  @  
 
-      <                                                            n           Ԁ           n     x   x   :                   E  T {  @  
+      <                                                            n           Ԁ           n     x   x   :                   E  T <  @  
 
-       <                                                            n           Ԁ           n   M  d   d                   E  @ |  @  
+       <                                                            n           Ԁ           n   M  d   d                   E  @ ?  @  
 
  ,   $ ?  
   G    
   
-    n   X d   d               `    E  @ t  @  
+    n   X d   d               `    E  @ 7  @  
 
  ,   $ 7  
   7    
@@ -1163,20 +1165,20 @@
  ,   $ 7  
   7    
   
-    o     x   x   :               p    E  T u  @  
+    o     x   x   :               p    E  T =  @  
 
-      =                                                            o           Ԁ           o     x   x   :                   E  T }  @  
+      =                                                            o           Ԁ           o     x   x   :                   E  T =  @  
 
-       =                                                            o           Ԁ           p     x   x   :                   E  T v  @  
+       =                                                            o           Ԁ           p     x   x   :                   E  T >  @  
 
-      >                                                            p           Ԁ           p     x   x   :                    E  T ~  @  
+      >                                                            p           Ԁ           p     x   x   :                    E  T >  @  
 
-       >                                                            p           Ԁ           p     d   d                   E  @ w  @  
+       >                                                            p           Ԁ           p     d   d                   E  @ 8  @  
 
  ,   $ 8  
   8    
   
-    p   . d   d                   E  @   @  
+    p   . d   d                   E  @ @  @  
 
  ,   $ @  
   H    
@@ -1186,15 +1188,15 @@
  ,   $ 8  
   8    
   
-    q     x   x   :                   E  T x  @  
+    q     x   x   :                   E  T ?  @  
 
-      ?                                                            q           Ԁ           q     x   x   :                    E  T   @  
+      ?                                                            q           Ԁ           q     x   x   :                    E  T ?  @  
 
-       ?                                                            q           Ԁ           r     x   x   :                   E  T y  @  
+       ?                                                            q           Ԁ           r     x   x   :                   E  T @  @  
 
-      @                                                            r           Ԁ           r     x   x   :               0    E  T   @  
+      @                                                            r           Ԁ           r     x   x   :               0    E  T @  @  
 
-       @                                                            r           Ԁ           r   D d   d               @    E  @   @  
+       @                                                            r           Ԁ           r   D d   d               @    E  @ A  @  
 
  ,   $ A  
   I    
@@ -1204,25 +1206,25 @@
  ,   $ 9  
   9    
   
-    r   * d   d                   E  @ z  @  
+    r   * d   d                   E  @ 9  @  
 
  ,   $ 9  
   9    
   
-    s     x   x   :                   E  T {  @  
+    s     x   x   :                   E  T A  @  
 
-      A                                                            s           Ԁ           s     x   x   :               P    E  T   @  
+      A                                                            s           Ԁ           s     x   x   :               P    E  T A  @  
 
-       A                                                            s           Ԁ           t     x   x   :                   E  T |  @  
+       A                                                            s           Ԁ           t     x   x   :                   E  T B  @  
 
-      B                                                            t           Ԁ           t     x   x   :               `    E  T   @  
+      B                                                            t           Ԁ           t     x   x   :               `    E  T B  @  
 
-       B                                                            t           Ԁ           t    d   d               p    E  @   @  
+       B                                                            t           Ԁ           t    d   d               p    E  @ B  @  
 
  ,   $ B  
   J    
   
-    t    d   d                   E  @ }  @  
+    t    d   d                   E  @ :  @  
 
  ,   $ :  
   :    
@@ -1232,20 +1234,20 @@
  ,   $ :  
   :    
   
-    u     x   x   :                    E  T ~  @  
+    u     x   x   :                    E  T C  @  
 
-      C                                                            u           Ԁ           u     x   x   :                   E  T   @  
+      C                                                            u           Ԁ           u     x   x   :                   E  T C  @  
 
-       C                                                            u           Ԁ           v     x   x   :                   E  T   @  
+       C                                                            u           Ԁ           v     x   x   :                   E  T D  @  
 
-      D                                                            v           Ԁ           v     x   x   :                   E  T   @  
+      D                                                            v           Ԁ           v     x   x   :                   E  T D  @  
 
-       D                                                            v           Ԁ           v   ף d   d                    E  @   @  
+       D                                                            v           Ԁ           v   ף d   d                    E  @ ;  @  
 
  ,   $ ;  
   ;    
   
-    v   r d   d                   E  @   @  
+    v   r d   d                   E  @ C  @  
 
  ,   $ C  
   K    
@@ -1255,43 +1257,43 @@
  ,   $ ;  
   ;    
   
-    w     x   x   :               0    E  T   @  
+    w     x   x   :               0    E  T E  @  
 
-      E                                                            w           Ԁ           w     x   x   :                   E  T   @  
+      E                                                            w           Ԁ           w     x   x   :                   E  T E  @  
 
-       E                                                            w           Ԁ           x     x   x   :               @    E  T   @  
+       E                                                            w           Ԁ           x     x   x   :               @    E  T F  @  
 
-      F                                                            x           Ԁ           x     x   x   :                   E  T   @  
+      F                                                            x           Ԁ           x     x   x   :                   E  T F  @  
 
        F                                                            x           Ԁ           x   ^ d   d                   E  @ <  @  
 
  ,   $ <  
   <    
   
-    x   3 d   d               P    E  @   @  
+    x   3 d   d               P    E  @ <  @  
 
  ,   $ <  
   <    
   
-    x   n* d   d                   E  @   @  
+    x   n* d   d                   E  @ D  @  
 
  ,   $ D  
   L    
   
-    y     x   x   :               `    E  T   @  
+    y     x   x   :               `    E  T G  @  
 
-      G                                                            y           Ԁ           y     x   x   :                   E  T   @  
+      G                                                            y           Ԁ           y     x   x   :                   E  T G  @  
 
-       G                                                            y           Ԁ           z     x   x   :               p    E  T   @  
+       G                                                            y           Ԁ           z     x   x   :               p    E  T H  @  
 
-      H                                                            z           Ԁ           z     x   x   :                   E  T   @  
+      H                                                            z           Ԁ           z     x   x   :                   E  T H  @  
 
        H                                                            z           Ԁ           z   * d   d                   E  @ =  @  
 
  ,   $ =  
   =    
   
-    z   L d   d                	    E  @   @  
+    z   L d   d                	    E  @ E  @  
 
  ,   $ E  
   M    
@@ -1301,7 +1303,7 @@
  ,   $ >  
   >    
   
-    |   X d   d               	    E  @   @  
+    |   X d   d               	    E  @ F  @  
 
  ,   $ F  
   N    
@@ -1311,7 +1313,7 @@
  ,   $ ?  
   ?    
   
-    ~   k> d   d                	    E  @   @  
+    ~   k> d   d                	    E  @ G  @  
 
  ,   $ G  
   O    
@@ -1322,54 +1324,54 @@
 
        >  @   @   :               0	           
      
-       B        Ԁ              cH  x   x   :                    E  T   ?  
+       B        Ԁ              cH  x   x   :                    E  T M  ?  
 
       M                                                               mH        Ԁ              KL  @   @               @	           
 
        Q  @   @   :               0           
      
-       R        Ԁ              U  x   x   :               P	    E  T   @  
+       R        Ԁ              U  x   x   :               P	    E  T I  @  
 
        M                                                               }[        Ԁ              l  @   @               @           
 
-       p        Ԁ              u  x   x   :               P    E  T   ?  
+       p        Ԁ              u  x   x   :               P    E  T I  ?  
 
        M                                                                       Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T N  ?  
 
       N                                                               w
-        Ԁ                x   x   :               `	    E  T   @  
+        Ԁ                x   x   :               `	    E  T J  @  
 
-       N                                                                       Ԁ                x   x   :               p    E  T   ?  
+       N                                                                       Ԁ                x   x   :               p    E  T J  ?  
 
        N                                                               } d   d                   E  @ @  @  
 
  ,   $ @  
   @    
   
-       8 d   d               p	    E  @   @  
+       8 d   d               p	    E  @ H  @  
 
  ,   $ H  
   P  
   
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T O  ?  
 
       O                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T K  @  
 
-       O                                                                       Ԁ              "  x   x   :                   E  T   ?  
+       O                                                                       Ԁ              "  x   x   :                   E  T K  ?  
 
        O                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T P  ?  
 
       P                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T L  @  
 
-       P                                                                       Ԁ                x   x   :                   E  T   ?  
+       P                                                                       Ԁ                x   x   :                   E  T L  ?  
 
-       P                                                               R d   d               	    E  @   @  
+       P                                                               R d   d               	    E  @ I  @  
 
  ,   $ I  
   Q  
@@ -1384,22 +1386,22 @@
   B    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T Q  ?  
 
       Q                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T M  @  
 
-       Q                                                                       Ԁ                x   x   :                   E  T   ?  
+       Q                                                                       Ԁ                x   x   :                   E  T M  ?  
 
        Q                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T R  ?  
 
       R                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T N  @  
 
-       R                                                                       Ԁ              F  x   x   :                   E  T   ?  
+       R                                                                       Ԁ              F  x   x   :                   E  T N  ?  
 
-       R                                                                d   d               	    E  @   @  
+       R                                                                d   d               	    E  @ J  @  
 
  ,   $ J  
   R  
@@ -1411,20 +1413,20 @@
   C    
   
                Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T S  ?  
 
       S                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T O  @  
 
-       S                                                                       Ԁ                x   x   :               @    E  T   ?  
+       S                                                                       Ԁ                x   x   :               @    E  T O  ?  
 
        S                                                                       Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T T  ?  
 
       T                                                               w
-        Ԁ                x   x   :               	    E  T   @  
+        Ԁ                x   x   :               	    E  T P  @  
 
-       T                                                                       Ԁ              6  x   x   :               `    E  T   ?  
+       T                                                                       Ԁ              6  x   x   :               `    E  T P  ?  
 
        T                                                                d   d               p    E  @ C  @  
 
@@ -1432,19 +1434,19 @@
   D    
   
         \   \                
-    E  8   @  
+    E  8 K  @  
 
  $    K 
   S  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T U  ?  
 
       U                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T Q  @  
 
-       U                                                                       Ԁ                x   x   :                   E  T   ?  
+       U                                                                       Ԁ                x   x   :                   E  T Q  ?  
 
        U                                                               qT  \   \                   E  8 D  @  
 
@@ -1452,17 +1454,17 @@
   E   
 
                Ԁ                \   \                
-    E  8   @  
+    E  8 L  @  
 
  $    L 
   T  
   
-         x   x   :                   E  T   ?  
+         x   x   :                   E  T V  ?  
 
       V                                                                       Ԁ              /  x   x   :               0
-    E  T   @  
+    E  T R  @  
 
-       V                                                                       Ԁ              T  x   x   :                   E  T   ?  
+       V                                                                       Ԁ              T  x   x   :                   E  T R  ?  
 
        V                                                               oG d   d                   E  @ E  @  
 
@@ -1470,22 +1472,22 @@
   F    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T W  ?  
 
       W                                                               w
         Ԁ                x   x   :               @
-    E  T   @  
+    E  T S  @  
 
-       W                                                                       Ԁ              r  x   x   :                   E  T   ?  
+       W                                                                       Ԁ              r  x   x   :                   E  T S  ?  
 
        W                                                                       Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T X  ?  
 
       X                                                               w
         Ԁ                x   x   :               P
-    E  T   @  
+    E  T T  @  
 
-       X                                                                       Ԁ              6  x   x   :                   E  T   ?  
+       X                                                                       Ԁ              6  x   x   :                   E  T T  ?  
 
        X                                                                d   d                    E  @ F  @  
 
@@ -1493,31 +1495,31 @@
   G    
   
         \   \               `
-    E  8   @  
+    E  8 M  @  
 
  $    M 
   U  
   
                Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T Y  ?  
 
       Y                                                               w
         Ԁ                x   x   :               p
-    E  T   @  
+    E  T U  @  
 
-       Y                                                                       Ԁ                x   x   :               @    E  T   ?  
+       Y                                                                       Ԁ                x   x   :               @    E  T U  ?  
 
        Y                                                                       Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T Z  ?  
 
       Z                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T V  @  
 
-       Z                                                                       Ԁ              J  x   x   :               `    E  T   ?  
+       Z                                                                       Ԁ              J  x   x   :               `    E  T V  ?  
 
        Z                                                                 \   \               
-    E  8   @  
+    E  8 N  @  
 
  $    N 
   V  
@@ -1531,25 +1533,25 @@
   I    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T [  ?  
 
       [                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T W  @  
 
-       [                                                                       Ԁ              N  x   x   :                   E  T   ?  
+       [                                                                       Ԁ              N  x   x   :                   E  T W  ?  
 
        [                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T \  ?  
 
       \                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T X  @  
 
-       \                                                                       Ԁ                x   x   :                   E  T   ?  
+       \                                                                       Ԁ                x   x   :                   E  T X  ?  
 
        \                                                               <d  \   \               
-    E  8   @  
+    E  8 O  @  
 
  $    O 
   W  
@@ -1560,22 +1562,22 @@
   J    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T ]  ?  
 
       ]                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T Y  @  
 
-       ]                                                                       Ԁ              &  x   x   :                   E  T   ?  
+       ]                                                                       Ԁ              &  x   x   :                   E  T Y  ?  
 
        ]                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T ^  ?  
 
       ^                                                               w
         Ԁ                x   x   :               
-    E  T   @  
+    E  T Z  @  
 
-       ^                                                                       Ԁ                x   x   :                    E  T   ?  
+       ^                                                                       Ԁ                x   x   :                    E  T Z  ?  
 
        ^                                                               I  d   d                   E  @ I  @  
 
@@ -1583,18 +1585,18 @@
   K    
   
         \   \               
-    E  8   @  
+    E  8 P  @  
 
  $    P 
   X  
   
                Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T _  ?  
 
       _                                                               w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T [  @  
 
-       _                                                                       Ԁ                x   x   :               0    E  T   ?  
+       _                                                                       Ԁ                x   x   :               0    E  T [  ?  
 
        _                                                               k \   \               @    E  8 J  @  
 
@@ -1602,14 +1604,14 @@
   L   
 
                Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T `  ?  
 
       `                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T \  @  
 
-       `                                                                       Ԁ                x   x   :               `    E  T   ?  
+       `                                                                       Ԁ                x   x   :               `    E  T \  ?  
 
-       `                                                               j \   \                    E  8   @  
+       `                                                               j \   \                    E  8 Q  @  
 
  $    Q 
   Y  
@@ -1620,46 +1622,46 @@
   M    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T a  ?  
 
       a                                                               w
-        Ԁ                x   x   :               0    E  T   @  
+        Ԁ                x   x   :               0    E  T ]  @  
 
-       a                                                                       Ԁ              c  x   x   :                   E  T   ?  
+       a                                                                       Ԁ              c  x   x   :                   E  T ]  ?  
 
        a                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T b  ?  
 
       b                                                               w
-        Ԁ                x   x   :               @    E  T   @  
+        Ԁ                x   x   :               @    E  T ^  @  
 
-       b                                                                       Ԁ                x   x   :                   E  T   ?  
+       b                                                                       Ԁ                x   x   :                   E  T ^  ?  
 
        b                                                               b7 d   d                   E  @ L  @  
 
  ,   $ L  
   N    
   
-        \   \               P    E  8   @  
+        \   \               P    E  8 R  @  
 
  $    R 
   Z  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T c  ?  
 
       c                                                               w
-        Ԁ                x   x   :               `    E  T   @  
+        Ԁ                x   x   :               `    E  T _  @  
 
-       c                                                                       Ԁ              7  x   x   :                   E  T   ?  
+       c                                                                       Ԁ              7  x   x   :                   E  T _  ?  
 
        c                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T d  ?  
 
       d                                                               w
-        Ԁ                x   x   :               p    E  T   @  
+        Ԁ                x   x   :               p    E  T `  @  
 
-       d                                                                       Ԁ                x   x   :                    E  T   ?  
+       d                                                                       Ԁ                x   x   :                    E  T `  ?  
 
        d                                                               s' |   |                   E  X M  @  
 
@@ -1669,28 +1671,28 @@
   
   P    
   
-         \   \                   E  8   @  
+         \   \                   E  8 S  @  
 
  $    S 
   [  
   
                Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T e  ?  
 
       e                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T a  @  
 
-       e                                                                       Ԁ              c  x   x   :               0    E  T   ?  
+       e                                                                       Ԁ              c  x   x   :               0    E  T a  ?  
 
        e                                                                       Ԁ              m
-  x   x   :               @    E  T   ?  
+  x   x   :               @    E  T f  ?  
 
       f                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T b  @  
 
-       f                                                                       Ԁ              #  x   x   :               P    E  T   ?  
+       f                                                                       Ԁ              #  x   x   :               P    E  T b  ?  
 
-       f                                                               ~  \   \                   E  8   @  
+       f                                                               ~  \   \                   E  8 T  @  
 
  $    T 
   \  
@@ -1701,38 +1703,38 @@
   Q    
   
                Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T g  ?  
 
       g                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T c  @  
 
-       g                                                                       Ԁ              o  x   x   :                   E  T   ?  
+       g                                                                       Ԁ              o  x   x   :                   E  T c  ?  
 
        g                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T h  ?  
 
       h                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T d  @  
 
-       h                                                                       Ԁ                x   x   :                   E  T   ?  
+       h                                                                       Ԁ                x   x   :                   E  T d  ?  
 
        h                                                               <  d   d                   E  @ O  @  
 
  ,   $ O  
   R    
   
-       Os \   \                   E  8   @  
+       Os \   \                   E  8 U  @  
 
  $    U 
   ]  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T i  ?  
 
       i                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T e  @  
 
-       i                                                                       Ԁ                x   x   :                   E  T   ?  
+       i                                                                       Ԁ                x   x   :                   E  T e  ?  
 
        i                                                                \   \                   E  8 P  @  
 
@@ -1740,40 +1742,40 @@
   S   
 
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T j  ?  
 
       j                                                               w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T f  @  
 
-       j                                                                       Ԁ              7  x   x   :                	    E  T   ?  
+       j                                                                       Ԁ              7  x   x   :                	    E  T f  ?  
 
        j                                                                d   d               	    E  @ Q  @  
 
  ,   $ Q  
   T    
   
-       + \   \                   E  8   @  
+       + \   \                   E  8 V  @  
 
  $    V 
   ^  
   
                Ԁ              m
-  x   x   :                	    E  T   ?  
+  x   x   :                	    E  T k  ?  
 
       k                                                               w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T g  @  
 
-       k                                                                       Ԁ                x   x   :               0	    E  T   ?  
+       k                                                                       Ԁ                x   x   :               0	    E  T g  ?  
 
        k                                                                       Ԁ              m
-  x   x   :               @	    E  T   ?  
+  x   x   :               @	    E  T l  ?  
 
       l                                                               w
-        Ԁ                x   x   :               0    E  T   @  
+        Ԁ                x   x   :               0    E  T h  @  
 
-       l                                                                       Ԁ                x   x   :               P	    E  T   ?  
+       l                                                                       Ԁ                x   x   :               P	    E  T h  ?  
 
-       l                                                               4- \   \               @    E  8   @  
+       l                                                               4- \   \               @    E  8 W  @  
 
  $    W 
   _  
@@ -1784,20 +1786,20 @@
   U    
   
                Ԁ              m
-  x   x   :               p	    E  T   ?  
+  x   x   :               p	    E  T m  ?  
 
       m                                                               w
-        Ԁ                x   x   :               P    E  T   @  
+        Ԁ                x   x   :               P    E  T i  @  
 
-       m                                                                       Ԁ              7  x   x   :               	    E  T   ?  
+       m                                                                       Ԁ              7  x   x   :               	    E  T i  ?  
 
        m                                                                       Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T n  ?  
 
       n                                                               w
-        Ԁ                x   x   :               `    E  T   @  
+        Ԁ                x   x   :               `    E  T j  @  
 
-       n                                                                       Ԁ                x   x   :               	    E  T   ?  
+       n                                                                       Ԁ                x   x   :               	    E  T j  ?  
 
        n                                                               E |   |               	    E  X S  @  
 
@@ -1807,28 +1809,28 @@
   
   W    
   
-       _ \   \               p    E  8   @  
+       _ \   \               p    E  8 X  @  
 
  $    X 
   `  
   
                Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T o  ?  
 
       o                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T k  @  
 
-       o                                                                       Ԁ                x   x   :               	    E  T   ?  
+       o                                                                       Ԁ                x   x   :               	    E  T k  ?  
 
        o                                                                       Ԁ              m
-  x   x   :               	    E  T   ?  
+  x   x   :               	    E  T p  ?  
 
       p                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T l  @  
 
-       p                                                                       Ԁ              c  x   x   :               	    E  T   ?  
+       p                                                                       Ԁ              c  x   x   :               	    E  T l  ?  
 
-       p                                                               E \   \                   E  8   @  
+       p                                                               E \   \                   E  8 Y  @  
 
  $    Y 
   a  
@@ -1841,23 +1843,23 @@
   
                Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
       q                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T m  @  
 
        q                                                                       Ԁ              w  x   x   :                
-    E  T   ?  
+    E  T m  ?  
 
        q                                                                       Ԁ              m
   x   x   :               0
-    E  T   ?  
+    E  T r  ?  
 
       r                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T n  @  
 
        r                                                                       Ԁ                x   x   :               @
-    E  T   ?  
+    E  T n  ?  
 
        r                                                                d   d               P
     E  @ U  @  
@@ -1865,20 +1867,20 @@
  ,   $ U  
   Y    
   
-       Mg \   \                   E  8   @  
+       Mg \   \                   E  8 Z  @  
 
  $    Z 
   b  
   
                Ԁ              m
   x   x   :               `
-    E  T   ?  
+    E  T s  ?  
 
       s                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T o  @  
 
        s                                                                       Ԁ              _  x   x   :               p
-    E  T   ?  
+    E  T o  ?  
 
        s                                                               f \   \               
     E  8 V  @  
@@ -1888,15 +1890,15 @@
 
                Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T t  ?  
 
       t                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T p  @  
 
        t                                                                       Ԁ              O  x   x   :               
-    E  T   ?  
+    E  T p  ?  
 
-       t                                                                \   \                    E  8   @  
+       t                                                                \   \                    E  8 [  @  
 
  $    [ 
   c  
@@ -1909,25 +1911,25 @@
   
                Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T u  ?  
 
       u                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T q  @  
 
        u                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
        u                                                                       Ԁ              m
   x   x   :               
-    E  T   ?  
+    E  T v  ?  
 
       v                                                               w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T r  @  
 
        v                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T r  ?  
 
-       v                                                               L \   \               0    E  8   @  
+       v                                                               L \   \               0    E  8 \  @  
 
  $    \ 
   d  
@@ -1938,20 +1940,20 @@
   \    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T w  ?  
 
       w                                                               w
-        Ԁ                x   x   :               @    E  T   @  
+        Ԁ                x   x   :               @    E  T s  @  
 
-       w                                                                       Ԁ              G  x   x   :                    E  T   ?  
+       w                                                                       Ԁ              G  x   x   :                    E  T s  ?  
 
        w                                                                       Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T x  ?  
 
       x                                                               w
-        Ԁ                x   x   :               P    E  T   @  
+        Ԁ                x   x   :               P    E  T t  @  
 
-       x                                                                       Ԁ                x   x   :               @    E  T   ?  
+       x                                                                       Ԁ                x   x   :               @    E  T t  ?  
 
        x                                                               h=  |   |               P    E  X Y  @  
 
@@ -1961,55 +1963,55 @@
   
   ^    
   
-        \   \               `    E  8   @  
+        \   \               `    E  8 ]  @  
 
  $    ] 
   e  
   
                Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T y  ?  
 
       y                                                               w
-        Ԁ                x   x   :               p    E  T   @  
+        Ԁ                x   x   :               p    E  T u  @  
 
-       y                                                                       Ԁ              K  x   x   :               p    E  T   ?  
+       y                                                                       Ԁ              K  x   x   :               p    E  T u  ?  
 
        y                                                                       Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T z  ?  
 
       z                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T v  @  
 
-       z                                                                       Ԁ                x   x   :                   E  T   ?  
+       z                                                                       Ԁ                x   x   :                   E  T v  ?  
 
        z                                                               UZ d   d                   E  @ Z  @  
 
  ,   $ Z  
   _    
   
-        \   \                   E  8   @  
+        \   \                   E  8 ^  @  
 
  $    ^ 
   f  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T {  ?  
 
       {                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T w  @  
 
-       {                                                                       Ԁ                x   x   :                   E  T   ?  
+       {                                                                       Ԁ                x   x   :                   E  T w  ?  
 
-       {                                                                       Ԁ                \   \                   E  8   @  
+       {                                                                       Ԁ                \   \                   E  8 _  @  
 
  $    _ 
   g  
   
-       +  x   x   :                   E  T   ?  
+       +  x   x   :                   E  T |  ?  
 
-      |                                                               5        Ԁ                x   x   :                   E  T   @  
+      |                                                               5        Ԁ                x   x   :                   E  T x  @  
 
-       |                                                               S        Ԁ              ]   x   x   :                   E  T   ?  
+       |                                                               S        Ԁ              ]   x   x   :                   E  T x  ?  
 
        |                                                               Y d   d                   E  @ [  @  
 
@@ -2017,12 +2019,12 @@
   `    
   
                Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T }  ?  
 
       }                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T y  @  
 
-       }                                                                       Ԁ              #  x   x   :                   E  T   ?  
+       }                                                                       Ԁ              #  x   x   :                   E  T y  ?  
 
        }                                                                \   \                    E  8 \  @  
 
@@ -2030,64 +2032,64 @@
   a   
 
                Ԁ              m
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T ~  ?  
 
       ~                                                               w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T z  @  
 
-       ~                                                                       Ԁ                x   x   :               @    E  T   ?  
+       ~                                                                       Ԁ                x   x   :               @    E  T z  ?  
 
        ~                                                               y d   d               P    E  @ ]  @  
 
  ,   $ ]  
   b    
   
-       T \   \                   E  8   @  
+       T \   \                   E  8 `  @  
 
  $    ` 
   h  
   
                Ԁ              m
-  x   x   :               `    E  T   ?  
+  x   x   :               `    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T {  @  
 
-                                                                              Ԁ                x   x   :               p    E  T   ?  
+                                                                              Ԁ                x   x   :               p    E  T {  ?  
 
                                                                               Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T |  @  
 
-                                                                              Ԁ              G  x   x   :                   E  T   ?  
+                                                                              Ԁ              G  x   x   :                   E  T |  ?  
 
                                                                        d   d                   E  @ ^  @  
 
  ,   $ ^  
   c    
   
-       /6 \   \                    E  8   @  
+       /6 \   \                    E  8 a  @  
 
  $    a 
   i  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               0    E  T   @  
+        Ԁ                x   x   :               0    E  T }  @  
 
-                                                                              Ԁ              _  x   x   :                   E  T   ?  
+                                                                              Ԁ              _  x   x   :                   E  T }  ?  
 
                                                                               Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               @    E  T   @  
+        Ԁ                x   x   :               @    E  T ~  @  
 
-                                                                              Ԁ              7  x   x   :                   E  T   ?  
+                                                                              Ԁ              7  x   x   :                   E  T ~  ?  
 
                                                                        |   |                   E  X _  @  
 
@@ -2097,28 +2099,28 @@
   
   e    
   
-        \   \               P    E  8   @  
+        \   \               P    E  8 b  @  
 
  $    b 
   j  
   
                Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               `    E  T   @  
+        Ԁ                x   x   :               `    E  T   @  
 
-                                                                              Ԁ              s  x   x   :                   E  T   ?  
+                                                                              Ԁ              s  x   x   :                   E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               p    E  T   @  
+        Ԁ                x   x   :               p    E  T   @  
 
-                                                                              Ԁ                x   x   :               0    E  T   ?  
+                                                                              Ԁ                x   x   :               0    E  T   ?  
 
-                                                                       \   \                   E  8   @  
+                                                                       \   \                   E  8 c  @  
 
  $    c 
   k  
@@ -2129,38 +2131,38 @@
   f    
   
                Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ              '  x   x   :               `    E  T   ?  
+                                                                              Ԁ              '  x   x   :               `    E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                        d   d                   E  @ a  @  
 
  ,   $ a  
   g    
   
-        \   \                   E  8   @  
+        \   \                   E  8 d  @  
 
  $    d 
   l  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ              K  x   x   :                   E  T   ?  
+                                                                              Ԁ              K  x   x   :                   E  T   ?  
 
                                                                       aQ \   \                   E  8 b  @  
 
@@ -2168,40 +2170,40 @@
   h   
 
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                       `  d   d                   E  @ c  @  
 
  ,   $ c  
   i    
   
-       ! \   \                   E  8   @  
+       ! \   \                   E  8 e  @  
 
  $    e 
   m  
   
                Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :                    E  T   ?  
+  x   x   :                    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T   @  
 
-                                                                              Ԁ              ;  x   x   :               0    E  T   ?  
+                                                                              Ԁ              ;  x   x   :               0    E  T   ?  
 
-                                                                      f \   \                   E  8   @  
+                                                                      f \   \                   E  8 f  @  
 
  $    f 
   n  
@@ -2212,20 +2214,20 @@
   j    
   
                Ԁ              m
-  x   x   :               P    E  T   ?  
+  x   x   :               P    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                    E  T   @  
+        Ԁ                x   x   :                    E  T   @  
 
-                                                                              Ԁ              7  x   x   :               `    E  T   ?  
+                                                                              Ԁ              7  x   x   :               `    E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               0    E  T   @  
+        Ԁ                x   x   :               0    E  T   @  
 
-                                                                              Ԁ              #  x   x   :                   E  T   ?  
+                                                                              Ԁ              #  x   x   :                   E  T   ?  
 
                                                                        |   |                   E  X e  @  
 
@@ -2235,54 +2237,54 @@
   
   l    
   
-        \   \               @    E  8   @  
+        \   \               @    E  8 g  @  
 
  $    g 
   o  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               P    E  T   @  
+        Ԁ                x   x   :               P    E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :               `    E  T   @  
+        Ԁ                x   x   :               `    E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                       ? d   d                   E  @ f  @  
 
  ,   $ f  
   m    
   
-        \   \               p    E  8   @  
+        \   \               p    E  8 h  @  
 
  $    h 
   p  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                    E  T   ?  
+                                                                              Ԁ                x   x   :                    E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                    E  T   ?  
+                                                                              Ԁ                x   x   :                    E  T   ?  
 
-                                                                       \   \                   E  8   @  
+                                                                       \   \                   E  8 i  @  
 
  $    i 
   q  
@@ -2293,12 +2295,12 @@
   n    
   
                Ԁ              m
-  x   x   :               @    E  T   ?  
+  x   x   :               @    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :               P    E  T   ?  
+                                                                              Ԁ                x   x   :               P    E  T   ?  
 
                                                                       4 \   \               `    E  8 h  @  
 
@@ -2306,40 +2308,40 @@
   o   
 
                Ԁ              m
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                   E  T   ?  
+                                                                              Ԁ                x   x   :                   E  T   ?  
 
                                                                       N d   d                   E  @ i  @  
 
  ,   $ i  
   p    
   
-        \   \                   E  8   @  
+        \   \                   E  8 j  @  
 
  $    j 
   r  
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ              K  x   x   :                   E  T   ?  
+                                                                              Ԁ              K  x   x   :                   E  T   ?  
 
                                                                               Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ              _  x   x   :                   E  T   ?  
+                                                                              Ԁ              _  x   x   :                   E  T   ?  
 
-                                                                       \   \                    E  8   @  
+                                                                       \   \                    E  8 k  @  
 
  $    k 
   s  
@@ -2350,11 +2352,11 @@
   q    
   
                Ԁ              m
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
                                                                      w
-        Ԁ                x   x   :                   E  T   @  
+        Ԁ                x   x   :                   E  T   @  
 
-                                                                              Ԁ                x   x   :                    E  T   ?  
+                                                                              Ԁ                x   x   :                    E  T   ?  
 
                                                                    
\ No newline at end of file
diff -Naur ns-3.19/src/olsr/test/bug780-2-0.pcap ns-3.20/src/olsr/test/bug780-2-0.pcap
--- ns-3.19/src/olsr/test/bug780-2-0.pcap	2014-06-17 10:34:00.661634940 -0700
+++ ns-3.20/src/olsr/test/bug780-2-0.pcap	2014-06-17 10:33:14.023994958 -0700
@@ -287,9 +287,9 @@
     2           Ԁ           2   7  @   @                          
 
     2   
-<        Ԁ           2   tB  x   x   :                   E  T   @  
+<        Ԁ           2   tB  x   x   :                   E  T    @  
 
-                                                                    2   B |   |                    E  X   @  
+                                                                    2   B |   |                    E  X   @  
 
  D   <  
   !   
@@ -303,65 +303,65 @@
     
   
     3           Ԁ           3   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T   @  
 
                                                                    4           Ԁ           4   m
-  x   x   :                    E  T    @  
+  x   x   :                    E  T   @  
 
                                                                    4    \   \                   E  8   @  
 
  $     
     
   
-    4   8 d   d               0    E  @ !  @  
+    4   8 d   d               0    E  @   @  
 
  ,   $   
   #    
   
     5           Ԁ           5   m
-  x   x   :               @    E  T "  @  
+  x   x   :               @    E  T   @  
 
                                                                    6           Ԁ           6   m
-  x   x   :               P    E  T #  @  
+  x   x   :               P    E  T   @  
 
                                                                    6   X` \   \                   E  8   @  
 
  $     
     
   
-    6   M7 d   d               `    E  @ $  @  
+    6   M7 d   d               `    E  @   @  
 
  ,   $   
   $    
   
     7           Ԁ           7   m
-  x   x   :               p    E  T %  @  
+  x   x   :               p    E  T   @  
 
-                                                                   7    \   \                   E  8 &  @  
+                                                                   7    \   \                   E  8    @  
 
  $      
   %   
 
     8           Ԁ           8   m
-  x   x   :                   E  T '  @  
+  x   x   :                   E  T   @  
 
                                                                    8   { \   \                   E  8   @  
 
  $     
     
   
-    8    d   d                   E  @ (  @  
+    8    d   d                   E  @ !  @  
 
  ,   $ !  
   &    
   
     9           Ԁ           9   m
-  x   x   :                   E  T )  @  
+  x   x   :                   E  T   @  
 
                                                                    :           Ԁ           :   m
-  x   x   :                   E  T *  @  
+  x   x   :                   E  T   @  
 
-                                                                   :   x[ d   d                   E  @ +  @  
+                                                                   :   x[ d   d                   E  @ "  @  
 
  ,   $ "  
   '    
@@ -372,10 +372,11 @@
     
   
     ;           Ԁ           ;   m
-  x   x   :                   E  T ,  @  
+  x   x   :                   E  T 	  @  
 
        	                                                            <           Ԁ           <   m
-  x   x   :                   E  T -  @  
+  x   x   :                   E  T 
+  @  
 
        
                                                             <     \   \                   E  8   @  
@@ -383,7 +384,7 @@
  $     
     
   
-    <   Ɖ |   |                    E  X .  @  
+    <   Ɖ |   |                    E  X #  @  
 
  D   < # 
   (   
@@ -392,12 +393,12 @@
   )    
   
     =           Ԁ           =   m
-  x   x   :                   E  T /  @  
+  x   x   :                   E  T   @  
 
                                                                    >           Ԁ           >   m
-  x   x   :                    E  T 0  @  
+  x   x   :                    E  T   @  
 
-                                                                   >   q d   d               0    E  @ 1  @  
+                                                                   >   q d   d               0    E  @ $  @  
 
  ,   $ $  
   *    
@@ -408,70 +409,70 @@
     
   
     ?           Ԁ           ?   m
-  x   x   :               @    E  T 2  @  
+  x   x   :               @    E  T   @  
 
                                                                    @           Ԁ           @   m
-  x   x   :               P    E  T 3  @  
+  x   x   :               P    E  T   @  
 
                                                                    @    \   \                    E  8    @  
 
  $      
      
   
-    @   Y d   d               `    E  @ 4  @  
+    @   Y d   d               `    E  @ %  @  
 
  ,   $ %  
   +    
   
     A           Ԁ           A   m
-  x   x   :               p    E  T 5  @  
+  x   x   :               p    E  T   @  
 
-                                                                   A   b \   \                   E  8 6  @  
+                                                                   A   b \   \                   E  8 &  @  
 
  $    & 
   ,   
 
     B           Ԁ           B   m
-  x   x   :                   E  T 7  @  
+  x   x   :                   E  T   @  
 
                                                                    B   ! \   \                   E  8 !  @  
 
  $    ! 
   !  
   
-    B    d   d                   E  @ 8  @  
+    B    d   d                   E  @ '  @  
 
  ,   $ '  
   -    
   
     C           Ԁ           C   m
-  x   x   :                   E  T 9  @  
+  x   x   :                   E  T   @  
 
                                                                    D           Ԁ           D   m
-  x   x   :                   E  T :  @  
+  x   x   :                   E  T   @  
 
                                                                    D     \   \                    E  8 "  @  
 
  $    " 
   "  
   
-    D   q d   d                   E  @ ;  @  
+    D   q d   d                   E  @ (  @  
 
  ,   $ (  
   .    
   
     E           Ԁ           E   m
-  x   x   :                   E  T <  @  
+  x   x   :                   E  T   @  
 
                                                                    F           Ԁ           F   m
-  x   x   :                   E  T =  @  
+  x   x   :                   E  T   @  
 
                                                                    F   F \   \               0    E  8 #  @  
 
  $    # 
   #  
   
-    F   mi |   |                    E  X >  @  
+    F   mi |   |                    E  X )  @  
 
  D   < ) 
   /   
@@ -480,28 +481,28 @@
   0    
   
     G           Ԁ           G   m
-  x   x   :                   E  T ?  @  
+  x   x   :                   E  T   @  
 
                                                                    H           Ԁ           H   m
-  x   x   :                    E  T @  @  
+  x   x   :                    E  T   @  
 
                                                                    H   j1 \   \               @    E  8 $  @  
 
  $    $ 
   $  
   
-    H   q d   d               0    E  @ A  @  
+    H   q d   d               0    E  @ *  @  
 
  ,   $ *  
   1    
   
     I           Ԁ           I   m
-  x   x   :               @    E  T B  @  
+  x   x   :               @    E  T   @  
 
                                                                    J           Ԁ           J   m
-  x   x   :               P    E  T C  @  
+  x   x   :               P    E  T   @  
 
-                                                                   J   < d   d               `    E  @ D  @  
+                                                                   J   < d   d               `    E  @ +  @  
 
  ,   $ +  
   2    
@@ -512,35 +513,35 @@
   %  
   
     K           Ԁ           K   m
-  x   x   :               p    E  T E  @  
+  x   x   :               p    E  T   @  
 
-                                                                   K    \   \                   E  8 F  @  
+                                                                   K    \   \                   E  8 ,  @  
 
  $    , 
   3   
 
     L           Ԁ           L   m
-  x   x   :                   E  T G  @  
+  x   x   :                   E  T   @  
 
                                                                    L    \   \               `    E  8 &  @  
 
  $    & 
   &  
   
-    L    d   d                   E  @ H  @  
+    L    d   d                   E  @ -  @  
 
  ,   $ -  
   4    
   
     M           Ԁ           M   m
-  x   x   :                   E  T I  @  
+  x   x   :                   E  T   @  
 
-                                                                   N     x   x   :               P    E  T C  @  
+                                                                   N     x   x   :               P    E  T   @  
 
                                                                   N           Ԁ           N   m
-  x   x   :                   E  T J  @  
+  x   x   :                   E  T   @  
 
-                                                                   N           Ԁ           N     d   d                   E  @ K  @  
+                                                                   N           Ԁ           N     d   d                   E  @ .  @  
 
  ,   $ .  
   5    
@@ -550,22 +551,22 @@
  $    ' 
   '  
   
-    N   . \   \               `    E  8 D  @  
+    N   . \   \               `    E  8 '  @  
 
  $    ' 
   '  
   
-    O     x   x   :               p    E  T E  @  
+    O     x   x   :               p    E  T   @  
 
                                                                   O           Ԁ           O   m
-  x   x   :                   E  T L  @  
+  x   x   :                   E  T   @  
 
-                                                                   O           Ԁ           P     x   x   :                   E  T F  @  
+                                                                   O           Ԁ           P     x   x   :                   E  T   @  
 
                                                                   P           Ԁ           P   m
-  x   x   :                   E  T M  @  
+  x   x   :                   E  T   @  
 
-                                                                   P           Ԁ           P    d   d                   E  @ G  @  
+                                                                   P           Ԁ           P    d   d                   E  @ (  @  
 
  ,   $ (  
   (  
@@ -577,7 +578,7 @@
   (  
   
   
-    P   N |   |                    E  X N  @  
+    P   N |   |                    E  X /  @  
 
  D   < / 
   6   
@@ -585,17 +586,17 @@
   
   7    
   
-    Q     x   x   :                   E  T H  @  
+    Q     x   x   :                   E  T   @  
 
                                                                   Q           Ԁ           Q   m
-  x   x   :                   E  T O  @  
+  x   x   :                   E  T   @  
 
-                                                                   Q           Ԁ           R     x   x   :                   E  T I  @  
+                                                                   Q           Ԁ           R     x   x   :                   E  T    @  
 
                                                                    R           Ԁ           R   m
-  x   x   :                    E  T P  @  
+  x   x   :                    E  T    @  
 
-                                                                    R           Ԁ           R   G d   d               0    E  @ Q  @  
+                                                                    R           Ԁ           R   G d   d               0    E  @ 0  @  
 
  ,   $ 0  
   8    
@@ -605,22 +606,22 @@
  ,   $ )  
   )    
   
-    R    d   d                   E  @ J  @  
+    R    d   d                   E  @ )  @  
 
  ,   $ )  
   )    
   
-    S     x   x   :                   E  T K  @  
+    S     x   x   :                   E  T !  @  
 
       !                                                            S           Ԁ           S   m
-  x   x   :               @    E  T R  @  
+  x   x   :               @    E  T !  @  
 
-       !                                                            S           Ԁ           T     x   x   :                   E  T L  @  
+       !                                                            S           Ԁ           T     x   x   :                   E  T "  @  
 
       "                                                            T           Ԁ           T   m
-  x   x   :               P    E  T S  @  
+  x   x   :               P    E  T "  @  
 
-       "                                                            T           Ԁ           T    d   d                   E  @ M  @  
+       "                                                            T           Ԁ           T    d   d                   E  @ *  @  
 
  ,   $ *  
   *    
@@ -630,32 +631,32 @@
  ,   $ *  
   *    
   
-    T    d   d               `    E  @ T  @  
+    T    d   d               `    E  @ 1  @  
 
  ,   $ 1  
   9    
   
-    U     x   x   :                    E  T N  @  
+    U     x   x   :                    E  T #  @  
 
       #                                                            U           Ԁ           U   m
-  x   x   :               p    E  T U  @  
+  x   x   :               p    E  T #  @  
 
-       #                                                            U           Ԁ           U   / \   \                   E  8 V  @  
+       #                                                            U           Ԁ           U   / \   \                   E  8 2  @  
 
  $    2 
   :   
 
-    V     x   x   :                   E  T O  @  
+    V     x   x   :                   E  T $  @  
 
       $                                                            V           Ԁ           V   m
-  x   x   :                   E  T W  @  
+  x   x   :                   E  T $  @  
 
-       $                                                            V           Ԁ           V   1 d   d                   E  @ X  @  
+       $                                                            V           Ԁ           V   1 d   d                   E  @ 3  @  
 
  ,   $ 3  
   ;    
   
-    V   G d   d                    E  @ P  @  
+    V   G d   d                    E  @ +  @  
 
  ,   $ +  
   +    
@@ -665,42 +666,42 @@
  ,   $ +  
   +    
   
-    W     x   x   :               0    E  T Q  @  
+    W     x   x   :               0    E  T %  @  
 
       %                                                            W           Ԁ           W   m
-  x   x   :                   E  T Y  @  
+  x   x   :                   E  T %  @  
 
-       %                                                            W           Ԁ           X     x   x   :               @    E  T R  @  
+       %                                                            W           Ԁ           X     x   x   :               @    E  T &  @  
 
       &                                                            X           Ԁ           X   m
-  x   x   :                   E  T Z  @  
+  x   x   :                   E  T &  @  
 
        &                                                            X           Ԁ           X    d   d                   E  @ ,  @  
 
  ,   $ ,  
   ,    
   
-    X   & d   d                   E  @ [  @  
+    X   & d   d                   E  @ 4  @  
 
  ,   $ 4  
   <    
   
-    X   6 d   d               P    E  @ S  @  
+    X   6 d   d               P    E  @ ,  @  
 
  ,   $ ,  
   ,    
   
-    Y     x   x   :               `    E  T T  @  
+    Y     x   x   :               `    E  T '  @  
 
       '                                                            Y           Ԁ           Y   m
-  x   x   :                   E  T \  @  
+  x   x   :                   E  T '  @  
 
-       '                                                            Y           Ԁ           Z     x   x   :               p    E  T U  @  
+       '                                                            Y           Ԁ           Z     x   x   :               p    E  T (  @  
 
       (                                                            Z           Ԁ           Z   l
-  x   x   :                   E  T ]  @  
+  x   x   :                   E  T (  @  
 
-       (                                                            Z           Ԁ           Z   h  d   d                    E  @ ^  @  
+       (                                                            Z           Ԁ           Z   h  d   d                    E  @ 5  @  
 
  ,   $ 5  
   =    
@@ -710,77 +711,77 @@
  ,   $ -  
   -    
   
-    Z   j d   d                   E  @ V  @  
+    Z   j d   d                   E  @ -  @  
 
  ,   $ -  
   -    
   
-    [     x   x   :                   E  T W  @  
+    [     x   x   :                   E  T )  @  
 
       )                                                            [           Ԁ           [   l
-  x   x   :                   E  T _  @  
+  x   x   :                   E  T )  @  
 
-       )                                                            [           Ԁ           \     x   x   :                   E  T X  @  
+       )                                                            [           Ԁ           \     x   x   :                   E  T *  @  
 
       *                                                            \           Ԁ           \   l
-  x   x   :                    E  T `  @  
+  x   x   :                    E  T *  @  
 
        *                                                            \           Ԁ           \   M  d   d                   E  @ .  @  
 
  ,   $ .  
   .    
   
-    \     d   d                   E  @ Y  @  
+    \     d   d                   E  @ .  @  
 
  ,   $ .  
   .    
   
-    \   U d   d               0    E  @ a  @  
+    \   U d   d               0    E  @ 6  @  
 
  ,   $ 6  
   >    
   
-    ]     x   x   :                   E  T Z  @  
+    ]     x   x   :                   E  T +  @  
 
       +                                                            ]           Ԁ           ]   l
-  x   x   :               @    E  T b  @  
+  x   x   :               @    E  T +  @  
 
-       +                                                            ]           Ԁ           ^     x   x   :                   E  T [  @  
+       +                                                            ]           Ԁ           ^     x   x   :                   E  T ,  @  
 
       ,                                                            ^           Ԁ           ^   l
-  x   x   :               P    E  T c  @  
+  x   x   :               P    E  T ,  @  
 
        ,                                                            ^           Ԁ           ^     d   d                   E  @ /  @  
 
  ,   $ /  
   /    
   
-    ^   M d   d               `    E  @ d  @  
+    ^   M d   d               `    E  @ 7  @  
 
  ,   $ 7  
   ?    
   
-    ^    d   d                   E  @ \  @  
+    ^    d   d                   E  @ /  @  
 
  ,   $ /  
   /    
   
-    _     x   x   :                   E  T ]  @  
+    _     x   x   :                   E  T -  @  
 
       -                                                            _           Ԁ           _   l
-  x   x   :               p    E  T e  @  
+  x   x   :               p    E  T -  @  
 
-       -                                                            _           Ԁ           `     x   x   :                    E  T ^  @  
+       -                                                            _           Ԁ           `     x   x   :                    E  T .  @  
 
       .                                                            `           Ԁ           `   l
-  x   x   :                   E  T f  @  
+  x   x   :                   E  T .  @  
 
-       .                                                            `           Ԁ           `   d  d   d                   E  @ _  @  
+       .                                                            `           Ԁ           `   d  d   d                   E  @ 0  @  
 
  ,   $ 0  
   0    
   
-    `   &7 d   d                   E  @ g  @  
+    `   &7 d   d                   E  @ 8  @  
 
  ,   $ 8  
   @    
@@ -790,43 +791,43 @@
  ,   $ 0  
   0    
   
-    a     x   x   :                    E  T `  @  
+    a     x   x   :                    E  T /  @  
 
       /                                                            a           Ԁ           a   l
-  x   x   :                   E  T h  @  
+  x   x   :                   E  T /  @  
 
-       /                                                            a           Ԁ           b     x   x   :               0    E  T a  @  
+       /                                                            a           Ԁ           b     x   x   :               0    E  T 0  @  
 
       0                                                            b           Ԁ           b   l
-  x   x   :                   E  T i  @  
+  x   x   :                   E  T 0  @  
 
        0                                                            b           Ԁ           b    d   d                   E  @ 1  @  
 
  ,   $ 1  
   1    
   
-    b   p! d   d               @    E  @ b  @  
+    b   p! d   d               @    E  @ 1  @  
 
  ,   $ 1  
   1    
   
-    b   W d   d                   E  @ j  @  
+    b   W d   d                   E  @ 9  @  
 
  ,   $ 9  
   A    
   
-    c     x   x   :               P    E  T c  @  
+    c     x   x   :               P    E  T 1  @  
 
       1                                                            c           Ԁ           c   l
-  x   x   :                   E  T k  @  
+  x   x   :                   E  T 1  @  
 
-       1                                                            c           Ԁ           d     x   x   :               `    E  T d  @  
+       1                                                            c           Ԁ           d     x   x   :               `    E  T 2  @  
 
       2                                                            d           Ԁ           d   l
-  x   x   :                   E  T l  @  
+  x   x   :                   E  T 2  @  
 
        2                                                            d           Ԁ           d   
- d   d               p    E  @ e  @  
+ d   d               p    E  @ 2  @  
 
  ,   $ 2  
   2    
@@ -836,22 +837,22 @@
  ,   $ 2  
   2    
   
-    d   l d   d                   E  @ m  @  
+    d   l d   d                   E  @ :  @  
 
  ,   $ :  
   B    
   
-    e     x   x   :                   E  T f  @  
+    e     x   x   :                   E  T 3  @  
 
       3                                                            e           Ԁ           e   l
-  x   x   :                    E  T n  @  
+  x   x   :                    E  T 3  @  
 
-       3                                                            e           Ԁ           f     x   x   :                   E  T g  @  
+       3                                                            e           Ԁ           f     x   x   :                   E  T 4  @  
 
       4                                                            f           Ԁ           f   l
-  x   x   :                   E  T o  @  
+  x   x   :                   E  T 4  @  
 
-       4                                                            f           Ԁ           f   * d   d                   E  @ h  @  
+       4                                                            f           Ԁ           f   * d   d                   E  @ 3  @  
 
  ,   $ 3  
   3    
@@ -861,72 +862,72 @@
  ,   $ 3  
   3    
   
-    f    d   d                    E  @ p  @  
+    f    d   d                    E  @ ;  @  
 
  ,   $ ;  
   C    
   
-    g     x   x   :                   E  T i  @  
+    g     x   x   :                   E  T 5  @  
 
       5                                                            g           Ԁ           g   l
-  x   x   :               0    E  T q  @  
+  x   x   :               0    E  T 5  @  
 
-       5                                                            g           Ԁ           h     x   x   :                   E  T j  @  
+       5                                                            g           Ԁ           h     x   x   :                   E  T 6  @  
 
       6                                                            h           Ԁ           h   l
-  x   x   :               @    E  T r  @  
+  x   x   :               @    E  T 6  @  
 
        6                                                            h           Ԁ           h     d   d               @    E  @ 4  @  
 
  ,   $ 4  
   4    
   
-    h    d   d               P    E  @ s  @  
+    h    d   d               P    E  @ <  @  
 
  ,   $ <  
   D    
   
-    h   	 d   d                   E  @ k  @  
+    h   	 d   d                   E  @ 4  @  
 
  ,   $ 4  
   4    
   
-    i     x   x   :                   E  T l  @  
+    i     x   x   :                   E  T 7  @  
 
       7                                                            i           Ԁ           i   l
-  x   x   :               `    E  T t  @  
+  x   x   :               `    E  T 7  @  
 
-       7                                                            i           Ԁ           j     x   x   :                   E  T m  @  
+       7                                                            i           Ԁ           j     x   x   :                   E  T 8  @  
 
       8                                                            j           Ԁ           j   m
-  x   x   :               p    E  T u  @  
+  x   x   :               p    E  T 8  @  
 
        8                                                            j           Ԁ           j    d   d               P    E  @ 5  @  
 
  ,   $ 5  
   5    
   
-    j   =j d   d                    E  @ n  @  
+    j   =j d   d                    E  @ 5  @  
 
  ,   $ 5  
   5    
   
-    j    d   d                   E  @ v  @  
+    j    d   d                   E  @ =  @  
 
  ,   $ =  
   E    
   
-    k     x   x   :                   E  T o  @  
+    k     x   x   :                   E  T 9  @  
 
       9                                                            k           Ԁ           k   m
-  x   x   :                   E  T w  @  
+  x   x   :                   E  T 9  @  
 
-       9                                                            k           Ԁ           l     x   x   :                    E  T p  @  
+       9                                                            k           Ԁ           l     x   x   :                    E  T :  @  
 
       :                                                            l           Ԁ           l   m
-  x   x   :                   E  T x  @  
+  x   x   :                   E  T :  @  
 
-       :                                                            l           Ԁ           l    d   d               0    E  @ q  @  
+       :                                                            l           Ԁ           l    d   d               0    E  @ 6  @  
 
  ,   $ 6  
   6    
@@ -936,27 +937,27 @@
  ,   $ 6  
   6    
   
-    l   4 d   d                   E  @ y  @  
+    l   4 d   d                   E  @ >  @  
 
  ,   $ >  
   F    
   
-    m     x   x   :               @    E  T r  @  
+    m     x   x   :               @    E  T ;  @  
 
       ;                                                            m           Ԁ           m   m
-  x   x   :                   E  T z  @  
+  x   x   :                   E  T ;  @  
 
-       ;                                                            m           Ԁ           n     x   x   :               P    E  T s  @  
+       ;                                                            m           Ԁ           n     x   x   :               P    E  T <  @  
 
       <                                                            n           Ԁ           n   m
-  x   x   :                   E  T {  @  
+  x   x   :                   E  T <  @  
 
-       <                                                            n           Ԁ           n   Q  d   d                   E  @ |  @  
+       <                                                            n           Ԁ           n   Q  d   d                   E  @ ?  @  
 
  ,   $ ?  
   G    
   
-    n   X d   d               `    E  @ t  @  
+    n   X d   d               `    E  @ 7  @  
 
  ,   $ 7  
   7    
@@ -966,22 +967,22 @@
  ,   $ 7  
   7    
   
-    o     x   x   :               p    E  T u  @  
+    o     x   x   :               p    E  T =  @  
 
       =                                                            o           Ԁ           o   m
-  x   x   :                   E  T }  @  
+  x   x   :                   E  T =  @  
 
-       =                                                            o           Ԁ           p     x   x   :                   E  T v  @  
+       =                                                            o           Ԁ           p     x   x   :                   E  T >  @  
 
       >                                                            p           Ԁ           p   m
-  x   x   :                    E  T ~  @  
+  x   x   :                    E  T >  @  
 
-       >                                                            p           Ԁ           p     d   d                   E  @ w  @  
+       >                                                            p           Ԁ           p     d   d                   E  @ 8  @  
 
  ,   $ 8  
   8    
   
-    p    d   d                   E  @   @  
+    p    d   d                   E  @ @  @  
 
  ,   $ @  
   H    
@@ -991,17 +992,17 @@
  ,   $ 8  
   8    
   
-    q     x   x   :                   E  T x  @  
+    q     x   x   :                   E  T ?  @  
 
       ?                                                            q           Ԁ           q   m
-  x   x   :                    E  T   @  
+  x   x   :                    E  T ?  @  
 
-       ?                                                            q           Ԁ           r     x   x   :                   E  T y  @  
+       ?                                                            q           Ԁ           r     x   x   :                   E  T @  @  
 
       @                                                            r           Ԁ           r   m
-  x   x   :               0    E  T   @  
+  x   x   :               0    E  T @  @  
 
-       @                                                            r           Ԁ           r   $ d   d               @    E  @   @  
+       @                                                            r           Ԁ           r   $ d   d               @    E  @ A  @  
 
  ,   $ A  
   I    
@@ -1011,27 +1012,27 @@
  ,   $ 9  
   9    
   
-    r   * d   d                   E  @ z  @  
+    r   * d   d                   E  @ 9  @  
 
  ,   $ 9  
   9    
   
-    s     x   x   :                   E  T {  @  
+    s     x   x   :                   E  T A  @  
 
       A                                                            s           Ԁ           s   m
-  x   x   :               P    E  T   @  
+  x   x   :               P    E  T A  @  
 
-       A                                                            s           Ԁ           t     x   x   :                   E  T |  @  
+       A                                                            s           Ԁ           t     x   x   :                   E  T B  @  
 
       B                                                            t           Ԁ           t   m
-  x   x   :               `    E  T   @  
+  x   x   :               `    E  T B  @  
 
-       B                                                            t           Ԁ           t    d   d               p    E  @   @  
+       B                                                            t           Ԁ           t    d   d               p    E  @ B  @  
 
  ,   $ B  
   J    
   
-    t    d   d                   E  @ }  @  
+    t    d   d                   E  @ :  @  
 
  ,   $ :  
   :    
@@ -1041,22 +1042,22 @@
  ,   $ :  
   :    
   
-    u     x   x   :                    E  T ~  @  
+    u     x   x   :                    E  T C  @  
 
       C                                                            u           Ԁ           u   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T C  @  
 
-       C                                                            u           Ԁ           v     x   x   :                   E  T   @  
+       C                                                            u           Ԁ           v     x   x   :                   E  T D  @  
 
       D                                                            v           Ԁ           v   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T D  @  
 
-       D                                                            v           Ԁ           v   ף d   d                    E  @   @  
+       D                                                            v           Ԁ           v   ף d   d                    E  @ ;  @  
 
  ,   $ ;  
   ;    
   
-    v   R d   d                   E  @   @  
+    v   R d   d                   E  @ C  @  
 
  ,   $ C  
   K    
@@ -1066,42 +1067,42 @@
  ,   $ ;  
   ;    
   
-    w     x   x   :               0    E  T   @  
+    w     x   x   :               0    E  T E  @  
 
       E                                                            w           Ԁ           w   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T E  @  
 
-       E                                                            w           Ԁ           x     x   x   :               @    E  T   @  
+       E                                                            w           Ԁ           x     x   x   :               @    E  T F  @  
 
       F                                                            x           Ԁ           x   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T F  @  
 
        F                                                            x           Ԁ           x   Z d   d                   E  @ <  @  
 
  ,   $ <  
   <    
   
-    x   3 d   d               P    E  @   @  
+    x   3 d   d               P    E  @ <  @  
 
  ,   $ <  
   <    
   
-    x   O. d   d                   E  @   @  
+    x   O. d   d                   E  @ D  @  
 
  ,   $ D  
   L    
   
-    y     x   x   :               `    E  T   @  
+    y     x   x   :               `    E  T G  @  
 
       G                                                            y           Ԁ           y   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T G  @  
 
-       G                                                            y           Ԁ           z     x   x   :               p    E  T   @  
+       G                                                            y           Ԁ           z     x   x   :               p    E  T H  @  
 
       H                                                            z           Ԁ           z   m
-  x   x   :                   E  T   @  
+  x   x   :                   E  T H  @  
 
-       H                                                            z           Ԁ           z   # d   d                   E  @   @  
+       H                                                            z           Ԁ           z   # d   d                   E  @ =  @  
 
  ,   $ =  
   =    
@@ -1111,93 +1112,93 @@
  ,   $ =  
   =    
   
-    z   P d   d                	    E  @   @  
+    z   P d   d                	    E  @ E  @  
 
  ,   $ E  
   M    
   
-    {     x   x   :                   E  T   @  
+    {     x   x   :                   E  T I  @  
 
-      I                                                            {   "  x   x   :                   E  T   @  
+      I                                                            {   "  x   x   :                   E  T I  @  
 
-      I                                                            {     x   x   :                   E  T   @  
+      I                                                            {     x   x   :                   E  T I  @  
 
-      I                                                            {   &  x   x   :                   E  T   @  
+      I                                                            {   &  x   x   :                   E  T I  @  
 
-      I                                                            {   8  x   x   :                   E  T   @  
+      I                                                            {   8  x   x   :                   E  T I  @  
 
-      I                                                            {   ]  x   x   :                   E  T   @  
+      I                                                            {   ]  x   x   :                   E  T I  @  
 
-      I                                                            {   }  x   x   :                   E  T   @  
+      I                                                            {   }  x   x   :                   E  T I  @  
 
-      I                                                            |     x   x   :                   E  T   @  
+      I                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
-      J                                                            |   b#  x   x   :                   E  T   @  
+      J                                                            |   b#  x   x   :                   E  T J  @  
 
-      J                                                            |   M  x   x   :                   E  T   @  
+      J                                                            |   M  x   x   :                   E  T J  @  
 
-      J                                                            |   j  x   x   :                   E  T   @  
+      J                                                            |   j  x   x   :                   E  T J  @  
 
-      J                                                            |     x   x   :                   E  T   @  
+      J                                                            |     x   x   :                   E  T J  @  
 
       J                                                            |   P  d   d                   E  @ >  @  
 
  ,   $ >  
   >    
   
-    |   8 d   d               	    E  @   @  
+    |   8 d   d               	    E  @ F  @  
 
  ,   $ F  
   N    
   
-    |   w d   d                   E  @   @  
+    |   w d   d                   E  @ >  @  
 
  ,   $ >  
   >    
   
-    }     x   x   :                   E  T   @  
+    }     x   x   :                   E  T K  @  
 
-      K                                                            }   :  x   x   :                   E  T   @  
+      K                                                            }   :  x   x   :                   E  T K  @  
 
-      K                                                            }   X  x   x   :                   E  T   @  
+      K                                                            }   X  x   x   :                   E  T K  @  
 
-      K                                                            }   N-  x   x   :                   E  T   @  
+      K                                                            }   N-  x   x   :                   E  T K  @  
 
-      K                                                            }   hG  x   x   :                   E  T   @  
+      K                                                            }   hG  x   x   :                   E  T K  @  
 
-      K                                                            }   S  x   x   :                   E  T   @  
+      K                                                            }   S  x   x   :                   E  T K  @  
 
-      K                                                            }   t  x   x   :                   E  T   @  
+      K                                                            }   t  x   x   :                   E  T K  @  
 
-      K                                                            ~     x   x   :                   E  T   @  
+      K                                                            ~     x   x   :                   E  T L  @  
 
-      L                                                            ~     x   x   :                   E  T   @  
+      L                                                            ~     x   x   :                   E  T L  @  
 
-      L                                                            ~   \  x   x   :                   E  T   @  
+      L                                                            ~   \  x   x   :                   E  T L  @  
 
-      L                                                            ~   1  x   x   :                   E  T   @  
+      L                                                            ~   1  x   x   :                   E  T L  @  
 
-      L                                                            ~   K  x   x   :                   E  T   @  
+      L                                                            ~   K  x   x   :                   E  T L  @  
 
-      L                                                            ~     x   x   :                   E  T   @  
+      L                                                            ~     x   x   :                   E  T L  @  
 
       L                                                            ~   `  d   d                   E  @ ?  @  
 
  ,   $ ?  
   ?    
   
-    ~     x   x   :                   E  T   @  
+    ~     x   x   :                   E  T L  @  
 
-      L                                                            ~     d   d                   E  @   @  
+      L                                                            ~     d   d                   E  @ ?  @  
 
  ,   $ ?  
   ?    
   
-    ~   KB d   d                	    E  @   @  
+    ~   KB d   d                	    E  @ G  @  
 
  ,   $ G  
   O    
@@ -1206,35 +1207,35 @@
 
        2"  @   @   :                           
      
-       .&        Ԁ               ,  x   x   :                	    E  T   @  
+       .&        Ԁ               ,  x   x   :                	    E  T M  @  
 
       M                                                               *,        Ԁ              ;  @   @                          
 
        sA  @   @   :               0	           
      
-       }A        Ԁ              C  x   x   :                    E  T   ?  
+       }A        Ԁ              C  x   x   :                    E  T M  ?  
 
       M                                                               I        Ԁ              O  @   @               @	           
 
        >O  @   @   :               0           
      
-       9S        Ԁ              CZ  x   x   :               P	    E  T   @  
+       9S        Ԁ              CZ  x   x   :               P	    E  T I  @  
 
        M                                                               MZ        Ԁ              i  @   @               @           
 
        o  @   @   :               	           
      
-       o        Ԁ              fq  x   x   :               P    E  T   ?  
+       o        Ԁ              fq  x   x   :               P    E  T I  ?  
 
-       M                                                               "w        Ԁ                x   x   :                	    E  T   @  
+       M                                                               "w        Ԁ                x   x   :                	    E  T N  @  
 
-      N                                                                       Ԁ                x   x   :               `    E  T   ?  
+      N                                                                       Ԁ                x   x   :               `    E  T N  ?  
 
-      N                                                                       Ԁ              Y  x   x   :               `	    E  T   @  
+      N                                                                       Ԁ              Y  x   x   :               `	    E  T J  @  
 
-       N                                                               c        Ԁ                x   x   :               p    E  T   ?  
+       N                                                               c        Ԁ                x   x   :               p    E  T J  ?  
 
-       N                                                               M        Ԁ               d   d               0	    E  @   @  
+       N                                                               M        Ԁ               d   d               0	    E  @ @  @  
 
  ,   $ @  
   @    
@@ -1245,35 +1246,35 @@
  ,   $ @  
   @    
   
-       < d   d               p	    E  @   @  
+       < d   d               p	    E  @ H  @  
 
  ,   $ H  
   P  
   
   
-         x   x   :               @	    E  T   @  
+         x   x   :               @	    E  T O  @  
 
-      O                                                                       Ԁ                x   x   :                   E  T   ?  
+      O                                                                       Ԁ                x   x   :                   E  T O  ?  
 
-      O                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      O                                                                       Ԁ              Y  x   x   :               	    E  T K  @  
 
-       O                                                               c        Ԁ                x   x   :                   E  T   ?  
+       O                                                               c        Ԁ                x   x   :                   E  T K  ?  
 
-       O                                                               ]        Ԁ                x   x   :               P	    E  T   @  
+       O                                                               ]        Ԁ                x   x   :               P	    E  T P  @  
 
-      P                                                                       Ԁ                x   x   :                   E  T   ?  
+      P                                                                       Ԁ                x   x   :                   E  T P  ?  
 
-      P                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      P                                                                       Ԁ              Y  x   x   :               	    E  T L  @  
 
-       P                                                               c        Ԁ                x   x   :                   E  T   ?  
+       P                                                               c        Ԁ                x   x   :                   E  T L  ?  
 
-       P                                                                       Ԁ              2 d   d               	    E  @   @  
+       P                                                                       Ԁ              2 d   d               	    E  @ I  @  
 
  ,   $ I  
   Q  
   
   
-        d   d               `	    E  @   @  
+        d   d               `	    E  @ A  @  
 
  ,   $ A  
   A    
@@ -1287,23 +1288,23 @@
   
   B    
   
-         x   x   :               p	    E  T   @  
+         x   x   :               p	    E  T Q  @  
 
-      Q                                                                       Ԁ                x   x   :                   E  T   ?  
+      Q                                                                       Ԁ                x   x   :                   E  T Q  ?  
 
-      Q                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      Q                                                                       Ԁ              Y  x   x   :               	    E  T M  @  
 
-       Q                                                               c        Ԁ              1  x   x   :                   E  T   ?  
+       Q                                                               c        Ԁ              1  x   x   :                   E  T M  ?  
 
-       Q                                                                       Ԁ                x   x   :               	    E  T   @  
+       Q                                                                       Ԁ                x   x   :               	    E  T R  @  
 
-      R                                                                       Ԁ                x   x   :                    E  T   ?  
+      R                                                                       Ԁ                x   x   :                    E  T R  ?  
 
-      R                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      R                                                                       Ԁ              Y  x   x   :               	    E  T N  @  
 
-       R                                                               c        Ԁ                x   x   :                   E  T   ?  
+       R                                                               c        Ԁ                x   x   :                   E  T N  ?  
 
-       R                                                                       Ԁ               d   d               	    E  @   @  
+       R                                                                       Ԁ               d   d               	    E  @ J  @  
 
  ,   $ J  
   R  
@@ -1314,70 +1315,70 @@
  ,   $ B  
   C    
   
-       / d   d               	    E  @   @  
+       / d   d               	    E  @ B  @  
 
  ,   $ B  
   B    
 
   
-         x   x   :               	    E  T   @  
+         x   x   :               	    E  T S  @  
 
-      S                                                                       Ԁ                x   x   :               0    E  T   ?  
+      S                                                                       Ԁ                x   x   :               0    E  T S  ?  
 
-      S                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      S                                                                       Ԁ              Y  x   x   :               	    E  T O  @  
 
-       S                                                               c        Ԁ              y  x   x   :               @    E  T   ?  
+       S                                                               c        Ԁ              y  x   x   :               @    E  T O  ?  
 
-       S                                                               5        Ԁ                x   x   :               	    E  T   @  
+       S                                                               5        Ԁ                x   x   :               	    E  T T  @  
 
-      T                                                                       Ԁ                x   x   :               P    E  T   ?  
+      T                                                                       Ԁ                x   x   :               P    E  T T  ?  
 
-      T                                                                       Ԁ              Y  x   x   :               	    E  T   @  
+      T                                                                       Ԁ              Y  x   x   :               	    E  T P  @  
 
-       T                                                               c        Ԁ                x   x   :               `    E  T   ?  
+       T                                                               c        Ԁ                x   x   :               `    E  T P  ?  
 
        T                                                               q        Ԁ               d   d               p    E  @ C  @  
 
  ,   $ C  
   D    
   
-       G \   \               	    E  8   @  
+       G \   \               	    E  8 C  @  
 
  $    C 
   C  
   
         \   \                
-    E  8   @  
+    E  8 K  @  
 
  $    K 
   S  
   
-         x   x   :               	    E  T   @  
+         x   x   :               	    E  T U  @  
 
-      U                                                                       Ԁ                x   x   :                   E  T   ?  
+      U                                                                       Ԁ                x   x   :                   E  T U  ?  
 
       U                                                                       Ԁ              Y  x   x   :               
-    E  T   @  
+    E  T Q  @  
 
-       U                                                               c        Ԁ                x   x   :                   E  T   ?  
+       U                                                               c        Ԁ                x   x   :                   E  T Q  ?  
 
        U                                                                       Ԁ              P  \   \                   E  8 D  @  
 
  $    D 
   E   
 
-         x   x   :               	    E  T   @  
+         x   x   :               	    E  T V  @  
 
-      V                                                                       Ԁ                x   x   :                   E  T   ?  
+      V                                                                       Ԁ                x   x   :                   E  T V  ?  
 
-      V                                                               B  x   x   :                   E  T   ?  
+      V                                                               B  x   x   :                   E  T V  ?  
 
       V                                                                       Ԁ                x   x   :               0
-    E  T   @  
+    E  T R  @  
 
-       V                                                                       Ԁ                x   x   :                   E  T   ?  
+       V                                                                       Ԁ                x   x   :                   E  T R  ?  
 
-       V                                                                       Ԁ                \   \               	    E  8   @  
+       V                                                                       Ԁ                \   \               	    E  8 D  @  
 
  $    D 
   D  
@@ -1388,27 +1389,27 @@
   F    
   
          x   x   :                
-    E  T   @  
+    E  T W  @  
 
-      W                                                                       Ԁ                x   x   :                   E  T   ?  
+      W                                                                       Ԁ                x   x   :                   E  T W  ?  
 
       W                                                                       Ԁ              Z  x   x   :               @
-    E  T   @  
+    E  T S  @  
 
-       W                                                               d        Ԁ                x   x   :                   E  T   ?  
+       W                                                               d        Ԁ                x   x   :                   E  T S  ?  
 
        W                                                                       Ԁ                x   x   :               
-    E  T   @  
+    E  T X  @  
 
-      X                                                                       Ԁ                x   x   :                    E  T   ?  
+      X                                                                       Ԁ                x   x   :                    E  T X  ?  
 
       X                                                                       Ԁ              Z  x   x   :               P
-    E  T   @  
+    E  T T  @  
 
-       X                                                               d        Ԁ                x   x   :                   E  T   ?  
+       X                                                               d        Ԁ                x   x   :                   E  T T  ?  
 
        X                                                               q        Ԁ                \   \                
-    E  8   @  
+    E  8 E  @  
 
  $    E 
   E  
@@ -1419,39 +1420,39 @@
   G    
   
         \   \               `
-    E  8   @  
+    E  8 M  @  
 
  $    M 
   U  
   
          x   x   :               0
-    E  T   @  
+    E  T Y  @  
 
-      Y                                                                       Ԁ                x   x   :               0    E  T   ?  
+      Y                                                                       Ԁ                x   x   :               0    E  T Y  ?  
 
       Y                                                                       Ԁ              Z  x   x   :               p
-    E  T   @  
+    E  T U  @  
 
-       Y                                                               d        Ԁ                x   x   :               @    E  T   ?  
+       Y                                                               d        Ԁ                x   x   :               @    E  T U  ?  
 
        Y                                                                       Ԁ                x   x   :               @
-    E  T   @  
+    E  T Z  @  
 
-      Z                                                                       Ԁ                x   x   :               P    E  T   ?  
+      Z                                                                       Ԁ                x   x   :               P    E  T Z  ?  
 
       Z                                                                       Ԁ              Z  x   x   :               
-    E  T   @  
+    E  T V  @  
 
-       Z                                                               d        Ԁ                x   x   :               `    E  T   ?  
+       Z                                                               d        Ԁ                x   x   :               `    E  T V  ?  
 
        Z                                                                       Ԁ              u  \   \               P
-    E  8   @  
+    E  8 F  @  
 
  $    F 
   F  
   
          \   \               
-    E  8   @  
+    E  8 N  @  
 
  $    N 
   V  
@@ -1465,34 +1466,34 @@
   I    
   
          x   x   :               `
-    E  T   @  
+    E  T [  @  
 
-      [                                                                       Ԁ                x   x   :                   E  T   ?  
+      [                                                                       Ԁ                x   x   :                   E  T [  ?  
 
       [                                                                       Ԁ              Z  x   x   :               
-    E  T   @  
+    E  T W  @  
 
-       [                                                               d        Ԁ                x   x   :                   E  T   ?  
+       [                                                               d        Ԁ                x   x   :                   E  T W  ?  
 
        [                                                                       Ԁ                x   x   :               p
-    E  T   @  
+    E  T \  @  
 
-      \                                                                       Ԁ                x   x   :                   E  T   ?  
+      \                                                                       Ԁ                x   x   :                   E  T \  ?  
 
       \                                                                       Ԁ              Z  x   x   :               
-    E  T   @  
+    E  T X  @  
 
        \                                                               d        Ԁ              
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T X  ?  
 
        \                                                                       Ԁ              g  \   \               
-    E  8   @  
+    E  8 O  @  
 
  $    O 
   W  
   
        ) \   \               
-    E  8   @  
+    E  8 G  @  
 
  $    G 
   G  
@@ -1503,24 +1504,24 @@
   J    
   
          x   x   :               
-    E  T   @  
+    E  T ]  @  
 
-      ]                                                                       Ԁ                x   x   :                   E  T   ?  
+      ]                                                                       Ԁ                x   x   :                   E  T ]  ?  
 
       ]                                                                       Ԁ              Z  x   x   :               
-    E  T   @  
+    E  T Y  @  
 
-       ]                                                               d        Ԁ                x   x   :                   E  T   ?  
+       ]                                                               d        Ԁ                x   x   :                   E  T Y  ?  
 
        ]                                                               a        Ԁ                x   x   :               
-    E  T   @  
+    E  T ^  @  
 
-      ^                                                                       Ԁ                x   x   :                   E  T   ?  
+      ^                                                                       Ԁ                x   x   :                   E  T ^  ?  
 
       ^                                                                       Ԁ              Z  x   x   :               
-    E  T   @  
+    E  T Z  @  
 
-       ^                                                               d        Ԁ              *  x   x   :                    E  T   ?  
+       ^                                                               d        Ԁ              *  x   x   :                    E  T Z  ?  
 
        ^                                                                       Ԁ              E  d   d                   E  @ I  @  
 
@@ -1528,26 +1529,26 @@
   K    
   
        ݁ \   \               
-    E  8   @  
+    E  8 H  @  
 
  $    H 
   H  
   
         \   \               
-    E  8   @  
+    E  8 P  @  
 
  $    P 
   X  
   
          x   x   :               
-    E  T   @  
+    E  T _  @  
 
-      _                                                                       Ԁ                x   x   :                    E  T   ?  
+      _                                                                       Ԁ                x   x   :                    E  T _  ?  
 
-      _                                                                       Ԁ              Z  x   x   :                    E  T   @  
+      _                                                                       Ԁ              Z  x   x   :                    E  T [  @  
 
        _                                                               d        Ԁ              
-  x   x   :               0    E  T   ?  
+  x   x   :               0    E  T [  ?  
 
        _                                                                       Ԁ               \   \               @    E  8 J  @  
 
@@ -1555,15 +1556,15 @@
   L   
 
          x   x   :               
-    E  T   @  
+    E  T `  @  
 
-      `                                                                       Ԁ                x   x   :               P    E  T   ?  
+      `                                                                       Ԁ                x   x   :               P    E  T `  ?  
 
-      `                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      `                                                                       Ԁ              Z  x   x   :                   E  T \  @  
 
-       `                                                               d        Ԁ                x   x   :               `    E  T   ?  
+       `                                                               d        Ԁ                x   x   :               `    E  T \  ?  
 
-       `                                                               N        Ԁ              (n \   \                    E  8   @  
+       `                                                               N        Ԁ              (n \   \                    E  8 Q  @  
 
  $    Q 
   Y  
@@ -1574,58 +1575,58 @@
   M    
   
        > \   \               
-    E  8   @  
+    E  8 I  @  
 
  $    I 
   I  
   
          x   x   :               
-    E  T   @  
+    E  T a  @  
 
-      a                                                                       Ԁ                x   x   :                   E  T   ?  
+      a                                                                       Ԁ                x   x   :                   E  T a  ?  
 
-      a                                                                       Ԁ              Z  x   x   :               0    E  T   @  
+      a                                                                       Ԁ              Z  x   x   :               0    E  T ]  @  
 
-       a                                                               d        Ԁ                x   x   :                   E  T   ?  
+       a                                                               d        Ԁ                x   x   :                   E  T ]  ?  
 
-       a                                                                       Ԁ                x   x   :                    E  T   @  
+       a                                                                       Ԁ                x   x   :                    E  T b  @  
 
-      b                                                                       Ԁ                x   x   :                   E  T   ?  
+      b                                                                       Ԁ                x   x   :                   E  T b  ?  
 
-      b                                                                       Ԁ              Z  x   x   :               @    E  T   @  
+      b                                                                       Ԁ              Z  x   x   :               @    E  T ^  @  
 
-       b                                                               d        Ԁ              ~  x   x   :                   E  T   ?  
+       b                                                               d        Ԁ              ~  x   x   :                   E  T ^  ?  
 
        b                                                               :        Ԁ              3 d   d                   E  @ L  @  
 
  ,   $ L  
   N    
   
-        \   \               P    E  8   @  
+        \   \               P    E  8 R  @  
 
  $    R 
   Z  
   
-        \   \                   E  8   @  
+        \   \                   E  8 J  @  
 
  $    J 
   J  
   
-         x   x   :                    E  T   @  
+         x   x   :                    E  T c  @  
 
-      c                                                                       Ԁ                x   x   :                   E  T   ?  
+      c                                                                       Ԁ                x   x   :                   E  T c  ?  
 
-      c                                                                       Ԁ              Z  x   x   :               `    E  T   @  
+      c                                                                       Ԁ              Z  x   x   :               `    E  T _  @  
 
-       c                                                               d        Ԁ                x   x   :                   E  T   ?  
+       c                                                               d        Ԁ                x   x   :                   E  T _  ?  
 
-       c                                                               r        Ԁ                x   x   :               0    E  T   @  
+       c                                                               r        Ԁ                x   x   :               0    E  T d  @  
 
-      d                                                                       Ԁ                x   x   :                   E  T   ?  
+      d                                                                       Ԁ                x   x   :                   E  T d  ?  
 
-      d                                                                       Ԁ              Z  x   x   :               p    E  T   @  
+      d                                                                       Ԁ              Z  x   x   :               p    E  T `  @  
 
-       d                                                               d        Ԁ                x   x   :                    E  T   ?  
+       d                                                               d        Ԁ                x   x   :                    E  T `  ?  
 
        d                                                                       Ԁ              " |   |                   E  X M  @  
 
@@ -1635,38 +1636,38 @@
   
   P    
   
-       t \   \                   E  8   @  
+       t \   \                   E  8 S  @  
 
  $    S 
   [  
   
-       j@ \   \               @    E  8   @  
+       j@ \   \               @    E  8 K  @  
 
  $    K 
   K  
   
-         x   x   :               P    E  T   @  
+         x   x   :               P    E  T e  @  
 
-      e                                                                       Ԁ                x   x   :                    E  T   ?  
+      e                                                                       Ԁ                x   x   :                    E  T e  ?  
 
-      e                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      e                                                                       Ԁ              Z  x   x   :                   E  T a  @  
 
-       e                                                               d        Ԁ                x   x   :               0    E  T   ?  
+       e                                                               d        Ԁ                x   x   :               0    E  T a  ?  
 
-       e                                                                       Ԁ                x   x   :               `    E  T   @  
+       e                                                                       Ԁ                x   x   :               `    E  T f  @  
 
-      f                                                                       Ԁ                x   x   :               @    E  T   ?  
+      f                                                                       Ԁ                x   x   :               @    E  T f  ?  
 
-      f                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      f                                                                       Ԁ              Z  x   x   :                   E  T b  @  
 
-       f                                                               d        Ԁ                x   x   :               P    E  T   ?  
+       f                                                               d        Ԁ                x   x   :               P    E  T b  ?  
 
-       f                                                               ^        Ԁ                \   \                   E  8   @  
+       f                                                               ^        Ԁ                \   \                   E  8 T  @  
 
  $    T 
   \  
   
-       > \   \               p    E  8   @  
+       > \   \               p    E  8 L  @  
 
  $    L 
   L  
@@ -1676,95 +1677,95 @@
  ,   $ N  
   Q    
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T g  @  
 
-      g                                                                       Ԁ                x   x   :               p    E  T   ?  
+      g                                                                       Ԁ                x   x   :               p    E  T g  ?  
 
-      g                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      g                                                                       Ԁ              Z  x   x   :                   E  T c  @  
 
-       g                                                               d        Ԁ                x   x   :                   E  T   ?  
+       g                                                               d        Ԁ                x   x   :                   E  T c  ?  
 
-       g                                                                       Ԁ                x   x   :                   E  T   @  
+       g                                                                       Ԁ                x   x   :                   E  T h  @  
 
-      h                                                                       Ԁ                x   x   :                   E  T   ?  
+      h                                                                       Ԁ                x   x   :                   E  T h  ?  
 
-      h                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      h                                                                       Ԁ              Z  x   x   :                   E  T d  @  
 
-       h                                                               d        Ԁ                x   x   :                   E  T   ?  
+       h                                                               d        Ԁ                x   x   :                   E  T d  ?  
 
        h                                                                       Ԁ              8  d   d                   E  @ O  @  
 
  ,   $ O  
   R    
   
-       Q \   \                   E  8   @  
+       Q \   \                   E  8 M  @  
 
  $    M 
   M  
   
-       v \   \                   E  8   @  
+       v \   \                   E  8 U  @  
 
  $    U 
   ]  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T i  @  
 
-      i                                                                       Ԁ                x   x   :                   E  T   ?  
+      i                                                                       Ԁ                x   x   :                   E  T i  ?  
 
-      i                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      i                                                                       Ԁ              Z  x   x   :                   E  T e  @  
 
-       i                                                               d        Ԁ              V  x   x   :                   E  T   ?  
+       i                                                               d        Ԁ              V  x   x   :                   E  T e  ?  
 
        i                                                                       Ԁ              ' \   \                   E  8 P  @  
 
  $    P 
   S   
 
-         x   x   :                   E  T   @  
+         x   x   :                   E  T j  @  
 
-      j                                                                       Ԁ                x   x   :                   E  T   ?  
+      j                                                                       Ԁ                x   x   :                   E  T j  ?  
 
-      j                                                                       Ԁ              Z  x   x   :                    E  T   @  
+      j                                                                       Ԁ              Z  x   x   :                    E  T f  @  
 
-       j                                                               d        Ԁ                x   x   :                	    E  T   ?  
+       j                                                               d        Ԁ                x   x   :                	    E  T f  ?  
 
        j                                                               r        Ԁ              & d   d               	    E  @ Q  @  
 
  ,   $ Q  
   T    
   
-       o/ \   \                   E  8   @  
+       o/ \   \                   E  8 V  @  
 
  $    V 
   ^  
   
-       L \   \                   E  8   @  
+       L \   \                   E  8 N  @  
 
  $    N 
   N  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T k  @  
 
-      k                                                                       Ԁ                x   x   :                	    E  T   ?  
+      k                                                                       Ԁ                x   x   :                	    E  T k  ?  
 
-      k                                                                       Ԁ              Z  x   x   :                    E  T   @  
+      k                                                                       Ԁ              Z  x   x   :                    E  T g  @  
 
-       k                                                               d        Ԁ              >  x   x   :               0	    E  T   ?  
+       k                                                               d        Ԁ              >  x   x   :               0	    E  T g  ?  
 
-       k                                                                       Ԁ                x   x   :                   E  T   @  
+       k                                                                       Ԁ                x   x   :                   E  T l  @  
 
-      l                                                                       Ԁ                x   x   :               @	    E  T   ?  
+      l                                                                       Ԁ                x   x   :               @	    E  T l  ?  
 
-      l                                                                       Ԁ              Z  x   x   :               0    E  T   @  
+      l                                                                       Ԁ              Z  x   x   :               0    E  T h  @  
 
-       l                                                               d        Ԁ                x   x   :               P	    E  T   ?  
+       l                                                               d        Ԁ                x   x   :               P	    E  T h  ?  
 
-       l                                                                       Ԁ              - \   \                    E  8   @  
+       l                                                                       Ԁ              - \   \                    E  8 O  @  
 
  $    O 
   O  
   
-       0 \   \               @    E  8   @  
+       0 \   \               @    E  8 W  @  
 
  $    W 
   _  
@@ -1774,23 +1775,23 @@
  ,   $ R  
   U    
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T m  @  
 
-      m                                                                       Ԁ                x   x   :               p	    E  T   ?  
+      m                                                                       Ԁ                x   x   :               p	    E  T m  ?  
 
-      m                                                                       Ԁ              Z  x   x   :               P    E  T   @  
+      m                                                                       Ԁ              Z  x   x   :               P    E  T i  @  
 
-       m                                                               d        Ԁ                x   x   :               	    E  T   ?  
+       m                                                               d        Ԁ                x   x   :               	    E  T i  ?  
 
-       m                                                               r        Ԁ                x   x   :                    E  T   @  
+       m                                                               r        Ԁ                x   x   :                    E  T n  @  
 
-      n                                                                       Ԁ                x   x   :               	    E  T   ?  
+      n                                                                       Ԁ                x   x   :               	    E  T n  ?  
 
-      n                                                                       Ԁ              Z  x   x   :               `    E  T   @  
+      n                                                                       Ԁ              Z  x   x   :               `    E  T j  @  
 
-       n                                                               d        Ԁ                x   x   :               	    E  T   ?  
+       n                                                               d        Ԁ                x   x   :               	    E  T j  ?  
 
-       n                                                                       Ԁ              '5 \   \               0    E  8   @  
+       n                                                                       Ԁ              '5 \   \               0    E  8 P  @  
 
  $    P 
   P  
@@ -1803,28 +1804,28 @@
   
   W    
   
-        \   \               p    E  8   @  
+        \   \               p    E  8 X  @  
 
  $    X 
   `  
   
-         x   x   :               @    E  T   @  
+         x   x   :               @    E  T o  @  
 
-      o                                                                       Ԁ                x   x   :               	    E  T   ?  
+      o                                                                       Ԁ                x   x   :               	    E  T o  ?  
 
-      o                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      o                                                                       Ԁ              Z  x   x   :                   E  T k  @  
 
-       o                                                               d        Ԁ                x   x   :               	    E  T   ?  
+       o                                                               d        Ԁ                x   x   :               	    E  T k  ?  
 
-       o                                                               N        Ԁ                x   x   :               P    E  T   @  
+       o                                                               N        Ԁ                x   x   :               P    E  T p  @  
 
-      p                                                                       Ԁ                x   x   :               	    E  T   ?  
+      p                                                                       Ԁ                x   x   :               	    E  T p  ?  
 
-      p                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      p                                                                       Ԁ              Z  x   x   :                   E  T l  @  
 
-       p                                                               d        Ԁ                x   x   :               	    E  T   ?  
+       p                                                               d        Ԁ                x   x   :               	    E  T l  ?  
 
-       p                                                                       Ԁ              I \   \                   E  8   @  
+       p                                                                       Ԁ              I \   \                   E  8 Y  @  
 
  $    Y 
   a  
@@ -1835,30 +1836,30 @@
  ,   $ T  
   X    
   
-       b \   \               `    E  8   @  
+       b \   \               `    E  8 Q  @  
 
  $    Q 
   Q  
   
-         x   x   :               p    E  T   @  
+         x   x   :               p    E  T q  @  
 
       q                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
-      q                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      q                                                                       Ԁ              Z  x   x   :                   E  T m  @  
 
        q                                                               d        Ԁ                x   x   :                
-    E  T   ?  
+    E  T m  ?  
 
-       q                                                                       Ԁ                x   x   :                   E  T   @  
+       q                                                                       Ԁ                x   x   :                   E  T r  @  
 
       r                                                                       Ԁ                x   x   :               0
-    E  T   ?  
+    E  T r  ?  
 
-      r                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      r                                                                       Ԁ              Z  x   x   :                   E  T n  @  
 
        r                                                               d        Ԁ                x   x   :               @
-    E  T   ?  
+    E  T n  ?  
 
        r                                                                       Ԁ               d   d               P
     E  @ U  @  
@@ -1866,25 +1867,25 @@
  ,   $ U  
   Y    
   
-       j \   \                   E  8   @  
+       j \   \                   E  8 Z  @  
 
  $    Z 
   b  
   
-       ܮ \   \                   E  8   @  
+       ܮ \   \                   E  8 R  @  
 
  $    R 
   R  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T s  @  
 
       s                                                                       Ԁ                x   x   :               `
-    E  T   ?  
+    E  T s  ?  
 
-      s                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      s                                                                       Ԁ              Z  x   x   :                   E  T o  @  
 
        s                                                               d        Ԁ                x   x   :               p
-    E  T   ?  
+    E  T o  ?  
 
        s                                                                       Ԁ               \   \               
     E  8 V  @  
@@ -1892,22 +1893,22 @@
  $    V 
   Z   
 
-         x   x   :                   E  T   @  
+         x   x   :                   E  T t  @  
 
       t                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T t  ?  
 
-      t                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      t                                                                       Ԁ              Z  x   x   :                   E  T p  @  
 
        t                                                               d        Ԁ                x   x   :               
-    E  T   ?  
+    E  T p  ?  
 
-       t                                                                       Ԁ               \   \                   E  8   @  
+       t                                                                       Ԁ               \   \                   E  8 S  @  
 
  $    S 
   S  
   
-       @ \   \                    E  8   @  
+       @ \   \                    E  8 [  @  
 
  $    [ 
   c  
@@ -1918,32 +1919,32 @@
  ,   $ W  
   [    
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T u  @  
 
       u                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T u  ?  
 
-      u                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      u                                                                       Ԁ              Z  x   x   :                   E  T q  @  
 
        u                                                               d        Ԁ              ~  x   x   :               
-    E  T   ?  
+    E  T q  ?  
 
-       u                                                               :        Ԁ                x   x   :                   E  T   @  
+       u                                                               :        Ԁ                x   x   :                   E  T v  @  
 
       v                                                                       Ԁ                x   x   :               
-    E  T   ?  
+    E  T v  ?  
 
-      v                                                                       Ԁ              Z  x   x   :                    E  T   @  
+      v                                                                       Ԁ              Z  x   x   :                    E  T r  @  
 
        v                                                               d        Ԁ                x   x   :               
-    E  T   ?  
+    E  T r  ?  
 
-       v                                                               J        Ԁ               \   \                   E  8   @  
+       v                                                               J        Ԁ               \   \                   E  8 T  @  
 
  $    T 
   T  
   
-        \   \               0    E  8   @  
+        \   \               0    E  8 \  @  
 
  $    \ 
   d  
@@ -1953,21 +1954,21 @@
  ,   $ X  
   \    
   
-         x   x   :                    E  T   @  
+         x   x   :                    E  T w  @  
 
-      w                                                                       Ԁ                x   x   :                   E  T   ?  
+      w                                                                       Ԁ                x   x   :                   E  T w  ?  
 
-      w                                                                       Ԁ              Z  x   x   :               @    E  T   @  
+      w                                                                       Ԁ              Z  x   x   :               @    E  T s  @  
 
-       w                                                               d        Ԁ                x   x   :                    E  T   ?  
+       w                                                               d        Ԁ                x   x   :                    E  T s  ?  
 
-       w                                                                       Ԁ                x   x   :                   E  T   @  
+       w                                                                       Ԁ                x   x   :                   E  T x  @  
 
-      x                                                                       Ԁ                x   x   :               0    E  T   ?  
+      x                                                                       Ԁ                x   x   :               0    E  T x  ?  
 
-      x                                                                       Ԁ              Z  x   x   :               P    E  T   @  
+      x                                                                       Ԁ              Z  x   x   :               P    E  T t  @  
 
-       x                                                               d        Ԁ              V  x   x   :               @    E  T   ?  
+       x                                                               d        Ԁ              V  x   x   :               @    E  T t  ?  
 
        x                                                                       Ԁ              8  |   |               P    E  X Y  @  
 
@@ -1977,33 +1978,33 @@
   
   ^    
   
-       j \   \               `    E  8   @  
+       j \   \               `    E  8 ]  @  
 
  $    ] 
   e  
   
-       <z \   \                    E  8   @  
+       <z \   \                    E  8 U  @  
 
  $    U 
   U  
   
-         x   x   :               0    E  T   @  
+         x   x   :               0    E  T y  @  
 
-      y                                                                       Ԁ                x   x   :               `    E  T   ?  
+      y                                                                       Ԁ                x   x   :               `    E  T y  ?  
 
-      y                                                                       Ԁ              Z  x   x   :               p    E  T   @  
+      y                                                                       Ԁ              Z  x   x   :               p    E  T u  @  
 
-       y                                                               d        Ԁ                x   x   :               p    E  T   ?  
+       y                                                               d        Ԁ                x   x   :               p    E  T u  ?  
 
-       y                                                                       Ԁ                x   x   :               @    E  T   @  
+       y                                                                       Ԁ                x   x   :               @    E  T z  @  
 
-      z                                                                       Ԁ                x   x   :                   E  T   ?  
+      z                                                                       Ԁ                x   x   :                   E  T z  ?  
 
-      z                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      z                                                                       Ԁ              Z  x   x   :                   E  T v  @  
 
-       z                                                               d        Ԁ              >  x   x   :                   E  T   ?  
+       z                                                               d        Ԁ              >  x   x   :                   E  T v  ?  
 
-       z                                                                       Ԁ              P \   \               P    E  8   @  
+       z                                                                       Ԁ              P \   \               P    E  8 V  @  
 
  $    V 
   V  
@@ -2013,30 +2014,30 @@
  ,   $ Z  
   _    
   
-       " \   \                   E  8   @  
+       " \   \                   E  8 ^  @  
 
  $    ^ 
   f  
   
-         x   x   :               `    E  T   @  
+         x   x   :               `    E  T {  @  
 
-      {                                                                       Ԁ                x   x   :                   E  T   ?  
+      {                                                                       Ԁ                x   x   :                   E  T {  ?  
 
-      {                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      {                                                                       Ԁ              Z  x   x   :                   E  T w  @  
 
-       {                                                               d        Ԁ              B  x   x   :                   E  T   ?  
+       {                                                               d        Ԁ              B  x   x   :                   E  T w  ?  
 
-       {                                                                       Ԁ                x   x   :               p    E  T   @  
+       {                                                                       Ԁ                x   x   :               p    E  T |  @  
 
-      |                                                                       Ԁ                x   x   :                   E  T   ?  
+      |                                                                       Ԁ                x   x   :                   E  T |  ?  
 
-      |                                                                 x   x   :                   E  T   ?  
+      |                                                                 x   x   :                   E  T |  ?  
 
-      |                                                               f        Ԁ                x   x   :                   E  T   @  
+      |                                                               f        Ԁ                x   x   :                   E  T x  @  
 
-       |                                                               "        Ԁ                x   x   :                   E  T   ?  
+       |                                                               "        Ԁ                x   x   :                   E  T x  ?  
 
-       |                                                               !        Ԁ              .  \   \                   E  8   @  
+       |                                                               !        Ԁ              .  \   \                   E  8 W  @  
 
  $    W 
   W  
@@ -2046,60 +2047,60 @@
  ,   $ [  
   `    
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T }  @  
 
-      }                                                                       Ԁ                x   x   :                    E  T   ?  
+      }                                                                       Ԁ                x   x   :                    E  T }  ?  
 
-      }                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      }                                                                       Ԁ              Z  x   x   :                   E  T y  @  
 
-       }                                                               d        Ԁ                x   x   :                   E  T   ?  
+       }                                                               d        Ԁ                x   x   :                   E  T y  ?  
 
        }                                                               ^        Ԁ              V \   \                    E  8 \  @  
 
  $    \ 
   a   
 
-         x   x   :                   E  T   @  
+         x   x   :                   E  T ~  @  
 
-      ~                                                                       Ԁ                x   x   :               0    E  T   ?  
+      ~                                                                       Ԁ                x   x   :               0    E  T ~  ?  
 
-      ~                                                                       Ԁ              Z  x   x   :                   E  T   @  
+      ~                                                                       Ԁ              Z  x   x   :                   E  T z  @  
 
-       ~                                                               d        Ԁ                x   x   :               @    E  T   ?  
+       ~                                                               d        Ԁ                x   x   :               @    E  T z  ?  
 
        ~                                                                       Ԁ              u d   d               P    E  @ ]  @  
 
  ,   $ ]  
   b    
   
-       = \   \                   E  8   @  
+       = \   \                   E  8 X  @  
 
  $    X 
   X  
   
-        \   \                   E  8   @  
+        \   \                   E  8 `  @  
 
  $    ` 
   h  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :               `    E  T   ?  
+                                                                             Ԁ                x   x   :               `    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                    E  T   @  
+                                                                             Ԁ              Z  x   x   :                    E  T {  @  
 
                                                                       d        Ԁ              
-  x   x   :               p    E  T   ?  
+  x   x   :               p    E  T {  ?  
 
-                                                                              Ԁ                x   x   :                   E  T   @  
+                                                                              Ԁ                x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T |  @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T |  ?  
 
-                                                                              Ԁ              ( \   \                   E  8   @  
+                                                                              Ԁ              ( \   \                   E  8 Y  @  
 
  $    Y 
   Y  
@@ -2109,28 +2110,28 @@
  ,   $ ^  
   c    
   
-       9 \   \                    E  8   @  
+       9 \   \                    E  8 a  @  
 
  $    a 
   i  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               0    E  T   @  
+                                                                             Ԁ              Z  x   x   :               0    E  T }  @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T }  ?  
 
-                                                                              Ԁ                x   x   :                    E  T   @  
+                                                                              Ԁ                x   x   :                    E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               @    E  T   @  
+                                                                             Ԁ              Z  x   x   :               @    E  T ~  @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T ~  ?  
 
-                                                                      r        Ԁ                 \   \                   E  8   @  
+                                                                      r        Ԁ                 \   \                   E  8 Z  @  
 
  $    Z 
   Z  
@@ -2143,33 +2144,33 @@
   
   e    
   
-       > \   \               P    E  8   @  
+       > \   \               P    E  8 b  @  
 
  $    b 
   j  
   
-         x   x   :                    E  T   @  
+         x   x   :                    E  T   @  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               `    E  T   @  
+                                                                             Ԁ              Z  x   x   :               `    E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ                x   x   :               0    E  T   @  
+                                                                              Ԁ                x   x   :               0    E  T   @  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               p    E  T   @  
+                                                                             Ԁ              Z  x   x   :               p    E  T   @  
 
-                                                                      d        Ԁ                x   x   :               0    E  T   ?  
+                                                                      d        Ԁ                x   x   :               0    E  T   ?  
 
-                                                                              Ԁ               \   \                   E  8   @  
+                                                                              Ԁ               \   \                   E  8 c  @  
 
  $    c 
   k  
   
-        \   \               @    E  8   @  
+        \   \               @    E  8 [  @  
 
  $    [ 
   [  
@@ -2179,90 +2180,90 @@
  ,   $ `  
   f    
   
-         x   x   :               P    E  T   @  
+         x   x   :               P    E  T   @  
 
-                                                                             Ԁ                x   x   :               P    E  T   ?  
+                                                                             Ԁ                x   x   :               P    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :               `    E  T   ?  
+                                                                      d        Ԁ                x   x   :               `    E  T   ?  
 
-                                                                      b        Ԁ                x   x   :               `    E  T   @  
+                                                                      b        Ԁ                x   x   :               `    E  T   @  
 
-                                                                             Ԁ                x   x   :               p    E  T   ?  
+                                                                             Ԁ                x   x   :               p    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ              4 d   d                   E  @ a  @  
 
  ,   $ a  
   g    
   
-       & \   \                   E  8   @  
+       & \   \                   E  8 d  @  
 
  $    d 
   l  
   
-         \   \               p    E  8   @  
+         \   \               p    E  8 \  @  
 
  $    \ 
   \  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
                                                                               Ԁ              M \   \                   E  8 b  @  
 
  $    b 
   h   
 
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ              2  x   x   :                   E  T   ?  
+                                                                      d        Ԁ              2  x   x   :                   E  T   ?  
 
                                                                               Ԁ              ;\  d   d                   E  @ c  @  
 
  ,   $ c  
   i    
   
-       ¢ \   \                   E  8   @  
+       ¢ \   \                   E  8 e  @  
 
  $    e 
   m  
   
-       ^ \   \                   E  8   @  
+       ^ \   \                   E  8 ]  @  
 
  $    ] 
   ]  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
-                                                                      J        Ԁ                x   x   :                   E  T   @  
+                                                                      J        Ԁ                x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                    E  T   ?  
+                                                                             Ԁ                x   x   :                    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                    E  T   @  
+                                                                             Ԁ              Z  x   x   :                    E  T   @  
 
-                                                                      d        Ԁ                x   x   :               0    E  T   ?  
+                                                                      d        Ԁ                x   x   :               0    E  T   ?  
 
-                                                                      v        Ԁ              i \   \                   E  8   @  
+                                                                      v        Ԁ              i \   \                   E  8 f  @  
 
  $    f 
   n  
@@ -2273,28 +2274,28 @@
  ,   $ d  
   j    
   
-        \   \                   E  8   @  
+        \   \                   E  8 ^  @  
 
  $    ^ 
   ^  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :               P    E  T   ?  
+                                                                             Ԁ                x   x   :               P    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                    E  T   @  
+                                                                             Ԁ              Z  x   x   :                    E  T   @  
 
-                                                                      d        Ԁ                x   x   :               `    E  T   ?  
+                                                                      d        Ԁ                x   x   :               `    E  T   ?  
 
-                                                                      r        Ԁ                x   x   :                   E  T   @  
+                                                                      r        Ԁ                x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :               p    E  T   ?  
+                                                                             Ԁ                x   x   :               p    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               0    E  T   @  
+                                                                             Ԁ              Z  x   x   :               0    E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
-                                                                      ^        Ԁ               \   \                    E  8   @  
+                                                                      ^        Ԁ               \   \                    E  8 _  @  
 
  $    _ 
   _  
@@ -2307,29 +2308,29 @@
   
   l    
   
-       / \   \               @    E  8   @  
+       / \   \               @    E  8 g  @  
 
  $    g 
   o  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               P    E  T   @  
+                                                                             Ԁ              Z  x   x   :               P    E  T   @  
 
-                                                                      d        Ԁ              ~  x   x   :                   E  T   ?  
+                                                                      d        Ԁ              ~  x   x   :                   E  T   ?  
 
-                                                                      :        Ԁ                x   x   :                    E  T   @  
+                                                                      :        Ԁ                x   x   :                    E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :               `    E  T   @  
+                                                                             Ԁ              Z  x   x   :               `    E  T   @  
 
                                                                       d        Ԁ              
-  x   x   :                   E  T   ?  
+  x   x   :                   E  T   ?  
 
-                                                                              Ԁ              " \   \               0    E  8   @  
+                                                                              Ԁ              " \   \               0    E  8 `  @  
 
  $    ` 
   `  
@@ -2339,33 +2340,33 @@
  ,   $ f  
   m    
   
-       ! \   \               p    E  8   @  
+       ! \   \               p    E  8 h  @  
 
  $    h 
   p  
   
-         x   x   :               @    E  T   @  
+         x   x   :               @    E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                    E  T   ?  
+                                                                      d        Ԁ                x   x   :                    E  T   ?  
 
-                                                                              Ԁ                x   x   :               P    E  T   @  
+                                                                              Ԁ                x   x   :               P    E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ              2  x   x   :                    E  T   ?  
+                                                                      d        Ԁ              2  x   x   :                    E  T   ?  
 
-                                                                              Ԁ              ?R  \   \               `    E  8   @  
+                                                                              Ԁ              ?R  \   \               `    E  8 a  @  
 
  $    a 
   a  
   
-        \   \                   E  8   @  
+        \   \                   E  8 i  @  
 
  $    i 
   q  
@@ -2375,28 +2376,28 @@
  ,   $ g  
   n    
   
-         x   x   :               p    E  T   @  
+         x   x   :               p    E  T   @  
 
-                                                                             Ԁ                x   x   :               @    E  T   ?  
+                                                                             Ԁ                x   x   :               @    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :               P    E  T   ?  
+                                                                      d        Ԁ                x   x   :               P    E  T   ?  
 
                                                                               Ԁ               \   \               `    E  8 h  @  
 
  $    h 
   o   
 
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :               p    E  T   ?  
+                                                                             Ԁ                x   x   :               p    E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ              f  x   x   :                   E  T   ?  
+                                                                      d        Ԁ              f  x   x   :                   E  T   ?  
 
-                                                                      "        Ԁ               \   \                   E  8   @  
+                                                                      "        Ԁ               \   \                   E  8 b  @  
 
  $    b 
   b  
@@ -2406,33 +2407,33 @@
  ,   $ i  
   p    
   
-       \ \   \                   E  8   @  
+       \ \   \                   E  8 j  @  
 
  $    j 
   r  
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ                x   x   :                   E  T   @  
+                                                                              Ԁ                x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                   E  T   ?  
+                                                                      d        Ԁ                x   x   :                   E  T   ?  
 
-                                                                              Ԁ              X \   \                    E  8   @  
+                                                                              Ԁ              X \   \                    E  8 k  @  
 
  $    k 
   s  
   
-       &9 \   \                   E  8   @  
+       &9 \   \                   E  8 c  @  
 
  $    c 
   c  
@@ -2442,12 +2443,12 @@
  ,   $ j  
   q    
   
-         x   x   :                   E  T   @  
+         x   x   :                   E  T   @  
 
-                                                                             Ԁ                x   x   :                   E  T   ?  
+                                                                             Ԁ                x   x   :                   E  T   ?  
 
-                                                                             Ԁ              Z  x   x   :                   E  T   @  
+                                                                             Ԁ              Z  x   x   :                   E  T   @  
 
-                                                                      d        Ԁ                x   x   :                    E  T   ?  
+                                                                      d        Ԁ                x   x   :                    E  T   ?  
 
                                                                               Ԁ           
\ No newline at end of file
diff -Naur ns-3.19/src/olsr/test/olsr-header-test-suite.cc ns-3.20/src/olsr/test/olsr-header-test-suite.cc
--- ns-3.19/src/olsr/test/olsr-header-test-suite.cc	2014-06-17 10:34:00.663634924 -0700
+++ ns-3.20/src/olsr/test/olsr-header-test-suite.cc	2014-06-17 10:33:14.025994943 -0700
@@ -22,7 +22,7 @@
 #include "ns3/olsr-header.h"
 #include "ns3/packet.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class OlsrEmfTestCase : public TestCase {
 public:
@@ -311,6 +311,3 @@
   AddTestCase (new OlsrMidTestCase (), TestCase::QUICK);
   AddTestCase (new OlsrEmfTestCase (), TestCase::QUICK);
 }
-
-} // namespace ns3
-
diff -Naur ns-3.19/src/olsr/test/olsr-routing-protocol-test-suite.cc ns-3.20/src/olsr/test/olsr-routing-protocol-test-suite.cc
--- ns-3.19/src/olsr/test/olsr-routing-protocol-test-suite.cc	2014-06-17 10:34:00.664634916 -0700
+++ ns-3.20/src/olsr/test/olsr-routing-protocol-test-suite.cc	2014-06-17 10:33:14.026994935 -0700
@@ -37,8 +37,8 @@
 /// Willingness for forwarding packets from other nodes: always.
 #define OLSR_WILL_ALWAYS        7
 
-namespace ns3 {
-namespace olsr {
+using namespace ns3;
+using namespace olsr;
 
 /// Testcase for MPR computation mechanism
 class OlsrMprTestCase : public TestCase {
@@ -178,8 +178,3 @@
 {
   AddTestCase (new OlsrMprTestCase (), TestCase::QUICK);
 }
-
-}
-}  // namespace olsr, ns3
-
-
diff -Naur ns-3.19/src/olsr/test/regression-test-suite.cc ns-3.20/src/olsr/test/regression-test-suite.cc
--- ns-3.19/src/olsr/test/regression-test-suite.cc	2014-06-17 10:34:00.665634909 -0700
+++ ns-3.20/src/olsr/test/regression-test-suite.cc	2014-06-17 10:33:14.027994928 -0700
@@ -22,8 +22,8 @@
 #include "tc-regression-test.h"
 #include "bug780-test.h"
 
-namespace ns3 {
-namespace olsr {
+using namespace ns3;
+using namespace olsr;
 
 class RegressionTestSuite : public TestSuite
 {
@@ -36,6 +36,3 @@
     AddTestCase (new Bug780Test, TestCase::QUICK);
   }
 } g_olsrRegressionTestSuite;
-
-}
-}
diff -Naur ns-3.19/src/olsr/waf ns-3.20/src/olsr/waf
--- ns-3.19/src/olsr/waf	2014-06-17 10:34:00.666634901 -0700
+++ ns-3.20/src/olsr/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/openflow/model/openflow-switch-net-device.cc ns-3.20/src/openflow/model/openflow-switch-net-device.cc
--- ns-3.19/src/openflow/model/openflow-switch-net-device.cc	2014-06-17 10:34:00.670634870 -0700
+++ ns-3.20/src/openflow/model/openflow-switch-net-device.cc	2014-06-17 10:33:14.032994889 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (OpenFlowSwitchNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OpenFlowSwitchNetDevice);
 
 const char *
 OpenFlowSwitchNetDevice::GetManufacturerDescription ()
diff -Naur ns-3.19/src/openflow/waf ns-3.20/src/openflow/waf
--- ns-3.19/src/openflow/waf	2014-06-17 10:34:00.671634862 -0700
+++ ns-3.20/src/openflow/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/point-to-point/bindings/modulegen__gcc_ILP32.py ns-3.20/src/point-to-point/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/point-to-point/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.687634739 -0700
+++ ns-3.20/src/point-to-point/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:14.048994765 -0700
@@ -103,7 +103,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## point-to-point-helper.h (module 'point-to-point'): ns3::PointToPointHelper [class]
@@ -116,6 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -128,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -292,7 +296,7 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## error-model.h (module 'network'): ns3::BurstErrorModel [class]
     module.add_class('BurstErrorModel', import_from_module='ns.network', parent=root_module['ns3::ErrorModel'])
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -315,12 +319,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -382,6 +386,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -835,6 +840,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -847,6 +856,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2458,6 +2471,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2655,62 +2676,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2719,6 +2696,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2759,6 +2738,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3295,13 +3276,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3328,6 +3311,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4127,10 +4115,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -5044,10 +5032,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/point-to-point/bindings/modulegen__gcc_LP64.py ns-3.20/src/point-to-point/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/point-to-point/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.690634716 -0700
+++ ns-3.20/src/point-to-point/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:14.052994734 -0700
@@ -103,7 +103,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## point-to-point-helper.h (module 'point-to-point'): ns3::PointToPointHelper [class]
@@ -116,6 +116,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -128,6 +130,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -292,7 +296,7 @@
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## error-model.h (module 'network'): ns3::BurstErrorModel [class]
     module.add_class('BurstErrorModel', import_from_module='ns.network', parent=root_module['ns3::ErrorModel'])
-    module.add_container('std::list< unsigned int >', 'unsigned int', container_type='list')
+    module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -315,12 +319,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -382,6 +386,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -835,6 +840,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -847,6 +856,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2458,6 +2471,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2655,62 +2676,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2719,6 +2696,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2759,6 +2738,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3295,13 +3276,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3328,6 +3311,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4127,10 +4115,10 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
-    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
+    ## error-model.h (module 'network'): bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('DoCorrupt', 
                    'bool', 
-                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h (module 'network'): void ns3::ErrorModel::DoReset() [member function]
     cls.add_method('DoReset', 
@@ -5044,10 +5032,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/point-to-point/model/point-to-point-channel.cc ns-3.20/src/point-to-point/model/point-to-point-channel.cc
--- ns-3.19/src/point-to-point/model/point-to-point-channel.cc	2014-06-17 10:34:00.693634693 -0700
+++ ns-3.20/src/point-to-point/model/point-to-point-channel.cc	2014-06-17 10:33:14.055994711 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PointToPointChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PointToPointChannel);
 
 TypeId 
 PointToPointChannel::GetTypeId (void)
diff -Naur ns-3.19/src/point-to-point/model/point-to-point-net-device.cc ns-3.20/src/point-to-point/model/point-to-point-net-device.cc
--- ns-3.19/src/point-to-point/model/point-to-point-net-device.cc	2014-06-17 10:34:00.694634685 -0700
+++ ns-3.20/src/point-to-point/model/point-to-point-net-device.cc	2014-06-17 10:33:14.055994711 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PointToPointNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PointToPointNetDevice);
 
 TypeId 
 PointToPointNetDevice::GetTypeId (void)
@@ -319,7 +318,7 @@
     {
       // 
       // Hit the trace hooks.  All of these hooks are in the same place in this 
-      // device becuase it is so simple, but this is not usually the case in 
+      // device because it is so simple, but this is not usually the case in
       // more complicated devices.
       //
       m_snifferTrace (packet);
@@ -327,6 +326,12 @@
       m_phyRxEndTrace (packet);
 
       //
+      // Trace sinks will expect complete packets, not packets without some of the
+      // headers.
+      //
+      Ptr<Packet> originalPacket = packet->Copy ();
+
+      //
       // Strip off the point-to-point protocol header and forward this packet
       // up the protocol stack.  Since this is a simple point-to-point link,
       // there is no difference in what the promisc callback sees and what the
@@ -336,11 +341,11 @@
 
       if (!m_promiscCallback.IsNull ())
         {
-          m_macPromiscRxTrace (packet);
+          m_macPromiscRxTrace (originalPacket);
           m_promiscCallback (this, packet, protocol, GetRemote (), GetAddress (), NetDevice::PACKET_HOST);
         }
 
-      m_macRxTrace (packet);
+      m_macRxTrace (originalPacket);
       m_rxCallback (this, packet, protocol, GetRemote ());
     }
 }
@@ -488,33 +493,26 @@
   m_macTxTrace (packet);
 
   //
-  // If there's a transmission in progress, we enque the packet for later
-  // transmission; otherwise we send it now.
+  // We should enqueue and dequeue the packet to hit the tracing hooks.
   //
-  if (m_txMachineState == READY) 
+  if (m_queue->Enqueue (packet))
     {
-      // 
-      // Even if the transmitter is immediately available, we still enqueue and
-      // dequeue the packet to hit the tracing hooks.
       //
-      if (m_queue->Enqueue (packet) == true)
+      // If the channel is ready for transition we send the packet right now
+      // 
+      if (m_txMachineState == READY)
         {
           packet = m_queue->Dequeue ();
           m_snifferTrace (packet);
           m_promiscSnifferTrace (packet);
           return TransmitStart (packet);
         }
-      else
-        {
-          // Enqueue may fail (overflow)
-          m_macTxDropTrace (packet);
-          return false;
-        }
-    }
-  else
-    {
-      return m_queue->Enqueue (packet);
+      return true;
     }
+
+  // Enqueue may fail (overflow)
+  m_macTxDropTrace (packet);
+  return false;
 }
 
 bool
diff -Naur ns-3.19/src/point-to-point/model/point-to-point-remote-channel.cc ns-3.20/src/point-to-point/model/point-to-point-remote-channel.cc
--- ns-3.19/src/point-to-point/model/point-to-point-remote-channel.cc	2014-06-17 10:34:00.695634677 -0700
+++ ns-3.20/src/point-to-point/model/point-to-point-remote-channel.cc	2014-06-17 10:33:14.056994704 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PointToPointRemoteChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PointToPointRemoteChannel);
 
 TypeId
 PointToPointRemoteChannel::GetTypeId (void)
diff -Naur ns-3.19/src/point-to-point/model/ppp-header.cc ns-3.20/src/point-to-point/model/ppp-header.cc
--- ns-3.19/src/point-to-point/model/ppp-header.cc	2014-06-17 10:34:00.695634677 -0700
+++ ns-3.20/src/point-to-point/model/ppp-header.cc	2014-06-17 10:33:14.057994696 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PppHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PppHeader);
 
 PppHeader::PppHeader ()
 {
diff -Naur ns-3.19/src/point-to-point/waf ns-3.20/src/point-to-point/waf
--- ns-3.19/src/point-to-point/waf	2014-06-17 10:34:00.696634669 -0700
+++ ns-3.20/src/point-to-point/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.676634824 -0700
+++ ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:14.038994843 -0700
@@ -64,34 +64,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -155,7 +127,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
@@ -178,14 +150,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -198,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -288,10 +256,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -318,12 +282,10 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
     module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
@@ -356,8 +318,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -380,12 +342,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -425,13 +387,6 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
@@ -467,8 +422,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -512,7 +466,6 @@
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -525,7 +478,6 @@
     register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
     register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
@@ -1033,6 +985,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1045,6 +1001,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1426,55 +1386,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2062,6 +1973,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -3241,88 +3157,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -3522,62 +3362,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3586,6 +3382,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3626,6 +3424,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4940,13 +4740,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4973,6 +4775,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5374,63 +5181,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5753,6 +5503,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6106,6 +5861,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -6176,6 +5936,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -6240,151 +6005,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
@@ -6411,7 +6031,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -6546,6 +6166,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -6574,6 +6199,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7181,10 +6811,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.681634785 -0700
+++ ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:14.042994812 -0700
@@ -64,34 +64,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -155,7 +127,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## internet-trace-helper.h (module 'internet'): ns3::PcapHelperForIpv4 [class]
@@ -178,14 +150,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -198,6 +164,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -288,10 +256,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -318,12 +282,10 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol [class]
     module.add_class('Ipv6L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv6'])
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::DropReason [enumeration]
-    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_UNKNOWN_PROTOCOL', 'DROP_UNKNOWN_OPTION', 'DROP_MALFORMED_HEADER', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv6L3Protocol'], import_from_module='ns.internet')
     ## ipv6-pmtu-cache.h (module 'internet'): ns3::Ipv6PmtuCache [class]
     module.add_class('Ipv6PmtuCache', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
@@ -356,8 +318,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -380,12 +342,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -425,13 +387,6 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
@@ -467,8 +422,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -512,7 +466,6 @@
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -525,7 +478,6 @@
     register_Ns3Ipv6_methods(root_module, root_module['ns3::Ipv6'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6L3Protocol_methods(root_module, root_module['ns3::Ipv6L3Protocol'])
     register_Ns3Ipv6PmtuCache_methods(root_module, root_module['ns3::Ipv6PmtuCache'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
@@ -1033,6 +985,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1045,6 +1001,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1426,55 +1386,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2062,6 +1973,11 @@
                    'ns3::Ipv6InterfaceAddress::State_e', 
                    [], 
                    is_const=True)
+    ## ipv6-interface-address.h (module 'internet'): bool ns3::Ipv6InterfaceAddress::IsInSameSubnet(ns3::Ipv6Address b) const [member function]
+    cls.add_method('IsInSameSubnet', 
+                   'bool', 
+                   [param('ns3::Ipv6Address', 'b')], 
+                   is_const=True)
     ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
     cls.add_method('SetAddress', 
                    'void', 
@@ -3241,88 +3157,12 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
@@ -3522,62 +3362,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3586,6 +3382,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3626,6 +3424,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4940,13 +4740,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -4973,6 +4775,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5374,63 +5181,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5753,6 +5503,11 @@
                    'bool', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+    cls.add_method('IsUnicast', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'ad')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
     cls.add_method('IsUp', 
                    'bool', 
@@ -6106,6 +5861,11 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ptr<ns3::IpL4Protocol> ns3::Ipv6::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::IpL4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ptr<ns3::Ipv6RoutingProtocol> ns3::Ipv6::GetRoutingProtocol() const [member function]
     cls.add_method('GetRoutingProtocol', 
                    'ns3::Ptr< ns3::Ipv6RoutingProtocol >', 
@@ -6176,6 +5936,11 @@
                    'void', 
                    [param('uint32_t', 'interface')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ipv6.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv6.h (module 'internet'): ns3::Ipv6::IF_ANY [variable]
     cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
     ## ipv6.h (module 'internet'): bool ns3::Ipv6::GetIpForward() const [member function]
@@ -6240,151 +6005,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6L3Protocol_methods(root_module, cls):
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6L3Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
@@ -6411,7 +6031,7 @@
     cls.add_method('GetProtocol', 
                    'ns3::Ptr< ns3::IpL4Protocol >', 
                    [param('int', 'protocolNumber')], 
-                   is_const=True)
+                   is_const=True, is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv6L3Protocol::CreateRawSocket() [member function]
     cls.add_method('CreateRawSocket', 
                    'ns3::Ptr< ns3::Socket >', 
@@ -6546,6 +6166,11 @@
                    'void', 
                    [param('uint32_t', 'i'), param('bool', 'val')], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6L3Protocol::SourceAddressSelection(uint32_t interface, ns3::Ipv6Address dest) [member function]
+    cls.add_method('SourceAddressSelection', 
+                   'ns3::Ipv6Address', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv6Address', 'dest')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6L3Protocol::GetNetDevice(uint32_t i) [member function]
     cls.add_method('GetNetDevice', 
                    'ns3::Ptr< ns3::NetDevice >', 
@@ -6574,6 +6199,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::ReportDrop(ns3::Ipv6Header ipHeader, ns3::Ptr<ns3::Packet> p, ns3::Ipv6L3Protocol::DropReason dropReason) [member function]
+    cls.add_method('ReportDrop', 
+                   'void', 
+                   [param('ns3::Ipv6Header', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6L3Protocol::DropReason', 'dropReason')], 
+                   is_virtual=True)
     ## ipv6-l3-protocol.h (module 'internet'): void ns3::Ipv6L3Protocol::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7181,10 +6811,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
diff -Naur ns-3.19/src/point-to-point-layout/waf ns-3.20/src/point-to-point-layout/waf
--- ns-3.19/src/point-to-point-layout/waf	2014-06-17 10:34:00.683634770 -0700
+++ ns-3.20/src/point-to-point-layout/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/src/propagation/bindings/modulegen__gcc_ILP32.py ns-3.20/src/propagation/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/propagation/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.699634646 -0700
+++ ns-3.20/src/propagation/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:14.060994673 -0700
@@ -40,6 +40,8 @@
     module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -56,6 +58,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -184,17 +188,17 @@
     module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -218,12 +222,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -252,6 +256,7 @@
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -515,6 +520,14 @@
                    is_static=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -742,62 +755,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -806,6 +775,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -846,6 +817,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1215,13 +1188,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1248,6 +1223,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -2158,12 +2138,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -2228,13 +2208,13 @@
     return
 
 def register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411LosPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411LosPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -2257,13 +2237,13 @@
     return
 
 def register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -2339,13 +2319,13 @@
     return
 
 def register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, cls):
-    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::Kun2600MhzPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): double ns3::Kun2600MhzPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -2593,13 +2573,13 @@
     return
 
 def register_Ns3OkumuraHataPropagationLossModel_methods(root_module, cls):
-    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::OkumuraHataPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): double ns3::OkumuraHataPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
diff -Naur ns-3.19/src/propagation/bindings/modulegen__gcc_LP64.py ns-3.20/src/propagation/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/propagation/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.701634631 -0700
+++ ns-3.20/src/propagation/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:14.063994650 -0700
@@ -40,6 +40,8 @@
     module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -56,6 +58,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -184,17 +188,17 @@
     module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## vector.h (module 'core'): ns3::Vector3DValue [class]
     module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -218,12 +222,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -252,6 +256,7 @@
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -515,6 +520,14 @@
                    is_static=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -742,62 +755,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -806,6 +775,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -846,6 +817,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1215,13 +1188,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1248,6 +1223,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -2158,12 +2138,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -2228,13 +2208,13 @@
     return
 
 def register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411LosPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411LosPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -2257,13 +2237,13 @@
     return
 
 def register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -2339,13 +2319,13 @@
     return
 
 def register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, cls):
-    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::Kun2600MhzPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): double ns3::Kun2600MhzPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -2593,13 +2573,13 @@
     return
 
 def register_Ns3OkumuraHataPropagationLossModel_methods(root_module, cls):
-    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::OkumuraHataPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): double ns3::OkumuraHataPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
diff -Naur ns-3.19/src/propagation/model/cost231-propagation-loss-model.cc ns-3.20/src/propagation/model/cost231-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/cost231-propagation-loss-model.cc	2014-06-17 10:34:00.704634608 -0700
+++ ns-3.20/src/propagation/model/cost231-propagation-loss-model.cc	2014-06-17 10:33:14.065994634 -0700
@@ -29,10 +29,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("Cost231PropagationLossModel")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (Cost231PropagationLossModel)
-  ;
+NS_LOG_COMPONENT_DEFINE ("Cost231PropagationLossModel");
+NS_OBJECT_ENSURE_REGISTERED (Cost231PropagationLossModel);
 
 TypeId
 Cost231PropagationLossModel::GetTypeId (void)
@@ -168,15 +166,18 @@
       return 0.0;
     }
 
-  double log_f = std::log (m_frequency / 1000000000) / 2.302;
-  double C_H = 0.8 + ((1.11 * log_f) - 0.7) * m_SSAntennaHeight - (1.56 * log_f);
-  double log_BSH = std::log (m_BSAntennaHeight) / 2.303;
+  double frequency_MHz = m_frequency * 1e-6;
+
+  double distance_km = distance * 1e-3;
+
+  double C_H = 0.8 + ((1.11 * std::log10(frequency_MHz)) - 0.7) * m_SSAntennaHeight - (1.56 * std::log10(frequency_MHz));
 
   // from the COST231 wiki entry
-  // 2.303 is for the logarithm base change
+  // See also http://www.lx.it.pt/cost231/final_report.htm
+  // Ch. 4, eq. 4.4.3, pg. 135
 
-  double loss_in_db = 46.3 + (33.9 * log_f) - (13.82 * log_BSH) - C_H + ((44.9 - 6.55 * log_BSH) * std::log (distance)
-                                                                         / 2.303) + C + m_shadowing;
+  double loss_in_db = 46.3 + (33.9 * std::log10(frequency_MHz)) - (13.82 * std::log10 (m_BSAntennaHeight)) - C_H
+		  	  	  + ((44.9 - 6.55 * std::log10 (m_BSAntennaHeight)) * std::log10 (distance_km)) + C + m_shadowing;
 
   NS_LOG_DEBUG ("dist =" << distance << ", Path Loss = " << loss_in_db);
 
diff -Naur ns-3.19/src/propagation/model/itu-r-1411-los-propagation-loss-model.cc ns-3.20/src/propagation/model/itu-r-1411-los-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/itu-r-1411-los-propagation-loss-model.cc	2014-06-17 10:34:00.704634608 -0700
+++ ns-3.20/src/propagation/model/itu-r-1411-los-propagation-loss-model.cc	2014-06-17 10:33:14.066994627 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ItuR1411LosPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ItuR1411LosPropagationLossModel);
 
 TypeId
 ItuR1411LosPropagationLossModel::GetTypeId (void)
@@ -40,6 +39,7 @@
   static TypeId tid = TypeId ("ns3::ItuR1411LosPropagationLossModel")
 
     .SetParent<PropagationLossModel> ()
+    .AddConstructor<ItuR1411LosPropagationLossModel> ()
 
     .AddAttribute ("Frequency",
                    "The propagation frequency in Hz",
@@ -50,6 +50,15 @@
   return tid;
 }
 
+ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel ()
+  : PropagationLossModel ()
+{
+}
+
+ItuR1411LosPropagationLossModel::~ItuR1411LosPropagationLossModel ()
+{
+}
+
 double
 ItuR1411LosPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
 {
diff -Naur ns-3.19/src/propagation/model/itu-r-1411-los-propagation-loss-model.h ns-3.20/src/propagation/model/itu-r-1411-los-propagation-loss-model.h
--- ns-3.19/src/propagation/model/itu-r-1411-los-propagation-loss-model.h	2014-06-17 10:34:00.705634600 -0700
+++ ns-3.20/src/propagation/model/itu-r-1411-los-propagation-loss-model.h	2014-06-17 10:33:14.066994627 -0700
@@ -47,6 +47,9 @@
   // inherited from Object
   static TypeId GetTypeId (void);
 
+  ItuR1411LosPropagationLossModel ();
+  virtual ~ItuR1411LosPropagationLossModel ();
+
   /** 
    * Set the operating frequency
    * 
diff -Naur ns-3.19/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc ns-3.20/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc	2014-06-17 10:34:00.705634600 -0700
+++ ns-3.20/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc	2014-06-17 10:33:13.613998123 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ItuR1411NlosOverRooftopPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ItuR1411NlosOverRooftopPropagationLossModel);
 
 
 TypeId
@@ -41,6 +40,7 @@
   static TypeId tid = TypeId ("ns3::ItuR1411NlosOverRooftopPropagationLossModel")
 
     .SetParent<PropagationLossModel> ()
+    .AddConstructor<ItuR1411NlosOverRooftopPropagationLossModel> ()
 
     .AddAttribute ("Frequency",
                    "The Frequency  (default is 2.106 GHz).",
@@ -98,6 +98,14 @@
   return tid;
 }
 
+ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel ()
+  : PropagationLossModel ()
+{
+}
+
+ItuR1411NlosOverRooftopPropagationLossModel::~ItuR1411NlosOverRooftopPropagationLossModel ()
+{
+}
 
 double
 ItuR1411NlosOverRooftopPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
diff -Naur ns-3.19/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.h ns-3.20/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.h
--- ns-3.19/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.h	2014-06-17 10:34:00.705634600 -0700
+++ ns-3.20/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.h	2014-06-17 10:33:13.613998123 -0700
@@ -47,6 +47,9 @@
   // inherited from Object
   static TypeId GetTypeId (void);
 
+  ItuR1411NlosOverRooftopPropagationLossModel ();
+  virtual ~ItuR1411NlosOverRooftopPropagationLossModel ();
+
   /** 
    * Set the operating frequency
    * 
diff -Naur ns-3.19/src/propagation/model/jakes-process.cc ns-3.20/src/propagation/model/jakes-process.cc
--- ns-3.19/src/propagation/model/jakes-process.cc	2014-06-17 10:34:00.706634592 -0700
+++ ns-3.20/src/propagation/model/jakes-process.cc	2014-06-17 10:33:13.614998115 -0700
@@ -43,8 +43,7 @@
   return (m_amplitude * std::cos (at.GetSeconds () * m_omega + m_phase));
 }
 
-NS_OBJECT_ENSURE_REGISTERED (JakesProcess)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (JakesProcess);
 
 TypeId
 JakesProcess::GetTypeId ()
diff -Naur ns-3.19/src/propagation/model/jakes-process.h ns-3.20/src/propagation/model/jakes-process.h
--- ns-3.19/src/propagation/model/jakes-process.h	2014-06-17 10:34:00.706634592 -0700
+++ ns-3.20/src/propagation/model/jakes-process.h	2014-06-17 10:33:13.614998115 -0700
@@ -71,11 +71,11 @@
     Oscillator (std::complex<double> amplitude, double initialPhase, double omega);
     // Get the complex amplitude at moment \param t
     std::complex<double> GetValueAt (Time t) const;
-    /// Complex number \f[Re=\cos(\psi_n), Im = i\sin(\psi_n)]
+    /// Complex number \f$Re=\cos(\psi_n), Im = i\sin(\psi_n)]\f$
     std::complex<double> m_amplitude;
-    /// Phase \f[\phi_n] of the oscillator
+    /// Phase \f$\phi_n\f$ of the oscillator
     double m_phase;
-    /// Rotation speed of the oscillator \f[\omega_d \cos(\alpha_n)]
+    /// Rotation speed of the oscillator \f$\omega_d \cos(\alpha_n)\f$
     double m_omega;
   };
 private:
diff -Naur ns-3.19/src/propagation/model/jakes-propagation-loss-model.cc ns-3.20/src/propagation/model/jakes-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/jakes-propagation-loss-model.cc	2014-06-17 10:34:00.706634592 -0700
+++ ns-3.20/src/propagation/model/jakes-propagation-loss-model.cc	2014-06-17 10:33:13.615998107 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3
 {
-NS_OBJECT_ENSURE_REGISTERED (JakesPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (JakesPropagationLossModel);
 
 
 const double JakesPropagationLossModel::PI = 3.14159265358979323846;
diff -Naur ns-3.19/src/propagation/model/kun-2600-mhz-propagation-loss-model.cc ns-3.20/src/propagation/model/kun-2600-mhz-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/kun-2600-mhz-propagation-loss-model.cc	2014-06-17 10:34:00.707634584 -0700
+++ ns-3.20/src/propagation/model/kun-2600-mhz-propagation-loss-model.cc	2014-06-17 10:33:13.616998099 -0700
@@ -31,19 +31,29 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Kun2600MhzPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Kun2600MhzPropagationLossModel);
 
 
 TypeId
 Kun2600MhzPropagationLossModel::GetTypeId (void)
 {
   static TypeId tid = TypeId ("ns3::Kun2600MhzPropagationLossModel")
-    .SetParent<PropagationLossModel> ();
+    .SetParent<PropagationLossModel> ()
+    .AddConstructor<Kun2600MhzPropagationLossModel> ()
+    ;
 
   return tid;
 }
 
+Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel ()
+  : PropagationLossModel ()
+{
+}
+
+Kun2600MhzPropagationLossModel::~Kun2600MhzPropagationLossModel ()
+{
+}
+
 double
 Kun2600MhzPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
 {
diff -Naur ns-3.19/src/propagation/model/kun-2600-mhz-propagation-loss-model.h ns-3.20/src/propagation/model/kun-2600-mhz-propagation-loss-model.h
--- ns-3.19/src/propagation/model/kun-2600-mhz-propagation-loss-model.h	2014-06-17 10:34:00.265637997 -0700
+++ ns-3.20/src/propagation/model/kun-2600-mhz-propagation-loss-model.h	2014-06-17 10:33:13.616998099 -0700
@@ -46,6 +46,9 @@
   // inherited from Object
   static TypeId GetTypeId (void);
 
+  Kun2600MhzPropagationLossModel ();
+  virtual ~Kun2600MhzPropagationLossModel ();
+
   /** 
    * \param a the first mobility model
    * \param b the second mobility model
diff -Naur ns-3.19/src/propagation/model/okumura-hata-propagation-loss-model.cc ns-3.20/src/propagation/model/okumura-hata-propagation-loss-model.cc
--- ns-3.19/src/propagation/model/okumura-hata-propagation-loss-model.cc	2014-06-17 10:34:00.266637989 -0700
+++ ns-3.20/src/propagation/model/okumura-hata-propagation-loss-model.cc	2014-06-17 10:33:13.617998092 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (OkumuraHataPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OkumuraHataPropagationLossModel);
 
 
 TypeId
@@ -41,6 +40,7 @@
   static TypeId tid = TypeId ("ns3::OkumuraHataPropagationLossModel")
 
     .SetParent<PropagationLossModel> ()
+    .AddConstructor<OkumuraHataPropagationLossModel> ()
 
     .AddAttribute ("Frequency",
                    "The propagation frequency in Hz",
@@ -67,6 +67,15 @@
   return tid;
 }
 
+OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel ()
+  : PropagationLossModel ()
+{
+}
+
+OkumuraHataPropagationLossModel::~OkumuraHataPropagationLossModel ()
+{
+}
+
 double
 OkumuraHataPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
 {
diff -Naur ns-3.19/src/propagation/model/okumura-hata-propagation-loss-model.h ns-3.20/src/propagation/model/okumura-hata-propagation-loss-model.h
--- ns-3.19/src/propagation/model/okumura-hata-propagation-loss-model.h	2014-06-17 10:34:00.266637989 -0700
+++ ns-3.20/src/propagation/model/okumura-hata-propagation-loss-model.h	2014-06-17 10:33:13.617998092 -0700
@@ -48,6 +48,9 @@
   // inherited from Object
   static TypeId GetTypeId (void);
 
+  OkumuraHataPropagationLossModel ();
+  virtual ~OkumuraHataPropagationLossModel ();
+
   /** 
    * \param a the first mobility model
    * \param b the second mobility model
diff -Naur ns-3.19/src/propagation/model/propagation-delay-model.cc ns-3.20/src/propagation/model/propagation-delay-model.cc
--- ns-3.19/src/propagation/model/propagation-delay-model.cc	2014-06-17 10:34:00.267637982 -0700
+++ ns-3.20/src/propagation/model/propagation-delay-model.cc	2014-06-17 10:33:13.618998084 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (PropagationDelayModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PropagationDelayModel);
 
 TypeId 
 PropagationDelayModel::GetTypeId (void)
@@ -49,8 +48,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (RandomPropagationDelayModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomPropagationDelayModel);
 
 TypeId
 RandomPropagationDelayModel::GetTypeId (void)
@@ -86,8 +84,7 @@
   return 1;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantSpeedPropagationDelayModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantSpeedPropagationDelayModel);
 
 TypeId
 ConstantSpeedPropagationDelayModel::GetTypeId (void)
diff -Naur ns-3.19/src/propagation/model/propagation-loss-model.cc ns-3.20/src/propagation/model/propagation-loss-model.cc
--- ns-3.19/src/propagation/model/propagation-loss-model.cc	2014-06-17 10:34:00.269637966 -0700
+++ ns-3.20/src/propagation/model/propagation-loss-model.cc	2014-06-17 10:33:13.620998069 -0700
@@ -36,8 +36,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (PropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (PropagationLossModel);
 
 TypeId 
 PropagationLossModel::GetTypeId (void)
@@ -96,8 +95,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (RandomPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RandomPropagationLossModel);
 
 TypeId 
 RandomPropagationLossModel::GetTypeId (void)
@@ -140,8 +138,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (FriisPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FriisPropagationLossModel);
 
 const double FriisPropagationLossModel::PI = 3.14159265358979323846;
 
@@ -161,11 +158,11 @@
                    DoubleValue (1.0),
                    MakeDoubleAccessor (&FriisPropagationLossModel::m_systemLoss),
                    MakeDoubleChecker<double> ())
-    .AddAttribute ("MinDistance", 
-                   "The distance under which the propagation model refuses to give results (m)",
-                   DoubleValue (0.5),
-                   MakeDoubleAccessor (&FriisPropagationLossModel::SetMinDistance,
-                                       &FriisPropagationLossModel::GetMinDistance),
+    .AddAttribute ("MinLoss", 
+                   "The minimum value (dB) of the total loss, used at short ranges. Note: ",
+                   DoubleValue (0.0),
+                   MakeDoubleAccessor (&FriisPropagationLossModel::SetMinLoss,
+                                       &FriisPropagationLossModel::GetMinLoss),
                    MakeDoubleChecker<double> ())
   ;
   return tid;
@@ -185,14 +182,14 @@
   return m_systemLoss;
 }
 void
-FriisPropagationLossModel::SetMinDistance (double minDistance)
+FriisPropagationLossModel::SetMinLoss (double minLoss)
 {
-  m_minDistance = minDistance;
+  m_minLoss = minLoss;
 }
 double
-FriisPropagationLossModel::GetMinDistance (void) const
+FriisPropagationLossModel::GetMinLoss (void) const
 {
-  return m_minDistance;
+  return m_minLoss;
 }
 
 void
@@ -258,15 +255,19 @@
    * lambda: wavelength (m)
    */
   double distance = a->GetDistanceFrom (b);
-  if (distance <= m_minDistance)
+  if (distance < 3*m_lambda)
     {
-      return txPowerDbm;
+      NS_LOG_WARN ("distance not within the far field region => inaccurate propagation loss value");
+    }
+  if (distance <= 0)
+    {
+      return txPowerDbm - m_minLoss;
     }
   double numerator = m_lambda * m_lambda;
   double denominator = 16 * PI * PI * distance * distance * m_systemLoss;
-  double pr = 10 * std::log10 (numerator / denominator);
-  NS_LOG_DEBUG ("distance="<<distance<<"m, attenuation coefficient="<<pr<<"dB");
-  return txPowerDbm + pr;
+  double lossDb = -10 * log10 (numerator / denominator);
+  NS_LOG_DEBUG ("distance=" << distance<< "m, loss=" << lossDb <<"dB");
+  return txPowerDbm - std::max (lossDb, m_minLoss);
 }
 
 int64_t
@@ -278,8 +279,7 @@
 // ------------------------------------------------------------------------- //
 // -- Two-Ray Ground Model ported from NS-2 -- tomhewer@mac.com -- Nov09 //
 
-NS_OBJECT_ENSURE_REGISTERED (TwoRayGroundPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TwoRayGroundPropagationLossModel);
 
 const double TwoRayGroundPropagationLossModel::PI = 3.14159265358979323846;
 
@@ -453,8 +453,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (LogDistancePropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (LogDistancePropagationLossModel);
 
 TypeId
 LogDistancePropagationLossModel::GetTypeId (void)
@@ -542,8 +541,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (ThreeLogDistancePropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ThreeLogDistancePropagationLossModel);
 
 TypeId
 ThreeLogDistancePropagationLossModel::GetTypeId (void)
@@ -644,8 +642,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (NakagamiPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NakagamiPropagationLossModel);
 
 TypeId
 NakagamiPropagationLossModel::GetTypeId (void)
@@ -759,8 +756,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (FixedRssLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FixedRssLossModel);
 
 TypeId 
 FixedRssLossModel::GetTypeId (void)
@@ -806,8 +802,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (MatrixPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MatrixPropagationLossModel);
 
 TypeId 
 MatrixPropagationLossModel::GetTypeId (void)
@@ -886,8 +881,7 @@
 
 // ------------------------------------------------------------------------- //
 
-NS_OBJECT_ENSURE_REGISTERED (RangePropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RangePropagationLossModel);
 
 TypeId
 RangePropagationLossModel::GetTypeId (void)
diff -Naur ns-3.19/src/propagation/model/propagation-loss-model.h ns-3.20/src/propagation/model/propagation-loss-model.h
--- ns-3.19/src/propagation/model/propagation-loss-model.h	2014-06-17 10:34:00.270637958 -0700
+++ ns-3.20/src/propagation/model/propagation-loss-model.h	2014-06-17 10:33:13.620998069 -0700
@@ -166,16 +166,53 @@
  *  - \f$ \lambda \f$ : wavelength (m)
  *  - \f$ d \f$ : distance (m)
  *  - \f$ L \f$ : system loss (unit-less)
- *
- *
- * This model is invalid for small distance values.
- * The current implementation returns the txpower as the rxpower
- * for any distance smaller than MinDistance.
  * 
  * In the implementation,  \f$ \lambda \f$ is calculated as 
  * \f$ \frac{C}{f} \f$, where  \f$ C = 299792458\f$ m/s is the speed of light in
  * vacuum, and \f$ f \f$ is the frequency in Hz which can be configured by
  * the user via the Frequency attribute.
+ *
+ * The Friis model is valid only for propagation in free space within
+ * the so-called far field region, which can be considered
+ * approximately as the region for \f$ d > 3 \lambda \f$.
+ * The model will still return a value for \f$ d < 3 \lambda \f$, as
+ * doing so (rather than triggering a fatal error) is practical for
+ * many simulation scenarios. However, we stress that the values
+ * obtained in such conditions shall not be considered realistic. 
+ * 
+ * Related with this issue, we note that the Friis formula is
+ * undefined for \f$ d = 0 \f$, and results in 
+ * \f$ P_r > P_t \f$ for \f$ d < \lambda / 2 \sqrt{\pi} \f$.
+ * Both these conditions occur outside of the far field region, so in
+ * principle the Friis model shall not be used in these conditions. 
+ * In practice, however, Friis is often used in scenarios where accurate
+ * propagation modeling is not deemed important, and values of \f$ d =
+ * 0 \f$ can occur. To allow practical use of the model in such
+ * scenarios, we have to 1) return some value for \f$ d = 0 \f$, and
+ * 2) avoid large discontinuities in propagation loss values (which
+ * could lead to artifacts such as bogus capture effects which are
+ * much worse than inaccurate propagation loss values). The two issues
+ * are conflicting, as, according to the Friis formula, 
+ * \f$\lim_{d \to 0 }  P_r = +\infty \f$;
+ * so if, for \f$ d = 0 \f$, we use a fixed loss value, we end up with an infinitely large
+ * discontinuity, which as we discussed can cause undesireable
+ * simulation artifacts.
+ *
+ * To avoid these artifact, this implmentation of the Friis model
+ * provides an attribute called MinLoss which allows to specify the
+ * minimum total loss (in dB) returned by the model. This is used in
+ * such a way that 
+ * \f$ P_r \f$ continuously increases for \f$ d \to 0 \f$, until
+ * MinLoss is reached, and then stay constant; this allow to
+ * return a value for \f$ d  = 0 \f$ and at the same time avoid
+ * discontinuities. The model won't be much realistic, but at least
+ * the simulation artifacts discussed before are avoided. The default value of
+ * MinLoss is 0 dB, which means that by default the model will return 
+ * \f$ P_r = P_t \f$ for \f$ d <= \lambda / 2 \sqrt{\pi} \f$. We note
+ * that this value of \f$ d \f$ is outside of the far field
+ * region, hence the validity of the model in the far field region is
+ * not affected.
+ * 
  */
 class FriisPropagationLossModel : public PropagationLossModel
 {
@@ -197,17 +234,17 @@
   void SetSystemLoss (double systemLoss);
 
   /**
-   * \param minDistance the minimum distance
+   * \param minLoss the minimum loss (dB)
    *
-   * Below this distance, the txpower is returned
-   * unmodified as the rxpower.
+   * no matter how short the distance, the total propagation loss (in
+   * dB) will always be greater or equal than this value 
    */
-  void SetMinDistance (double minDistance);
+  void SetMinLoss (double minLoss);
 
   /**
-   * \returns the minimum distance.
+   * \return the minimum loss.
    */
-  double GetMinDistance (void) const;
+  double GetMinLoss (void) const;
 
   /**
    * \returns the current frequency (Hz)
@@ -232,7 +269,7 @@
   double m_lambda;
   double m_frequency;
   double m_systemLoss;
-  double m_minDistance;
+  double m_minLoss;
 };
 
 /**
diff -Naur ns-3.19/src/propagation/test/itu-r-1411-los-test-suite.cc ns-3.20/src/propagation/test/itu-r-1411-los-test-suite.cc
--- ns-3.19/src/propagation/test/itu-r-1411-los-test-suite.cc	2014-06-17 10:34:00.270637958 -0700
+++ ns-3.20/src/propagation/test/itu-r-1411-los-test-suite.cc	2014-06-17 10:33:13.621998061 -0700
@@ -29,10 +29,9 @@
 #include <ns3/enum.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("ItuR1411LosPropagationLossModelTest")
-  ;
+NS_LOG_COMPONENT_DEFINE ("ItuR1411LosPropagationLossModelTest");
 
 
 class ItuR1411LosPropagationLossModelTestCase : public TestCase
@@ -123,7 +122,3 @@
 
 
 static ItuR1411LosPropagationLossModelTestSuite g_ituR1411LosTestSuite;
-
-
-
-}   // namespace ns3
diff -Naur ns-3.19/src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc ns-3.20/src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc
--- ns-3.19/src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc	2014-06-17 10:34:00.271637951 -0700
+++ ns-3.20/src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc	2014-06-17 10:33:13.622998053 -0700
@@ -29,10 +29,9 @@
 #include <ns3/enum.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("ItuR1411NlosOverRooftopPropagationLossModelTest")
-  ;
+NS_LOG_COMPONENT_DEFINE ("ItuR1411NlosOverRooftopPropagationLossModelTest");
 
 
 class ItuR1411NlosOverRooftopPropagationLossModelTestCase : public TestCase
@@ -126,7 +125,3 @@
 
 
 static ItuR1411NlosOverRooftopPropagationLossModelTestSuite g_ituR1411NlosOverRooftopTestSuite;
-
-
-
-}   // namespace ns3
diff -Naur ns-3.19/src/propagation/test/kun-2600-mhz-test-suite.cc ns-3.20/src/propagation/test/kun-2600-mhz-test-suite.cc
--- ns-3.19/src/propagation/test/kun-2600-mhz-test-suite.cc	2014-06-17 10:34:00.271637951 -0700
+++ ns-3.20/src/propagation/test/kun-2600-mhz-test-suite.cc	2014-06-17 10:33:13.622998053 -0700
@@ -29,10 +29,9 @@
 #include <ns3/enum.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("Kun2600MhzPropagationLossModelTest")
-  ;
+NS_LOG_COMPONENT_DEFINE ("Kun2600MhzPropagationLossModelTest");
 
 
 class Kun2600MhzPropagationLossModelTestCase : public TestCase
@@ -114,7 +113,3 @@
 
 
 static Kun2600MhzPropagationLossModelTestSuite g_kun2600MhzTestSuite;
-
-
-
-}   // namespace ns3
diff -Naur ns-3.19/src/propagation/test/okumura-hata-test-suite.cc ns-3.20/src/propagation/test/okumura-hata-test-suite.cc
--- ns-3.19/src/propagation/test/okumura-hata-test-suite.cc	2014-06-17 10:34:00.272637943 -0700
+++ ns-3.20/src/propagation/test/okumura-hata-test-suite.cc	2014-06-17 10:33:13.623998045 -0700
@@ -29,10 +29,9 @@
 #include <ns3/enum.h>
 
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("OkumuraHataPropagationLossModelTest")
-  ;
+NS_LOG_COMPONENT_DEFINE ("OkumuraHataPropagationLossModelTest");
 
 
 class OkumuraHataPropagationLossModelTestCase : public TestCase
@@ -141,7 +140,3 @@
 
 
 static OkumuraHataPropagationLossModelTestSuite g_okumuraHataTestSuite;
-
-
-
-}   // namespace ns3
diff -Naur ns-3.19/src/sixlowpan/bindings/modulegen__gcc_ILP32.py ns-3.20/src/sixlowpan/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/sixlowpan/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.280637881 -0700
+++ ns-3.20/src/sixlowpan/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.630997991 -0700
@@ -91,7 +91,7 @@
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch [class]
     module.add_class('SixLowPanDispatch')
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch::Dispatch_e [enumeration]
-    module.add_enum('Dispatch_e', ['LOWPAN_NALP', 'LOWPAN_NALP_N', 'LOWPAN_NOTCOMPRESSED', 'LOWPAN_HC1', 'LOWPAN_BC0', 'LOWPAN_IPHC', 'LOWPAN_IPHC_N', 'LOWPAN_MESH', 'LOWPAN_MESH_N', 'LOWPAN_FRAG1', 'LOWPAN_FRAG1_N', 'LOWPAN_FRAGN', 'LOWPAN_FRAGN_N', 'LOWPAN_UNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
+    module.add_enum('Dispatch_e', ['LOWPAN_NALP', 'LOWPAN_NALP_N', 'LOWPAN_IPv6', 'LOWPAN_HC1', 'LOWPAN_BC0', 'LOWPAN_IPHC', 'LOWPAN_IPHC_N', 'LOWPAN_MESH', 'LOWPAN_MESH_N', 'LOWPAN_FRAG1', 'LOWPAN_FRAG1_N', 'LOWPAN_FRAGN', 'LOWPAN_FRAGN_N', 'LOWPAN_UNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch::NhcDispatch_e [enumeration]
     module.add_enum('NhcDispatch_e', ['LOWPAN_NHC', 'LOWPAN_NHC_N', 'LOWPAN_UDPNHC', 'LOWPAN_UDPNHC_N', 'LOWPAN_NHCUNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
     ## sixlowpan-helper.h (module 'sixlowpan'): ns3::SixLowPanHelper [class]
@@ -100,6 +100,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -112,6 +114,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -164,6 +168,8 @@
     module.add_enum('Hlim_e', ['HLIM_INLINE', 'HLIM_COMPR_1', 'HLIM_COMPR_64', 'HLIM_COMPR_255'], outer_class=root_module['ns3::SixLowPanIphc'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIphc::HeaderCompression_e [enumeration]
     module.add_enum('HeaderCompression_e', ['HC_INLINE', 'HC_COMPR_64', 'HC_COMPR_16', 'HC_COMPR_0'], outer_class=root_module['ns3::SixLowPanIphc'])
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6 [class]
+    module.add_class('SixLowPanIpv6', parent=root_module['ns3::Header'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension [class]
     module.add_class('SixLowPanNhcExtension', parent=root_module['ns3::Header'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension::Eid_e [enumeration]
@@ -290,12 +296,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -349,6 +355,7 @@
     register_Ns3SixLowPanHelper_methods(root_module, root_module['ns3::SixLowPanHelper'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -374,6 +381,7 @@
     register_Ns3SixLowPanFragN_methods(root_module, root_module['ns3::SixLowPanFragN'])
     register_Ns3SixLowPanHc1_methods(root_module, root_module['ns3::SixLowPanHc1'])
     register_Ns3SixLowPanIphc_methods(root_module, root_module['ns3::SixLowPanIphc'])
+    register_Ns3SixLowPanIpv6_methods(root_module, root_module['ns3::SixLowPanIpv6'])
     register_Ns3SixLowPanNhcExtension_methods(root_module, root_module['ns3::SixLowPanNhcExtension'])
     register_Ns3SixLowPanUdpNhcExtension_methods(root_module, root_module['ns3::SixLowPanUdpNhcExtension'])
     register_Ns3Time_methods(root_module, root_module['ns3::Time'])
@@ -672,6 +680,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -684,6 +696,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1895,6 +1911,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2092,62 +2116,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2156,6 +2136,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2196,6 +2178,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3079,6 +3063,44 @@
                    [param('ns3::SixLowPanIphc::TrafficClassFlowLabel_e', 'tfField')])
     return
 
+def register_Ns3SixLowPanIpv6_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6::SixLowPanIpv6(ns3::SixLowPanIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SixLowPanIpv6 const &', 'arg0')])
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6::SixLowPanIpv6() [constructor]
+    cls.add_constructor([])
+    ## sixlowpan-header.h (module 'sixlowpan'): uint32_t ns3::SixLowPanIpv6::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::TypeId ns3::SixLowPanIpv6::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): uint32_t ns3::SixLowPanIpv6::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): static ns3::TypeId ns3::SixLowPanIpv6::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): void ns3::SixLowPanIpv6::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): void ns3::SixLowPanIpv6::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    return
+
 def register_Ns3SixLowPanNhcExtension_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension::SixLowPanNhcExtension(ns3::SixLowPanNhcExtension const & arg0) [copy constructor]
@@ -3247,13 +3269,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3280,6 +3304,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4719,10 +4748,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/sixlowpan/bindings/modulegen__gcc_LP64.py ns-3.20/src/sixlowpan/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/sixlowpan/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/src/sixlowpan/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.633997968 -0700
@@ -91,7 +91,7 @@
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch [class]
     module.add_class('SixLowPanDispatch')
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch::Dispatch_e [enumeration]
-    module.add_enum('Dispatch_e', ['LOWPAN_NALP', 'LOWPAN_NALP_N', 'LOWPAN_NOTCOMPRESSED', 'LOWPAN_HC1', 'LOWPAN_BC0', 'LOWPAN_IPHC', 'LOWPAN_IPHC_N', 'LOWPAN_MESH', 'LOWPAN_MESH_N', 'LOWPAN_FRAG1', 'LOWPAN_FRAG1_N', 'LOWPAN_FRAGN', 'LOWPAN_FRAGN_N', 'LOWPAN_UNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
+    module.add_enum('Dispatch_e', ['LOWPAN_NALP', 'LOWPAN_NALP_N', 'LOWPAN_IPv6', 'LOWPAN_HC1', 'LOWPAN_BC0', 'LOWPAN_IPHC', 'LOWPAN_IPHC_N', 'LOWPAN_MESH', 'LOWPAN_MESH_N', 'LOWPAN_FRAG1', 'LOWPAN_FRAG1_N', 'LOWPAN_FRAGN', 'LOWPAN_FRAGN_N', 'LOWPAN_UNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanDispatch::NhcDispatch_e [enumeration]
     module.add_enum('NhcDispatch_e', ['LOWPAN_NHC', 'LOWPAN_NHC_N', 'LOWPAN_UDPNHC', 'LOWPAN_UDPNHC_N', 'LOWPAN_NHCUNSUPPORTED'], outer_class=root_module['ns3::SixLowPanDispatch'])
     ## sixlowpan-helper.h (module 'sixlowpan'): ns3::SixLowPanHelper [class]
@@ -100,6 +100,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -112,6 +114,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -164,6 +168,8 @@
     module.add_enum('Hlim_e', ['HLIM_INLINE', 'HLIM_COMPR_1', 'HLIM_COMPR_64', 'HLIM_COMPR_255'], outer_class=root_module['ns3::SixLowPanIphc'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIphc::HeaderCompression_e [enumeration]
     module.add_enum('HeaderCompression_e', ['HC_INLINE', 'HC_COMPR_64', 'HC_COMPR_16', 'HC_COMPR_0'], outer_class=root_module['ns3::SixLowPanIphc'])
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6 [class]
+    module.add_class('SixLowPanIpv6', parent=root_module['ns3::Header'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension [class]
     module.add_class('SixLowPanNhcExtension', parent=root_module['ns3::Header'])
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension::Eid_e [enumeration]
@@ -290,12 +296,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -349,6 +355,7 @@
     register_Ns3SixLowPanHelper_methods(root_module, root_module['ns3::SixLowPanHelper'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -374,6 +381,7 @@
     register_Ns3SixLowPanFragN_methods(root_module, root_module['ns3::SixLowPanFragN'])
     register_Ns3SixLowPanHc1_methods(root_module, root_module['ns3::SixLowPanHc1'])
     register_Ns3SixLowPanIphc_methods(root_module, root_module['ns3::SixLowPanIphc'])
+    register_Ns3SixLowPanIpv6_methods(root_module, root_module['ns3::SixLowPanIpv6'])
     register_Ns3SixLowPanNhcExtension_methods(root_module, root_module['ns3::SixLowPanNhcExtension'])
     register_Ns3SixLowPanUdpNhcExtension_methods(root_module, root_module['ns3::SixLowPanUdpNhcExtension'])
     register_Ns3Time_methods(root_module, root_module['ns3::Time'])
@@ -672,6 +680,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -684,6 +696,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1895,6 +1911,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2092,62 +2116,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2156,6 +2136,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2196,6 +2178,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3079,6 +3063,44 @@
                    [param('ns3::SixLowPanIphc::TrafficClassFlowLabel_e', 'tfField')])
     return
 
+def register_Ns3SixLowPanIpv6_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6::SixLowPanIpv6(ns3::SixLowPanIpv6 const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SixLowPanIpv6 const &', 'arg0')])
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanIpv6::SixLowPanIpv6() [constructor]
+    cls.add_constructor([])
+    ## sixlowpan-header.h (module 'sixlowpan'): uint32_t ns3::SixLowPanIpv6::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): ns3::TypeId ns3::SixLowPanIpv6::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): uint32_t ns3::SixLowPanIpv6::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): static ns3::TypeId ns3::SixLowPanIpv6::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): void ns3::SixLowPanIpv6::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## sixlowpan-header.h (module 'sixlowpan'): void ns3::SixLowPanIpv6::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    return
+
 def register_Ns3SixLowPanNhcExtension_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## sixlowpan-header.h (module 'sixlowpan'): ns3::SixLowPanNhcExtension::SixLowPanNhcExtension(ns3::SixLowPanNhcExtension const & arg0) [copy constructor]
@@ -3247,13 +3269,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3280,6 +3304,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -4719,10 +4748,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/sixlowpan/doc/sixlowpan.rst ns-3.20/src/sixlowpan/doc/sixlowpan.rst
--- ns-3.19/src/sixlowpan/doc/sixlowpan.rst	2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/src/sixlowpan/doc/sixlowpan.rst	2014-06-17 10:33:13.634997960 -0700
@@ -55,9 +55,16 @@
 * OmitUdpChecksum (boolean, default true), used to activate UDP checksum compression in IPHC.
 * FragmentReassemblyListSize (integer, default 0), indicating the number of packets that can be reassembled at the same time. If the limit is reached, the oldest packet is discarded. Zero means infinite.
 * FragmentExpirationTimeout (Time, default 60 seconds), being the timeout to wait for further fragments before discarding a partial packet.
+* CompressionThreshold (unsigned 32 bits integer, default 0), minimum compressed payload size. 
 * ForceEtherType (boolean, default false), and
 * EtherType (unsigned 16 bits integer, default 0xFFFF), to force a particular L2 EtherType.
 
+The CompressionThreshold attribute is similar to Contiki's SICSLOWPAN_CONF_MIN_MAC_PAYLOAD
+option. If a compressed packet size is less than the threshold, the uncompressed version is
+used (plus one byte for the correct dispatch header).
+This option is useful only when a MAC with specific requirement for minimum frame size is 
+used (e.g., ContikiMAC).
+
 The last two attributes are needed to use the module with a NetDevice other than 802.15.4, as
 neither IANA or IEEE did reserve an EtherType for 6LoWPAN. As a consequence there might be a
 conflict with the L2 multiplexer/demultiplexer which is based on EtherType. The default 
diff -Naur ns-3.19/src/sixlowpan/examples/example-ping-lr-wpan.cc ns-3.20/src/sixlowpan/examples/example-ping-lr-wpan.cc
--- ns-3.19/src/sixlowpan/examples/example-ping-lr-wpan.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/sixlowpan/examples/example-ping-lr-wpan.cc	2014-06-17 10:33:13.634997960 -0700
@@ -0,0 +1,114 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+
+#include <fstream>
+#include "ns3/core-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/ipv6-static-routing-helper.h"
+#include "ns3/mobility-module.h"
+#include "ns3/spectrum-module.h"
+#include "ns3/propagation-loss-model.h"
+#include "ns3/log.h"
+#include "ns3/ipv6-routing-table-entry.h"
+#include "ns3/sixlowpan-module.h"
+#include "ns3/lr-wpan-module.h"
+
+using namespace ns3;
+
+
+
+int main (int argc, char** argv)
+{
+#if 0
+  LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanMac",LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanPhy",LOG_LEVEL_ALL);
+  LogComponentEnable ("LrWpanNetDevice", LOG_LEVEL_ALL);
+  LogComponentEnable ("SixLowPanNetDevice", LOG_LEVEL_ALL);
+#endif
+
+  NodeContainer nodes;
+  nodes.Create(2);
+
+  LrWpanHelper lrWpanHelper;
+  // Add and install the LrWpanNetDevice for each node
+  NetDeviceContainer lrwpanDevices = lrWpanHelper.Install(nodes);
+
+  // Fake PAN association and short address assignment.
+  lrWpanHelper.AssociateToPan (lrwpanDevices, 0);
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
+                                 "MinX", DoubleValue (0.0),
+                                 "MinY", DoubleValue (0.0),
+                                 "DeltaX", DoubleValue (20),
+                                 "DeltaY", DoubleValue (20),
+                                 "GridWidth", UintegerValue (3),
+                                 "LayoutType", StringValue ("RowFirst"));
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (nodes);
+  
+
+  InternetStackHelper internetv6;
+  internetv6.Install (nodes);
+
+  SixLowPanHelper sixlowpan;
+  NetDeviceContainer devices = sixlowpan.Install (lrwpanDevices); 
+ 
+  Ipv6AddressHelper ipv6;
+  ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
+  Ipv6InterfaceContainer deviceInterfaces;
+  deviceInterfaces = ipv6.Assign (devices);
+  // check if adresses are assigned
+  //std::cout<< deviceInterfaces.GetAddress(0,1)<<std::endl;
+  //std::cout<< deviceInterfaces.GetAddress(1,1)<<std::endl;
+
+
+   
+  uint32_t packetSize = 10;
+  uint32_t maxPacketCount = 5;
+  Time interPacketInterval = Seconds (1.);
+  Ping6Helper ping6;
+
+  ping6.SetLocal (deviceInterfaces.GetAddress (0, 1));
+  ping6.SetRemote (deviceInterfaces.GetAddress (1, 1));
+
+  ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
+  ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
+  ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
+  ApplicationContainer apps = ping6.Install (nodes.Get (0));
+
+  apps.Start (Seconds (1.0));
+  apps.Stop (Seconds (10.0));
+
+  AsciiTraceHelper ascii;
+  lrWpanHelper.EnableAsciiAll (ascii.CreateFileStream ("Ping-6LoW-lr-wpan.tr"));
+  lrWpanHelper.EnablePcapAll (std::string ("Ping-6LoW-lr-wpan"), true);
+  
+  Simulator::Stop (Seconds (10));
+  
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+}
+
diff -Naur ns-3.19/src/sixlowpan/examples/example-sixlowpan.cc ns-3.20/src/sixlowpan/examples/example-sixlowpan.cc
--- ns-3.19/src/sixlowpan/examples/example-sixlowpan.cc	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/sixlowpan/examples/example-sixlowpan.cc	2014-06-17 10:33:13.634997960 -0700
@@ -50,8 +50,7 @@
 
 using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("ExampleSixlowpan")
-  ;
+NS_LOG_COMPONENT_DEFINE ("ExampleSixlowpan");
 
 int main (int argc, char** argv)
 {
diff -Naur ns-3.19/src/sixlowpan/examples/wscript ns-3.20/src/sixlowpan/examples/wscript
--- ns-3.19/src/sixlowpan/examples/wscript	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/sixlowpan/examples/wscript	2014-06-17 10:33:13.635997953 -0700
@@ -7,3 +7,7 @@
     obj = bld.create_ns3_program('example-sixlowpan',
                                  ['network', 'sixlowpan', 'internet', 'csma'])
     obj.source = 'example-sixlowpan.cc'
+    
+    obj = bld.create_ns3_program('example-ping-lr-wpan',
+                                 ['network', 'sixlowpan', 'internet', 'lr-wpan'])
+    obj.source = 'example-ping-lr-wpan.cc'
diff -Naur ns-3.19/src/sixlowpan/helper/sixlowpan-helper.cc ns-3.20/src/sixlowpan/helper/sixlowpan-helper.cc
--- ns-3.19/src/sixlowpan/helper/sixlowpan-helper.cc	2014-06-17 10:34:00.284637851 -0700
+++ ns-3.20/src/sixlowpan/helper/sixlowpan-helper.cc	2014-06-17 10:33:13.635997953 -0700
@@ -24,8 +24,7 @@
 #include "ns3/node.h"
 #include "ns3/names.h"
 
-NS_LOG_COMPONENT_DEFINE ("SixLowPanHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("SixLowPanHelper");
 
 namespace ns3 {
 
diff -Naur ns-3.19/src/sixlowpan/model/sixlowpan-header.cc ns-3.20/src/sixlowpan/model/sixlowpan-header.cc
--- ns-3.19/src/sixlowpan/model/sixlowpan-header.cc	2014-06-17 10:34:00.285637843 -0700
+++ ns-3.20/src/sixlowpan/model/sixlowpan-header.cc	2014-06-17 10:33:13.636997945 -0700
@@ -45,9 +45,9 @@
     {
       return LOWPAN_NALP;
     }
-  else if (dispatch == LOWPAN_NOTCOMPRESSED)
+  else if (dispatch == LOWPAN_IPv6)
     {
-      return LOWPAN_NOTCOMPRESSED;
+      return LOWPAN_IPv6;
     }
   else if (dispatch == LOWPAN_HC1)
     {
@@ -94,8 +94,7 @@
 /*
  * SixLowPanHc1
  */
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanHc1)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanHc1);
 
 SixLowPanHc1::SixLowPanHc1 ()
   : m_hopLimit (0)
@@ -539,8 +538,7 @@
 /*
  * SixLowPanFrag1
  */
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanFrag1)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanFrag1);
 
 SixLowPanFrag1::SixLowPanFrag1 ()
   : m_datagramSize (0),
@@ -624,8 +622,7 @@
  * SixLowPanFragN
  */
 
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanFragN)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanFragN);
 
 SixLowPanFragN::SixLowPanFragN ()
   : m_datagramSize (0),
@@ -721,10 +718,61 @@
 }
 
 /*
+ * SixLowPanIpv6
+ */
+
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanIpv6);
+
+SixLowPanIpv6::SixLowPanIpv6 ()
+{
+}
+
+TypeId SixLowPanIpv6::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::SixLowPanIpv6").SetParent<Header> ().AddConstructor<SixLowPanIpv6> ();
+  return tid;
+}
+
+TypeId SixLowPanIpv6::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void SixLowPanIpv6::Print (std::ostream & os) const
+{
+  os << "Uncompressed IPv6";
+}
+
+uint32_t SixLowPanIpv6::GetSerializedSize () const
+{
+  return 1;
+}
+
+void SixLowPanIpv6::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+
+  i.WriteU8 (uint8_t (SixLowPanDispatch::LOWPAN_IPv6));
+}
+
+uint32_t SixLowPanIpv6::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+  i.ReadU8 ();
+
+  return GetSerializedSize ();
+}
+
+std::ostream & operator << (std::ostream & os, const SixLowPanIpv6 & h)
+{
+  h.Print (os);
+  return os;
+}
+
+/*
  * SixLowPanIphcHeader
  */
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanIphc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanIphc);
 
 SixLowPanIphc::SixLowPanIphc ()
 {
@@ -1419,8 +1467,7 @@
 /*
  * SixLowPanNhcExtensionHeader
  */
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanNhcExtension)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanNhcExtension);
 
 SixLowPanNhcExtension::SixLowPanNhcExtension ()
 {
@@ -1547,8 +1594,7 @@
 /*
  * SixLowPanUdpNhcExtension
  */
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanUdpNhcExtension)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanUdpNhcExtension);
 
 SixLowPanUdpNhcExtension::SixLowPanUdpNhcExtension ()
 {
diff -Naur ns-3.19/src/sixlowpan/model/sixlowpan-header.h ns-3.20/src/sixlowpan/model/sixlowpan-header.h
--- ns-3.19/src/sixlowpan/model/sixlowpan-header.h	2014-06-17 10:34:00.286637835 -0700
+++ ns-3.20/src/sixlowpan/model/sixlowpan-header.h	2014-06-17 10:33:13.637997937 -0700
@@ -79,7 +79,7 @@
   {
     LOWPAN_NALP = 0x0,
     LOWPAN_NALP_N = 0x3F,
-    LOWPAN_NOTCOMPRESSED = 0x41,
+    LOWPAN_IPv6 = 0x41,
     LOWPAN_HC1 = 0x42,
     LOWPAN_BC0 = 0x50,
     LOWPAN_IPHC = 0x60,
@@ -199,12 +199,6 @@
   virtual uint32_t Deserialize (Buffer::Iterator start);
 
   /**
-   * \brief Get the Dispatch type.
-   * \return the Dispatch type
-   */
-  // virtual Dispatch_e GetDispatchType (void) const;
-
-  /**
    * \brief Set the "Hop limit" field (TTL).
    * \param limit the hop limit value
    */
@@ -416,12 +410,6 @@
   virtual uint32_t Deserialize (Buffer::Iterator start);
 
   /**
-   * \brief Get the Dispatch type.
-   * \return the Dispatch type
-   */
-  // virtual Dispatch_e GetDispatchType (void) const;
-
-  /**
    * \brief Set the datagram size
    * \param datagramSize the datagram size
    */
@@ -503,12 +491,6 @@
   virtual uint32_t Deserialize (Buffer::Iterator start);
 
   /**
-   * \brief Get the Dispatch type.
-   * \return the Dispatch type
-   */
-  // virtual Dispatch_e GetDispatchType (void) const;
-
-  /**
    * \brief Set the datagram size
    * \param datagramSize the datagram size
    */
@@ -561,6 +543,59 @@
 std::ostream & operator<< (std::ostream & os, SixLowPanFragN const &header);
 
 /**
+ * \ingroup sixlowpan
+ * \brief 6LoWPAN IPv6 uncomprssed header - see RFC 4944
+ */
+class SixLowPanIpv6 : public Header
+{
+public:
+  SixLowPanIpv6 (void);
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  /**
+   * \brief Return the instance type identifier.
+   * \return instance type ID
+   */
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream& os) const;
+
+  /**
+   * \brief Get the serialized size of the packet.
+   * \return size
+   */
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Serialize the packet.
+   * \param start Buffer iterator
+   */
+  virtual void Serialize (Buffer::Iterator start) const;
+
+  /**
+   * \brief Deserialize the packet.
+   * \param start Buffer iterator
+   * \return size of the packet
+   */
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+};
+
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the reference to the output stream
+ * \param header the Frag1 Header
+ * \returns the reference to the output stream
+ */
+std::ostream & operator<< (std::ostream & os, SixLowPanIpv6 const & header);
+
+/**
 * \ingroup sixlowpan
 * \brief   LOWPAN_IPHC base Encoding - see RFC 6282
   \verbatim
@@ -664,12 +699,6 @@
   virtual uint32_t Deserialize (Buffer::Iterator start);
 
   /**
-   * \brief Get the Dispatch type.
-   * \return the Dispatch type
-   */
-  // virtual Dispatch_e GetDispatchType (void) const;
-
-  /**
    * \brief Set the TF (Traffic Class, Flow Label) compression.
    * \param tfField ECN, DSCP, Flow Label compression type
    */
diff -Naur ns-3.19/src/sixlowpan/model/sixlowpan-net-device.cc ns-3.20/src/sixlowpan/model/sixlowpan-net-device.cc
--- ns-3.19/src/sixlowpan/model/sixlowpan-net-device.cc	2014-06-17 10:34:00.287637828 -0700
+++ ns-3.20/src/sixlowpan/model/sixlowpan-net-device.cc	2014-06-17 10:33:13.638997930 -0700
@@ -41,13 +41,11 @@
 #include "sixlowpan-net-device.h"
 #include "sixlowpan-header.h"
 
-NS_LOG_COMPONENT_DEFINE ("SixLowPanNetDevice")
-  ;
+NS_LOG_COMPONENT_DEFINE ("SixLowPanNetDevice");
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SixLowPanNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SixLowPanNetDevice);
 
 TypeId SixLowPanNetDevice::GetTypeId (void)
 {
@@ -72,6 +70,11 @@
                    TimeValue (Seconds (60)),
                    MakeTimeAccessor (&SixLowPanNetDevice::m_fragmentExpirationTimeout),
                    MakeTimeChecker ())
+    .AddAttribute ("CompressionThreshold",
+                   "The minimum MAC layer payload size.",
+                   UintegerValue (0x0),
+                   MakeUintegerAccessor (&SixLowPanNetDevice::m_compressionThreshold),
+                   MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("ForceEtherType",
                    "Force a specific EtherType in L2 frames.",
                    BooleanValue (false),
@@ -212,10 +215,13 @@
       NS_LOG_DEBUG ("Unsupported 6LoWPAN encoding: BC0, dropping.");
       m_dropTrace (DROP_UNKNOWN_EXTENSION, copyPkt, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
       break;
-    case SixLowPanDispatch::LOWPAN_NOTCOMPRESSED:
-      NS_LOG_DEBUG ( "Packet without compression:" << *copyPkt );
-      NS_LOG_DEBUG ( "Packet length:" << copyPkt->GetSize () );
-      m_dropTrace (DROP_UNKNOWN_EXTENSION, copyPkt, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
+    case SixLowPanDispatch::LOWPAN_IPv6:
+      NS_LOG_DEBUG ( "Packet without compression. Length: " << copyPkt->GetSize () );
+      {
+        SixLowPanIpv6 uncompressedHdr;
+        copyPkt->RemoveHeader(uncompressedHdr);
+        isPktDecompressed = true;
+      }
       break;
     case SixLowPanDispatch::LOWPAN_HC1:
       DecompressLowPanHc1 (copyPkt, src, dst);
@@ -252,15 +258,13 @@
 void SixLowPanNetDevice::SetIfIndex (const uint32_t index)
 {
   NS_LOG_FUNCTION (this << index);
-  // NS_ASSERT_MSG ( m_port != 0, "Sixlowpan: can't find any lower-layer protocol " << m_port );
   m_ifIndex = index;
 }
 
 uint32_t SixLowPanNetDevice::GetIfIndex (void) const
 {
   NS_LOG_FUNCTION (this);
-  // NS_ASSERT_MSG ( m_port != 0, "Sixlowpan: can't find any lower-layer protocol " << m_port );
-  return m_netDevice->GetIfIndex ();
+  return m_ifIndex;
 }
 
 Ptr<Channel> SixLowPanNetDevice::GetChannel (void) const
@@ -386,49 +390,10 @@
                                uint16_t protocolNumber)
 {
   NS_LOG_FUNCTION (this << *packet << dest << protocolNumber);
-  NS_ASSERT_MSG ( m_netDevice != 0, "Sixlowpan: can't find any lower-layer protocol " << m_netDevice );
-
-  uint32_t origHdrSize = 0;
-  uint32_t origPacketSize = packet->GetSize ();
   bool ret = false;
+  Address src;
 
-  if (m_forceEtherType)
-    {
-      protocolNumber = m_etherType;
-    }
-
-  if (m_useIphc)
-    {
-      origHdrSize += CompressLowPanIphc (packet, m_netDevice->GetAddress (), dest);
-    }
-  else
-    {
-      origHdrSize += CompressLowPanHc1 (packet, m_netDevice->GetAddress (), dest);
-    }
-
-  if ( packet->GetSize () > m_netDevice->GetMtu () )
-    {
-      NS_LOG_LOGIC ("Fragmentation: Packet size " << packet->GetSize () << " - Mtu " << m_netDevice->GetMtu () );
-      // fragment
-      std::list<Ptr<Packet> > fragmentList;
-      DoFragmentation (packet, origPacketSize, origHdrSize, fragmentList);
-      std::list<Ptr<Packet> >::iterator it;
-      bool success = true;
-      for ( it = fragmentList.begin (); it != fragmentList.end (); it++ )
-        {
-          NS_LOG_DEBUG ( "SixLowPanNetDevice::Send (Fragment) " << **it );
-          m_txTrace (*it, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
-          success &= m_netDevice->Send (*it, dest, protocolNumber);
-        }
-      ret = success;
-    }
-  else
-    {
-      NS_LOG_DEBUG ( "SixLowPanNetDevice::Send " << m_node->GetId () << " " << *packet );
-      m_txTrace (packet, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
-      ret = m_netDevice->Send (packet, dest, protocolNumber);
-    }
-
+  ret = DoSend (packet, src, dest, protocolNumber, false);
   return ret;
 }
 
@@ -437,9 +402,23 @@
                                    const Address& dest,
                                    uint16_t protocolNumber)
 {
-  NS_LOG_FUNCTION (this << packet << src << dest << protocolNumber);
+  NS_LOG_FUNCTION (this << *packet << src << dest << protocolNumber);
+  bool ret = false;
+
+  ret = DoSend (packet, src, dest, protocolNumber, true);
+  return ret;
+}
+
+bool SixLowPanNetDevice::DoSend (Ptr<Packet> packet,
+                                 const Address& src,
+                                 const Address& dest,
+                                 uint16_t protocolNumber,
+                                 bool doSendFrom)
+{
+  NS_LOG_FUNCTION (this << *packet << src << dest << protocolNumber << doSendFrom);
   NS_ASSERT_MSG ( m_netDevice != 0, "Sixlowpan: can't find any lower-layer protocol " << m_netDevice );
 
+  Ptr<Packet> origPacket = packet->Copy ();
   uint32_t origHdrSize = 0;
   uint32_t origPacketSize = packet->GetSize ();
   bool ret = false;
@@ -460,24 +439,48 @@
 
   if ( packet->GetSize () > m_netDevice->GetMtu () )
     {
+      NS_LOG_LOGIC ("Fragmentation: Packet size " << packet->GetSize () << " - Mtu " << m_netDevice->GetMtu () );
       // fragment
       std::list<Ptr<Packet> > fragmentList;
       DoFragmentation (packet, origPacketSize, origHdrSize, fragmentList);
       std::list<Ptr<Packet> >::iterator it;
-      bool err = false;
+      bool success = true;
       for ( it = fragmentList.begin (); it != fragmentList.end (); it++ )
         {
-          NS_LOG_DEBUG ( "SixLowPanNetDevice::SendFrom (Fragment) " << **it );
+          NS_LOG_DEBUG ( "SixLowPanNetDevice::Send (Fragment) " << **it );
           m_txTrace (*it, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
-          err |= !(m_netDevice->SendFrom (*it, src, dest, protocolNumber));
+          if (doSendFrom)
+            {
+              success &= m_netDevice->SendFrom (*it, src, dest, protocolNumber);
+            }
+          else
+            {
+              success &= m_netDevice->Send (*it, dest, protocolNumber);
+            }
         }
-      ret = !err;
+      ret = success;
     }
   else
     {
-      NS_LOG_DEBUG ( "SixLowPanNetDevice::SendFrom " << *packet );
+      if (packet->GetSize () < m_compressionThreshold)
+        {
+          NS_LOG_LOGIC ("Compressed packet too short, using uncompressed one");
+          packet = origPacket;
+          SixLowPanIpv6 ipv6UncompressedHdr;
+          packet->AddHeader (ipv6UncompressedHdr);
+        }
+
       m_txTrace (packet, m_node->GetObject<SixLowPanNetDevice> (), GetIfIndex ());
-      ret = m_netDevice->SendFrom (packet, src, dest, protocolNumber);
+      if (doSendFrom)
+        {
+          NS_LOG_DEBUG ( "SixLowPanNetDevice::SendFrom " << m_node->GetId () << " " << *packet );
+          ret = m_netDevice->SendFrom (packet, src, dest, protocolNumber);
+        }
+      else
+        {
+          NS_LOG_DEBUG ( "SixLowPanNetDevice::Send " << m_node->GetId () << " " << *packet );
+          ret = m_netDevice->Send (packet, dest, protocolNumber);
+        }
     }
 
   return ret;
@@ -1818,10 +1821,12 @@
 
       switch ( dispatchValFrag1 )
         {
-        case SixLowPanDispatch::LOWPAN_NOTCOMPRESSED:
-          NS_LOG_DEBUG ( "Packet without compression:" << *p );
-          NS_LOG_DEBUG ( "Packet length:" << p->GetSize () );
-          break;
+        case SixLowPanDispatch::LOWPAN_IPv6:
+          {
+            SixLowPanIpv6 uncompressedHdr;
+            p->RemoveHeader(uncompressedHdr);
+          }
+         break;
         case SixLowPanDispatch::LOWPAN_HC1:
           DecompressLowPanHc1 (p, src, dst);
           break;
diff -Naur ns-3.19/src/sixlowpan/model/sixlowpan-net-device.h ns-3.20/src/sixlowpan/model/sixlowpan-net-device.h
--- ns-3.19/src/sixlowpan/model/sixlowpan-net-device.h	2014-06-17 10:34:00.287637828 -0700
+++ ns-3.20/src/sixlowpan/model/sixlowpan-net-device.h	2014-06-17 10:33:13.638997930 -0700
@@ -175,6 +175,23 @@
   void ReceiveFromDevice (Ptr<NetDevice> device, Ptr<const Packet> packet, uint16_t protocol,
                           Address const &source, Address const &destination, PacketType packetType);
 
+
+  /**
+   * \param packet packet sent from above down to Network Device
+   * \param source source mac address (so called "MAC spoofing")
+   * \param dest mac address of the destination (already resolved)
+   * \param protocolNumber identifies the type of payload contained in
+   *        this packet. Used to call the right L3Protocol when the packet
+   *        is received.
+   * \param doSendFrom perform a SendFrom instead of a Send
+   *
+   *  Called from higher layer to send packet into Network Device
+   *  with the specified source and destination Addresses.
+   *
+   * \return whether the Send operation succeeded
+   */
+  bool DoSend (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber, bool doSendFrom);
+
   /**
    * The callback used to notify higher layers that a packet has been received.
    */
@@ -460,6 +477,8 @@
   uint16_t m_etherType; /**< EtherType number (used only if m_forceEtherType is true) */
   bool m_omitUdpChecksum; /**< Omit UDP checksum in NC1 encoding */
 
+  uint32_t m_compressionThreshold; /**< Minimum L2 payload size */
+
   Ptr<UniformRandomVariable> m_rng; //!< Rng for the fragments tag.
 };
 
diff -Naur ns-3.19/src/sixlowpan/test/error-channel-sixlow.cc ns-3.20/src/sixlowpan/test/error-channel-sixlow.cc
--- ns-3.19/src/sixlowpan/test/error-channel-sixlow.cc	2014-06-17 10:34:00.288637820 -0700
+++ ns-3.20/src/sixlowpan/test/error-channel-sixlow.cc	2014-06-17 10:33:13.639997922 -0700
@@ -24,13 +24,11 @@
 #include "ns3/node.h"
 #include "ns3/log.h"
 
-NS_LOG_COMPONENT_DEFINE ("ErrorChannelSixlow")
-  ;
+NS_LOG_COMPONENT_DEFINE ("ErrorChannelSixlow");
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ErrorChannelSixlow)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ErrorChannelSixlow);
 
 TypeId
 ErrorChannelSixlow::GetTypeId (void)
@@ -146,8 +144,7 @@
   return m_devices[i];
 }
 
-NS_OBJECT_ENSURE_REGISTERED (BinaryErrorSixlowModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BinaryErrorSixlowModel);
 
 TypeId BinaryErrorSixlowModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/sixlowpan/test/sixlowpan-fragmentation-test.cc ns-3.20/src/sixlowpan/test/sixlowpan-fragmentation-test.cc
--- ns-3.19/src/sixlowpan/test/sixlowpan-fragmentation-test.cc	2014-06-17 10:34:00.288637820 -0700
+++ ns-3.20/src/sixlowpan/test/sixlowpan-fragmentation-test.cc	2014-06-17 10:33:13.639997922 -0700
@@ -17,8 +17,6 @@
  *
  * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
  */
-#define NS3_LOG_ENABLE 1
-
 #include "ns3/test.h"
 #include "ns3/config.h"
 #include "ns3/uinteger.h"
diff -Naur ns-3.19/src/spectrum/bindings/modulegen__gcc_ILP32.py ns-3.20/src/spectrum/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/spectrum/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.295637766 -0700
+++ ns-3.20/src/spectrum/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.646997868 -0700
@@ -124,6 +124,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## multi-model-spectrum-channel.h (module 'spectrum'): ns3::TxSpectrumModelInfo [class]
     module.add_class('TxSpectrumModelInfo')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -148,6 +150,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -384,56 +388,56 @@
     module.add_class('MultiModelSpectrumChannel', parent=root_module['ns3::SpectrumChannel'])
     ## single-model-spectrum-channel.h (module 'spectrum'): ns3::SingleModelSpectrumChannel [class]
     module.add_class('SingleModelSpectrumChannel', parent=root_module['ns3::SpectrumChannel'])
-    module.add_container('std::set< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type='set')
-    module.add_container('ns3::SpectrumConverterMap_t', ('unsigned int', 'ns3::SpectrumConverter'), container_type='map')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type='vector')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', 'ns3::Bands')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', 'ns3::Bands*')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', 'ns3::Bands&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_container('std::set< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type=u'set')
+    module.add_container('ns3::SpectrumConverterMap_t', ('unsigned int', 'ns3::SpectrumConverter'), container_type=u'map')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type=u'vector')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >', 'ns3::RxSpectrumModelInfoMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >*', 'ns3::RxSpectrumModelInfoMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >&', 'ns3::RxSpectrumModelInfoMap_t&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::SpectrumModelUid_t')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::SpectrumModelUid_t*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::SpectrumModelUid_t&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', 'ns3::TxSpectrumModelInfoMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', 'ns3::TxSpectrumModelInfoMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', 'ns3::TxSpectrumModelInfoMap_t&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >', u'ns3::RxSpectrumModelInfoMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >*', u'ns3::RxSpectrumModelInfoMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >&', u'ns3::RxSpectrumModelInfoMap_t&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', u'ns3::TxSpectrumModelInfoMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', u'ns3::TxSpectrumModelInfoMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', u'ns3::TxSpectrumModelInfoMap_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >', 'ns3::Values')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >*', 'ns3::Values*')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >&', 'ns3::Values&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >', 'ns3::SpectrumConverterMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >*', 'ns3::SpectrumConverterMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >&', 'ns3::SpectrumConverterMap_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >', u'ns3::Values')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >*', u'ns3::Values*')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >&', u'ns3::Values&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >', u'ns3::SpectrumConverterMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >*', u'ns3::SpectrumConverterMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >&', u'ns3::SpectrumConverterMap_t&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -462,12 +466,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -536,6 +540,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TxSpectrumModelInfo_methods(root_module, root_module['ns3::TxSpectrumModelInfo'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -974,6 +979,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -986,6 +995,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2576,6 +2589,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TxSpectrumModelInfo_methods(root_module, cls):
     ## multi-model-spectrum-channel.h (module 'spectrum'): ns3::TxSpectrumModelInfo::TxSpectrumModelInfo(ns3::TxSpectrumModelInfo const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TxSpectrumModelInfo const &', 'arg0')])
@@ -2904,62 +2925,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2968,6 +2945,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3008,6 +2987,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3792,24 +3773,24 @@
     return
 
 def register_Ns3SpectrumValue_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('*=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('double', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('*=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('double', u'right'))
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::SpectrumValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SpectrumValue const &', 'arg0')])
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::Ptr<ns3::SpectrumModel const> sm) [constructor]
@@ -3882,13 +3863,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3915,6 +3898,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5044,12 +5032,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -6382,10 +6370,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/spectrum/bindings/modulegen__gcc_LP64.py ns-3.20/src/spectrum/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/spectrum/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.300637727 -0700
+++ ns-3.20/src/spectrum/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.651997829 -0700
@@ -124,6 +124,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## multi-model-spectrum-channel.h (module 'spectrum'): ns3::TxSpectrumModelInfo [class]
     module.add_class('TxSpectrumModelInfo')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -148,6 +150,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -384,56 +388,56 @@
     module.add_class('MultiModelSpectrumChannel', parent=root_module['ns3::SpectrumChannel'])
     ## single-model-spectrum-channel.h (module 'spectrum'): ns3::SingleModelSpectrumChannel [class]
     module.add_class('SingleModelSpectrumChannel', parent=root_module['ns3::SpectrumChannel'])
-    module.add_container('std::set< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type='set')
-    module.add_container('ns3::SpectrumConverterMap_t', ('unsigned int', 'ns3::SpectrumConverter'), container_type='map')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type='vector')
-    module.add_container('std::vector< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type='vector')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxEndCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxEndCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxEndCallback&')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndOkCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndOkCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndOkCallback&')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', 'ns3::Bands')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', 'ns3::Bands*')
-    typehandlers.add_type_alias('std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', 'ns3::Bands&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_container('std::set< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type=u'set')
+    module.add_container('ns3::SpectrumConverterMap_t', ('unsigned int', 'ns3::SpectrumConverter'), container_type=u'map')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('ns3::Bands', 'ns3::BandInfo', container_type=u'vector')
+    module.add_container('std::vector< ns3::Ptr< ns3::SpectrumPhy > >', 'ns3::Ptr< ns3::SpectrumPhy >', container_type=u'vector')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >', u'ns3::Bands')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >*', u'ns3::Bands*')
+    typehandlers.add_type_alias(u'std::vector< ns3::BandInfo, std::allocator< ns3::BandInfo > >&', u'ns3::Bands&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxStartCallback&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >', 'ns3::RxSpectrumModelInfoMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >*', 'ns3::RxSpectrumModelInfoMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >&', 'ns3::RxSpectrumModelInfoMap_t&')
-    typehandlers.add_type_alias('uint32_t', 'ns3::SpectrumModelUid_t')
-    typehandlers.add_type_alias('uint32_t*', 'ns3::SpectrumModelUid_t*')
-    typehandlers.add_type_alias('uint32_t&', 'ns3::SpectrumModelUid_t&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', 'ns3::TxSpectrumModelInfoMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', 'ns3::TxSpectrumModelInfoMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', 'ns3::TxSpectrumModelInfoMap_t&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >', u'ns3::RxSpectrumModelInfoMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >*', u'ns3::RxSpectrumModelInfoMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::RxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::RxSpectrumModelInfo > > >&', u'ns3::RxSpectrumModelInfoMap_t&')
+    typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
+    typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
+    typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', u'ns3::TxSpectrumModelInfoMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', u'ns3::TxSpectrumModelInfoMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', u'ns3::TxSpectrumModelInfoMap_t&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyRxEndErrorCallback')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyRxEndErrorCallback*')
-    typehandlers.add_type_alias('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyRxEndErrorCallback&')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >', 'ns3::Values')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >*', 'ns3::Values*')
-    typehandlers.add_type_alias('std::vector< double, std::allocator< double > >&', 'ns3::Values&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::GenericPhyTxStartCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::GenericPhyTxStartCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::GenericPhyTxStartCallback&')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >', 'ns3::SpectrumConverterMap_t')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >*', 'ns3::SpectrumConverterMap_t*')
-    typehandlers.add_type_alias('std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >&', 'ns3::SpectrumConverterMap_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >', u'ns3::Values')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >*', u'ns3::Values*')
+    typehandlers.add_type_alias(u'std::vector< double, std::allocator< double > >&', u'ns3::Values&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >', u'ns3::SpectrumConverterMap_t')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >*', u'ns3::SpectrumConverterMap_t*')
+    typehandlers.add_type_alias(u'std::map< unsigned int, ns3::SpectrumConverter, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::SpectrumConverter > > >&', u'ns3::SpectrumConverterMap_t&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -462,12 +466,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -536,6 +540,7 @@
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TxSpectrumModelInfo_methods(root_module, root_module['ns3::TxSpectrumModelInfo'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -974,6 +979,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -986,6 +995,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2576,6 +2589,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TxSpectrumModelInfo_methods(root_module, cls):
     ## multi-model-spectrum-channel.h (module 'spectrum'): ns3::TxSpectrumModelInfo::TxSpectrumModelInfo(ns3::TxSpectrumModelInfo const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TxSpectrumModelInfo const &', 'arg0')])
@@ -2904,62 +2925,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2968,6 +2945,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3008,6 +2987,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -3792,24 +3773,24 @@
     return
 
 def register_Ns3SpectrumValue_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', 'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('double', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::SpectrumValue'], root_module['ns3::SpectrumValue'], param('ns3::SpectrumValue const &', u'right'))
     cls.add_output_stream_operator()
-    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('*=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('double', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('double', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('*=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('double', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::SpectrumValue const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('double', u'right'))
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::SpectrumValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::SpectrumValue const &', 'arg0')])
     ## spectrum-value.h (module 'spectrum'): ns3::SpectrumValue::SpectrumValue(ns3::Ptr<ns3::SpectrumModel const> sm) [constructor]
@@ -3882,13 +3863,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3915,6 +3898,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -5044,12 +5032,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -6382,10 +6370,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/spectrum/doc/Makefile ns-3.20/src/spectrum/doc/Makefile
--- ns-3.19/src/spectrum/doc/Makefile	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/spectrum/doc/Makefile	2014-06-17 10:33:13.652997822 -0700
@@ -0,0 +1,23 @@
+
+SEQDIAG = seqdiag
+RESCALE = ../../../utils/rescale-pdf.sh
+
+IMAGES_SEQDIAG = \
+	spectrum-channel-phy-interface.seqdiag
+
+spectrum-channel-phy-interface.pdf_width = 10cm
+
+seqdiags: 	${IMAGES_SEQDIAG:.seqdiag=.png} \
+		${IMAGES_SEQDIAG:.seqdiag=.pdf}
+
+
+%.png : %.seqdiag; $(SEQDIAG) -Tpng --no-transparency -o $@ $< 
+
+%.pdf : %.seqdiag
+	$(SEQDIAG) -Tpdf -o $@ $<
+	if test x$($@_width) != x; then $(RESCALE) $($@_width) $@ ; fi
+
+clean:
+	rm ${IMAGES_SEQDIAG:.seqdiag=.png} \
+	   ${IMAGES_SEQDIAG:.seqdiag=.pdf}
+
diff -Naur ns-3.19/src/spectrum/doc/spectrum-analyzer-example.eps ns-3.20/src/spectrum/doc/spectrum-analyzer-example.eps
--- ns-3.19/src/spectrum/doc/spectrum-analyzer-example.eps	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/spectrum/doc/spectrum-analyzer-example.eps	2014-06-17 10:33:13.658997775 -0700
@@ -0,0 +1,15622 @@
+%!PS-Adobe-2.0
+%%Title: spectrum-analyzer-example.eps
+%%Creator: gnuplot 4.4 patchlevel 3
+%%CreationDate: Tue Dec 24 18:17:04 2013
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 770 554
+%%Orientation: Portrait
+%%Pages: (atend)
+%%EndComments
+%%BeginProlog
+/gnudict 256 dict def
+gnudict begin
+%
+% The following true/false flags may be edited by hand if desired.
+% The unit line width and grayscale image gamma correction may also be changed.
+%
+/Color true def
+/Blacktext false def
+/Solid false def
+/Dashlength 1 def
+/Landscape false def
+/Level1 false def
+/Rounded false def
+/ClipToBoundingBox false def
+/TransparentPatterns false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/Gamma 1.0 def
+%
+/vshift -46 def
+/dl1 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
+} def
+/dl2 {
+  10.0 Dashlength mul mul
+  Rounded { currentlinewidth 0.75 mul add } if
+} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+Level1 {} {
+/SDict 10 dict def
+systemdict /pdfmark known not {
+  userdict /pdfmark systemdict /cleartomark get put
+} if
+SDict begin [
+  /Title (spectrum-analyzer-example.eps)
+  /Subject (gnuplot plot)
+  /Creator (gnuplot 4.4 patchlevel 3)
+  /Author (nicola)
+%  /Producer (gnuplot)
+%  /Keywords ()
+  /CreationDate (Tue Dec 24 18:17:04 2013)
+  /DOCINFO pdfmark
+end
+} ifelse
+/doclip {
+  ClipToBoundingBox {
+    newpath 50 50 moveto 770 50 lineto 770 554 lineto 50 554 lineto closepath
+    clip
+  } if
+} def
+%
+% Gnuplot Prolog Version 4.4 (August 2010)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+	Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+	dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+	Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc
+	2 copy moveto
+	2 copy vpt 180 270 arc closepath fill
+	vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 270 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 270 450 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+	2 copy moveto
+	2 copy vpt 90 180 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 180 arc closepath fill
+	2 copy moveto
+	2 copy vpt 270 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 0 90 arc closepath fill
+	2 copy moveto
+	2 copy vpt 180 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+	2 copy vpt 90 360 arc closepath fill
+	vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+	vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+	neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+	exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+	Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+	Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+	2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%	x,y = lower left corner of box to be filled
+%	w,h = width and height of box
+%	  a = angle in degrees between lines and x-axis
+%	 XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  gsave 1 setgray fill grestore clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+	0 1 PFs PFa 4 get div 1 add floor cvi
+	{PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+	{/InterpretLevel1 true def}
+	{/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+	bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+	0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+	8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+	0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+	0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+	0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+	0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+	12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+	-4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
+/MFshow {
+   { dup 5 get 3 ge
+     { 5 get 3 eq {gsave} {grestore} ifelse }
+     {dup dup 0 get findfont exch 1 get scalefont setfont
+     [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
+     get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
+     {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
+     get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
+     dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
+     show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
+     pop aload pop M} ifelse }ifelse }ifelse }
+     ifelse }
+   forall} def
+/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def
+/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
+ {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
+     6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def
+/MLshow { currentpoint stroke M
+  0 exch R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MRshow { currentpoint stroke M
+  exch dup MFwidth neg 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/MCshow { currentpoint stroke M
+  exch dup MFwidth -2 div 3 -1 roll R
+  Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
+/XYsave    { [( ) 1 2 true false 3 ()] } bind def
+/XYrestore { [( ) 1 2 true false 4 ()] } bind def
+end
+%%EndProlog
+%%Page: 1 1
+gnudict begin
+gsave
+doclip
+50 50 translate
+0.100 0.100 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+gsave % colour palette begin
+/maxcolors 0 def
+/HSV2RGB {  exch dup 0.0 eq {pop exch pop dup dup} % achromatic gray
+  { /HSVs exch def /HSVv exch def 6.0 mul dup floor dup 3 1 roll sub
+     /HSVf exch def /HSVi exch cvi def /HSVp HSVv 1.0 HSVs sub mul def
+	 /HSVq HSVv 1.0 HSVs HSVf mul sub mul def 
+	 /HSVt HSVv 1.0 HSVs 1.0 HSVf sub mul sub mul def
+	 /HSVi HSVi 6 mod def 0 HSVi eq {HSVv HSVt HSVp}
+	 {1 HSVi eq {HSVq HSVv HSVp}{2 HSVi eq {HSVp HSVv HSVt}
+	 {3 HSVi eq {HSVp HSVq HSVv}{4 HSVi eq {HSVt HSVp HSVv}
+	 {HSVv HSVp HSVq} ifelse} ifelse} ifelse} ifelse} ifelse
+  } ifelse} def
+/Constrain {
+  dup 0 lt {0 exch pop}{dup 1 gt {1 exch pop} if} ifelse} def
+/YIQ2RGB {
+  3 copy -1.702 mul exch -1.105 mul add add Constrain 4 1 roll
+  3 copy -0.647 mul exch -0.272 mul add add Constrain 5 1 roll
+  0.621 mul exch -0.956 mul add add Constrain 3 1 roll } def
+/CMY2RGB {  1 exch sub exch 1 exch sub 3 2 roll 1 exch sub 3 1 roll exch } def
+/XYZ2RGB {  3 copy -0.9017 mul exch -0.1187 mul add exch 0.0585 mul exch add
+  Constrain 4 1 roll 3 copy -0.0279 mul exch 1.999 mul add exch
+  -0.9844 mul add Constrain 5 1 roll -0.2891 mul exch -0.5338 mul add
+  exch 1.91 mul exch add Constrain 3 1 roll} def
+/SelectSpace {ColorSpace (HSV) eq {HSV2RGB}{ColorSpace (XYZ) eq {
+  XYZ2RGB}{ColorSpace (CMY) eq {CMY2RGB}{ColorSpace (YIQ) eq {YIQ2RGB}
+  if} ifelse} ifelse} ifelse} def
+/InterpolatedColor false def
+/cF7 {sqrt} bind def	% sqrt(x)
+/cF5 {dup dup mul mul} bind def	% x^3
+/cF15 {360 mul sin} bind def	% sin(360x)
+/pm3dround {maxcolors 0 gt {dup 1 ge
+	{pop 1} {maxcolors mul floor maxcolors 1 sub div} ifelse} if} def
+/pm3dGamma 1.0 1.5 Gamma mul div def
+/ColorSpace (RGB) def
+Color InterpolatedColor or { % COLOUR vs. GRAY map
+  InterpolatedColor { %% Interpolation vs. RGB-Formula
+    /g {stroke pm3dround /grayv exch def interpolate
+        SelectSpace setrgbcolor} bind def
+  }{
+  /g {stroke pm3dround dup cF7 Constrain exch dup cF5 Constrain exch cF15 Constrain 
+       SelectSpace setrgbcolor} bind def
+  } ifelse
+}{
+  /g {stroke pm3dround pm3dGamma exp setgray} bind def
+} ifelse
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 1712 M
+3837 2768 L
+6312 1509 M
+3837 2768 L
+888 1712 M
+0 1959 V
+0 -1959 R
+73 26 V
+stroke
+792 1654 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 0)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+3837 2768 M
+-73 -26 V
+1301 1502 M
+73 26 V
+stroke
+1204 1444 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 50)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+4249 2559 M
+-72 -26 V
+1713 1292 M
+73 26 V
+stroke
+1617 1234 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 100)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+4662 2349 M
+-73 -26 V
+2126 1082 M
+73 26 V
+stroke
+2029 1024 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 150)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+5074 2139 M
+-73 -26 V
+2538 872 M
+73 26 V
+stroke
+2441 815 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 200)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+5487 1929 M
+-73 -26 V
+2951 662 M
+72 26 V
+stroke
+2854 605 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 250)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+5899 1719 M
+-73 -26 V
+3363 452 M
+73 27 V
+stroke
+3266 395 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 300)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+6312 1509 M
+-73 -26 V
+3363 452 M
+-40 21 V
+stroke
+3417 407 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2400)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 1712 M
+41 -21 V
+3657 558 M
+-40 21 V
+stroke
+3711 512 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2410)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+1183 1818 M
+41 -21 V
+3952 664 M
+-40 20 V
+stroke
+4006 618 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2420)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+1478 1923 M
+41 -20 V
+4247 770 M
+-40 20 V
+stroke
+4301 724 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2430)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+1773 2029 M
+41 -20 V
+4542 875 M
+-41 21 V
+stroke
+4596 829 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2440)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+2068 2135 M
+41 -21 V
+4837 981 M
+-41 21 V
+stroke
+4891 935 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2450)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+2363 2241 M
+41 -21 V
+5132 1087 M
+-41 20 V
+stroke
+5186 1041 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2460)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+2658 2346 M
+41 -20 V
+5427 1192 M
+-41 21 V
+stroke
+5481 1147 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2470)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+2953 2452 M
+40 -21 V
+5722 1298 M
+-41 21 V
+stroke
+5776 1252 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2480)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+3248 2558 M
+40 -21 V
+6017 1404 M
+-41 20 V
+stroke
+6071 1358 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2490)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+3543 2662 M
+40 -20 V
+6312 1509 M
+-41 21 V
+stroke
+6365 1464 M
+[ [(Helvetica) 140.0 0.0 true true 0 ( 2500)]
+] -46.7 MCshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+3837 2768 M
+40 -21 V
+888 2365 M
+63 0 V
+stroke
+762 2365 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-150)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 2552 M
+63 0 V
+stroke
+762 2552 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-148)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 2737 M
+63 0 V
+stroke
+762 2737 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-146)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 2924 M
+63 0 V
+stroke
+762 2924 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-144)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 3111 M
+63 0 V
+stroke
+762 3111 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-142)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 3297 M
+63 0 V
+stroke
+762 3297 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-140)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 3484 M
+63 0 V
+stroke
+762 3484 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-138)]
+] -46.7 MRshow
+1.000 UL
+LTb
+1.000 UL
+LTb
+888 3671 M
+63 0 V
+stroke
+762 3671 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-136)]
+] -46.7 MRshow
+1.000 UL
+LTb
+LCb setrgbcolor
+1530 3332 M
+[ [(Helvetica) 140.0 0.0 true true 0 (PSD \(dBW/Hz\))]
+] -46.7 MCshow
+LTb
+1.000 UP
+%pm3d_map_begin
+0 g 3794 3392 N -16 8 29 11 17 -9 h
+0 g 3765 3381 N -17 9 30 10 16 -8 h
+0 g 3735 3370 N -16 8 29 11 17 -8 h
+0 g 3706 3360 N -17 8 30 10 16 -8 h
+0 g 3676 3349 N -16 8 29 11 17 -8 h
+0 g 3647 3339 N -17 8 30 11 16 -9 h
+0 g 3617 3328 N -16 9 29 10 17 -8 h
+0 g 3588 3318 N -17 8 30 11 16 -9 h
+0 g 3558 3307 N -16 9 29 10 17 -8 h
+0 g 3529 3296 N -17 8 30 11 16 -8 h
+0 g 3499 3286 N -16 8 29 10 17 -8 h
+0 g 3470 3275 N -17 8 30 11 16 -8 h
+0 g 3440 3265 N -16 8 29 11 17 -9 h
+0 g 3411 3254 N -17 9 30 10 16 -8 h
+0 g 3381 3244 N -16 8 29 11 17 -9 h
+0 g 3352 3233 N -17 9 30 10 16 -8 h
+0 g 3322 3223 N -16 8 29 11 17 -9 h
+0 g 3293 3212 N -17 9 30 10 16 -8 h
+0 g 3263 3201 N -16 8 29 11 17 -8 h
+0 g 3234 3191 N -17 8 30 11 16 -9 h
+0 g 3204 3180 N -16 9 29 10 17 -8 h
+0 g 3175 3170 N -17 8 30 11 16 -9 h
+0 g 3145 3159 N -16 9 29 10 17 -8 h
+0 g 3116 3149 N -17 8 30 11 16 -9 h
+0 g 3086 3138 N -16 9 29 10 17 -8 h
+0 g 3057 3127 N -17 8 30 11 16 -8 h
+0 g 3027 3117 N -16 8 29 11 17 -9 h
+0 g 2998 3106 N -17 9 30 10 16 -8 h
+0 g 2968 3096 N -16 8 29 11 17 -9 h
+0 g 2939 3085 N -17 9 30 10 16 -8 h
+0 g 2910 3075 N -16 8 29 11 16 -9 h
+0 g 2880 3064 N -16 9 29 10 17 -8 h
+0 g 2851 3053 N -17 8 30 11 16 -8 h
+0 g 2821 3043 N -16 8 29 11 17 -9 h
+0 g 2792 3032 N -17 9 30 10 16 -8 h
+0 g 2762 3022 N -16 8 29 11 17 -9 h
+0 g 2733 3011 N -17 9 30 10 16 -8 h
+0 g 2703 3001 N -16 8 29 11 17 -9 h
+0 g 2674 2990 N -17 9 30 10 16 -8 h
+0 g 2644 2979 N -16 8 29 11 17 -8 h
+0 g 2615 2969 N -17 8 30 11 16 -9 h
+0 g 2585 2958 N -16 9 29 10 17 -8 h
+0 g 2556 2948 N -17 8 30 11 16 -9 h
+0 g 2526 2937 N -16 9 29 10 17 -8 h
+0 g 2497 2927 N -17 8 30 11 16 -9 h
+0 g 2467 2916 N -16 9 29 10 17 -8 h
+0 g 2438 2905 N -17 8 30 11 16 -8 h
+0 g 2408 2895 N -16 8 29 11 17 -9 h
+0 g 2379 2884 N -17 9 30 10 16 -8 h
+0 g 2349 2874 N -16 8 29 11 17 -9 h
+0 g 2320 2863 N -17 9 30 10 16 -8 h
+0 g 2290 2853 N -16 8 29 11 17 -9 h
+0 g 2261 2842 N -17 9 30 10 16 -8 h
+0 g 2231 2831 N -16 8 29 11 17 -8 h
+0 g 2202 2821 N -17 8 30 11 16 -9 h
+0 g 2172 2810 N -16 9 29 10 17 -8 h
+0 g 2143 2800 N -17 8 30 11 16 -9 h
+0 g 2113 2789 N -16 9 29 10 17 -8 h
+0 g 2084 2779 N -17 8 30 11 16 -9 h
+0 g 2054 2768 N -16 9 29 10 17 -8 h
+0 g 2025 2757 N -17 8 30 11 16 -8 h
+0 g 1995 2747 N -16 8 29 10 17 -8 h
+0 g 1966 2736 N -17 8 30 11 16 -8 h
+0 g 1936 2726 N -16 8 29 11 17 -9 h
+0 g 1907 2715 N -17 9 30 10 16 -8 h
+0 g 1877 2705 N -16 8 29 11 17 -9 h
+0 g 1848 2694 N -17 9 30 10 16 -8 h
+0 g 1818 2683 N -16 8 29 11 17 -8 h
+0 g 1789 2673 N -17 8 30 10 16 -8 h
+0 g 1759 2662 N -16 8 29 11 17 -8 h
+0 g 1730 2652 N -17 8 30 11 16 -9 h
+0 g 1700 2641 N -16 9 29 10 17 -8 h
+0 g 1671 2631 N -17 8 30 11 16 -9 h
+0 g 1641 2620 N -16 9 29 10 17 -8 h
+0 g 1612 2610 N -17 8 30 11 16 -9 h
+0 g 1582 2599 N -16 9 29 10 17 -8 h
+0 g 1553 2588 N -17 8 30 11 16 -8 h
+0 g 1523 2578 N -16 8 29 11 17 -9 h
+0 g 1494 2567 N -17 9 30 10 16 -8 h
+0 g 1464 2557 N -16 8 29 11 17 -9 h
+0 g 1435 2546 N -17 9 30 10 16 -8 h
+0 g 1405 2536 N -16 8 29 11 17 -9 h
+0 g 1376 2525 N -17 9 30 10 16 -8 h
+0 g 1346 2514 N -16 8 29 11 17 -8 h
+0 g 1317 2504 N -17 8 30 11 16 -9 h
+0 g 1287 2493 N -16 9 29 10 17 -8 h
+0 g 1258 2483 N -17 8 30 11 16 -9 h
+0 g 1228 2472 N -16 9 29 10 17 -8 h
+0 g 1199 2462 N -17 8 30 11 16 -9 h
+0 g 1169 2451 N -16 9 29 10 17 -8 h
+0 g 1140 2440 N -17 8 30 11 16 -8 h
+0 g 1110 2430 N -16 8 29 11 17 -9 h
+0 g 1081 2419 N -17 9 30 10 16 -8 h
+0 g 1051 2409 N -16 8 29 11 17 -9 h
+0 g 1022 2398 N -17 9 30 10 16 -8 h
+0 g 992 2388 N -16 8 29 11 17 -9 h
+0 g 963 2377 N -17 9 30 10 16 -8 h
+0 g 933 2366 N -16 8 29 11 17 -8 h
+0 g 904 2356 N -17 8 30 11 16 -9 h
+0 g 3811 3383 N -17 9 30 10 16 -8 h
+0 g 3781 3373 N -16 8 29 11 17 -9 h
+0 g 3752 3362 N -17 9 30 10 16 -8 h
+0 g 3722 3352 N -16 8 29 11 17 -9 h
+0 g 3693 3341 N -17 9 30 10 16 -8 h
+0 g 3663 3330 N -16 8 29 11 17 -8 h
+0 g 3634 3320 N -17 8 30 11 16 -9 h
+0 g 3604 3309 N -16 9 29 10 17 -8 h
+0 g 3575 3299 N -17 8 30 11 16 -9 h
+0 g 3545 3288 N -16 9 29 10 17 -8 h
+0 g 3516 3278 N -17 8 30 11 16 -9 h
+0 g 3486 3267 N -16 9 29 10 17 -8 h
+0 g 3457 3256 N -17 8 30 11 16 -8 h
+0 g 3427 3246 N -16 8 29 11 17 -9 h
+0 g 3398 3235 N -17 9 30 10 16 -8 h
+0 g 3368 3225 N -16 8 29 11 17 -9 h
+0 g 3339 3214 N -17 9 30 10 16 -8 h
+0 g 3309 3204 N -16 8 29 11 17 -9 h
+0 g 3280 3193 N -17 9 30 10 16 -8 h
+0 g 3250 3182 N -16 8 29 11 17 -8 h
+0 g 3221 3172 N -17 8 30 11 16 -9 h
+0 g 3191 3161 N -16 9 29 10 17 -8 h
+0 g 3162 3151 N -17 8 30 11 16 -9 h
+0 g 3132 3140 N -16 9 29 10 17 -8 h
+0 g 3103 3130 N -17 8 30 11 16 -9 h
+0 g 3073 3119 N -16 9 29 10 17 -8 h
+0 g 3044 3108 N -17 8 30 11 16 -8 h
+0 g 3014 3098 N -16 8 29 11 17 -9 h
+0 g 2985 3087 N -17 9 30 10 16 -8 h
+0 g 2955 3077 N -16 8 29 11 17 -9 h
+0 g 2926 3066 N -17 9 30 10 16 -8 h
+0 g 2897 3056 N -16 8 29 11 16 -9 h
+0 g 2867 3045 N -16 9 29 10 17 -8 h
+0 g 2838 3034 N -17 8 30 11 16 -8 h
+0 g 2808 3024 N -16 8 29 11 17 -9 h
+0 g 2779 3013 N -17 9 30 10 16 -8 h
+0 g 2749 3003 N -16 8 29 11 17 -9 h
+0 g 2720 2992 N -17 9 30 10 16 -8 h
+0 g 2690 2982 N -16 8 29 11 17 -9 h
+0 g 2661 2971 N -17 9 30 10 16 -8 h
+0 g 2631 2960 N -16 8 29 11 17 -8 h
+0 g 2602 2950 N -17 8 30 11 16 -9 h
+0 g 2572 2939 N -16 9 29 10 17 -8 h
+0 g 2543 2929 N -17 8 30 11 16 -9 h
+0 g 2513 2918 N -16 9 29 10 17 -8 h
+0 g 2484 2908 N -17 8 30 11 16 -9 h
+0 g 2454 2897 N -16 9 29 10 17 -8 h
+0 g 2425 2886 N -17 8 30 11 16 -8 h
+0 g 2395 2876 N -16 8 29 10 17 -8 h
+0 g 2366 2865 N -17 8 30 11 16 -8 h
+0 g 2336 2855 N -16 8 29 11 17 -9 h
+0 g 2307 2844 N -17 9 30 10 16 -8 h
+0 g 2277 2834 N -16 8 29 11 17 -9 h
+0 g 2248 2823 N -17 9 30 10 16 -8 h
+0 g 2218 2812 N -16 8 29 11 17 -8 h
+0 g 2189 2802 N -17 8 30 10 16 -8 h
+0 g 2159 2791 N -16 8 29 11 17 -8 h
+0 g 2130 2781 N -17 8 30 11 16 -9 h
+0 g 2100 2770 N -16 9 29 10 17 -8 h
+0 g 2071 2760 N -17 8 30 11 16 -9 h
+0 g 2041 2749 N -16 9 29 10 17 -8 h
+0 g 2012 2739 N -17 8 30 11 16 -9 h
+0 g 1982 2728 N -16 9 29 10 17 -8 h
+0 g 1953 2717 N -17 8 30 11 16 -8 h
+0 g 1923 2707 N -16 8 29 11 17 -9 h
+0 g 1894 2696 N -17 9 30 10 16 -8 h
+0 g 1864 2686 N -16 8 29 11 17 -9 h
+0 g 1835 2675 N -17 9 30 10 16 -8 h
+0 g 1805 2665 N -16 8 29 11 17 -9 h
+0 g 1776 2654 N -17 9 30 10 16 -8 h
+0 g 1746 2643 N -16 8 29 11 17 -8 h
+0 g 1717 2633 N -17 8 30 11 16 -9 h
+0 g 1687 2622 N -16 9 29 10 17 -8 h
+0 g 1658 2612 N -17 8 30 11 16 -9 h
+0 g 1628 2601 N -16 9 29 10 17 -8 h
+0 g 1599 2591 N -17 8 30 11 16 -9 h
+0 g 1569 2580 N -16 9 29 10 17 -8 h
+0 g 1540 2569 N -17 8 30 11 16 -8 h
+0 g 1510 2559 N -16 8 29 11 17 -9 h
+0 g 1481 2548 N -17 9 30 10 16 -8 h
+0 g 1451 2538 N -16 8 29 11 17 -9 h
+0 g 1422 2527 N -17 9 30 10 16 -8 h
+0 g 1392 2517 N -16 8 29 11 17 -9 h
+0 g 1363 2506 N -17 9 30 10 16 -8 h
+0 g 1333 2495 N -16 8 29 11 17 -8 h
+0 g 1304 2485 N -17 8 30 11 16 -9 h
+0 g 1274 2474 N -16 9 29 10 17 -8 h
+0 g 1245 2464 N -17 8 30 11 16 -9 h
+0 g 1215 2453 N -16 9 29 10 17 -8 h
+0 g 1186 2443 N -17 8 30 11 16 -9 h
+0 g 1156 2432 N -16 9 29 10 17 -8 h
+0 g 1127 2421 N -17 8 30 11 16 -8 h
+0 g 1097 2411 N -16 8 29 11 17 -9 h
+0 g 1068 2400 N -17 9 30 10 16 -8 h
+0 g 1038 2390 N -16 8 29 11 17 -9 h
+0 g 1009 2379 N -17 9 30 10 16 -8 h
+0 g 979 2369 N -16 8 29 11 17 -9 h
+0 g 950 2358 N -17 9 30 10 16 -8 h
+0 g 920 2347 N -16 8 29 11 17 -8 h
+0 g 3827 3375 N -16 8 29 11 17 -9 h
+0 g 3798 3364 N -17 9 30 10 16 -8 h
+0 g 3768 3354 N -16 8 29 11 17 -9 h
+0 g 3739 3343 N -17 9 30 10 16 -8 h
+0 g 3709 3333 N -16 8 29 11 17 -9 h
+0 g 3680 3322 N -17 9 30 10 16 -8 h
+0 g 3650 3311 N -16 8 29 11 17 -8 h
+0 g 3621 3301 N -17 8 30 11 16 -9 h
+0 g 3591 3290 N -16 9 29 10 17 -8 h
+0 g 3562 3280 N -17 8 30 11 16 -9 h
+0 g 3532 3269 N -16 9 29 10 17 -8 h
+0 g 3503 3259 N -17 8 30 11 16 -9 h
+0 g 3473 3248 N -16 9 29 10 17 -8 h
+0 g 3444 3237 N -17 8 30 11 16 -8 h
+0 g 3414 3227 N -16 8 29 11 17 -9 h
+0 g 3385 3216 N -17 9 30 10 16 -8 h
+0 g 3355 3206 N -16 8 29 11 17 -9 h
+0 g 3326 3195 N -17 9 30 10 16 -8 h
+0 g 3296 3185 N -16 8 29 11 17 -9 h
+0 g 3267 3174 N -17 9 30 10 16 -8 h
+0 g 3237 3163 N -16 8 29 11 17 -8 h
+0 g 3208 3153 N -17 8 30 11 16 -9 h
+0 g 3178 3142 N -16 9 29 10 17 -8 h
+0 g 3149 3132 N -17 8 30 11 16 -9 h
+0 g 3119 3121 N -16 9 29 10 17 -8 h
+0 g 3090 3111 N -17 8 30 11 16 -9 h
+0 g 3060 3100 N -16 9 29 10 17 -8 h
+0 g 3031 3089 N -17 8 30 11 16 -8 h
+0 g 3001 3079 N -16 8 29 11 17 -9 h
+0 g 2972 3068 N -17 9 30 10 16 -8 h
+0 g 2942 3058 N -16 8 29 11 17 -9 h
+0 g 2913 3047 N -17 9 29 10 17 -8 h
+0 g 2884 3037 N -17 8 30 11 16 -9 h
+0 g 2854 3026 N -16 9 29 10 17 -8 h
+0 g 2825 3015 N -17 8 30 11 16 -8 h
+0 g 2795 3005 N -16 8 29 10 17 -8 h
+0 g 2766 2994 N -17 8 30 11 16 -8 h
+0 g 2736 2984 N -16 8 29 11 17 -9 h
+0 g 2707 2973 N -17 9 30 10 16 -8 h
+0 g 2677 2963 N -16 8 29 11 17 -9 h
+0 g 2648 2952 N -17 9 30 10 16 -8 h
+0 g 2618 2941 N -16 8 29 11 17 -8 h
+0 g 2589 2931 N -17 8 30 10 16 -8 h
+0 g 2559 2920 N -16 8 29 11 17 -8 h
+0 g 2530 2910 N -17 8 30 11 16 -9 h
+0 g 2500 2899 N -16 9 29 10 17 -8 h
+0 g 2471 2889 N -17 8 30 11 16 -9 h
+0 g 2441 2878 N -16 9 29 10 17 -8 h
+0 g 2412 2868 N -17 8 30 11 16 -9 h
+0 g 2382 2857 N -16 9 29 10 17 -8 h
+0 g 2353 2846 N -17 8 30 11 16 -8 h
+0 g 2323 2836 N -16 8 29 11 17 -9 h
+0 g 2294 2825 N -17 9 30 10 16 -8 h
+0 g 2264 2815 N -16 8 29 11 17 -9 h
+0 g 2235 2804 N -17 9 30 10 16 -8 h
+0 g 2205 2794 N -16 8 29 11 17 -9 h
+0 g 2176 2783 N -17 9 30 10 16 -8 h
+0 g 2146 2772 N -16 8 29 11 17 -8 h
+0 g 2117 2762 N -17 8 30 11 16 -9 h
+0 g 2087 2751 N -16 9 29 10 17 -8 h
+0 g 2058 2741 N -17 8 30 11 16 -9 h
+0 g 2028 2730 N -16 9 29 10 17 -8 h
+0 g 1999 2720 N -17 8 30 11 16 -9 h
+0 g 1969 2709 N -16 9 29 10 17 -8 h
+0 g 1940 2698 N -17 8 30 11 16 -8 h
+0 g 1910 2688 N -16 8 29 11 17 -9 h
+0 g 1881 2677 N -17 9 30 10 16 -8 h
+0 g 1851 2667 N -16 8 29 11 17 -9 h
+0 g 1822 2656 N -17 9 30 10 16 -8 h
+0 g 1792 2646 N -16 8 29 11 17 -9 h
+0 g 1763 2635 N -17 9 30 10 16 -8 h
+0 g 1733 2624 N -16 8 29 11 17 -8 h
+0 g 1704 2614 N -17 8 30 11 16 -9 h
+0 g 1674 2603 N -16 9 29 10 17 -8 h
+0 g 1645 2593 N -17 8 30 11 16 -9 h
+0 g 1615 2582 N -16 9 29 10 17 -8 h
+0 g 1586 2572 N -17 8 30 11 16 -9 h
+0 g 1556 2561 N -16 9 29 10 17 -8 h
+0 g 1527 2550 N -17 8 30 11 16 -8 h
+0 g 1497 2540 N -16 8 29 11 17 -9 h
+0 g 1468 2529 N -17 9 30 10 16 -8 h
+0 g 1438 2519 N -16 8 29 11 17 -9 h
+0 g 1409 2508 N -17 9 30 10 16 -8 h
+0 g 1379 2498 N -16 8 29 11 17 -9 h
+0 g 1350 2487 N -17 9 30 10 16 -8 h
+0 g 1320 2476 N -16 8 29 11 17 -8 h
+0 g 1291 2466 N -17 8 30 11 16 -9 h
+0 g 1261 2455 N -16 9 29 10 17 -8 h
+0 g 1232 2445 N -17 8 30 11 16 -9 h
+0 g 1202 2434 N -16 9 29 10 17 -8 h
+0 g 1173 2424 N -17 8 30 11 16 -9 h
+0 g 1143 2413 N -16 9 29 10 17 -8 h
+0 g 1114 2402 N -17 8 30 11 16 -8 h
+0 g 1084 2392 N -16 8 29 11 17 -9 h
+0 g 1055 2381 N -17 9 30 10 16 -8 h
+0 g 1025 2371 N -16 8 29 11 17 -9 h
+0 g 996 2360 N -17 9 30 10 16 -8 h
+0 g 966 2350 N -16 8 29 11 17 -9 h
+0 g 937 2339 N -17 9 30 10 16 -8 h
+0 g 3844 3366 N -17 8 30 11 16 -8 h
+0 g 3814 3356 N -16 8 29 11 17 -9 h
+0 g 3785 3345 N -17 9 30 10 16 -8 h
+0 g 3755 3335 N -16 8 29 11 17 -9 h
+0 g 3726 3324 N -17 9 30 10 16 -8 h
+0 g 3696 3314 N -16 8 29 11 17 -9 h
+0 g 3667 3303 N -17 9 30 10 16 -8 h
+0 g 3637 3292 N -16 8 29 11 17 -8 h
+0 g 3608 3282 N -17 8 30 11 16 -9 h
+0 g 3578 3271 N -16 9 29 10 17 -8 h
+0 g 3549 3261 N -17 8 30 11 16 -9 h
+0 g 3519 3250 N -16 9 29 10 17 -8 h
+0 g 3490 3240 N -17 8 30 11 16 -9 h
+0 g 3460 3229 N -16 9 29 10 17 -8 h
+0 g 3431 3218 N -17 8 30 11 16 -8 h
+0 g 3401 3208 N -16 8 29 11 17 -9 h
+0 g 3372 3197 N -17 9 30 10 16 -8 h
+0 g 3342 3187 N -16 8 29 11 17 -9 h
+0 g 3313 3176 N -17 9 30 10 16 -8 h
+0 g 3283 3166 N -16 8 29 11 17 -9 h
+0 g 3254 3155 N -17 9 30 10 16 -8 h
+0 g 3224 3144 N -16 8 29 11 17 -8 h
+0 g 3195 3134 N -17 8 30 10 16 -8 h
+0 g 3165 3123 N -16 8 29 11 17 -8 h
+0 g 3136 3113 N -17 8 30 11 16 -9 h
+0 g 3106 3102 N -16 9 29 10 17 -8 h
+0 g 3077 3092 N -17 8 30 11 16 -9 h
+0 g 3047 3081 N -16 9 29 10 17 -8 h
+0 g 3018 3070 N -17 8 30 11 16 -8 h
+0 g 2988 3060 N -16 8 29 10 17 -8 h
+0 g 2959 3049 N -17 8 30 11 16 -8 h
+0 g 2930 3039 N -16 8 29 11 16 -9 h
+0 g 2900 3028 N -16 9 29 10 17 -8 h
+0 g 2871 3018 N -17 8 30 11 16 -9 h
+0 g 2841 3007 N -16 9 29 10 17 -8 h
+0 g 2812 2997 N -17 8 30 11 16 -9 h
+0 g 2782 2986 N -16 9 29 10 17 -8 h
+0 g 2753 2975 N -17 8 30 11 16 -8 h
+0 g 2723 2965 N -16 8 29 11 17 -9 h
+0 g 2694 2954 N -17 9 30 10 16 -8 h
+0 g 2664 2944 N -16 8 29 11 17 -9 h
+0 g 2635 2933 N -17 9 30 10 16 -8 h
+0 g 2605 2923 N -16 8 29 11 17 -9 h
+0 g 2576 2912 N -17 9 30 10 16 -8 h
+0 g 2546 2901 N -16 8 29 11 17 -8 h
+0 g 2517 2891 N -17 8 30 11 16 -9 h
+0 g 2487 2880 N -16 9 29 10 17 -8 h
+0 g 2458 2870 N -17 8 30 11 16 -9 h
+0 g 2428 2859 N -16 9 29 10 17 -8 h
+0 g 2399 2849 N -17 8 30 11 16 -9 h
+0 g 2369 2838 N -16 9 29 10 17 -8 h
+0 g 2340 2827 N -17 8 30 11 16 -8 h
+0 g 2310 2817 N -16 8 29 11 17 -9 h
+0 g 2281 2806 N -17 9 30 10 16 -8 h
+0 g 2251 2796 N -16 8 29 11 17 -9 h
+0 g 2222 2785 N -17 9 30 10 16 -8 h
+0 g 2192 2775 N -16 8 29 11 17 -9 h
+0 g 2163 2764 N -17 9 30 10 16 -8 h
+0 g 2133 2753 N -16 8 29 11 17 -8 h
+0 g 2104 2743 N -17 8 30 11 16 -9 h
+0 g 2074 2732 N -16 9 29 10 17 -8 h
+0 g 2045 2722 N -17 8 30 11 16 -9 h
+0 g 2015 2711 N -16 9 29 10 17 -8 h
+0 g 1986 2701 N -17 8 30 11 16 -9 h
+0 g 1956 2690 N -16 9 29 10 17 -8 h
+0 g 1927 2679 N -17 8 30 11 16 -8 h
+0 g 1897 2669 N -16 8 29 11 17 -9 h
+0 g 1868 2658 N -17 9 30 10 16 -8 h
+0 g 1838 2648 N -16 8 29 11 17 -9 h
+0 g 1809 2637 N -17 9 30 10 16 -8 h
+0 g 1779 2627 N -16 8 29 11 17 -9 h
+0 g 1750 2616 N -17 9 30 10 16 -8 h
+0 g 1720 2605 N -16 8 29 11 17 -8 h
+0 g 1691 2595 N -17 8 30 11 16 -9 h
+0 g 1661 2584 N -16 9 29 10 17 -8 h
+0 g 1632 2574 N -17 8 30 11 16 -9 h
+0 g 1602 2563 N -16 9 29 10 17 -8 h
+0 g 1573 2553 N -17 8 30 11 16 -9 h
+0 g 1543 2542 N -16 9 29 10 17 -8 h
+0 g 1514 2531 N -17 8 30 11 16 -8 h
+0 g 1484 2521 N -16 8 29 11 17 -9 h
+0 g 1455 2510 N -17 9 30 10 16 -8 h
+0 g 1425 2500 N -16 8 29 11 17 -9 h
+0 g 1396 2489 N -17 9 30 10 16 -8 h
+0 g 1366 2479 N -16 8 29 11 17 -9 h
+0 g 1337 2468 N -17 9 30 10 16 -8 h
+0 g 1307 2457 N -16 8 29 11 17 -8 h
+0 g 1278 2447 N -17 8 30 10 16 -8 h
+0 g 1248 2436 N -16 8 29 11 17 -8 h
+0 g 1219 2426 N -17 8 30 11 16 -9 h
+0 g 1189 2415 N -16 9 29 10 17 -8 h
+0 g 1160 2405 N -17 8 30 11 16 -9 h
+0 g 1130 2394 N -16 9 29 10 17 -8 h
+0 g 1101 2383 N -17 8 30 11 16 -8 h
+0 g 1071 2373 N -16 8 29 10 17 -8 h
+0 g 1042 2362 N -17 8 30 11 16 -8 h
+0 g 1012 2352 N -16 8 29 11 17 -9 h
+0 g 983 2341 N -17 9 30 10 16 -8 h
+0 g 953 2331 N -16 8 29 11 17 -9 h
+0 g 3860 3358 N -16 9 29 10 17 -8 h
+0 g 3831 3347 N -17 8 30 11 16 -8 h
+0 g 3801 3337 N -16 8 29 11 17 -9 h
+0 g 3772 3326 N -17 9 30 10 16 -8 h
+0 g 3742 3316 N -16 8 29 11 17 -9 h
+0 g 3713 3305 N -17 9 30 10 16 -8 h
+0 g 3683 3295 N -16 8 29 11 17 -9 h
+0 g 3654 3284 N -17 9 30 10 16 -8 h
+0 g 3624 3273 N -16 8 29 11 17 -8 h
+0 g 3595 3263 N -17 8 30 10 16 -8 h
+0 g 3565 3252 N -16 8 29 11 17 -8 h
+0 g 3536 3242 N -17 8 30 11 16 -9 h
+0 g 3506 3231 N -16 9 29 10 17 -8 h
+0 g 3477 3221 N -17 8 30 11 16 -9 h
+0 g 3447 3210 N -16 9 29 10 17 -8 h
+0 g 3418 3199 N -17 8 30 11 16 -8 h
+0 g 3388 3189 N -16 8 29 10 17 -8 h
+0 g 3359 3178 N -17 8 30 11 16 -8 h
+0 g 3329 3168 N -16 8 29 11 17 -9 h
+0 g 3300 3157 N -17 9 30 10 16 -8 h
+0 g 3270 3147 N -16 8 29 11 17 -9 h
+0 g 3241 3136 N -17 9 30 10 16 -8 h
+0 g 3211 3126 N -16 8 29 11 17 -9 h
+0 g 3182 3115 N -17 9 30 10 16 -8 h
+0 g 3152 3104 N -16 8 29 11 17 -8 h
+0 g 3123 3094 N -17 8 30 11 16 -9 h
+0 g 3093 3083 N -16 9 29 10 17 -8 h
+0 g 3064 3073 N -17 8 30 11 16 -9 h
+0 g 3034 3062 N -16 9 29 10 17 -8 h
+0 g 3005 3052 N -17 8 30 11 16 -9 h
+0 g 2975 3041 N -16 9 29 10 17 -8 h
+0 g 2946 3030 N -17 8 30 11 16 -8 h
+0 g 2917 3020 N -16 8 29 11 16 -9 h
+0 g 2887 3009 N -16 9 29 10 17 -8 h
+0 g 2858 2999 N -17 8 30 11 16 -9 h
+0 g 2828 2988 N -16 9 29 10 17 -8 h
+0 g 2799 2978 N -17 8 30 11 16 -9 h
+0 g 2769 2967 N -16 9 29 10 17 -8 h
+0 g 2740 2956 N -17 8 30 11 16 -8 h
+0 g 2710 2946 N -16 8 29 11 17 -9 h
+0 g 2681 2935 N -17 9 30 10 16 -8 h
+0 g 2651 2925 N -16 8 29 11 17 -9 h
+0 g 2622 2914 N -17 9 30 10 16 -8 h
+0 g 2592 2904 N -16 8 29 11 17 -9 h
+0 g 2563 2893 N -17 9 30 10 16 -8 h
+0 g 2533 2882 N -16 8 29 11 17 -8 h
+0 g 2504 2872 N -17 8 30 11 16 -9 h
+0 g 2474 2861 N -16 9 29 10 17 -8 h
+0 g 2445 2851 N -17 8 30 11 16 -9 h
+0 g 2415 2840 N -16 9 29 10 17 -8 h
+0 g 2386 2830 N -17 8 30 11 16 -9 h
+0 g 2356 2819 N -16 9 29 10 17 -8 h
+0 g 2327 2808 N -17 8 30 11 16 -8 h
+0 g 2297 2798 N -16 8 29 11 17 -9 h
+0 g 2268 2787 N -17 9 30 10 16 -8 h
+0 g 2238 2777 N -16 8 29 11 17 -9 h
+0 g 2209 2766 N -17 9 30 10 16 -8 h
+0 g 2179 2756 N -16 8 29 11 17 -9 h
+0 g 2150 2745 N -17 9 30 10 16 -8 h
+0 g 2120 2734 N -16 8 29 11 17 -8 h
+0 g 2091 2724 N -17 8 30 11 16 -9 h
+0 g 2061 2713 N -16 9 29 10 17 -8 h
+0 g 2032 2703 N -17 8 30 11 16 -9 h
+0 g 2002 2692 N -16 9 29 10 17 -8 h
+0 g 1973 2682 N -17 8 30 11 16 -9 h
+0 g 1943 2671 N -16 9 29 10 17 -8 h
+0 g 1914 2660 N -17 8 30 11 16 -8 h
+0 g 1884 2650 N -16 8 29 11 17 -9 h
+0 g 1855 2639 N -17 9 30 10 16 -8 h
+0 g 1825 2629 N -16 8 29 11 17 -9 h
+0 g 1796 2618 N -17 9 30 10 16 -8 h
+0 g 1766 2608 N -16 8 29 11 17 -9 h
+0 g 1737 2597 N -17 9 30 10 16 -8 h
+0 g 1707 2586 N -16 8 29 11 17 -8 h
+0 g 1678 2576 N -17 8 30 10 16 -8 h
+0 g 1648 2565 N -16 8 29 11 17 -8 h
+0 g 1619 2555 N -17 8 30 11 16 -9 h
+0 g 1589 2544 N -16 9 29 10 17 -8 h
+0 g 1560 2534 N -17 8 30 11 16 -9 h
+0 g 1530 2523 N -16 9 29 10 17 -8 h
+0 g 1501 2512 N -17 8 30 11 16 -8 h
+0 g 1471 2502 N -16 8 29 10 17 -8 h
+0 g 1442 2491 N -17 8 30 11 16 -8 h
+0 g 1412 2481 N -16 8 29 11 17 -9 h
+0 g 1383 2470 N -17 9 30 10 16 -8 h
+0 g 1353 2460 N -16 8 29 11 17 -9 h
+0 g 1324 2449 N -17 9 30 10 16 -8 h
+0 g 1294 2439 N -16 8 29 11 17 -9 h
+0 g 1265 2428 N -17 9 30 10 16 -8 h
+0 g 1235 2417 N -16 8 29 11 17 -8 h
+0 g 1206 2407 N -17 8 30 11 16 -9 h
+0 g 1176 2396 N -16 9 29 10 17 -8 h
+0 g 1147 2386 N -17 8 30 11 16 -9 h
+0 g 1117 2375 N -16 9 29 10 17 -8 h
+0 g 1088 2365 N -17 8 30 11 16 -9 h
+0 g 1058 2354 N -16 9 29 10 17 -8 h
+0 g 1029 2343 N -17 8 30 11 16 -8 h
+0 g 999 2333 N -16 8 29 11 17 -9 h
+0 g 970 2322 N -17 9 30 10 16 -8 h
+0 g 3877 3350 N -17 8 30 11 16 -9 h
+0 g 3847 3339 N -16 9 29 10 17 -8 h
+0 g 3818 3328 N -17 8 30 11 16 -8 h
+0 g 3788 3318 N -16 8 29 10 17 -8 h
+0 g 3759 3307 N -17 8 30 11 16 -8 h
+0 g 3729 3297 N -16 8 29 11 17 -9 h
+0 g 3700 3286 N -17 9 30 10 16 -8 h
+0 g 3670 3276 N -16 8 29 11 17 -9 h
+0 g 3641 3265 N -17 9 30 10 16 -8 h
+0 g 3611 3255 N -16 8 29 11 17 -9 h
+0 g 3582 3244 N -17 9 30 10 16 -8 h
+0 g 3552 3233 N -16 8 29 11 17 -8 h
+0 g 3523 3223 N -17 8 30 11 16 -9 h
+0 g 3493 3212 N -16 9 29 10 17 -8 h
+0 g 3464 3202 N -17 8 30 11 16 -9 h
+0 g 3434 3191 N -16 9 29 10 17 -8 h
+0 g 3405 3181 N -17 8 30 11 16 -9 h
+0 g 3375 3170 N -16 9 29 10 17 -8 h
+0 g 3346 3159 N -17 8 30 11 16 -8 h
+0 g 3316 3149 N -16 8 29 11 17 -9 h
+0 g 3287 3138 N -17 9 30 10 16 -8 h
+0 g 3257 3128 N -16 8 29 11 17 -9 h
+0 g 3228 3117 N -17 9 30 10 16 -8 h
+0 g 3198 3107 N -16 8 29 11 17 -9 h
+0 g 3169 3096 N -17 9 30 10 16 -8 h
+0 g 3139 3085 N -16 8 29 11 17 -8 h
+0 g 3110 3075 N -17 8 30 11 16 -9 h
+0 g 3080 3064 N -16 9 29 10 17 -8 h
+0 g 3051 3054 N -17 8 30 11 16 -9 h
+0 g 3021 3043 N -16 9 29 10 17 -8 h
+0 g 2992 3033 N -17 8 30 11 16 -9 h
+0 g 2962 3022 N -16 9 29 10 17 -8 h
+0 g 2933 3011 N -17 8 29 11 17 -8 h
+0 g 2904 3001 N -17 8 30 11 16 -9 h
+0 g 2874 2990 N -16 9 29 10 17 -8 h
+0 g 2845 2980 N -17 8 30 11 16 -9 h
+0 g 2815 2969 N -16 9 29 10 17 -8 h
+0 g 2786 2959 N -17 8 30 11 16 -9 h
+0 g 2756 2948 N -16 9 29 10 17 -8 h
+0 g 2727 2937 N -17 8 30 11 16 -8 h
+0 g 2697 2927 N -16 8 29 11 17 -9 h
+0 g 2668 2916 N -17 9 30 10 16 -8 h
+0 g 2638 2906 N -16 8 29 11 17 -9 h
+0 g 2609 2895 N -17 9 30 10 16 -8 h
+0 g 2579 2885 N -16 8 29 11 17 -9 h
+0 g 2550 2874 N -17 9 30 10 16 -8 h
+0 g 2520 2863 N -16 8 29 11 17 -8 h
+0 g 2491 2853 N -17 8 30 11 16 -9 h
+0 g 2461 2842 N -16 9 29 10 17 -8 h
+0 g 2432 2832 N -17 8 30 11 16 -9 h
+0 g 2402 2821 N -16 9 29 10 17 -8 h
+0 g 2373 2811 N -17 8 30 11 16 -9 h
+0 g 2343 2800 N -16 9 29 10 17 -8 h
+0 g 2314 2789 N -17 8 30 11 16 -8 h
+0 g 2284 2779 N -16 8 29 10 17 -8 h
+0 g 2255 2768 N -17 8 30 11 16 -8 h
+0 g 2225 2758 N -16 8 29 11 17 -9 h
+0 g 2196 2747 N -17 9 30 10 16 -8 h
+0 g 2166 2737 N -16 8 29 11 17 -9 h
+0 g 2137 2726 N -17 9 30 10 16 -8 h
+0 g 2107 2715 N -16 8 29 11 17 -8 h
+0 g 2078 2705 N -17 8 30 10 16 -8 h
+0 g 2048 2694 N -16 8 29 11 17 -8 h
+0 g 2019 2684 N -17 8 30 11 16 -9 h
+0 g 1989 2673 N -16 9 29 10 17 -8 h
+0 g 1960 2663 N -17 8 30 11 16 -9 h
+0 g 1930 2652 N -16 9 29 10 17 -8 h
+0 g 1901 2641 N -17 8 30 11 16 -8 h
+0 g 1871 2631 N -16 8 29 10 17 -8 h
+0 g 1842 2620 N -17 8 30 11 16 -8 h
+0 g 1812 2610 N -16 8 29 11 17 -9 h
+0 g 1783 2599 N -17 9 30 10 16 -8 h
+0 g 1753 2589 N -16 8 29 11 17 -9 h
+0 g 1724 2578 N -17 9 30 10 16 -8 h
+0 g 1694 2568 N -16 8 29 11 17 -9 h
+0 g 1665 2557 N -17 9 30 10 16 -8 h
+0 g 1635 2546 N -16 8 29 11 17 -8 h
+0 g 1606 2536 N -17 8 30 11 16 -9 h
+0 g 1576 2525 N -16 9 29 10 17 -8 h
+0 g 1547 2515 N -17 8 30 11 16 -9 h
+0 g 1517 2504 N -16 9 29 10 17 -8 h
+0 g 1488 2494 N -17 8 30 11 16 -9 h
+0 g 1458 2483 N -16 9 29 10 17 -8 h
+0 g 1429 2472 N -17 8 30 11 16 -8 h
+0 g 1399 2462 N -16 8 29 11 17 -9 h
+0 g 1370 2451 N -17 9 30 10 16 -8 h
+0 g 1340 2441 N -16 8 29 11 17 -9 h
+0 g 1311 2430 N -17 9 30 10 16 -8 h
+0 g 1281 2420 N -16 8 29 11 17 -9 h
+0 g 1252 2409 N -17 9 30 10 16 -8 h
+0 g 1222 2398 N -16 8 29 11 17 -8 h
+0 g 1193 2388 N -17 8 30 11 16 -9 h
+0 g 1163 2377 N -16 9 29 10 17 -8 h
+0 g 1134 2367 N -17 8 30 11 16 -9 h
+0 g 1104 2356 N -16 9 29 10 17 -8 h
+0 g 1075 2346 N -17 8 30 11 16 -9 h
+0 g 1045 2335 N -16 9 29 10 17 -8 h
+0 g 1016 2324 N -17 8 30 11 16 -8 h
+0 g 986 2314 N -16 8 29 11 17 -9 h
+0 g 3893 3341 N -16 9 29 10 17 -8 h
+0 g 3864 3331 N -17 8 30 11 16 -9 h
+0 g 3834 3320 N -16 9 29 10 17 -8 h
+0 g 3805 3310 N -17 8 30 11 16 -9 h
+0 g 3775 3299 N -16 9 29 10 17 -8 h
+0 g 3746 3288 N -17 8 30 11 16 -8 h
+0 g 3716 3278 N -16 8 29 11 17 -9 h
+0 g 3687 3267 N -17 9 30 10 16 -8 h
+0 g 3657 3257 N -16 8 29 11 17 -9 h
+0 g 3628 3246 N -17 9 30 10 16 -8 h
+0 g 3598 3236 N -16 8 29 11 17 -9 h
+0 g 3569 3225 N -17 9 30 10 16 -8 h
+0 g 3539 3214 N -16 8 29 11 17 -8 h
+0 g 3510 3204 N -17 8 30 11 16 -9 h
+0 g 3480 3193 N -16 9 29 10 17 -8 h
+0 g 3451 3183 N -17 8 30 11 16 -9 h
+0 g 3421 3172 N -16 9 29 10 17 -8 h
+0 g 3392 3162 N -17 8 30 11 16 -9 h
+0 g 3362 3151 N -16 9 29 10 17 -8 h
+0 g 3333 3140 N -17 8 30 11 16 -8 h
+0 g 3303 3130 N -16 8 29 11 17 -9 h
+0 g 3274 3119 N -17 9 30 10 16 -8 h
+0 g 3244 3109 N -16 8 29 11 17 -9 h
+0 g 3215 3098 N -17 9 30 10 16 -8 h
+0 g 3185 3088 N -16 8 29 11 17 -9 h
+0 g 3156 3077 N -17 9 30 10 16 -8 h
+0 g 3126 3066 N -16 8 29 11 17 -8 h
+0 g 3097 3056 N -17 8 30 11 16 -9 h
+0 g 3067 3045 N -16 9 29 10 17 -8 h
+0 g 3038 3035 N -17 8 30 11 16 -9 h
+0 g 3008 3024 N -16 9 29 10 17 -8 h
+0 g 2979 3014 N -17 8 30 11 16 -9 h
+0 g 2950 3003 N -16 9 29 10 16 -8 h
+0 g 2920 2992 N -16 8 29 11 17 -8 h
+0 g 2891 2982 N -17 8 30 11 16 -9 h
+0 g 2861 2971 N -16 9 29 10 17 -8 h
+0 g 2832 2961 N -17 8 30 11 16 -9 h
+0 g 2802 2950 N -16 9 29 10 17 -8 h
+0 g 2773 2940 N -17 8 30 11 16 -9 h
+0 g 2743 2929 N -16 9 29 10 17 -8 h
+0 g 2714 2918 N -17 8 30 11 16 -8 h
+0 g 2684 2908 N -16 8 29 10 17 -8 h
+0 g 2655 2897 N -17 8 30 11 16 -8 h
+0 g 2625 2887 N -16 8 29 11 17 -9 h
+0 g 2596 2876 N -17 9 30 10 16 -8 h
+0 g 2566 2866 N -16 8 29 11 17 -9 h
+0 g 2537 2855 N -17 9 30 10 16 -8 h
+0 g 2507 2844 N -16 8 29 11 17 -8 h
+0 g 2478 2834 N -17 8 30 10 16 -8 h
+0 g 2448 2823 N -16 8 29 11 17 -8 h
+0 g 2419 2813 N -17 8 30 11 16 -9 h
+0 g 2389 2802 N -16 9 29 10 17 -8 h
+0 g 2360 2792 N -17 8 30 11 16 -9 h
+0 g 2330 2781 N -16 9 29 10 17 -8 h
+0 g 2301 2771 N -17 8 30 11 16 -9 h
+0 g 2271 2760 N -16 9 29 10 17 -8 h
+0 g 2242 2749 N -17 8 30 11 16 -8 h
+0 g 2212 2739 N -16 8 29 11 17 -9 h
+0 g 2183 2728 N -17 9 30 10 16 -8 h
+0 g 2153 2718 N -16 8 29 11 17 -9 h
+0 g 2124 2707 N -17 9 30 10 16 -8 h
+0 g 2094 2697 N -16 8 29 11 17 -9 h
+0 g 2065 2686 N -17 9 30 10 16 -8 h
+0 g 2035 2675 N -16 8 29 11 17 -8 h
+0 g 2006 2665 N -17 8 30 11 16 -9 h
+0 g 1976 2654 N -16 9 29 10 17 -8 h
+0 g 1947 2644 N -17 8 30 11 16 -9 h
+0 g 1917 2633 N -16 9 29 10 17 -8 h
+0 g 1888 2623 N -17 8 30 11 16 -9 h
+0 g 1858 2612 N -16 9 29 10 17 -8 h
+0 g 1829 2601 N -17 8 30 11 16 -8 h
+0 g 1799 2591 N -16 8 29 11 17 -9 h
+0 g 1770 2580 N -17 9 30 10 16 -8 h
+0 g 1740 2570 N -16 8 29 11 17 -9 h
+0 g 1711 2559 N -17 9 30 10 16 -8 h
+0 g 1681 2549 N -16 8 29 11 17 -9 h
+0 g 1652 2538 N -17 9 30 10 16 -8 h
+0 g 1622 2527 N -16 8 29 11 17 -8 h
+0 g 1593 2517 N -17 8 30 11 16 -9 h
+0 g 1563 2506 N -16 9 29 10 17 -8 h
+0 g 1534 2496 N -17 8 30 11 16 -9 h
+0 g 1504 2485 N -16 9 29 10 17 -8 h
+0 g 1475 2475 N -17 8 30 11 16 -9 h
+0 g 1445 2464 N -16 9 29 10 17 -8 h
+0 g 1416 2453 N -17 8 30 11 16 -8 h
+0 g 1386 2443 N -16 8 29 11 17 -9 h
+0 g 1357 2432 N -17 9 30 10 16 -8 h
+0 g 1327 2422 N -16 8 29 11 17 -9 h
+0 g 1298 2411 N -17 9 30 10 16 -8 h
+0 g 1268 2401 N -16 8 29 11 17 -9 h
+0 g 1239 2390 N -17 9 30 10 16 -8 h
+0 g 1209 2379 N -16 8 29 11 17 -8 h
+0 g 1180 2369 N -17 8 30 11 16 -9 h
+0 g 1150 2358 N -16 9 29 10 17 -8 h
+0 g 1121 2348 N -17 8 30 11 16 -9 h
+0 g 1091 2337 N -16 9 29 10 17 -8 h
+0 g 1062 2327 N -17 8 30 11 16 -9 h
+0 g 1032 2316 N -16 9 29 10 17 -8 h
+0 g 1003 2305 N -17 8 30 11 16 -8 h
+0 g 3910 3333 N -17 8 30 11 16 -9 h
+0 g 3880 3322 N -16 9 29 10 17 -8 h
+0 g 3851 3312 N -17 8 30 11 16 -9 h
+0 g 3821 3301 N -16 9 29 10 17 -8 h
+0 g 3792 3291 N -17 8 30 11 16 -9 h
+0 g 3762 3280 N -16 9 29 10 17 -8 h
+0 g 3733 3269 N -17 8 30 11 16 -8 h
+0 g 3703 3259 N -16 8 29 11 17 -9 h
+0 g 3674 3248 N -17 9 30 10 16 -8 h
+0 g 3644 3238 N -16 8 29 11 17 -9 h
+0 g 3615 3227 N -17 9 30 10 16 -8 h
+0 g 3585 3217 N -16 8 29 11 17 -9 h
+0 g 3556 3206 N -17 9 30 10 16 -8 h
+0 g 3526 3195 N -16 8 29 11 17 -8 h
+0 g 3497 3185 N -17 8 30 11 16 -9 h
+0 g 3467 3174 N -16 9 29 10 17 -8 h
+0 g 3438 3164 N -17 8 30 11 16 -9 h
+0 g 3408 3153 N -16 9 29 10 17 -8 h
+0 g 3379 3143 N -17 8 30 11 16 -9 h
+0 g 3349 3132 N -16 9 29 10 17 -8 h
+0 g 3320 3121 N -17 8 30 11 16 -8 h
+0 g 3290 3111 N -16 8 29 11 17 -9 h
+0 g 3261 3100 N -17 9 30 10 16 -8 h
+0 g 3231 3090 N -16 8 29 11 17 -9 h
+0 g 3202 3079 N -17 9 30 10 16 -8 h
+0 g 3172 3069 N -16 8 29 11 17 -9 h
+0 g 3143 3058 N -17 9 30 10 16 -8 h
+0 g 3113 3047 N -16 8 29 11 17 -8 h
+0 g 3084 3037 N -17 8 30 10 16 -8 h
+0 g 3054 3026 N -16 8 29 11 17 -8 h
+0 g 3025 3016 N -17 8 30 11 16 -9 h
+0 g 2995 3005 N -16 9 29 10 17 -8 h
+0 g 2966 2995 N -17 8 29 11 17 -9 h
+0 g 2937 2984 N -17 9 30 10 16 -8 h
+0 g 2907 2973 N -16 8 29 11 17 -8 h
+0 g 2878 2963 N -17 8 30 10 16 -8 h
+0 g 2848 2952 N -16 8 29 11 17 -8 h
+0 g 2819 2942 N -17 8 30 11 16 -9 h
+0 g 2789 2931 N -16 9 29 10 17 -8 h
+0 g 2760 2921 N -17 8 30 11 16 -9 h
+0 g 2730 2910 N -16 9 29 10 17 -8 h
+0 g 2701 2900 N -17 8 30 11 16 -9 h
+0 g 2671 2889 N -16 9 29 10 17 -8 h
+0 g 2642 2878 N -17 8 30 11 16 -8 h
+0 g 2612 2868 N -16 8 29 11 17 -9 h
+0 g 2583 2857 N -17 9 30 10 16 -8 h
+0 g 2553 2847 N -16 8 29 11 17 -9 h
+0 g 2524 2836 N -17 9 30 10 16 -8 h
+0 g 2494 2826 N -16 8 29 11 17 -9 h
+0 g 2465 2815 N -17 9 30 10 16 -8 h
+0 g 2435 2804 N -16 8 29 11 17 -8 h
+0 g 2406 2794 N -17 8 30 11 16 -9 h
+0 g 2376 2783 N -16 9 29 10 17 -8 h
+0 g 2347 2773 N -17 8 30 11 16 -9 h
+0 g 2317 2762 N -16 9 29 10 17 -8 h
+0 g 2288 2752 N -17 8 30 11 16 -9 h
+0 g 2258 2741 N -16 9 29 10 17 -8 h
+0 g 2229 2730 N -17 8 30 11 16 -8 h
+0 g 2199 2720 N -16 8 29 11 17 -9 h
+0 g 2170 2709 N -17 9 30 10 16 -8 h
+0 g 2140 2699 N -16 8 29 11 17 -9 h
+0 g 2111 2688 N -17 9 30 10 16 -8 h
+0 g 2081 2678 N -16 8 29 11 17 -9 h
+0 g 2052 2667 N -17 9 30 10 16 -8 h
+0 g 2022 2656 N -16 8 29 11 17 -8 h
+0 g 1993 2646 N -17 8 30 11 16 -9 h
+0 g 1963 2635 N -16 9 29 10 17 -8 h
+0 g 1934 2625 N -17 8 30 11 16 -9 h
+0 g 1904 2614 N -16 9 29 10 17 -8 h
+0 g 1875 2604 N -17 8 30 11 16 -9 h
+0 g 1845 2593 N -16 9 29 10 17 -8 h
+0 g 1816 2582 N -17 8 30 11 16 -8 h
+0 g 1786 2572 N -16 8 29 11 17 -9 h
+0 g 1757 2561 N -17 9 30 10 16 -8 h
+0 g 1727 2551 N -16 8 29 11 17 -9 h
+0 g 1698 2540 N -17 9 30 10 16 -8 h
+0 g 1668 2530 N -16 8 29 11 17 -9 h
+0 g 1639 2519 N -17 9 30 10 16 -8 h
+0 g 1609 2508 N -16 8 29 11 17 -8 h
+0 g 1580 2498 N -17 8 30 11 16 -9 h
+0 g 1550 2487 N -16 9 29 10 17 -8 h
+0 g 1521 2477 N -17 8 30 11 16 -9 h
+0 g 1491 2466 N -16 9 29 10 17 -8 h
+0 g 1462 2456 N -17 8 30 11 16 -9 h
+0 g 1432 2445 N -16 9 29 10 17 -8 h
+0 g 1403 2434 N -17 8 30 11 16 -8 h
+0 g 1373 2424 N -16 8 29 11 17 -9 h
+0 g 1344 2413 N -17 9 30 10 16 -8 h
+0 g 1314 2403 N -16 8 29 11 17 -9 h
+0 g 1285 2392 N -17 9 30 10 16 -8 h
+0 g 1255 2382 N -16 8 29 11 17 -9 h
+0 g 1226 2371 N -17 9 30 10 16 -8 h
+0 g 1196 2360 N -16 8 29 11 17 -8 h
+0 g 1167 2350 N -17 8 30 10 16 -8 h
+0 g 1137 2339 N -16 8 29 11 17 -8 h
+0 g 1108 2329 N -17 8 30 11 16 -9 h
+0 g 1078 2318 N -16 9 29 10 17 -8 h
+0 g 1049 2308 N -17 8 30 11 16 -9 h
+0 g 1019 2297 N -16 9 29 10 17 -8 h
+0 g 3926 3324 N -16 8 29 11 17 -8 h
+0 g 3897 3314 N -17 8 30 11 16 -9 h
+0 g 3867 3303 N -16 9 29 10 17 -8 h
+0 g 3838 3293 N -17 8 30 11 16 -9 h
+0 g 3808 3282 N -16 9 29 10 17 -8 h
+0 g 3779 3272 N -17 8 30 11 16 -9 h
+0 g 3749 3261 N -16 9 29 10 17 -8 h
+0 g 3720 3250 N -17 8 30 11 16 -8 h
+0 g 3690 3240 N -16 8 29 11 17 -9 h
+0 g 3661 3229 N -17 9 30 10 16 -8 h
+0 g 3631 3219 N -16 8 29 11 17 -9 h
+0 g 3602 3208 N -17 9 30 10 16 -8 h
+0 g 3572 3198 N -16 8 29 11 17 -9 h
+0 g 3543 3187 N -17 9 30 10 16 -8 h
+0 g 3513 3176 N -16 8 29 11 17 -8 h
+0 g 3484 3166 N -17 8 30 10 16 -8 h
+0 g 3454 3155 N -16 8 29 11 17 -8 h
+0 g 3425 3145 N -17 8 30 11 16 -9 h
+0 g 3395 3134 N -16 9 29 10 17 -8 h
+0 g 3366 3124 N -17 8 30 11 16 -9 h
+0 g 3336 3113 N -16 9 29 10 17 -8 h
+0 g 3307 3102 N -17 8 30 11 16 -8 h
+0 g 3277 3092 N -16 8 29 10 17 -8 h
+0 g 3248 3081 N -17 8 30 11 16 -8 h
+0 g 3218 3071 N -16 8 29 11 17 -9 h
+0 g 3189 3060 N -17 9 30 10 16 -8 h
+0 g 3159 3050 N -16 8 29 11 17 -9 h
+0 g 3130 3039 N -17 9 30 10 16 -8 h
+0 g 3100 3029 N -16 8 29 11 17 -9 h
+0 g 3071 3018 N -17 9 30 10 16 -8 h
+0 g 3041 3007 N -16 8 29 11 17 -8 h
+0 g 3012 2997 N -17 8 30 11 16 -9 h
+0 g 2983 2986 N -16 9 29 10 16 -8 h
+0 g 2953 2976 N -16 8 29 11 17 -9 h
+0 g 2924 2965 N -17 9 30 10 16 -8 h
+0 g 2894 2955 N -16 8 29 11 17 -9 h
+0 g 2865 2944 N -17 9 30 10 16 -8 h
+0 g 2835 2933 N -16 8 29 11 17 -8 h
+0 g 2806 2923 N -17 8 30 11 16 -9 h
+0 g 2776 2912 N -16 9 29 10 17 -8 h
+0 g 2747 2902 N -17 8 30 11 16 -9 h
+0 g 2717 2891 N -16 9 29 10 17 -8 h
+0 g 2688 2881 N -17 8 30 11 16 -9 h
+0 g 2658 2870 N -16 9 29 10 17 -8 h
+0 g 2629 2859 N -17 8 30 11 16 -8 h
+0 g 2599 2849 N -16 8 29 11 17 -9 h
+0 g 2570 2838 N -17 9 30 10 16 -8 h
+0 g 2540 2828 N -16 8 29 11 17 -9 h
+0 g 2511 2817 N -17 9 30 10 16 -8 h
+0 g 2481 2807 N -16 8 29 11 17 -9 h
+0 g 2452 2796 N -17 9 30 10 16 -8 h
+0 g 2422 2785 N -16 8 29 11 17 -8 h
+0 g 2393 2775 N -17 8 30 11 16 -9 h
+0 g 2363 2764 N -16 9 29 10 17 -8 h
+0 g 2334 2754 N -17 8 30 11 16 -9 h
+0 g 2304 2743 N -16 9 29 10 17 -8 h
+0 g 2275 2733 N -17 8 30 11 16 -9 h
+0 g 2245 2722 N -16 9 29 10 17 -8 h
+0 g 2216 2711 N -17 8 30 11 16 -8 h
+0 g 2186 2701 N -16 8 29 11 17 -9 h
+0 g 2157 2690 N -17 9 30 10 16 -8 h
+0 g 2127 2680 N -16 8 29 11 17 -9 h
+0 g 2098 2669 N -17 9 30 10 16 -8 h
+0 g 2068 2659 N -16 8 29 11 17 -9 h
+0 g 2039 2648 N -17 9 30 10 16 -8 h
+0 g 2009 2637 N -16 8 29 11 17 -8 h
+0 g 1980 2627 N -17 8 30 11 16 -9 h
+0 g 1950 2616 N -16 9 29 10 17 -8 h
+0 g 1921 2606 N -17 8 30 11 16 -9 h
+0 g 1891 2595 N -16 9 29 10 17 -8 h
+0 g 1862 2585 N -17 8 30 11 16 -9 h
+0 g 1832 2574 N -16 9 29 10 17 -8 h
+0 g 1803 2563 N -17 8 30 11 16 -8 h
+0 g 1773 2553 N -16 8 29 11 17 -9 h
+0 g 1744 2542 N -17 9 30 10 16 -8 h
+0 g 1714 2532 N -16 8 29 11 17 -9 h
+0 g 1685 2521 N -17 9 30 10 16 -8 h
+0 g 1655 2511 N -16 8 29 11 17 -9 h
+0 g 1626 2500 N -17 9 30 10 16 -8 h
+0 g 1596 2489 N -16 8 29 11 17 -8 h
+0 g 1567 2479 N -17 8 30 10 16 -8 h
+0 g 1537 2468 N -16 8 29 11 17 -8 h
+0 g 1508 2458 N -17 8 30 11 16 -9 h
+0 g 1478 2447 N -16 9 29 10 17 -8 h
+0 g 1449 2437 N -17 8 30 11 16 -9 h
+0 g 1419 2426 N -16 9 29 10 17 -8 h
+0 g 1390 2415 N -17 8 30 11 16 -8 h
+0 g 1360 2405 N -16 8 29 10 17 -8 h
+0 g 1331 2394 N -17 8 30 11 16 -8 h
+0 g 1301 2384 N -16 8 29 11 17 -9 h
+0 g 1272 2373 N -17 9 30 10 16 -8 h
+0 g 1242 2363 N -16 8 29 11 17 -9 h
+0 g 1213 2352 N -17 9 30 10 16 -8 h
+0 g 1183 2342 N -16 8 29 11 17 -9 h
+0 g 1154 2331 N -17 9 30 10 16 -8 h
+0 g 1124 2320 N -16 8 29 11 17 -8 h
+0 g 1095 2310 N -17 8 30 11 16 -9 h
+0 g 1065 2299 N -16 9 29 10 17 -8 h
+0 g 1036 2289 N -17 8 30 11 16 -9 h
+0 g 3943 3316 N -17 9 30 10 16 -8 h
+0 g 3913 3305 N -16 8 29 11 17 -8 h
+0 g 3884 3295 N -17 8 30 10 16 -8 h
+0 g 3854 3284 N -16 8 29 11 17 -8 h
+0 g 3825 3274 N -17 8 30 11 16 -9 h
+0 g 3795 3263 N -16 9 29 10 17 -8 h
+0 g 3766 3253 N -17 8 30 11 16 -9 h
+0 g 3736 3242 N -16 9 29 10 17 -8 h
+0 g 3707 3231 N -17 8 30 11 16 -8 h
+0 g 3677 3221 N -16 8 29 10 17 -8 h
+0 g 3648 3210 N -17 8 30 11 16 -8 h
+0 g 3618 3200 N -16 8 29 11 17 -9 h
+0 g 3589 3189 N -17 9 30 10 16 -8 h
+0 g 3559 3179 N -16 8 29 11 17 -9 h
+0 g 3530 3168 N -17 9 30 10 16 -8 h
+0 g 3500 3158 N -16 8 29 11 17 -9 h
+0 g 3471 3147 N -17 9 30 10 16 -8 h
+0 g 3441 3136 N -16 8 29 11 17 -8 h
+0 g 3412 3126 N -17 8 30 11 16 -9 h
+0 g 3382 3115 N -16 9 29 10 17 -8 h
+0 g 3353 3105 N -17 8 30 11 16 -9 h
+0 g 3323 3094 N -16 9 29 10 17 -8 h
+0 g 3294 3084 N -17 8 30 11 16 -9 h
+0 g 3264 3073 N -16 9 29 10 17 -8 h
+0 g 3235 3062 N -17 8 30 11 16 -8 h
+0 g 3205 3052 N -16 8 29 11 17 -9 h
+0 g 3176 3041 N -17 9 30 10 16 -8 h
+0 g 3146 3031 N -16 8 29 11 17 -9 h
+0 g 3117 3020 N -17 9 30 10 16 -8 h
+0 g 3087 3010 N -16 8 29 11 17 -9 h
+0 g 3058 2999 N -17 9 30 10 16 -8 h
+0 g 3028 2988 N -16 8 29 11 17 -8 h
+0 g 2999 2978 N -17 8 30 11 16 -9 h
+0 g 2970 2967 N -16 9 29 10 16 -8 h
+0 g 2940 2957 N -16 8 29 11 17 -9 h
+0 g 2911 2946 N -17 9 30 10 16 -8 h
+0 g 2881 2936 N -16 8 29 11 17 -9 h
+0 g 2852 2925 N -17 9 30 10 16 -8 h
+0 g 2822 2914 N -16 8 29 11 17 -8 h
+0 g 2793 2904 N -17 8 30 11 16 -9 h
+0 g 2763 2893 N -16 9 29 10 17 -8 h
+0 g 2734 2883 N -17 8 30 11 16 -9 h
+0 g 2704 2872 N -16 9 29 10 17 -8 h
+0 g 2675 2862 N -17 8 30 11 16 -9 h
+0 g 2645 2851 N -16 9 29 10 17 -8 h
+0 g 2616 2840 N -17 8 30 11 16 -8 h
+0 g 2586 2830 N -16 8 29 11 17 -9 h
+0 g 2557 2819 N -17 9 30 10 16 -8 h
+0 g 2527 2809 N -16 8 29 11 17 -9 h
+0 g 2498 2798 N -17 9 30 10 16 -8 h
+0 g 2468 2788 N -16 8 29 11 17 -9 h
+0 g 2439 2777 N -17 9 30 10 16 -8 h
+0 g 2409 2766 N -16 8 29 11 17 -8 h
+0 g 2380 2756 N -17 8 30 11 16 -9 h
+0 g 2350 2745 N -16 9 29 10 17 -8 h
+0 g 2321 2735 N -17 8 30 11 16 -9 h
+0 g 2291 2724 N -16 9 29 10 17 -8 h
+0 g 2262 2714 N -17 8 30 11 16 -9 h
+0 g 2232 2703 N -16 9 29 10 17 -8 h
+0 g 2203 2692 N -17 8 30 11 16 -8 h
+0 g 2173 2682 N -16 8 29 11 17 -9 h
+0 g 2144 2671 N -17 9 30 10 16 -8 h
+0 g 2114 2661 N -16 8 29 11 17 -9 h
+0 g 2085 2650 N -17 9 30 10 16 -8 h
+0 g 2055 2640 N -16 8 29 11 17 -9 h
+0 g 2026 2629 N -17 9 30 10 16 -8 h
+0 g 1996 2618 N -16 8 29 11 17 -8 h
+0 g 1967 2608 N -17 8 30 10 16 -8 h
+0 g 1937 2597 N -16 8 29 11 17 -8 h
+0 g 1908 2587 N -17 8 30 11 16 -9 h
+0 g 1878 2576 N -16 9 29 10 17 -8 h
+0 g 1849 2566 N -17 8 30 11 16 -9 h
+0 g 1819 2555 N -16 9 29 10 17 -8 h
+0 g 1790 2544 N -17 8 30 11 16 -8 h
+0 g 1760 2534 N -16 8 29 10 17 -8 h
+0 g 1731 2523 N -17 8 30 11 16 -8 h
+0 g 1701 2513 N -16 8 29 11 17 -9 h
+0 g 1672 2502 N -17 9 30 10 16 -8 h
+0 g 1642 2492 N -16 8 29 11 17 -9 h
+0 g 1613 2481 N -17 9 30 10 16 -8 h
+0 g 1583 2471 N -16 8 29 11 17 -9 h
+0 g 1554 2460 N -17 9 30 10 16 -8 h
+0 g 1524 2449 N -16 8 29 11 17 -8 h
+0 g 1495 2439 N -17 8 30 11 16 -9 h
+0 g 1465 2428 N -16 9 29 10 17 -8 h
+0 g 1436 2418 N -17 8 30 11 16 -9 h
+0 g 1406 2407 N -16 9 29 10 17 -8 h
+0 g 1377 2397 N -17 8 30 11 16 -9 h
+0 g 1347 2386 N -16 9 29 10 17 -8 h
+0 g 1318 2375 N -17 8 30 11 16 -8 h
+0 g 1288 2365 N -16 8 29 11 17 -9 h
+0 g 1259 2354 N -17 9 30 10 16 -8 h
+0 g 1229 2344 N -16 8 29 11 17 -9 h
+0 g 1200 2333 N -17 9 30 10 16 -8 h
+0 g 1170 2323 N -16 8 29 11 17 -9 h
+0 g 1141 2312 N -17 9 30 10 16 -8 h
+0 g 1111 2301 N -16 8 29 11 17 -8 h
+0 g 1082 2291 N -17 8 30 11 16 -9 h
+0 g 1052 2280 N -16 9 29 10 17 -8 h
+0 g 3959 3308 N -16 8 29 11 17 -9 h
+0 g 3930 3297 N -17 9 30 10 16 -8 h
+0 g 3900 3287 N -16 8 29 11 17 -9 h
+0 g 3871 3276 N -17 9 30 10 16 -8 h
+0 g 3841 3265 N -16 8 29 11 17 -8 h
+0 g 3812 3255 N -17 8 30 11 16 -9 h
+0 g 3782 3244 N -16 9 29 10 17 -8 h
+0 g 3753 3234 N -17 8 30 11 16 -9 h
+0 g 3723 3223 N -16 9 29 10 17 -8 h
+0 g 3694 3213 N -17 8 30 11 16 -9 h
+0 g 3664 3202 N -16 9 29 10 17 -8 h
+0 g 3635 3191 N -17 8 30 11 16 -8 h
+0 g 3605 3181 N -16 8 29 11 17 -9 h
+0 g 3576 3170 N -17 9 30 10 16 -8 h
+0 g 3546 3160 N -16 8 29 11 17 -9 h
+0 g 3517 3149 N -17 9 30 10 16 -8 h
+0 g 3487 3139 N -16 8 29 11 17 -9 h
+0 g 3458 3128 N -17 9 30 10 16 -8 h
+0 g 3428 3117 N -16 8 29 11 17 -8 h
+0 g 3399 3107 N -17 8 30 11 16 -9 h
+0 g 3369 3096 N -16 9 29 10 17 -8 h
+0 g 3340 3086 N -17 8 30 11 16 -9 h
+0 g 3310 3075 N -16 9 29 10 17 -8 h
+0 g 3281 3065 N -17 8 30 11 16 -9 h
+0 g 3251 3054 N -16 9 29 10 17 -8 h
+0 g 3222 3043 N -17 8 30 11 16 -8 h
+0 g 3192 3033 N -16 8 29 11 17 -9 h
+0 g 3163 3022 N -17 9 30 10 16 -8 h
+0 g 3133 3012 N -16 8 29 11 17 -9 h
+0 g 3104 3001 N -17 9 30 10 16 -8 h
+0 g 3074 2991 N -16 8 29 11 17 -9 h
+0 g 3045 2980 N -17 9 30 10 16 -8 h
+0 g 3015 2969 N -16 8 29 11 17 -8 h
+0 g 2986 2959 N -17 8 29 11 17 -9 h
+0 g 2957 2948 N -17 9 30 10 16 -8 h
+0 g 2927 2938 N -16 8 29 11 17 -9 h
+0 g 2898 2927 N -17 9 30 10 16 -8 h
+0 g 2868 2917 N -16 8 29 11 17 -9 h
+0 g 2839 2906 N -17 9 30 10 16 -8 h
+0 g 2809 2895 N -16 8 29 11 17 -8 h
+0 g 2780 2885 N -17 8 30 11 16 -9 h
+0 g 2750 2874 N -16 9 29 10 17 -8 h
+0 g 2721 2864 N -17 8 30 11 16 -9 h
+0 g 2691 2853 N -16 9 29 10 17 -8 h
+0 g 2662 2843 N -17 8 30 11 16 -9 h
+0 g 2632 2832 N -16 9 29 10 17 -8 h
+0 g 2603 2821 N -17 8 30 11 16 -8 h
+0 g 2573 2811 N -16 8 29 11 17 -9 h
+0 g 2544 2800 N -17 9 30 10 16 -8 h
+0 g 2514 2790 N -16 8 29 11 17 -9 h
+0 g 2485 2779 N -17 9 30 10 16 -8 h
+0 g 2455 2769 N -16 8 29 11 17 -9 h
+0 g 2426 2758 N -17 9 30 10 16 -8 h
+0 g 2396 2747 N -16 8 29 11 17 -8 h
+0 g 2367 2737 N -17 8 30 10 16 -8 h
+0 g 2337 2726 N -16 8 29 11 17 -8 h
+0 g 2308 2716 N -17 8 30 11 16 -9 h
+0 g 2278 2705 N -16 9 29 10 17 -8 h
+0 g 2249 2695 N -17 8 30 11 16 -9 h
+0 g 2219 2684 N -16 9 29 10 17 -8 h
+0 g 2190 2673 N -17 8 30 11 16 -8 h
+0 g 2160 2663 N -16 8 29 10 17 -8 h
+0 g 2131 2652 N -17 8 30 11 16 -8 h
+0 g 2101 2642 N -16 8 29 11 17 -9 h
+0 g 2072 2631 N -17 9 30 10 16 -8 h
+0 g 2042 2621 N -16 8 29 11 17 -9 h
+0 g 2013 2610 N -17 9 30 10 16 -8 h
+0 g 1983 2600 N -16 8 29 11 17 -9 h
+0 g 1954 2589 N -17 9 30 10 16 -8 h
+0 g 1924 2578 N -16 8 29 11 17 -8 h
+0 g 1895 2568 N -17 8 30 11 16 -9 h
+0 g 1865 2557 N -16 9 29 10 17 -8 h
+0 g 1836 2547 N -17 8 30 11 16 -9 h
+0 g 1806 2536 N -16 9 29 10 17 -8 h
+0 g 1777 2526 N -17 8 30 11 16 -9 h
+0 g 1747 2515 N -16 9 29 10 17 -8 h
+0 g 1718 2504 N -17 8 30 11 16 -8 h
+0 g 1688 2494 N -16 8 29 11 17 -9 h
+0 g 1659 2483 N -17 9 30 10 16 -8 h
+0 g 1629 2473 N -16 8 29 11 17 -9 h
+0 g 1600 2462 N -17 9 30 10 16 -8 h
+0 g 1570 2452 N -16 8 29 11 17 -9 h
+0 g 1541 2441 N -17 9 30 10 16 -8 h
+0 g 1511 2430 N -16 8 29 11 17 -8 h
+0 g 1482 2420 N -17 8 30 11 16 -9 h
+0 g 1452 2409 N -16 9 29 10 17 -8 h
+0 g 1423 2399 N -17 8 30 11 16 -9 h
+0 g 1393 2388 N -16 9 29 10 17 -8 h
+0 g 1364 2378 N -17 8 30 11 16 -9 h
+0 g 1334 2367 N -16 9 29 10 17 -8 h
+0 g 1305 2356 N -17 8 30 11 16 -8 h
+0 g 1275 2346 N -16 8 29 11 17 -9 h
+0 g 1246 2335 N -17 9 30 10 16 -8 h
+0 g 1216 2325 N -16 8 29 11 17 -9 h
+0 g 1187 2314 N -17 9 30 10 16 -8 h
+0 g 1157 2304 N -16 8 29 11 17 -9 h
+0 g 1128 2293 N -17 9 30 10 16 -8 h
+0 g 1098 2282 N -16 8 29 11 17 -8 h
+0 g 1069 2272 N -17 8 30 11 16 -9 h
+0 g 3976 3299 N -17 9 30 10 16 -8 h
+0 g 3946 3289 N -16 8 29 11 17 -9 h
+0 g 3917 3278 N -17 9 30 10 16 -8 h
+0 g 3887 3268 N -16 8 29 11 17 -9 h
+0 g 3858 3257 N -17 9 30 10 16 -8 h
+0 g 3828 3246 N -16 8 29 11 17 -8 h
+0 g 3799 3236 N -17 8 30 11 16 -9 h
+0 g 3769 3225 N -16 9 29 10 17 -8 h
+0 g 3740 3215 N -17 8 30 11 16 -9 h
+0 g 3710 3204 N -16 9 29 10 17 -8 h
+0 g 3681 3194 N -17 8 30 11 16 -9 h
+0 g 3651 3183 N -16 9 29 10 17 -8 h
+0 g 3622 3172 N -17 8 30 11 16 -8 h
+0 g 3592 3162 N -16 8 29 11 17 -9 h
+0 g 3563 3151 N -17 9 30 10 16 -8 h
+0 g 3533 3141 N -16 8 29 11 17 -9 h
+0 g 3504 3130 N -17 9 30 10 16 -8 h
+0 g 3474 3120 N -16 8 29 11 17 -9 h
+0 g 3445 3109 N -17 9 30 10 16 -8 h
+0 g 3415 3098 N -16 8 29 11 17 -8 h
+0 g 3386 3088 N -17 8 30 11 16 -9 h
+0 g 3356 3077 N -16 9 29 10 17 -8 h
+0 g 3327 3067 N -17 8 30 11 16 -9 h
+0 g 3297 3056 N -16 9 29 10 17 -8 h
+0 g 3268 3046 N -17 8 30 11 16 -9 h
+0 g 3238 3035 N -16 9 29 10 17 -8 h
+0 g 3209 3024 N -17 8 30 11 16 -8 h
+0 g 3179 3014 N -16 8 29 11 17 -9 h
+0 g 3150 3003 N -17 9 30 10 16 -8 h
+0 g 3120 2993 N -16 8 29 11 17 -9 h
+0 g 3091 2982 N -17 9 30 10 16 -8 h
+0 g 3061 2972 N -16 8 29 11 17 -9 h
+0 g 3032 2961 N -17 9 30 10 16 -8 h
+0 g 3003 2950 N -16 8 29 11 16 -8 h
+0 g 2973 2940 N -16 8 29 11 17 -9 h
+0 g 2944 2929 N -17 9 30 10 16 -8 h
+0 g 2914 2919 N -16 8 29 11 17 -9 h
+0 g 2885 2908 N -17 9 30 10 16 -8 h
+0 g 2855 2898 N -16 8 29 11 17 -9 h
+0 g 2826 2887 N -17 9 30 10 16 -8 h
+0 g 2796 2876 N -16 8 29 11 17 -8 h
+0 g 2767 2866 N -17 8 30 10 16 -8 h
+0 g 2737 2855 N -16 8 29 11 17 -8 h
+0 g 2708 2845 N -17 8 30 11 16 -9 h
+0 g 2678 2834 N -16 9 29 10 17 -8 h
+0 g 2649 2824 N -17 8 30 11 16 -9 h
+0 g 2619 2813 N -16 9 29 10 17 -8 h
+0 g 2590 2802 N -17 8 30 11 16 -8 h
+0 g 2560 2792 N -16 8 29 10 17 -8 h
+0 g 2531 2781 N -17 8 30 11 16 -8 h
+0 g 2501 2771 N -16 8 29 11 17 -9 h
+0 g 2472 2760 N -17 9 30 10 16 -8 h
+0 g 2442 2750 N -16 8 29 11 17 -9 h
+0 g 2413 2739 N -17 9 30 10 16 -8 h
+0 g 2383 2729 N -16 8 29 11 17 -9 h
+0 g 2354 2718 N -17 9 30 10 16 -8 h
+0 g 2324 2707 N -16 8 29 11 17 -8 h
+0 g 2295 2697 N -17 8 30 11 16 -9 h
+0 g 2265 2686 N -16 9 29 10 17 -8 h
+0 g 2236 2676 N -17 8 30 11 16 -9 h
+0 g 2206 2665 N -16 9 29 10 17 -8 h
+0 g 2177 2655 N -17 8 30 11 16 -9 h
+0 g 2147 2644 N -16 9 29 10 17 -8 h
+0 g 2118 2633 N -17 8 30 11 16 -8 h
+0 g 2088 2623 N -16 8 29 11 17 -9 h
+0 g 2059 2612 N -17 9 30 10 16 -8 h
+0 g 2029 2602 N -16 8 29 11 17 -9 h
+0 g 2000 2591 N -17 9 30 10 16 -8 h
+0 g 1970 2581 N -16 8 29 11 17 -9 h
+0 g 1941 2570 N -17 9 30 10 16 -8 h
+0 g 1911 2559 N -16 8 29 11 17 -8 h
+0 g 1882 2549 N -17 8 30 11 16 -9 h
+0 g 1852 2538 N -16 9 29 10 17 -8 h
+0 g 1823 2528 N -17 8 30 11 16 -9 h
+0 g 1793 2517 N -16 9 29 10 17 -8 h
+0 g 1764 2507 N -17 8 30 11 16 -9 h
+0 g 1734 2496 N -16 9 29 10 17 -8 h
+0 g 1705 2485 N -17 8 30 11 16 -8 h
+0 g 1675 2475 N -16 8 29 11 17 -9 h
+0 g 1646 2464 N -17 9 30 10 16 -8 h
+0 g 1616 2454 N -16 8 29 11 17 -9 h
+0 g 1587 2443 N -17 9 30 10 16 -8 h
+0 g 1557 2433 N -16 8 29 11 17 -9 h
+0 g 1528 2422 N -17 9 30 10 16 -8 h
+0 g 1498 2411 N -16 8 29 11 17 -8 h
+0 g 1469 2401 N -17 8 30 11 16 -9 h
+0 g 1439 2390 N -16 9 29 10 17 -8 h
+0 g 1410 2380 N -17 8 30 11 16 -9 h
+0 g 1380 2369 N -16 9 29 10 17 -8 h
+0 g 1351 2359 N -17 8 30 11 16 -9 h
+0 g 1321 2348 N -16 9 29 10 17 -8 h
+0 g 1292 2337 N -17 8 30 11 16 -8 h
+0 g 1262 2327 N -16 8 29 11 17 -9 h
+0 g 1233 2316 N -17 9 30 10 16 -8 h
+0 g 1203 2306 N -16 8 29 11 17 -9 h
+0 g 1174 2295 N -17 9 30 10 16 -8 h
+0 g 1144 2285 N -16 8 29 11 17 -9 h
+0 g 1115 2274 N -17 9 30 10 16 -8 h
+0 g 1085 2263 N -16 8 29 11 17 -8 h
+0 g 3992 3291 N -16 8 29 11 17 -9 h
+0 g 3963 3280 N -17 9 30 10 16 -8 h
+0 g 3933 3270 N -16 8 29 11 17 -9 h
+0 g 3904 3259 N -17 9 30 10 16 -8 h
+0 g 3874 3249 N -16 8 29 11 17 -9 h
+0 g 3845 3238 N -17 9 30 10 16 -8 h
+0 g 3815 3227 N -16 8 29 11 17 -8 h
+0 g 3786 3217 N -17 8 30 11 16 -9 h
+0 g 3756 3206 N -16 9 29 10 17 -8 h
+0 g 3727 3196 N -17 8 30 11 16 -9 h
+0 g 3697 3185 N -16 9 29 10 17 -8 h
+0 g 3668 3175 N -17 8 30 11 16 -9 h
+0 g 3638 3164 N -16 9 29 10 17 -8 h
+0 g 3609 3153 N -17 8 30 11 16 -8 h
+0 g 3579 3143 N -16 8 29 11 17 -9 h
+0 g 3550 3132 N -17 9 30 10 16 -8 h
+0 g 3520 3122 N -16 8 29 11 17 -9 h
+0 g 3491 3111 N -17 9 30 10 16 -8 h
+0 g 3461 3101 N -16 8 29 11 17 -9 h
+0 g 3432 3090 N -17 9 30 10 16 -8 h
+0 g 3402 3079 N -16 8 29 11 17 -8 h
+0 g 3373 3069 N -17 8 30 11 16 -9 h
+0 g 3343 3058 N -16 9 29 10 17 -8 h
+0 g 3314 3048 N -17 8 30 11 16 -9 h
+0 g 3284 3037 N -16 9 29 10 17 -8 h
+0 g 3255 3027 N -17 8 30 11 16 -9 h
+0 g 3225 3016 N -16 9 29 10 17 -8 h
+0 g 3196 3005 N -17 8 30 11 16 -8 h
+0 g 3166 2995 N -16 8 29 10 17 -8 h
+0 g 3137 2984 N -17 8 30 11 16 -8 h
+0 g 3107 2974 N -16 8 29 11 17 -9 h
+0 g 3078 2963 N -17 9 30 10 16 -8 h
+0 g 3048 2953 N -16 8 29 11 17 -9 h
+0 g 3019 2942 N -17 9 30 10 16 -8 h
+0 g 2990 2931 N -16 8 29 11 16 -8 h
+0 g 2960 2921 N -16 8 29 10 17 -8 h
+0 g 2931 2910 N -17 8 30 11 16 -8 h
+0 g 2901 2900 N -16 8 29 11 17 -9 h
+0 g 2872 2889 N -17 9 30 10 16 -8 h
+0 g 2842 2879 N -16 8 29 11 17 -9 h
+0 g 2813 2868 N -17 9 30 10 16 -8 h
+0 g 2783 2858 N -16 8 29 11 17 -9 h
+0 g 2754 2847 N -17 9 30 10 16 -8 h
+0 g 2724 2836 N -16 8 29 11 17 -8 h
+0 g 2695 2826 N -17 8 30 11 16 -9 h
+0 g 2665 2815 N -16 9 29 10 17 -8 h
+0 g 2636 2805 N -17 8 30 11 16 -9 h
+0 g 2606 2794 N -16 9 29 10 17 -8 h
+0 g 2577 2784 N -17 8 30 11 16 -9 h
+0 g 2547 2773 N -16 9 29 10 17 -8 h
+0 g 2518 2762 N -17 8 30 11 16 -8 h
+0 g 2488 2752 N -16 8 29 11 17 -9 h
+0 g 2459 2741 N -17 9 30 10 16 -8 h
+0 g 2429 2731 N -16 8 29 11 17 -9 h
+0 g 2400 2720 N -17 9 30 10 16 -8 h
+0 g 2370 2710 N -16 8 29 11 17 -9 h
+0 g 2341 2699 N -17 9 30 10 16 -8 h
+0 g 2311 2688 N -16 8 29 11 17 -8 h
+0 g 2282 2678 N -17 8 30 11 16 -9 h
+0 g 2252 2667 N -16 9 29 10 17 -8 h
+0 g 2223 2657 N -17 8 30 11 16 -9 h
+0 g 2193 2646 N -16 9 29 10 17 -8 h
+0 g 2164 2636 N -17 8 30 11 16 -9 h
+0 g 2134 2625 N -16 9 29 10 17 -8 h
+0 g 2105 2614 N -17 8 30 11 16 -8 h
+0 g 2075 2604 N -16 8 29 11 17 -9 h
+0 g 2046 2593 N -17 9 30 10 16 -8 h
+0 g 2016 2583 N -16 8 29 11 17 -9 h
+0 g 1987 2572 N -17 9 30 10 16 -8 h
+0 g 1957 2562 N -16 8 29 11 17 -9 h
+0 g 1928 2551 N -17 9 30 10 16 -8 h
+0 g 1898 2540 N -16 8 29 11 17 -8 h
+0 g 1869 2530 N -17 8 30 11 16 -9 h
+0 g 1839 2519 N -16 9 29 10 17 -8 h
+0 g 1810 2509 N -17 8 30 11 16 -9 h
+0 g 1780 2498 N -16 9 29 10 17 -8 h
+0 g 1751 2488 N -17 8 30 11 16 -9 h
+0 g 1721 2477 N -16 9 29 10 17 -8 h
+0 g 1692 2466 N -17 8 30 11 16 -8 h
+0 g 1662 2456 N -16 8 29 11 17 -9 h
+0 g 1633 2445 N -17 9 30 10 16 -8 h
+0 g 1603 2435 N -16 8 29 11 17 -9 h
+0 g 1574 2424 N -17 9 30 10 16 -8 h
+0 g 1544 2414 N -16 8 29 11 17 -9 h
+0 g 1515 2403 N -17 9 30 10 16 -8 h
+0 g 1485 2392 N -16 8 29 11 17 -8 h
+0 g 1456 2382 N -17 8 30 10 16 -8 h
+0 g 1426 2371 N -16 8 29 11 17 -8 h
+0 g 1397 2361 N -17 8 30 11 16 -9 h
+0 g 1367 2350 N -16 9 29 10 17 -8 h
+0 g 1338 2340 N -17 8 30 11 16 -9 h
+0 g 1308 2329 N -16 9 29 10 17 -8 h
+0 g 1279 2318 N -17 8 30 11 16 -8 h
+0 g 1249 2308 N -16 8 29 10 17 -8 h
+0 g 1220 2297 N -17 8 30 11 16 -8 h
+0 g 1190 2287 N -16 8 29 11 17 -9 h
+0 g 1161 2276 N -17 9 30 10 16 -8 h
+0 g 1131 2266 N -16 8 29 11 17 -9 h
+0 g 1102 2255 N -17 9 30 10 16 -8 h
+0 g 4009 3282 N -17 8 30 11 16 -8 h
+0 g 3979 3272 N -16 8 29 11 17 -9 h
+0 g 3950 3261 N -17 9 30 10 16 -8 h
+0 g 3920 3251 N -16 8 29 11 17 -9 h
+0 g 3891 3240 N -17 9 30 10 16 -8 h
+0 g 3861 3230 N -16 8 29 11 17 -9 h
+0 g 3832 3219 N -17 9 30 10 16 -8 h
+0 g 3802 3208 N -16 8 29 11 17 -8 h
+0 g 3773 3198 N -17 8 30 11 16 -9 h
+0 g 3743 3187 N -16 9 29 10 17 -8 h
+0 g 3714 3177 N -17 8 30 11 16 -9 h
+0 g 3684 3166 N -16 9 29 10 17 -8 h
+0 g 3655 3156 N -17 8 30 11 16 -9 h
+0 g 3625 3145 N -16 9 29 10 17 -8 h
+0 g 3596 3134 N -17 8 30 11 16 -8 h
+0 g 3566 3124 N -16 8 29 10 17 -8 h
+0 g 3537 3113 N -17 8 30 11 16 -8 h
+0 g 3507 3103 N -16 8 29 11 17 -9 h
+0 g 3478 3092 N -17 9 30 10 16 -8 h
+0 g 3448 3082 N -16 8 29 11 17 -9 h
+0 g 3419 3071 N -17 9 30 10 16 -8 h
+0 g 3389 3060 N -16 8 29 11 17 -8 h
+0 g 3360 3050 N -17 8 30 10 16 -8 h
+0 g 3330 3039 N -16 8 29 11 17 -8 h
+0 g 3301 3029 N -17 8 30 11 16 -9 h
+0 g 3271 3018 N -16 9 29 10 17 -8 h
+0 g 3242 3008 N -17 8 30 11 16 -9 h
+0 g 3212 2997 N -16 9 29 10 17 -8 h
+0 g 3183 2987 N -17 8 30 11 16 -9 h
+0 g 3153 2976 N -16 9 29 10 17 -8 h
+0 g 3124 2965 N -17 8 30 11 16 -8 h
+0 g 3094 2955 N -16 8 29 11 17 -9 h
+0 g 3065 2944 N -17 9 30 10 16 -8 h
+0 g 3035 2934 N -16 8 29 11 17 -9 h
+0 g 3006 2923 N -17 9 29 10 17 -8 h
+0 g 2977 2913 N -17 8 30 11 16 -9 h
+0 g 2947 2902 N -16 9 29 10 17 -8 h
+0 g 2918 2891 N -17 8 30 11 16 -8 h
+0 g 2888 2881 N -16 8 29 11 17 -9 h
+0 g 2859 2870 N -17 9 30 10 16 -8 h
+0 g 2829 2860 N -16 8 29 11 17 -9 h
+0 g 2800 2849 N -17 9 30 10 16 -8 h
+0 g 2770 2839 N -16 8 29 11 17 -9 h
+0 g 2741 2828 N -17 9 30 10 16 -8 h
+0 g 2711 2817 N -16 8 29 11 17 -8 h
+0 g 2682 2807 N -17 8 30 11 16 -9 h
+0 g 2652 2796 N -16 9 29 10 17 -8 h
+0 g 2623 2786 N -17 8 30 11 16 -9 h
+0 g 2593 2775 N -16 9 29 10 17 -8 h
+0 g 2564 2765 N -17 8 30 11 16 -9 h
+0 g 2534 2754 N -16 9 29 10 17 -8 h
+0 g 2505 2743 N -17 8 30 11 16 -8 h
+0 g 2475 2733 N -16 8 29 11 17 -9 h
+0 g 2446 2722 N -17 9 30 10 16 -8 h
+0 g 2416 2712 N -16 8 29 11 17 -9 h
+0 g 2387 2701 N -17 9 30 10 16 -8 h
+0 g 2357 2691 N -16 8 29 11 17 -9 h
+0 g 2328 2680 N -17 9 30 10 16 -8 h
+0 g 2298 2669 N -16 8 29 11 17 -8 h
+0 g 2269 2659 N -17 8 30 11 16 -9 h
+0 g 2239 2648 N -16 9 29 10 17 -8 h
+0 g 2210 2638 N -17 8 30 11 16 -9 h
+0 g 2180 2627 N -16 9 29 10 17 -8 h
+0 g 2151 2617 N -17 8 30 11 16 -9 h
+0 g 2121 2606 N -16 9 29 10 17 -8 h
+0 g 2092 2595 N -17 8 30 11 16 -8 h
+0 g 2062 2585 N -16 8 29 11 17 -9 h
+0 g 2033 2574 N -17 9 30 10 16 -8 h
+0 g 2003 2564 N -16 8 29 11 17 -9 h
+0 g 1974 2553 N -17 9 30 10 16 -8 h
+0 g 1944 2543 N -16 8 29 11 17 -9 h
+0 g 1915 2532 N -17 9 30 10 16 -8 h
+0 g 1885 2521 N -16 8 29 11 17 -8 h
+0 g 1856 2511 N -17 8 30 10 16 -8 h
+0 g 1826 2500 N -16 8 29 11 17 -8 h
+0 g 1797 2490 N -17 8 30 11 16 -9 h
+0 g 1767 2479 N -16 9 29 10 17 -8 h
+0 g 1738 2469 N -17 8 30 11 16 -9 h
+0 g 1708 2458 N -16 9 29 10 17 -8 h
+0 g 1679 2447 N -17 8 30 11 16 -8 h
+0 g 1649 2437 N -16 8 29 10 17 -8 h
+0 g 1620 2426 N -17 8 30 11 16 -8 h
+0 g 1590 2416 N -16 8 29 11 17 -9 h
+0 g 1561 2405 N -17 9 30 10 16 -8 h
+0 g 1531 2395 N -16 8 29 11 17 -9 h
+0 g 1502 2384 N -17 9 30 10 16 -8 h
+0 g 1472 2374 N -16 8 29 11 17 -9 h
+0 g 1443 2363 N -17 9 30 10 16 -8 h
+0 g 1413 2352 N -16 8 29 11 17 -8 h
+0 g 1384 2342 N -17 8 30 11 16 -9 h
+0 g 1354 2331 N -16 9 29 10 17 -8 h
+0 g 1325 2321 N -17 8 30 11 16 -9 h
+0 g 1295 2310 N -16 9 29 10 17 -8 h
+0 g 1266 2300 N -17 8 30 11 16 -9 h
+0 g 1236 2289 N -16 9 29 10 17 -8 h
+0 g 1207 2278 N -17 8 30 11 16 -8 h
+0 g 1177 2268 N -16 8 29 11 17 -9 h
+0 g 1148 2257 N -17 9 30 10 16 -8 h
+0 g 1118 2247 N -16 8 29 11 17 -9 h
+0 g 4025 3274 N -16 9 29 10 17 -8 h
+0 g 3996 3263 N -17 8 30 11 16 -8 h
+0 g 3966 3253 N -16 8 29 10 17 -8 h
+0 g 3937 3242 N -17 8 30 11 16 -8 h
+0 g 3907 3232 N -16 8 29 11 17 -9 h
+0 g 3878 3221 N -17 9 30 10 16 -8 h
+0 g 3848 3211 N -16 8 29 11 17 -9 h
+0 g 3819 3200 N -17 9 30 10 16 -8 h
+0 g 3789 3189 N -16 8 29 11 17 -8 h
+0 g 3760 3179 N -17 8 30 10 16 -8 h
+0 g 3730 3168 N -16 8 29 11 17 -8 h
+0 g 3701 3158 N -17 8 30 11 16 -9 h
+0 g 3671 3147 N -16 9 29 10 17 -8 h
+0 g 3642 3137 N -17 8 30 11 16 -9 h
+0 g 3612 3126 N -16 9 29 10 17 -8 h
+0 g 3583 3116 N -17 8 30 11 16 -9 h
+0 g 3553 3105 N -16 9 29 10 17 -8 h
+0 g 3524 3094 N -17 8 30 11 16 -8 h
+0 g 3494 3084 N -16 8 29 11 17 -9 h
+0 g 3465 3073 N -17 9 30 10 16 -8 h
+0 g 3435 3063 N -16 8 29 11 17 -9 h
+0 g 3406 3052 N -17 9 30 10 16 -8 h
+0 g 3376 3042 N -16 8 29 11 17 -9 h
+0 g 3347 3031 N -17 9 30 10 16 -8 h
+0 g 3317 3020 N -16 8 29 11 17 -8 h
+0 g 3288 3010 N -17 8 30 11 16 -9 h
+0 g 3258 2999 N -16 9 29 10 17 -8 h
+0 g 3229 2989 N -17 8 30 11 16 -9 h
+0 g 3199 2978 N -16 9 29 10 17 -8 h
+0 g 3170 2968 N -17 8 30 11 16 -9 h
+0 g 3140 2957 N -16 9 29 10 17 -8 h
+0 g 3111 2946 N -17 8 30 11 16 -8 h
+0 g 3081 2936 N -16 8 29 11 17 -9 h
+0 g 3052 2925 N -17 9 30 10 16 -8 h
+0 g 3023 2915 N -16 8 29 11 16 -9 h
+0 g 2993 2904 N -16 9 29 10 17 -8 h
+0 g 2964 2894 N -17 8 30 11 16 -9 h
+0 g 2934 2883 N -16 9 29 10 17 -8 h
+0 g 2905 2872 N -17 8 30 11 16 -8 h
+0 g 2875 2862 N -16 8 29 11 17 -9 h
+0 g 2846 2851 N -17 9 30 10 16 -8 h
+0 g 2816 2841 N -16 8 29 11 17 -9 h
+0 g 2787 2830 N -17 9 30 10 16 -8 h
+0 g 2757 2820 N -16 8 29 11 17 -9 h
+0 g 2728 2809 N -17 9 30 10 16 -8 h
+0 g 2698 2798 N -16 8 29 11 17 -8 h
+0 g 2669 2788 N -17 8 30 11 16 -9 h
+0 g 2639 2777 N -16 9 29 10 17 -8 h
+0 g 2610 2767 N -17 8 30 11 16 -9 h
+0 g 2580 2756 N -16 9 29 10 17 -8 h
+0 g 2551 2746 N -17 8 30 11 16 -9 h
+0 g 2521 2735 N -16 9 29 10 17 -8 h
+0 g 2492 2724 N -17 8 30 11 16 -8 h
+0 g 2462 2714 N -16 8 29 11 17 -9 h
+0 g 2433 2703 N -17 9 30 10 16 -8 h
+0 g 2403 2693 N -16 8 29 11 17 -9 h
+0 g 2374 2682 N -17 9 30 10 16 -8 h
+0 g 2344 2672 N -16 8 29 11 17 -9 h
+0 g 2315 2661 N -17 9 30 10 16 -8 h
+0 g 2285 2650 N -16 8 29 11 17 -8 h
+0 g 2256 2640 N -17 8 30 10 16 -8 h
+0 g 2226 2629 N -16 8 29 11 17 -8 h
+0 g 2197 2619 N -17 8 30 11 16 -9 h
+0 g 2167 2608 N -16 9 29 10 17 -8 h
+0 g 2138 2598 N -17 8 30 11 16 -9 h
+0 g 2108 2587 N -16 9 29 10 17 -8 h
+0 g 2079 2576 N -17 8 30 11 16 -8 h
+0 g 2049 2566 N -16 8 29 10 17 -8 h
+0 g 2020 2555 N -17 8 30 11 16 -8 h
+0 g 1990 2545 N -16 8 29 11 17 -9 h
+0 g 1961 2534 N -17 9 30 10 16 -8 h
+0 g 1931 2524 N -16 8 29 11 17 -9 h
+0 g 1902 2513 N -17 9 30 10 16 -8 h
+0 g 1872 2503 N -16 8 29 11 17 -9 h
+0 g 1843 2492 N -17 9 30 10 16 -8 h
+0 g 1813 2481 N -16 8 29 11 17 -8 h
+0 g 1784 2471 N -17 8 30 11 16 -9 h
+0 g 1754 2460 N -16 9 29 10 17 -8 h
+0 g 1725 2450 N -17 8 30 11 16 -9 h
+0 g 1695 2439 N -16 9 29 10 17 -8 h
+0 g 1666 2429 N -17 8 30 11 16 -9 h
+0 g 1636 2418 N -16 9 29 10 17 -8 h
+0 g 1607 2407 N -17 8 30 11 16 -8 h
+0 g 1577 2397 N -16 8 29 11 17 -9 h
+0 g 1548 2386 N -17 9 30 10 16 -8 h
+0 g 1518 2376 N -16 8 29 11 17 -9 h
+0 g 1489 2365 N -17 9 30 10 16 -8 h
+0 g 1459 2355 N -16 8 29 11 17 -9 h
+0 g 1430 2344 N -17 9 30 10 16 -8 h
+0 g 1400 2333 N -16 8 29 11 17 -8 h
+0 g 1371 2323 N -17 8 30 11 16 -9 h
+0 g 1341 2312 N -16 9 29 10 17 -8 h
+0 g 1312 2302 N -17 8 30 11 16 -9 h
+0 g 1282 2291 N -16 9 29 10 17 -8 h
+0 g 1253 2281 N -17 8 30 11 16 -9 h
+0 g 1223 2270 N -16 9 29 10 17 -8 h
+0 g 1194 2259 N -17 8 30 11 16 -8 h
+0 g 1164 2249 N -16 8 29 11 17 -9 h
+0 g 1135 2238 N -17 9 30 10 16 -8 h
+0 g 4042 3266 N -17 8 30 11 16 -9 h
+0 g 4012 3255 N -16 9 29 10 17 -8 h
+0 g 3983 3245 N -17 8 30 11 16 -9 h
+0 g 3953 3234 N -16 9 29 10 17 -8 h
+0 g 3924 3223 N -17 8 30 11 16 -8 h
+0 g 3894 3213 N -16 8 29 11 17 -9 h
+0 g 3865 3202 N -17 9 30 10 16 -8 h
+0 g 3835 3192 N -16 8 29 11 17 -9 h
+0 g 3806 3181 N -17 9 30 10 16 -8 h
+0 g 3776 3171 N -16 8 29 11 17 -9 h
+0 g 3747 3160 N -17 9 30 10 16 -8 h
+0 g 3717 3149 N -16 8 29 11 17 -8 h
+0 g 3688 3139 N -17 8 30 11 16 -9 h
+0 g 3658 3128 N -16 9 29 10 17 -8 h
+0 g 3629 3118 N -17 8 30 11 16 -9 h
+0 g 3599 3107 N -16 9 29 10 17 -8 h
+0 g 3570 3097 N -17 8 30 11 16 -9 h
+0 g 3540 3086 N -16 9 29 10 17 -8 h
+0 g 3511 3075 N -17 8 30 11 16 -8 h
+0 g 3481 3065 N -16 8 29 11 17 -9 h
+0 g 3452 3054 N -17 9 30 10 16 -8 h
+0 g 3422 3044 N -16 8 29 11 17 -9 h
+0 g 3393 3033 N -17 9 30 10 16 -8 h
+0 g 3363 3023 N -16 8 29 11 17 -9 h
+0 g 3334 3012 N -17 9 30 10 16 -8 h
+0 g 3304 3001 N -16 8 29 11 17 -8 h
+0 g 3275 2991 N -17 8 30 11 16 -9 h
+0 g 3245 2980 N -16 9 29 10 17 -8 h
+0 g 3216 2970 N -17 8 30 11 16 -9 h
+0 g 3186 2959 N -16 9 29 10 17 -8 h
+0 g 3157 2949 N -17 8 30 11 16 -9 h
+0 g 3127 2938 N -16 9 29 10 17 -8 h
+0 g 3098 2927 N -17 8 30 11 16 -8 h
+0 g 3068 2917 N -16 8 29 11 17 -9 h
+0 g 3039 2906 N -17 9 29 10 17 -8 h
+0 g 3010 2896 N -17 8 30 11 16 -9 h
+0 g 2980 2885 N -16 9 29 10 17 -8 h
+0 g 2951 2875 N -17 8 30 11 16 -9 h
+0 g 2921 2864 N -16 9 29 10 17 -8 h
+0 g 2892 2853 N -17 8 30 11 16 -8 h
+0 g 2862 2843 N -16 8 29 11 17 -9 h
+0 g 2833 2832 N -17 9 30 10 16 -8 h
+0 g 2803 2822 N -16 8 29 11 17 -9 h
+0 g 2774 2811 N -17 9 30 10 16 -8 h
+0 g 2744 2801 N -16 8 29 11 17 -9 h
+0 g 2715 2790 N -17 9 30 10 16 -8 h
+0 g 2685 2779 N -16 8 29 11 17 -8 h
+0 g 2656 2769 N -17 8 30 10 16 -8 h
+0 g 2626 2758 N -16 8 29 11 17 -8 h
+0 g 2597 2748 N -17 8 30 11 16 -9 h
+0 g 2567 2737 N -16 9 29 10 17 -8 h
+0 g 2538 2727 N -17 8 30 11 16 -9 h
+0 g 2508 2716 N -16 9 29 10 17 -8 h
+0 g 2479 2705 N -17 8 30 11 16 -8 h
+0 g 2449 2695 N -16 8 29 10 17 -8 h
+0 g 2420 2684 N -17 8 30 11 16 -8 h
+0 g 2390 2674 N -16 8 29 11 17 -9 h
+0 g 2361 2663 N -17 9 30 10 16 -8 h
+0 g 2331 2653 N -16 8 29 11 17 -9 h
+0 g 2302 2642 N -17 9 30 10 16 -8 h
+0 g 2272 2632 N -16 8 29 11 17 -9 h
+0 g 2243 2621 N -17 9 30 10 16 -8 h
+0 g 2213 2610 N -16 8 29 11 17 -8 h
+0 g 2184 2600 N -17 8 30 11 16 -9 h
+0 g 2154 2589 N -16 9 29 10 17 -8 h
+0 g 2125 2579 N -17 8 30 11 16 -9 h
+0 g 2095 2568 N -16 9 29 10 17 -8 h
+0 g 2066 2558 N -17 8 30 11 16 -9 h
+0 g 2036 2547 N -16 9 29 10 17 -8 h
+0 g 2007 2536 N -17 8 30 11 16 -8 h
+0 g 1977 2526 N -16 8 29 11 17 -9 h
+0 g 1948 2515 N -17 9 30 10 16 -8 h
+0 g 1918 2505 N -16 8 29 11 17 -9 h
+0 g 1889 2494 N -17 9 30 10 16 -8 h
+0 g 1859 2484 N -16 8 29 11 17 -9 h
+0 g 1830 2473 N -17 9 30 10 16 -8 h
+0 g 1800 2462 N -16 8 29 11 17 -8 h
+0 g 1771 2452 N -17 8 30 11 16 -9 h
+0 g 1741 2441 N -16 9 29 10 17 -8 h
+0 g 1712 2431 N -17 8 30 11 16 -9 h
+0 g 1682 2420 N -16 9 29 10 17 -8 h
+0 g 1653 2410 N -17 8 30 11 16 -9 h
+0 g 1623 2399 N -16 9 29 10 17 -8 h
+0 g 1594 2388 N -17 8 30 11 16 -8 h
+0 g 1564 2378 N -16 8 29 11 17 -9 h
+0 g 1535 2367 N -17 9 30 10 16 -8 h
+0 g 1505 2357 N -16 8 29 11 17 -9 h
+0 g 1476 2346 N -17 9 30 10 16 -8 h
+0 g 1446 2336 N -16 8 29 11 17 -9 h
+0 g 1417 2325 N -17 9 30 10 16 -8 h
+0 g 1387 2314 N -16 8 29 11 17 -8 h
+0 g 1358 2304 N -17 8 30 11 16 -9 h
+0 g 1328 2293 N -16 9 29 10 17 -8 h
+0 g 1299 2283 N -17 8 30 11 16 -9 h
+0 g 1269 2272 N -16 9 29 10 17 -8 h
+0 g 1240 2262 N -17 8 30 11 16 -9 h
+0 g 1210 2251 N -16 9 29 10 17 -8 h
+0 g 1181 2240 N -17 8 30 11 16 -8 h
+0 g 1151 2230 N -16 8 29 11 17 -9 h
+0 g 4058 3257 N -16 9 29 10 17 -8 h
+0 g 4029 3247 N -17 8 30 11 16 -9 h
+0 g 3999 3236 N -16 9 29 10 17 -8 h
+0 g 3970 3226 N -17 8 30 11 16 -9 h
+0 g 3940 3215 N -16 9 29 10 17 -8 h
+0 g 3911 3204 N -17 8 30 11 16 -8 h
+0 g 3881 3194 N -16 8 29 11 17 -9 h
+0 g 3852 3183 N -17 9 30 10 16 -8 h
+0 g 3822 3173 N -16 8 29 11 17 -9 h
+0 g 3793 3162 N -17 9 30 10 16 -8 h
+0 g 3763 3152 N -16 8 29 11 17 -9 h
+0 g 3734 3141 N -17 9 30 10 16 -8 h
+0 g 3704 3130 N -16 8 29 11 17 -8 h
+0 g 3675 3120 N -17 8 30 11 16 -9 h
+0 g 3645 3109 N -16 9 29 10 17 -8 h
+0 g 3616 3099 N -17 8 30 11 16 -9 h
+0 g 3586 3088 N -16 9 29 10 17 -8 h
+0 g 3557 3078 N -17 8 30 11 16 -9 h
+0 g 3527 3067 N -16 9 29 10 17 -8 h
+0 g 3498 3056 N -17 8 30 11 16 -8 h
+0 g 3468 3046 N -16 8 29 11 17 -9 h
+0 g 3439 3035 N -17 9 30 10 16 -8 h
+0 g 3409 3025 N -16 8 29 11 17 -9 h
+0 g 3380 3014 N -17 9 30 10 16 -8 h
+0 g 3350 3004 N -16 8 29 11 17 -9 h
+0 g 3321 2993 N -17 9 30 10 16 -8 h
+0 g 3291 2982 N -16 8 29 11 17 -8 h
+0 g 3262 2972 N -17 8 30 11 16 -9 h
+0 g 3232 2961 N -16 9 29 10 17 -8 h
+0 g 3203 2951 N -17 8 30 11 16 -9 h
+0 g 3173 2940 N -16 9 29 10 17 -8 h
+0 g 3144 2930 N -17 8 30 11 16 -9 h
+0 g 3114 2919 N -16 9 29 10 17 -8 h
+0 g 3085 2908 N -17 8 30 11 16 -8 h
+0 g 3056 2898 N -16 8 29 10 16 -8 h
+0 g 3026 2887 N -16 8 29 11 17 -8 h
+0 g 2997 2877 N -17 8 30 11 16 -9 h
+0 g 2967 2866 N -16 9 29 10 17 -8 h
+0 g 2938 2856 N -17 8 30 11 16 -9 h
+0 g 2908 2845 N -16 9 29 10 17 -8 h
+0 g 2879 2834 N -17 8 30 11 16 -8 h
+0 g 2849 2824 N -16 8 29 10 17 -8 h
+0 g 2820 2813 N -17 8 30 11 16 -8 h
+0 g 2790 2803 N -16 8 29 11 17 -9 h
+0 g 2761 2792 N -17 9 30 10 16 -8 h
+0 g 2731 2782 N -16 8 29 11 17 -9 h
+0 g 2702 2771 N -17 9 30 10 16 -8 h
+0 g 2672 2761 N -16 8 29 11 17 -9 h
+0 g 2643 2750 N -17 9 30 10 16 -8 h
+0 g 2613 2739 N -16 8 29 11 17 -8 h
+0 g 2584 2729 N -17 8 30 11 16 -9 h
+0 g 2554 2718 N -16 9 29 10 17 -8 h
+0 g 2525 2708 N -17 8 30 11 16 -9 h
+0 g 2495 2697 N -16 9 29 10 17 -8 h
+0 g 2466 2687 N -17 8 30 11 16 -9 h
+0 g 2436 2676 N -16 9 29 10 17 -8 h
+0 g 2407 2665 N -17 8 30 11 16 -8 h
+0 g 2377 2655 N -16 8 29 11 17 -9 h
+0 g 2348 2644 N -17 9 30 10 16 -8 h
+0 g 2318 2634 N -16 8 29 11 17 -9 h
+0 g 2289 2623 N -17 9 30 10 16 -8 h
+0 g 2259 2613 N -16 8 29 11 17 -9 h
+0 g 2230 2602 N -17 9 30 10 16 -8 h
+0 g 2200 2591 N -16 8 29 11 17 -8 h
+0 g 2171 2581 N -17 8 30 11 16 -9 h
+0 g 2141 2570 N -16 9 29 10 17 -8 h
+0 g 2112 2560 N -17 8 30 11 16 -9 h
+0 g 2082 2549 N -16 9 29 10 17 -8 h
+0 g 2053 2539 N -17 8 30 11 16 -9 h
+0 g 2023 2528 N -16 9 29 10 17 -8 h
+0 g 1994 2517 N -17 8 30 11 16 -8 h
+0 g 1964 2507 N -16 8 29 11 17 -9 h
+0 g 1935 2496 N -17 9 30 10 16 -8 h
+0 g 1905 2486 N -16 8 29 11 17 -9 h
+0 g 1876 2475 N -17 9 30 10 16 -8 h
+0 g 1846 2465 N -16 8 29 11 17 -9 h
+0 g 1817 2454 N -17 9 30 10 16 -8 h
+0 g 1787 2443 N -16 8 29 11 17 -8 h
+0 g 1758 2433 N -17 8 30 11 16 -9 h
+0 g 1728 2422 N -16 9 29 10 17 -8 h
+0 g 1699 2412 N -17 8 30 11 16 -9 h
+0 g 1669 2401 N -16 9 29 10 17 -8 h
+0 g 1640 2391 N -17 8 30 11 16 -9 h
+0 g 1610 2380 N -16 9 29 10 17 -8 h
+0 g 1581 2369 N -17 8 30 11 16 -8 h
+0 g 1551 2359 N -16 8 29 11 17 -9 h
+0 g 1522 2348 N -17 9 30 10 16 -8 h
+0 g 1492 2338 N -16 8 29 11 17 -9 h
+0 g 1463 2327 N -17 9 30 10 16 -8 h
+0 g 1433 2317 N -16 8 29 11 17 -9 h
+0 g 1404 2306 N -17 9 30 10 16 -8 h
+0 g 1374 2295 N -16 8 29 11 17 -8 h
+0 g 1345 2285 N -17 8 30 10 16 -8 h
+0 g 1315 2274 N -16 8 29 11 17 -8 h
+0 g 1286 2264 N -17 8 30 11 16 -9 h
+0 g 1256 2253 N -16 9 29 10 17 -8 h
+0 g 1227 2243 N -17 8 30 11 16 -9 h
+0 g 1197 2232 N -16 9 29 10 17 -8 h
+0 g 1168 2221 N -17 8 30 11 16 -8 h
+0 g 4075 3249 N -17 8 30 11 16 -9 h
+0 g 4045 3238 N -16 9 29 10 17 -8 h
+0 g 4016 3228 N -17 8 30 11 16 -9 h
+0 g 3986 3217 N -16 9 29 10 17 -8 h
+0 g 3957 3207 N -17 8 30 11 16 -9 h
+0 g 3927 3196 N -16 9 29 10 17 -8 h
+0 g 3898 3185 N -17 8 30 11 16 -8 h
+0 g 3868 3175 N -16 8 29 11 17 -9 h
+0 g 3839 3164 N -17 9 30 10 16 -8 h
+0 g 3809 3154 N -16 8 29 11 17 -9 h
+0 g 3780 3143 N -17 9 30 10 16 -8 h
+0 g 3750 3133 N -16 8 29 11 17 -9 h
+0 g 3721 3122 N -17 9 30 10 16 -8 h
+0 g 3691 3111 N -16 8 29 11 17 -8 h
+0 g 3662 3101 N -17 8 30 11 16 -9 h
+0 g 3632 3090 N -16 9 29 10 17 -8 h
+0 g 3603 3080 N -17 8 30 11 16 -9 h
+0 g 3573 3069 N -16 9 29 10 17 -8 h
+0 g 3544 3059 N -17 8 30 11 16 -9 h
+0 g 3514 3048 N -16 9 29 10 17 -8 h
+0 g 3485 3037 N -17 8 30 11 16 -8 h
+0 g 3455 3027 N -16 8 29 10 17 -8 h
+0 g 3426 3016 N -17 8 30 11 16 -8 h
+0 g 3396 3006 N -16 8 29 11 17 -9 h
+0 g 3367 2995 N -17 9 30 10 16 -8 h
+0 g 3337 2985 N -16 8 29 11 17 -9 h
+0 g 3308 2974 N -17 9 30 10 16 -8 h
+0 g 3278 2963 N -16 8 29 11 17 -8 h
+0 g 3249 2953 N -17 8 30 10 16 -8 h
+0 g 3219 2942 N -16 8 29 11 17 -8 h
+0 g 3190 2932 N -17 8 30 11 16 -9 h
+0 g 3160 2921 N -16 9 29 10 17 -8 h
+0 g 3131 2911 N -17 8 30 11 16 -9 h
+0 g 3101 2900 N -16 9 29 10 17 -8 h
+0 g 3072 2890 N -17 8 30 11 16 -9 h
+0 g 3043 2879 N -16 9 29 10 16 -8 h
+0 g 3013 2868 N -16 8 29 11 17 -8 h
+0 g 2984 2858 N -17 8 30 11 16 -9 h
+0 g 2954 2847 N -16 9 29 10 17 -8 h
+0 g 2925 2837 N -17 8 30 11 16 -9 h
+0 g 2895 2826 N -16 9 29 10 17 -8 h
+0 g 2866 2816 N -17 8 30 11 16 -9 h
+0 g 2836 2805 N -16 9 29 10 17 -8 h
+0 g 2807 2794 N -17 8 30 11 16 -8 h
+0 g 2777 2784 N -16 8 29 11 17 -9 h
+0 g 2748 2773 N -17 9 30 10 16 -8 h
+0 g 2718 2763 N -16 8 29 11 17 -9 h
+0 g 2689 2752 N -17 9 30 10 16 -8 h
+0 g 2659 2742 N -16 8 29 11 17 -9 h
+0 g 2630 2731 N -17 9 30 10 16 -8 h
+0 g 2600 2720 N -16 8 29 11 17 -8 h
+0 g 2571 2710 N -17 8 30 11 16 -9 h
+0 g 2541 2699 N -16 9 29 10 17 -8 h
+0 g 2512 2689 N -17 8 30 11 16 -9 h
+0 g 2482 2678 N -16 9 29 10 17 -8 h
+0 g 2453 2668 N -17 8 30 11 16 -9 h
+0 g 2423 2657 N -16 9 29 10 17 -8 h
+0 g 2394 2646 N -17 8 30 11 16 -8 h
+0 g 2364 2636 N -16 8 29 11 17 -9 h
+0 g 2335 2625 N -17 9 30 10 16 -8 h
+0 g 2305 2615 N -16 8 29 11 17 -9 h
+0 g 2276 2604 N -17 9 30 10 16 -8 h
+0 g 2246 2594 N -16 8 29 11 17 -9 h
+0 g 2217 2583 N -17 9 30 10 16 -8 h
+0 g 2187 2572 N -16 8 29 11 17 -8 h
+0 g 2158 2562 N -17 8 30 11 16 -9 h
+0 g 2128 2551 N -16 9 29 10 17 -8 h
+0 g 2099 2541 N -17 8 30 11 16 -9 h
+0 g 2069 2530 N -16 9 29 10 17 -8 h
+0 g 2040 2520 N -17 8 30 11 16 -9 h
+0 g 2010 2509 N -16 9 29 10 17 -8 h
+0 g 1981 2498 N -17 8 30 11 16 -8 h
+0 g 1951 2488 N -16 8 29 11 17 -9 h
+0 g 1922 2477 N -17 9 30 10 16 -8 h
+0 g 1892 2467 N -16 8 29 11 17 -9 h
+0 g 1863 2456 N -17 9 30 10 16 -8 h
+0 g 1833 2446 N -16 8 29 11 17 -9 h
+0 g 1804 2435 N -17 9 30 10 16 -8 h
+0 g 1774 2424 N -16 8 29 11 17 -8 h
+0 g 1745 2414 N -17 8 30 10 16 -8 h
+0 g 1715 2403 N -16 8 29 11 17 -8 h
+0 g 1686 2393 N -17 8 30 11 16 -9 h
+0 g 1656 2382 N -16 9 29 10 17 -8 h
+0 g 1627 2372 N -17 8 30 11 16 -9 h
+0 g 1597 2361 N -16 9 29 10 17 -8 h
+0 g 1568 2350 N -17 8 30 11 16 -8 h
+0 g 1538 2340 N -16 8 29 10 17 -8 h
+0 g 1509 2329 N -17 8 30 11 16 -8 h
+0 g 1479 2319 N -16 8 29 11 17 -9 h
+0 g 1450 2308 N -17 9 30 10 16 -8 h
+0 g 1420 2298 N -16 8 29 11 17 -9 h
+0 g 1391 2287 N -17 9 30 10 16 -8 h
+0 g 1361 2277 N -16 8 29 11 17 -9 h
+0 g 1332 2266 N -17 9 30 10 16 -8 h
+0 g 1302 2255 N -16 8 29 11 17 -8 h
+0 g 1273 2245 N -17 8 30 11 16 -9 h
+0 g 1243 2234 N -16 9 29 10 17 -8 h
+0 g 1214 2224 N -17 8 30 11 16 -9 h
+0 g 1184 2213 N -16 9 29 10 17 -8 h
+0 g 4091 3240 N -16 8 29 11 17 -8 h
+0 g 4062 3230 N -17 8 30 11 16 -9 h
+0 g 4032 3219 N -16 9 29 10 17 -8 h
+0 g 4003 3209 N -17 8 30 11 16 -9 h
+0 g 3973 3198 N -16 9 29 10 17 -8 h
+0 g 3944 3188 N -17 8 30 11 16 -9 h
+0 g 3914 3177 N -16 9 29 10 17 -8 h
+0 g 3885 3166 N -17 8 30 11 16 -8 h
+0 g 3855 3156 N -16 8 29 10 17 -8 h
+0 g 3826 3145 N -17 8 30 11 16 -8 h
+0 g 3796 3135 N -16 8 29 11 17 -9 h
+0 g 3767 3124 N -17 9 30 10 16 -8 h
+0 g 3737 3114 N -16 8 29 11 17 -9 h
+0 g 3708 3103 N -17 9 30 10 16 -8 h
+0 g 3678 3092 N -16 8 29 11 17 -8 h
+0 g 3649 3082 N -17 8 30 10 16 -8 h
+0 g 3619 3071 N -16 8 29 11 17 -8 h
+0 g 3590 3061 N -17 8 30 11 16 -9 h
+0 g 3560 3050 N -16 9 29 10 17 -8 h
+0 g 3531 3040 N -17 8 30 11 16 -9 h
+0 g 3501 3029 N -16 9 29 10 17 -8 h
+0 g 3472 3019 N -17 8 30 11 16 -9 h
+0 g 3442 3008 N -16 9 29 10 17 -8 h
+0 g 3413 2997 N -17 8 30 11 16 -8 h
+0 g 3383 2987 N -16 8 29 11 17 -9 h
+0 g 3354 2976 N -17 9 30 10 16 -8 h
+0 g 3324 2966 N -16 8 29 11 17 -9 h
+0 g 3295 2955 N -17 9 30 10 16 -8 h
+0 g 3265 2945 N -16 8 29 11 17 -9 h
+0 g 3236 2934 N -17 9 30 10 16 -8 h
+0 g 3206 2923 N -16 8 29 11 17 -8 h
+0 g 3177 2913 N -17 8 30 11 16 -9 h
+0 g 3147 2902 N -16 9 29 10 17 -8 h
+0 g 3118 2892 N -17 8 30 11 16 -9 h
+0 g 3088 2881 N -16 9 29 10 17 -8 h
+0 g 3059 2871 N -17 8 29 11 17 -9 h
+0 g 3030 2860 N -17 9 30 10 16 -8 h
+0 g 3000 2849 N -16 8 29 11 17 -8 h
+0 g 2971 2839 N -17 8 30 11 16 -9 h
+0 g 2941 2828 N -16 9 29 10 17 -8 h
+0 g 2912 2818 N -17 8 30 11 16 -9 h
+0 g 2882 2807 N -16 9 29 10 17 -8 h
+0 g 2853 2797 N -17 8 30 11 16 -9 h
+0 g 2823 2786 N -16 9 29 10 17 -8 h
+0 g 2794 2775 N -17 8 30 11 16 -8 h
+0 g 2764 2765 N -16 8 29 11 17 -9 h
+0 g 2735 2754 N -17 9 30 10 16 -8 h
+0 g 2705 2744 N -16 8 29 11 17 -9 h
+0 g 2676 2733 N -17 9 30 10 16 -8 h
+0 g 2646 2723 N -16 8 29 11 17 -9 h
+0 g 2617 2712 N -17 9 30 10 16 -8 h
+0 g 2587 2701 N -16 8 29 11 17 -8 h
+0 g 2558 2691 N -17 8 30 11 16 -9 h
+0 g 2528 2680 N -16 9 29 10 17 -8 h
+0 g 2499 2670 N -17 8 30 11 16 -9 h
+0 g 2469 2659 N -16 9 29 10 17 -8 h
+0 g 2440 2649 N -17 8 30 11 16 -9 h
+0 g 2410 2638 N -16 9 29 10 17 -8 h
+0 g 2381 2627 N -17 8 30 11 16 -8 h
+0 g 2351 2617 N -16 8 29 11 17 -9 h
+0 g 2322 2606 N -17 9 30 10 16 -8 h
+0 g 2292 2596 N -16 8 29 11 17 -9 h
+0 g 2263 2585 N -17 9 30 10 16 -8 h
+0 g 2233 2575 N -16 8 29 11 17 -9 h
+0 g 2204 2564 N -17 9 30 10 16 -8 h
+0 g 2174 2553 N -16 8 29 11 17 -8 h
+0 g 2145 2543 N -17 8 30 10 16 -8 h
+0 g 2115 2532 N -16 8 29 11 17 -8 h
+0 g 2086 2522 N -17 8 30 11 16 -9 h
+0 g 2056 2511 N -16 9 29 10 17 -8 h
+0 g 2027 2501 N -17 8 30 11 16 -9 h
+0 g 1997 2490 N -16 9 29 10 17 -8 h
+0 g 1968 2479 N -17 8 30 11 16 -8 h
+0 g 1938 2469 N -16 8 29 10 17 -8 h
+0 g 1909 2458 N -17 8 30 11 16 -8 h
+0 g 1879 2448 N -16 8 29 11 17 -9 h
+0 g 1850 2437 N -17 9 30 10 16 -8 h
+0 g 1820 2427 N -16 8 29 11 17 -9 h
+0 g 1791 2416 N -17 9 30 10 16 -8 h
+0 g 1761 2406 N -16 8 29 11 17 -9 h
+0 g 1732 2395 N -17 9 30 10 16 -8 h
+0 g 1702 2384 N -16 8 29 11 17 -8 h
+0 g 1673 2374 N -17 8 30 11 16 -9 h
+0 g 1643 2363 N -16 9 29 10 17 -8 h
+0 g 1614 2353 N -17 8 30 11 16 -9 h
+0 g 1584 2342 N -16 9 29 10 17 -8 h
+0 g 1555 2332 N -17 8 30 11 16 -9 h
+0 g 1525 2321 N -16 9 29 10 17 -8 h
+0 g 1496 2310 N -17 8 30 11 16 -8 h
+0 g 1466 2300 N -16 8 29 11 17 -9 h
+0 g 1437 2289 N -17 9 30 10 16 -8 h
+0 g 1407 2279 N -16 8 29 11 17 -9 h
+0 g 1378 2268 N -17 9 30 10 16 -8 h
+0 g 1348 2258 N -16 8 29 11 17 -9 h
+0 g 1319 2247 N -17 9 30 10 16 -8 h
+0 g 1289 2236 N -16 8 29 11 17 -8 h
+0 g 1260 2226 N -17 8 30 11 16 -9 h
+0 g 1230 2215 N -16 9 29 10 17 -8 h
+0 g 1201 2205 N -17 8 30 11 16 -9 h
+0 g 4108 3232 N -17 9 30 10 16 -8 h
+0 g 4078 3221 N -16 8 29 11 17 -8 h
+0 g 4049 3211 N -17 8 30 10 16 -8 h
+0 g 4019 3200 N -16 8 29 11 17 -8 h
+0 g 3990 3190 N -17 8 30 11 16 -9 h
+0 g 3960 3179 N -16 9 29 10 17 -8 h
+0 g 3931 3169 N -17 8 30 11 16 -9 h
+0 g 3901 3158 N -16 9 29 10 17 -8 h
+0 g 3872 3148 N -17 8 30 11 16 -9 h
+0 g 3842 3137 N -16 9 29 10 17 -8 h
+0 g 3813 3126 N -17 8 30 11 16 -8 h
+0 g 3783 3116 N -16 8 29 11 17 -9 h
+0 g 3754 3105 N -17 9 30 10 16 -8 h
+0 g 3724 3095 N -16 8 29 11 17 -9 h
+0 g 3695 3084 N -17 9 30 10 16 -8 h
+0 g 3665 3074 N -16 8 29 11 17 -9 h
+0 g 3636 3063 N -17 9 30 10 16 -8 h
+0 g 3606 3052 N -16 8 29 11 17 -8 h
+0 g 3577 3042 N -17 8 30 11 16 -9 h
+0 g 3547 3031 N -16 9 29 10 17 -8 h
+0 g 3518 3021 N -17 8 30 11 16 -9 h
+0 g 3488 3010 N -16 9 29 10 17 -8 h
+0 g 3459 3000 N -17 8 30 11 16 -9 h
+0 g 3429 2989 N -16 9 29 10 17 -8 h
+0 g 3400 2978 N -17 8 30 11 16 -8 h
+0 g 3370 2968 N -16 8 29 11 17 -9 h
+0 g 3341 2957 N -17 9 30 10 16 -8 h
+0 g 3311 2947 N -16 8 29 11 17 -9 h
+0 g 3282 2936 N -17 9 30 10 16 -8 h
+0 g 3252 2926 N -16 8 29 11 17 -9 h
+0 g 3223 2915 N -17 9 30 10 16 -8 h
+0 g 3193 2904 N -16 8 29 11 17 -8 h
+0 g 3164 2894 N -17 8 30 11 16 -9 h
+0 g 3134 2883 N -16 9 29 10 17 -8 h
+0 g 3105 2873 N -17 8 30 11 16 -9 h
+0 g 3076 2862 N -16 9 29 10 16 -8 h
+0 g 3046 2852 N -16 8 29 11 17 -9 h
+0 g 3017 2841 N -17 9 30 10 16 -8 h
+0 g 2987 2830 N -16 8 29 11 17 -8 h
+0 g 2958 2820 N -17 8 30 11 16 -9 h
+0 g 2928 2809 N -16 9 29 10 17 -8 h
+0 g 2899 2799 N -17 8 30 11 16 -9 h
+0 g 2869 2788 N -16 9 29 10 17 -8 h
+0 g 2840 2778 N -17 8 30 11 16 -9 h
+0 g 2810 2767 N -16 9 29 10 17 -8 h
+0 g 2781 2756 N -17 8 30 11 16 -8 h
+0 g 2751 2746 N -16 8 29 11 17 -9 h
+0 g 2722 2735 N -17 9 30 10 16 -8 h
+0 g 2692 2725 N -16 8 29 11 17 -9 h
+0 g 2663 2714 N -17 9 30 10 16 -8 h
+0 g 2633 2704 N -16 8 29 11 17 -9 h
+0 g 2604 2693 N -17 9 30 10 16 -8 h
+0 g 2574 2682 N -16 8 29 11 17 -8 h
+0 g 2545 2672 N -17 8 30 10 16 -8 h
+0 g 2515 2661 N -16 8 29 11 17 -8 h
+0 g 2486 2651 N -17 8 30 11 16 -9 h
+0 g 2456 2640 N -16 9 29 10 17 -8 h
+0 g 2427 2630 N -17 8 30 11 16 -9 h
+0 g 2397 2619 N -16 9 29 10 17 -8 h
+0 g 2368 2608 N -17 8 30 11 16 -8 h
+0 g 2338 2598 N -16 8 29 10 17 -8 h
+0 g 2309 2587 N -17 8 30 11 16 -8 h
+0 g 2279 2577 N -16 8 29 11 17 -9 h
+0 g 2250 2566 N -17 9 30 10 16 -8 h
+0 g 2220 2556 N -16 8 29 11 17 -9 h
+0 g 2191 2545 N -17 9 30 10 16 -8 h
+0 g 2161 2535 N -16 8 29 11 17 -9 h
+0 g 2132 2524 N -17 9 30 10 16 -8 h
+0 g 2102 2513 N -16 8 29 11 17 -8 h
+0 g 2073 2503 N -17 8 30 11 16 -9 h
+0 g 2043 2492 N -16 9 29 10 17 -8 h
+0 g 2014 2482 N -17 8 30 11 16 -9 h
+0 g 1984 2471 N -16 9 29 10 17 -8 h
+0 g 1955 2461 N -17 8 30 11 16 -9 h
+0 g 1925 2450 N -16 9 29 10 17 -8 h
+0 g 1896 2439 N -17 8 30 11 16 -8 h
+0 g 1866 2429 N -16 8 29 11 17 -9 h
+0 g 1837 2418 N -17 9 30 10 16 -8 h
+0 g 1807 2408 N -16 8 29 11 17 -9 h
+0 g 1778 2397 N -17 9 30 10 16 -8 h
+0 g 1748 2387 N -16 8 29 11 17 -9 h
+0 g 1719 2376 N -17 9 30 10 16 -8 h
+0 g 1689 2365 N -16 8 29 11 17 -8 h
+0 g 1660 2355 N -17 8 30 11 16 -9 h
+0 g 1630 2344 N -16 9 29 10 17 -8 h
+0 g 1601 2334 N -17 8 30 11 16 -9 h
+0 g 1571 2323 N -16 9 29 10 17 -8 h
+0 g 1542 2313 N -17 8 30 11 16 -9 h
+0 g 1512 2302 N -16 9 29 10 17 -8 h
+0 g 1483 2291 N -17 8 30 11 16 -8 h
+0 g 1453 2281 N -16 8 29 11 17 -9 h
+0 g 1424 2270 N -17 9 30 10 16 -8 h
+0 g 1394 2260 N -16 8 29 11 17 -9 h
+0 g 1365 2249 N -17 9 30 10 16 -8 h
+0 g 1335 2239 N -16 8 29 11 17 -9 h
+0 g 1306 2228 N -17 9 30 10 16 -8 h
+0 g 1276 2217 N -16 8 29 11 17 -8 h
+0 g 1247 2207 N -17 8 30 11 16 -9 h
+0 g 1217 2196 N -16 9 29 10 17 -8 h
+0 g 4124 3224 N -16 8 29 11 17 -9 h
+0 g 4095 3213 N -17 9 30 10 16 -8 h
+0 g 4065 3203 N -16 8 29 11 17 -9 h
+0 g 4036 3192 N -17 9 30 10 16 -8 h
+0 g 4006 3181 N -16 8 29 11 17 -8 h
+0 g 3977 3171 N -17 8 30 11 16 -9 h
+0 g 3947 3160 N -16 9 29 10 17 -8 h
+0 g 3918 3150 N -17 8 30 11 16 -9 h
+0 g 3888 3139 N -16 9 29 10 17 -8 h
+0 g 3859 3129 N -17 8 30 11 16 -9 h
+0 g 3829 3118 N -16 9 29 10 17 -8 h
+0 g 3800 3107 N -17 8 30 11 16 -8 h
+0 g 3770 3097 N -16 8 29 11 17 -9 h
+0 g 3741 3086 N -17 9 30 10 16 -8 h
+0 g 3711 3076 N -16 8 29 11 17 -9 h
+0 g 3682 3065 N -17 9 30 10 16 -8 h
+0 g 3652 3055 N -16 8 29 11 17 -9 h
+0 g 3623 3044 N -17 9 30 10 16 -8 h
+0 g 3593 3033 N -16 8 29 11 17 -8 h
+0 g 3564 3023 N -17 8 30 11 16 -9 h
+0 g 3534 3012 N -16 9 29 10 17 -8 h
+0 g 3505 3002 N -17 8 30 11 16 -9 h
+0 g 3475 2991 N -16 9 29 10 17 -8 h
+0 g 3446 2981 N -17 8 30 11 16 -9 h
+0 g 3416 2970 N -16 9 29 10 17 -8 h
+0 g 3387 2959 N -17 8 30 11 16 -8 h
+0 g 3357 2949 N -16 8 29 11 17 -9 h
+0 g 3328 2938 N -17 9 30 10 16 -8 h
+0 g 3298 2928 N -16 8 29 11 17 -9 h
+0 g 3269 2917 N -17 9 30 10 16 -8 h
+0 g 3239 2907 N -16 8 29 11 17 -9 h
+0 g 3210 2896 N -17 9 30 10 16 -8 h
+0 g 3180 2885 N -16 8 29 11 17 -8 h
+0 g 3151 2875 N -17 8 30 11 16 -9 h
+0 g 3121 2864 N -16 9 29 10 17 -8 h
+0 g 3092 2854 N -17 8 30 11 16 -9 h
+0 g 3063 2843 N -16 9 29 10 16 -8 h
+0 g 3033 2833 N -16 8 29 11 17 -9 h
+0 g 3004 2822 N -17 9 30 10 16 -8 h
+0 g 2974 2811 N -16 8 29 11 17 -8 h
+0 g 2945 2801 N -17 8 30 10 16 -8 h
+0 g 2915 2790 N -16 8 29 11 17 -8 h
+0 g 2886 2780 N -17 8 30 11 16 -9 h
+0 g 2856 2769 N -16 9 29 10 17 -8 h
+0 g 2827 2759 N -17 8 30 11 16 -9 h
+0 g 2797 2748 N -16 9 29 10 17 -8 h
+0 g 2768 2737 N -17 8 30 11 16 -8 h
+0 g 2738 2727 N -16 8 29 10 17 -8 h
+0 g 2709 2716 N -17 8 30 11 16 -8 h
+0 g 2679 2706 N -16 8 29 11 17 -9 h
+0 g 2650 2695 N -17 9 30 10 16 -8 h
+0 g 2620 2685 N -16 8 29 11 17 -9 h
+0 g 2591 2674 N -17 9 30 10 16 -8 h
+0 g 2561 2664 N -16 8 29 11 17 -9 h
+0 g 2532 2653 N -17 9 30 10 16 -8 h
+0 g 2502 2642 N -16 8 29 11 17 -8 h
+0 g 2473 2632 N -17 8 30 11 16 -9 h
+0 g 2443 2621 N -16 9 29 10 17 -8 h
+0 g 2414 2611 N -17 8 30 11 16 -9 h
+0 g 2384 2600 N -16 9 29 10 17 -8 h
+0 g 2355 2590 N -17 8 30 11 16 -9 h
+0 g 2325 2579 N -16 9 29 10 17 -8 h
+0 g 2296 2568 N -17 8 30 11 16 -8 h
+0 g 2266 2558 N -16 8 29 11 17 -9 h
+0 g 2237 2547 N -17 9 30 10 16 -8 h
+0 g 2207 2537 N -16 8 29 11 17 -9 h
+0 g 2178 2526 N -17 9 30 10 16 -8 h
+0 g 2148 2516 N -16 8 29 11 17 -9 h
+0 g 2119 2505 N -17 9 30 10 16 -8 h
+0 g 2089 2494 N -16 8 29 11 17 -8 h
+0 g 2060 2484 N -17 8 30 11 16 -9 h
+0 g 2030 2473 N -16 9 29 10 17 -8 h
+0 g 2001 2463 N -17 8 30 11 16 -9 h
+0 g 1971 2452 N -16 9 29 10 17 -8 h
+0 g 1942 2442 N -17 8 30 11 16 -9 h
+0 g 1912 2431 N -16 9 29 10 17 -8 h
+0 g 1883 2420 N -17 8 30 11 16 -8 h
+0 g 1853 2410 N -16 8 29 11 17 -9 h
+0 g 1824 2399 N -17 9 30 10 16 -8 h
+0 g 1794 2389 N -16 8 29 11 17 -9 h
+0 g 1765 2378 N -17 9 30 10 16 -8 h
+0 g 1735 2368 N -16 8 29 11 17 -9 h
+0 g 1706 2357 N -17 9 30 10 16 -8 h
+0 g 1676 2346 N -16 8 29 11 17 -8 h
+0 g 1647 2336 N -17 8 30 11 16 -9 h
+0 g 1617 2325 N -16 9 29 10 17 -8 h
+0 g 1588 2315 N -17 8 30 11 16 -9 h
+0 g 1558 2304 N -16 9 29 10 17 -8 h
+0 g 1529 2294 N -17 8 30 11 16 -9 h
+0 g 1499 2283 N -16 9 29 10 17 -8 h
+0 g 1470 2272 N -17 8 30 11 16 -8 h
+0 g 1440 2262 N -16 8 29 11 17 -9 h
+0 g 1411 2251 N -17 9 30 10 16 -8 h
+0 g 1381 2241 N -16 8 29 11 17 -9 h
+0 g 1352 2230 N -17 9 30 10 16 -8 h
+0 g 1322 2220 N -16 8 29 11 17 -9 h
+0 g 1293 2209 N -17 9 30 10 16 -8 h
+0 g 1263 2198 N -16 8 29 11 17 -8 h
+0 g 1234 2188 N -17 8 30 10 16 -8 h
+0 g 4141 3215 N -17 9 30 10 16 -8 h
+0 g 4111 3205 N -16 8 29 11 17 -9 h
+0 g 4082 3194 N -17 9 30 10 16 -8 h
+0 g 4052 3184 N -16 8 29 11 17 -9 h
+0 g 4023 3173 N -17 9 30 10 16 -8 h
+0 g 3993 3162 N -16 8 29 11 17 -8 h
+0 g 3964 3152 N -17 8 30 11 16 -9 h
+0 g 3934 3141 N -16 9 29 10 17 -8 h
+0 g 3905 3131 N -17 8 30 11 16 -9 h
+0 g 3875 3120 N -16 9 29 10 17 -8 h
+0 g 3846 3110 N -17 8 30 11 16 -9 h
+0 g 3816 3099 N -16 9 29 10 17 -8 h
+0 g 3787 3088 N -17 8 30 11 16 -8 h
+0 g 3757 3078 N -16 8 29 11 17 -9 h
+0 g 3728 3067 N -17 9 30 10 16 -8 h
+0 g 3698 3057 N -16 8 29 11 17 -9 h
+0 g 3669 3046 N -17 9 30 10 16 -8 h
+0 g 3639 3036 N -16 8 29 11 17 -9 h
+0 g 3610 3025 N -17 9 30 10 16 -8 h
+0 g 3580 3014 N -16 8 29 11 17 -8 h
+0 g 3551 3004 N -17 8 30 11 16 -9 h
+0 g 3521 2993 N -16 9 29 10 17 -8 h
+0 g 3492 2983 N -17 8 30 11 16 -9 h
+0 g 3462 2972 N -16 9 29 10 17 -8 h
+0 g 3433 2962 N -17 8 30 11 16 -9 h
+0 g 3403 2951 N -16 9 29 10 17 -8 h
+0 g 3374 2940 N -17 8 30 11 16 -8 h
+0 g 3344 2930 N -16 8 29 10 17 -8 h
+0 g 3315 2919 N -17 8 30 11 16 -8 h
+0 g 3285 2909 N -16 8 29 11 17 -9 h
+0 g 3256 2898 N -17 9 30 10 16 -8 h
+0 g 3226 2888 N -16 8 29 11 17 -9 h
+0 g 3197 2877 N -17 9 30 10 16 -8 h
+0 g 3167 2866 N -16 8 29 11 17 -8 h
+0 g 3138 2856 N -17 8 30 10 16 -8 h
+0 g 3108 2845 N -16 8 29 11 17 -8 h
+0 g 3079 2835 N -17 8 29 11 17 -9 h
+0 g 3050 2824 N -17 9 30 10 16 -8 h
+0 g 3020 2814 N -16 8 29 11 17 -9 h
+0 g 2991 2803 N -17 9 30 10 16 -8 h
+0 g 2961 2793 N -16 8 29 11 17 -9 h
+0 g 2932 2782 N -17 9 30 10 16 -8 h
+0 g 2902 2771 N -16 8 29 11 17 -8 h
+0 g 2873 2761 N -17 8 30 11 16 -9 h
+0 g 2843 2750 N -16 9 29 10 17 -8 h
+0 g 2814 2740 N -17 8 30 11 16 -9 h
+0 g 2784 2729 N -16 9 29 10 17 -8 h
+0 g 2755 2719 N -17 8 30 11 16 -9 h
+0 g 2725 2708 N -16 9 29 10 17 -8 h
+0 g 2696 2697 N -17 8 30 11 16 -8 h
+0 g 2666 2687 N -16 8 29 11 17 -9 h
+0 g 2637 2676 N -17 9 30 10 16 -8 h
+0 g 2607 2666 N -16 8 29 11 17 -9 h
+0 g 2578 2655 N -17 9 30 10 16 -8 h
+0 g 2548 2645 N -16 8 29 11 17 -9 h
+0 g 2519 2634 N -17 9 30 10 16 -8 h
+0 g 2489 2623 N -16 8 29 11 17 -8 h
+0 g 2460 2613 N -17 8 30 11 16 -9 h
+0 g 2430 2602 N -16 9 29 10 17 -8 h
+0 g 2401 2592 N -17 8 30 11 16 -9 h
+0 g 2371 2581 N -16 9 29 10 17 -8 h
+0 g 2342 2571 N -17 8 30 11 16 -9 h
+0 g 2312 2560 N -16 9 29 10 17 -8 h
+0 g 2283 2549 N -17 8 30 11 16 -8 h
+0 g 2253 2539 N -16 8 29 11 17 -9 h
+0 g 2224 2528 N -17 9 30 10 16 -8 h
+0 g 2194 2518 N -16 8 29 11 17 -9 h
+0 g 2165 2507 N -17 9 30 10 16 -8 h
+0 g 2135 2497 N -16 8 29 11 17 -9 h
+0 g 2106 2486 N -17 9 30 10 16 -8 h
+0 g 2076 2475 N -16 8 29 11 17 -8 h
+0 g 2047 2465 N -17 8 30 11 16 -9 h
+0 g 2017 2454 N -16 9 29 10 17 -8 h
+0 g 1988 2444 N -17 8 30 11 16 -9 h
+0 g 1958 2433 N -16 9 29 10 17 -8 h
+0 g 1929 2423 N -17 8 30 11 16 -9 h
+0 g 1899 2412 N -16 9 29 10 17 -8 h
+0 g 1870 2401 N -17 8 30 11 16 -8 h
+0 g 1840 2391 N -16 8 29 11 17 -9 h
+0 g 1811 2380 N -17 9 30 10 16 -8 h
+0 g 1781 2370 N -16 8 29 11 17 -9 h
+0 g 1752 2359 N -17 9 30 10 16 -8 h
+0 g 1722 2349 N -16 8 29 11 17 -9 h
+0 g 1693 2338 N -17 9 30 10 16 -8 h
+0 g 1663 2327 N -16 8 29 11 17 -8 h
+0 g 1634 2317 N -17 8 30 10 16 -8 h
+0 g 1604 2306 N -16 8 29 11 17 -8 h
+0 g 1575 2296 N -17 8 30 11 16 -9 h
+0 g 1545 2285 N -16 9 29 10 17 -8 h
+0 g 1516 2275 N -17 8 30 11 16 -9 h
+0 g 1486 2264 N -16 9 29 10 17 -8 h
+0 g 1457 2253 N -17 8 30 11 16 -8 h
+0 g 1427 2243 N -16 8 29 10 17 -8 h
+0 g 1398 2232 N -17 8 30 11 16 -8 h
+0 g 1368 2222 N -16 8 29 11 17 -9 h
+0 g 1339 2211 N -17 9 30 10 16 -8 h
+0 g 1309 2201 N -16 8 29 11 17 -9 h
+0 g 1280 2190 N -17 9 30 10 16 -8 h
+0 g 1250 2180 N -16 8 29 11 17 -9 h
+0 g 4157 3207 N -16 8 29 11 17 -9 h
+0 g 4128 3196 N -17 9 30 10 16 -8 h
+0 g 4098 3186 N -16 8 29 11 17 -9 h
+0 g 4069 3175 N -17 9 30 10 16 -8 h
+0 g 4039 3165 N -16 8 29 11 17 -9 h
+0 g 4010 3154 N -17 9 30 10 16 -8 h
+0 g 3980 3143 N -16 8 29 11 17 -8 h
+0 g 3951 3133 N -17 8 30 11 16 -9 h
+0 g 3921 3122 N -16 9 29 10 17 -8 h
+0 g 3892 3112 N -17 8 30 11 16 -9 h
+0 g 3862 3101 N -16 9 29 10 17 -8 h
+0 g 3833 3091 N -17 8 30 11 16 -9 h
+0 g 3803 3080 N -16 9 29 10 17 -8 h
+0 g 3774 3069 N -17 8 30 11 16 -8 h
+0 g 3744 3059 N -16 8 29 10 17 -8 h
+0 g 3715 3048 N -17 8 30 11 16 -8 h
+0 g 3685 3038 N -16 8 29 11 17 -9 h
+0 g 3656 3027 N -17 9 30 10 16 -8 h
+0 g 3626 3017 N -16 8 29 11 17 -9 h
+0 g 3597 3006 N -17 9 30 10 16 -8 h
+0 g 3567 2995 N -16 8 29 11 17 -8 h
+0 g 3538 2985 N -17 8 30 10 16 -8 h
+0 g 3508 2974 N -16 8 29 11 17 -8 h
+0 g 3479 2964 N -17 8 30 11 16 -9 h
+0 g 3449 2953 N -16 9 29 10 17 -8 h
+0 g 3420 2943 N -17 8 30 11 16 -9 h
+0 g 3390 2932 N -16 9 29 10 17 -8 h
+0 g 3361 2922 N -17 8 30 11 16 -9 h
+0 g 3331 2911 N -16 9 29 10 17 -8 h
+0 g 3302 2900 N -17 8 30 11 16 -8 h
+0 g 3272 2890 N -16 8 29 11 17 -9 h
+0 g 3243 2879 N -17 9 30 10 16 -8 h
+0 g 3213 2869 N -16 8 29 11 17 -9 h
+0 g 3184 2858 N -17 9 30 10 16 -8 h
+0 g 3154 2848 N -16 8 29 11 17 -9 h
+0 g 3125 2837 N -17 9 30 10 16 -8 h
+0 g 3096 2826 N -16 8 29 11 16 -8 h
+0 g 3066 2816 N -16 8 29 11 17 -9 h
+0 g 3037 2805 N -17 9 30 10 16 -8 h
+0 g 3007 2795 N -16 8 29 11 17 -9 h
+0 g 2978 2784 N -17 9 30 10 16 -8 h
+0 g 2948 2774 N -16 8 29 11 17 -9 h
+0 g 2919 2763 N -17 9 30 10 16 -8 h
+0 g 2889 2752 N -16 8 29 11 17 -8 h
+0 g 2860 2742 N -17 8 30 11 16 -9 h
+0 g 2830 2731 N -16 9 29 10 17 -8 h
+0 g 2801 2721 N -17 8 30 11 16 -9 h
+0 g 2771 2710 N -16 9 29 10 17 -8 h
+0 g 2742 2700 N -17 8 30 11 16 -9 h
+0 g 2712 2689 N -16 9 29 10 17 -8 h
+0 g 2683 2678 N -17 8 30 11 16 -8 h
+0 g 2653 2668 N -16 8 29 11 17 -9 h
+0 g 2624 2657 N -17 9 30 10 16 -8 h
+0 g 2594 2647 N -16 8 29 11 17 -9 h
+0 g 2565 2636 N -17 9 30 10 16 -8 h
+0 g 2535 2626 N -16 8 29 11 17 -9 h
+0 g 2506 2615 N -17 9 30 10 16 -8 h
+0 g 2476 2604 N -16 8 29 11 17 -8 h
+0 g 2447 2594 N -17 8 30 11 16 -9 h
+0 g 2417 2583 N -16 9 29 10 17 -8 h
+0 g 2388 2573 N -17 8 30 11 16 -9 h
+0 g 2358 2562 N -16 9 29 10 17 -8 h
+0 g 2329 2552 N -17 8 30 11 16 -9 h
+0 g 2299 2541 N -16 9 29 10 17 -8 h
+0 g 2270 2530 N -17 8 30 11 16 -8 h
+0 g 2240 2520 N -16 8 29 11 17 -9 h
+0 g 2211 2509 N -17 9 30 10 16 -8 h
+0 g 2181 2499 N -16 8 29 11 17 -9 h
+0 g 2152 2488 N -17 9 30 10 16 -8 h
+0 g 2122 2478 N -16 8 29 11 17 -9 h
+0 g 2093 2467 N -17 9 30 10 16 -8 h
+0 g 2063 2456 N -16 8 29 11 17 -8 h
+0 g 2034 2446 N -17 8 30 10 16 -8 h
+0 g 2004 2435 N -16 8 29 11 17 -8 h
+0 g 1975 2425 N -17 8 30 11 16 -9 h
+0 g 1945 2414 N -16 9 29 10 17 -8 h
+0 g 1916 2404 N -17 8 30 11 16 -9 h
+0 g 1886 2393 N -16 9 29 10 17 -8 h
+0 g 1857 2382 N -17 8 30 11 16 -8 h
+0 g 1827 2372 N -16 8 29 10 17 -8 h
+0 g 1798 2361 N -17 8 30 11 16 -8 h
+0 g 1768 2351 N -16 8 29 11 17 -9 h
+0 g 1739 2340 N -17 9 30 10 16 -8 h
+0 g 1709 2330 N -16 8 29 11 17 -9 h
+0 g 1680 2319 N -17 9 30 10 16 -8 h
+0 g 1650 2309 N -16 8 29 11 17 -9 h
+0 g 1621 2298 N -17 9 30 10 16 -8 h
+0 g 1591 2287 N -16 8 29 11 17 -8 h
+0 g 1562 2277 N -17 8 30 11 16 -9 h
+0 g 1532 2266 N -16 9 29 10 17 -8 h
+0 g 1503 2256 N -17 8 30 11 16 -9 h
+0 g 1473 2245 N -16 9 29 10 17 -8 h
+0 g 1444 2235 N -17 8 30 11 16 -9 h
+0 g 1414 2224 N -16 9 29 10 17 -8 h
+0 g 1385 2213 N -17 8 30 11 16 -8 h
+0 g 1355 2203 N -16 8 29 11 17 -9 h
+0 g 1326 2192 N -17 9 30 10 16 -8 h
+0 g 1296 2182 N -16 8 29 11 17 -9 h
+0 g 1267 2171 N -17 9 30 10 16 -8 h
+0 g 4174 3198 N -17 8 30 11 16 -8 h
+0 g 4144 3188 N -16 8 29 10 17 -8 h
+0 g 4115 3177 N -17 8 30 11 16 -8 h
+0 g 4085 3167 N -16 8 29 11 17 -9 h
+0 g 4056 3156 N -17 9 30 10 16 -8 h
+0 g 4026 3146 N -16 8 29 11 17 -9 h
+0 g 3997 3135 N -17 9 30 10 16 -8 h
+0 g 3967 3124 N -16 8 29 11 17 -8 h
+0 g 3938 3114 N -17 8 30 10 16 -8 h
+0 g 3908 3103 N -16 8 29 11 17 -8 h
+0 g 3879 3093 N -17 8 30 11 16 -9 h
+0 g 3849 3082 N -16 9 29 10 17 -8 h
+0 g 3820 3072 N -17 8 30 11 16 -9 h
+0 g 3790 3061 N -16 9 29 10 17 -8 h
+0 g 3761 3051 N -17 8 30 11 16 -9 h
+0 g 3731 3040 N -16 9 29 10 17 -8 h
+0 g 3702 3029 N -17 8 30 11 16 -8 h
+0 g 3672 3019 N -16 8 29 11 17 -9 h
+0 g 3643 3008 N -17 9 30 10 16 -8 h
+0 g 3613 2998 N -16 8 29 11 17 -9 h
+0 g 3584 2987 N -17 9 30 10 16 -8 h
+0 g 3554 2977 N -16 8 29 11 17 -9 h
+0 g 3525 2966 N -17 9 30 10 16 -8 h
+0 g 3495 2955 N -16 8 29 11 17 -8 h
+0 g 3466 2945 N -17 8 30 11 16 -9 h
+0 g 3436 2934 N -16 9 29 10 17 -8 h
+0 g 3407 2924 N -17 8 30 11 16 -9 h
+0 g 3377 2913 N -16 9 29 10 17 -8 h
+0 g 3348 2903 N -17 8 30 11 16 -9 h
+0 g 3318 2892 N -16 9 29 10 17 -8 h
+0 g 3289 2881 N -17 8 30 11 16 -8 h
+0 g 3259 2871 N -16 8 29 11 17 -9 h
+0 g 3230 2860 N -17 9 30 10 16 -8 h
+0 g 3200 2850 N -16 8 29 11 17 -9 h
+0 g 3171 2839 N -17 9 30 10 16 -8 h
+0 g 3141 2829 N -16 8 29 11 17 -9 h
+0 g 3112 2818 N -17 9 29 10 17 -8 h
+0 g 3083 2807 N -17 8 30 11 16 -8 h
+0 g 3053 2797 N -16 8 29 11 17 -9 h
+0 g 3024 2786 N -17 9 30 10 16 -8 h
+0 g 2994 2776 N -16 8 29 11 17 -9 h
+0 g 2965 2765 N -17 9 30 10 16 -8 h
+0 g 2935 2755 N -16 8 29 11 17 -9 h
+0 g 2906 2744 N -17 9 30 10 16 -8 h
+0 g 2876 2733 N -16 8 29 11 17 -8 h
+0 g 2847 2723 N -17 8 30 11 16 -9 h
+0 g 2817 2712 N -16 9 29 10 17 -8 h
+0 g 2788 2702 N -17 8 30 11 16 -9 h
+0 g 2758 2691 N -16 9 29 10 17 -8 h
+0 g 2729 2681 N -17 8 30 11 16 -9 h
+0 g 2699 2670 N -16 9 29 10 17 -8 h
+0 g 2670 2659 N -17 8 30 11 16 -8 h
+0 g 2640 2649 N -16 8 29 11 17 -9 h
+0 g 2611 2638 N -17 9 30 10 16 -8 h
+0 g 2581 2628 N -16 8 29 11 17 -9 h
+0 g 2552 2617 N -17 9 30 10 16 -8 h
+0 g 2522 2607 N -16 8 29 11 17 -9 h
+0 g 2493 2596 N -17 9 30 10 16 -8 h
+0 g 2463 2585 N -16 8 29 11 17 -8 h
+0 g 2434 2575 N -17 8 30 10 16 -8 h
+0 g 2404 2564 N -16 8 29 11 17 -8 h
+0 g 2375 2554 N -17 8 30 11 16 -9 h
+0 g 2345 2543 N -16 9 29 10 17 -8 h
+0 g 2316 2533 N -17 8 30 11 16 -9 h
+0 g 2286 2522 N -16 9 29 10 17 -8 h
+0 g 2257 2511 N -17 8 30 11 16 -8 h
+0 g 2227 2501 N -16 8 29 10 17 -8 h
+0 g 2198 2490 N -17 8 30 11 16 -8 h
+0 g 2168 2480 N -16 8 29 11 17 -9 h
+0 g 2139 2469 N -17 9 30 10 16 -8 h
+0 g 2109 2459 N -16 8 29 11 17 -9 h
+0 g 2080 2448 N -17 9 30 10 16 -8 h
+0 g 2050 2438 N -16 8 29 11 17 -9 h
+0 g 2021 2427 N -17 9 30 10 16 -8 h
+0 g 1991 2416 N -16 8 29 11 17 -8 h
+0 g 1962 2406 N -17 8 30 11 16 -9 h
+0 g 1932 2395 N -16 9 29 10 17 -8 h
+0 g 1903 2385 N -17 8 30 11 16 -9 h
+0 g 1873 2374 N -16 9 29 10 17 -8 h
+0 g 1844 2364 N -17 8 30 11 16 -9 h
+0 g 1814 2353 N -16 9 29 10 17 -8 h
+0 g 1785 2342 N -17 8 30 11 16 -8 h
+0 g 1755 2332 N -16 8 29 11 17 -9 h
+0 g 1726 2321 N -17 9 30 10 16 -8 h
+0 g 1696 2311 N -16 8 29 11 17 -9 h
+0 g 1667 2300 N -17 9 30 10 16 -8 h
+0 g 1637 2290 N -16 8 29 11 17 -9 h
+0 g 1608 2279 N -17 9 30 10 16 -8 h
+0 g 1578 2268 N -16 8 29 11 17 -8 h
+0 g 1549 2258 N -17 8 30 11 16 -9 h
+0 g 1519 2247 N -16 9 29 10 17 -8 h
+0 g 1490 2237 N -17 8 30 11 16 -9 h
+0 g 1460 2226 N -16 9 29 10 17 -8 h
+0 g 1431 2216 N -17 8 30 11 16 -9 h
+0 g 1401 2205 N -16 9 29 10 17 -8 h
+0 g 1372 2194 N -17 8 30 11 16 -8 h
+0 g 1342 2184 N -16 8 29 11 17 -9 h
+0 g 1313 2173 N -17 9 30 10 16 -8 h
+0 g 1283 2163 N -16 8 29 11 17 -9 h
+0 g 4190 3190 N -16 9 29 10 17 -8 h
+0 g 4161 3180 N -17 8 30 11 16 -9 h
+0 g 4131 3169 N -16 9 29 10 17 -8 h
+0 g 4102 3158 N -17 8 30 11 16 -8 h
+0 g 4072 3148 N -16 8 29 11 17 -9 h
+0 g 4043 3137 N -17 9 30 10 16 -8 h
+0 g 4013 3127 N -16 8 29 11 17 -9 h
+0 g 3984 3116 N -17 9 30 10 16 -8 h
+0 g 3954 3106 N -16 8 29 11 17 -9 h
+0 g 3925 3095 N -17 9 30 10 16 -8 h
+0 g 3895 3084 N -16 8 29 11 17 -8 h
+0 g 3866 3074 N -17 8 30 11 16 -9 h
+0 g 3836 3063 N -16 9 29 10 17 -8 h
+0 g 3807 3053 N -17 8 30 11 16 -9 h
+0 g 3777 3042 N -16 9 29 10 17 -8 h
+0 g 3748 3032 N -17 8 30 11 16 -9 h
+0 g 3718 3021 N -16 9 29 10 17 -8 h
+0 g 3689 3010 N -17 8 30 11 16 -8 h
+0 g 3659 3000 N -16 8 29 11 17 -9 h
+0 g 3630 2989 N -17 9 30 10 16 -8 h
+0 g 3600 2979 N -16 8 29 11 17 -9 h
+0 g 3571 2968 N -17 9 30 10 16 -8 h
+0 g 3541 2958 N -16 8 29 11 17 -9 h
+0 g 3512 2947 N -17 9 30 10 16 -8 h
+0 g 3482 2936 N -16 8 29 11 17 -8 h
+0 g 3453 2926 N -17 8 30 11 16 -9 h
+0 g 3423 2915 N -16 9 29 10 17 -8 h
+0 g 3394 2905 N -17 8 30 11 16 -9 h
+0 g 3364 2894 N -16 9 29 10 17 -8 h
+0 g 3335 2884 N -17 8 30 11 16 -9 h
+0 g 3305 2873 N -16 9 29 10 17 -8 h
+0 g 3276 2862 N -17 8 30 11 16 -8 h
+0 g 3246 2852 N -16 8 29 11 17 -9 h
+0 g 3217 2841 N -17 9 30 10 16 -8 h
+0 g 3187 2831 N -16 8 29 11 17 -9 h
+0 g 3158 2820 N -17 9 30 10 16 -8 h
+0 g 3129 2810 N -16 8 29 11 16 -9 h
+0 g 3099 2799 N -16 9 29 10 17 -8 h
+0 g 3070 2788 N -17 8 30 11 16 -8 h
+0 g 3040 2778 N -16 8 29 11 17 -9 h
+0 g 3011 2767 N -17 9 30 10 16 -8 h
+0 g 2981 2757 N -16 8 29 11 17 -9 h
+0 g 2952 2746 N -17 9 30 10 16 -8 h
+0 g 2922 2736 N -16 8 29 11 17 -9 h
+0 g 2893 2725 N -17 9 30 10 16 -8 h
+0 g 2863 2714 N -16 8 29 11 17 -8 h
+0 g 2834 2704 N -17 8 30 10 16 -8 h
+0 g 2804 2693 N -16 8 29 11 17 -8 h
+0 g 2775 2683 N -17 8 30 11 16 -9 h
+0 g 2745 2672 N -16 9 29 10 17 -8 h
+0 g 2716 2662 N -17 8 30 11 16 -9 h
+0 g 2686 2651 N -16 9 29 10 17 -8 h
+0 g 2657 2640 N -17 8 30 11 16 -8 h
+0 g 2627 2630 N -16 8 29 10 17 -8 h
+0 g 2598 2619 N -17 8 30 11 16 -8 h
+0 g 2568 2609 N -16 8 29 11 17 -9 h
+0 g 2539 2598 N -17 9 30 10 16 -8 h
+0 g 2509 2588 N -16 8 29 11 17 -9 h
+0 g 2480 2577 N -17 9 30 10 16 -8 h
+0 g 2450 2567 N -16 8 29 11 17 -9 h
+0 g 2421 2556 N -17 9 30 10 16 -8 h
+0 g 2391 2545 N -16 8 29 11 17 -8 h
+0 g 2362 2535 N -17 8 30 11 16 -9 h
+0 g 2332 2524 N -16 9 29 10 17 -8 h
+0 g 2303 2514 N -17 8 30 11 16 -9 h
+0 g 2273 2503 N -16 9 29 10 17 -8 h
+0 g 2244 2493 N -17 8 30 11 16 -9 h
+0 g 2214 2482 N -16 9 29 10 17 -8 h
+0 g 2185 2471 N -17 8 30 11 16 -8 h
+0 g 2155 2461 N -16 8 29 11 17 -9 h
+0 g 2126 2450 N -17 9 30 10 16 -8 h
+0 g 2096 2440 N -16 8 29 11 17 -9 h
+0 g 2067 2429 N -17 9 30 10 16 -8 h
+0 g 2037 2419 N -16 8 29 11 17 -9 h
+0 g 2008 2408 N -17 9 30 10 16 -8 h
+0 g 1978 2397 N -16 8 29 11 17 -8 h
+0 g 1949 2387 N -17 8 30 11 16 -9 h
+0 g 1919 2376 N -16 9 29 10 17 -8 h
+0 g 1890 2366 N -17 8 30 11 16 -9 h
+0 g 1860 2355 N -16 9 29 10 17 -8 h
+0 g 1831 2345 N -17 8 30 11 16 -9 h
+0 g 1801 2334 N -16 9 29 10 17 -8 h
+0 g 1772 2323 N -17 8 30 11 16 -8 h
+0 g 1742 2313 N -16 8 29 11 17 -9 h
+0 g 1713 2302 N -17 9 30 10 16 -8 h
+0 g 1683 2292 N -16 8 29 11 17 -9 h
+0 g 1654 2281 N -17 9 30 10 16 -8 h
+0 g 1624 2271 N -16 8 29 11 17 -9 h
+0 g 1595 2260 N -17 9 30 10 16 -8 h
+0 g 1565 2249 N -16 8 29 11 17 -8 h
+0 g 1536 2239 N -17 8 30 11 16 -9 h
+0 g 1506 2228 N -16 9 29 10 17 -8 h
+0 g 1477 2218 N -17 8 30 11 16 -9 h
+0 g 1447 2207 N -16 9 29 10 17 -8 h
+0 g 1418 2197 N -17 8 30 11 16 -9 h
+0 g 1388 2186 N -16 9 29 10 17 -8 h
+0 g 1359 2175 N -17 8 30 11 16 -8 h
+0 g 1329 2165 N -16 8 29 11 17 -9 h
+0 g 1300 2154 N -17 9 30 10 16 -8 h
+0 g 4207 3182 N -17 8 30 11 16 -9 h
+0 g 4177 3171 N -16 9 29 10 17 -8 h
+0 g 4148 3161 N -17 8 30 11 16 -9 h
+0 g 4118 3150 N -16 9 29 10 17 -8 h
+0 g 4089 3139 N -17 8 30 11 16 -8 h
+0 g 4059 3129 N -16 8 29 11 17 -9 h
+0 g 4030 3118 N -17 9 30 10 16 -8 h
+0 g 4000 3108 N -16 8 29 11 17 -9 h
+0 g 3971 3097 N -17 9 30 10 16 -8 h
+0 g 3941 3087 N -16 8 29 11 17 -9 h
+0 g 3912 3076 N -17 9 30 10 16 -8 h
+0 g 3882 3065 N -16 8 29 11 17 -8 h
+0 g 3853 3055 N -17 8 30 11 16 -9 h
+0 g 3823 3044 N -16 9 29 10 17 -8 h
+0 g 3794 3034 N -17 8 30 11 16 -9 h
+0 g 3764 3023 N -16 9 29 10 17 -8 h
+0 g 3735 3013 N -17 8 30 11 16 -9 h
+0 g 3705 3002 N -16 9 29 10 17 -8 h
+0 g 3676 2991 N -17 8 30 11 16 -8 h
+0 g 3646 2981 N -16 8 29 11 17 -9 h
+0 g 3617 2970 N -17 9 30 10 16 -8 h
+0 g 3587 2960 N -16 8 29 11 17 -9 h
+0 g 3558 2949 N -17 9 30 10 16 -8 h
+0 g 3528 2939 N -16 8 29 11 17 -9 h
+0 g 3499 2928 N -17 9 30 10 16 -8 h
+0 g 3469 2917 N -16 8 29 11 17 -8 h
+0 g 3440 2907 N -17 8 30 11 16 -9 h
+0 g 3410 2896 N -16 9 29 10 17 -8 h
+0 g 3381 2886 N -17 8 30 11 16 -9 h
+0 g 3351 2875 N -16 9 29 10 17 -8 h
+0 g 3322 2865 N -17 8 30 11 16 -9 h
+0 g 3292 2854 N -16 9 29 10 17 -8 h
+0 g 3263 2843 N -17 8 30 11 16 -8 h
+0 g 3233 2833 N -16 8 29 10 17 -8 h
+0 g 3204 2822 N -17 8 30 11 16 -8 h
+0 g 3174 2812 N -16 8 29 11 17 -9 h
+0 g 3145 2801 N -17 9 30 10 16 -8 h
+0 g 3116 2791 N -16 8 29 11 16 -9 h
+0 g 3086 2780 N -16 9 29 10 17 -8 h
+0 g 3057 2769 N -17 8 30 11 16 -8 h
+0 g 3027 2759 N -16 8 29 10 17 -8 h
+0 g 2998 2748 N -17 8 30 11 16 -8 h
+0 g 2968 2738 N -16 8 29 11 17 -9 h
+0 g 2939 2727 N -17 9 30 10 16 -8 h
+0 g 2909 2717 N -16 8 29 11 17 -9 h
+0 g 2880 2706 N -17 9 30 10 16 -8 h
+0 g 2850 2696 N -16 8 29 11 17 -9 h
+0 g 2821 2685 N -17 9 30 10 16 -8 h
+0 g 2791 2674 N -16 8 29 11 17 -8 h
+0 g 2762 2664 N -17 8 30 11 16 -9 h
+0 g 2732 2653 N -16 9 29 10 17 -8 h
+0 g 2703 2643 N -17 8 30 11 16 -9 h
+0 g 2673 2632 N -16 9 29 10 17 -8 h
+0 g 2644 2622 N -17 8 30 11 16 -9 h
+0 g 2614 2611 N -16 9 29 10 17 -8 h
+0 g 2585 2600 N -17 8 30 11 16 -8 h
+0 g 2555 2590 N -16 8 29 11 17 -9 h
+0 g 2526 2579 N -17 9 30 10 16 -8 h
+0 g 2496 2569 N -16 8 29 11 17 -9 h
+0 g 2467 2558 N -17 9 30 10 16 -8 h
+0 g 2437 2548 N -16 8 29 11 17 -9 h
+0 g 2408 2537 N -17 9 30 10 16 -8 h
+0 g 2378 2526 N -16 8 29 11 17 -8 h
+0 g 2349 2516 N -17 8 30 11 16 -9 h
+0 g 2319 2505 N -16 9 29 10 17 -8 h
+0 g 2290 2495 N -17 8 30 11 16 -9 h
+0 g 2260 2484 N -16 9 29 10 17 -8 h
+0 g 2231 2474 N -17 8 30 11 16 -9 h
+0 g 2201 2463 N -16 9 29 10 17 -8 h
+0 g 2172 2452 N -17 8 30 11 16 -8 h
+0 g 2142 2442 N -16 8 29 11 17 -9 h
+0 g 2113 2431 N -17 9 30 10 16 -8 h
+0 g 2083 2421 N -16 8 29 11 17 -9 h
+0 g 2054 2410 N -17 9 30 10 16 -8 h
+0 g 2024 2400 N -16 8 29 11 17 -9 h
+0 g 1995 2389 N -17 9 30 10 16 -8 h
+0 g 1965 2378 N -16 8 29 11 17 -8 h
+0 g 1936 2368 N -17 8 30 11 16 -9 h
+0 g 1906 2357 N -16 9 29 10 17 -8 h
+0 g 1877 2347 N -17 8 30 11 16 -9 h
+0 g 1847 2336 N -16 9 29 10 17 -8 h
+0 g 1818 2326 N -17 8 30 11 16 -9 h
+0 g 1788 2315 N -16 9 29 10 17 -8 h
+0 g 1759 2304 N -17 8 30 11 16 -8 h
+0 g 1729 2294 N -16 8 29 11 17 -9 h
+0 g 1700 2283 N -17 9 30 10 16 -8 h
+0 g 1670 2273 N -16 8 29 11 17 -9 h
+0 g 1641 2262 N -17 9 30 10 16 -8 h
+0 g 1611 2252 N -16 8 29 11 17 -9 h
+0 g 1582 2241 N -17 9 30 10 16 -8 h
+0 g 1552 2230 N -16 8 29 11 17 -8 h
+0 g 1523 2220 N -17 8 30 10 16 -8 h
+0 g 1493 2209 N -16 8 29 11 17 -8 h
+0 g 1464 2199 N -17 8 30 11 16 -9 h
+0 g 1434 2188 N -16 9 29 10 17 -8 h
+0 g 1405 2178 N -17 8 30 11 16 -9 h
+0 g 1375 2167 N -16 9 29 10 17 -8 h
+0 g 1346 2156 N -17 8 30 11 16 -8 h
+0 g 1316 2146 N -16 8 29 10 17 -8 h
+0 g 4223 3173 N -16 9 29 10 17 -8 h
+0 g 4194 3163 N -17 8 30 11 16 -9 h
+0 g 4164 3152 N -16 9 29 10 17 -8 h
+0 g 4135 3142 N -17 8 30 11 16 -9 h
+0 g 4105 3131 N -16 9 29 10 17 -8 h
+0 g 4076 3120 N -17 8 30 11 16 -8 h
+0 g 4046 3110 N -16 8 29 11 17 -9 h
+0 g 4017 3099 N -17 9 30 10 16 -8 h
+0 g 3987 3089 N -16 8 29 11 17 -9 h
+0 g 3958 3078 N -17 9 30 10 16 -8 h
+0 g 3928 3068 N -16 8 29 11 17 -9 h
+0 g 3899 3057 N -17 9 30 10 16 -8 h
+0 g 3869 3046 N -16 8 29 11 17 -8 h
+0 g 3840 3036 N -17 8 30 11 16 -9 h
+0 g 3810 3025 N -16 9 29 10 17 -8 h
+0 g 3781 3015 N -17 8 30 11 16 -9 h
+0 g 3751 3004 N -16 9 29 10 17 -8 h
+0 g 3722 2994 N -17 8 30 11 16 -9 h
+0 g 3692 2983 N -16 9 29 10 17 -8 h
+0 g 3663 2972 N -17 8 30 11 16 -8 h
+0 g 3633 2962 N -16 8 29 10 17 -8 h
+0 g 3604 2951 N -17 8 30 11 16 -8 h
+0 g 3574 2941 N -16 8 29 11 17 -9 h
+0 g 3545 2930 N -17 9 30 10 16 -8 h
+0 g 3515 2920 N -16 8 29 11 17 -9 h
+0 g 3486 2909 N -17 9 30 10 16 -8 h
+0 g 3456 2898 N -16 8 29 11 17 -8 h
+0 g 3427 2888 N -17 8 30 10 16 -8 h
+0 g 3397 2877 N -16 8 29 11 17 -8 h
+0 g 3368 2867 N -17 8 30 11 16 -9 h
+0 g 3338 2856 N -16 9 29 10 17 -8 h
+0 g 3309 2846 N -17 8 30 11 16 -9 h
+0 g 3279 2835 N -16 9 29 10 17 -8 h
+0 g 3250 2825 N -17 8 30 11 16 -9 h
+0 g 3220 2814 N -16 9 29 10 17 -8 h
+0 g 3191 2803 N -17 8 30 11 16 -8 h
+0 g 3161 2793 N -16 8 29 11 17 -9 h
+0 g 3132 2782 N -17 9 29 10 17 -8 h
+0 g 3103 2772 N -17 8 30 11 16 -9 h
+0 g 3073 2761 N -16 9 29 10 17 -8 h
+0 g 3044 2751 N -17 8 30 11 16 -9 h
+0 g 3014 2740 N -16 9 29 10 17 -8 h
+0 g 2985 2729 N -17 8 30 11 16 -8 h
+0 g 2955 2719 N -16 8 29 11 17 -9 h
+0 g 2926 2708 N -17 9 30 10 16 -8 h
+0 g 2896 2698 N -16 8 29 11 17 -9 h
+0 g 2867 2687 N -17 9 30 10 16 -8 h
+0 g 2837 2677 N -16 8 29 11 17 -9 h
+0 g 2808 2666 N -17 9 30 10 16 -8 h
+0 g 2778 2655 N -16 8 29 11 17 -8 h
+0 g 2749 2645 N -17 8 30 11 16 -9 h
+0 g 2719 2634 N -16 9 29 10 17 -8 h
+0 g 2690 2624 N -17 8 30 11 16 -9 h
+0 g 2660 2613 N -16 9 29 10 17 -8 h
+0 g 2631 2603 N -17 8 30 11 16 -9 h
+0 g 2601 2592 N -16 9 29 10 17 -8 h
+0 g 2572 2581 N -17 8 30 11 16 -8 h
+0 g 2542 2571 N -16 8 29 11 17 -9 h
+0 g 2513 2560 N -17 9 30 10 16 -8 h
+0 g 2483 2550 N -16 8 29 11 17 -9 h
+0 g 2454 2539 N -17 9 30 10 16 -8 h
+0 g 2424 2529 N -16 8 29 11 17 -9 h
+0 g 2395 2518 N -17 9 30 10 16 -8 h
+0 g 2365 2507 N -16 8 29 11 17 -8 h
+0 g 2336 2497 N -17 8 30 11 16 -9 h
+0 g 2306 2486 N -16 9 29 10 17 -8 h
+0 g 2277 2476 N -17 8 30 11 16 -9 h
+0 g 2247 2465 N -16 9 29 10 17 -8 h
+0 g 2218 2455 N -17 8 30 11 16 -9 h
+0 g 2188 2444 N -16 9 29 10 17 -8 h
+0 g 2159 2433 N -17 8 30 11 16 -8 h
+0 g 2129 2423 N -16 8 29 11 17 -9 h
+0 g 2100 2412 N -17 9 30 10 16 -8 h
+0 g 2070 2402 N -16 8 29 11 17 -9 h
+0 g 2041 2391 N -17 9 30 10 16 -8 h
+0 g 2011 2381 N -16 8 29 11 17 -9 h
+0 g 1982 2370 N -17 9 30 10 16 -8 h
+0 g 1952 2359 N -16 8 29 11 17 -8 h
+0 g 1923 2349 N -17 8 30 10 16 -8 h
+0 g 1893 2338 N -16 8 29 11 17 -8 h
+0 g 1864 2328 N -17 8 30 11 16 -9 h
+0 g 1834 2317 N -16 9 29 10 17 -8 h
+0 g 1805 2307 N -17 8 30 11 16 -9 h
+0 g 1775 2296 N -16 9 29 10 17 -8 h
+0 g 1746 2285 N -17 8 30 11 16 -8 h
+0 g 1716 2275 N -16 8 29 10 17 -8 h
+0 g 1687 2264 N -17 8 30 11 16 -8 h
+0 g 1657 2254 N -16 8 29 11 17 -9 h
+0 g 1628 2243 N -17 9 30 10 16 -8 h
+0 g 1598 2233 N -16 8 29 11 17 -9 h
+0 g 1569 2222 N -17 9 30 10 16 -8 h
+0 g 1539 2212 N -16 8 29 11 17 -9 h
+0 g 1510 2201 N -17 9 30 10 16 -8 h
+0 g 1480 2190 N -16 8 29 11 17 -8 h
+0 g 1451 2180 N -17 8 30 11 16 -9 h
+0 g 1421 2169 N -16 9 29 10 17 -8 h
+0 g 1392 2159 N -17 8 30 11 16 -9 h
+0 g 1362 2148 N -16 9 29 10 17 -8 h
+0 g 1333 2138 N -17 8 30 11 16 -9 h
+0 g 4240 3165 N -17 8 30 11 16 -9 h
+0 g 4210 3154 N -16 9 29 10 17 -8 h
+0 g 4181 3144 N -17 8 30 11 16 -9 h
+0 g 4151 3133 N -16 9 29 10 17 -8 h
+0 g 4122 3123 N -17 8 30 11 16 -9 h
+0 g 4092 3112 N -16 9 29 10 17 -8 h
+0 g 4063 3101 N -17 8 30 11 16 -8 h
+0 g 4033 3091 N -16 8 29 10 17 -8 h
+0 g 4004 3080 N -17 8 30 11 16 -8 h
+0 g 3974 3070 N -16 8 29 11 17 -9 h
+0 g 3945 3059 N -17 9 30 10 16 -8 h
+0 g 3915 3049 N -16 8 29 11 17 -9 h
+0 g 3886 3038 N -17 9 30 10 16 -8 h
+0 g 3856 3027 N -16 8 29 11 17 -8 h
+0 g 3827 3017 N -17 8 30 10 16 -8 h
+0 g 3797 3006 N -16 8 29 11 17 -8 h
+0 g 3768 2996 N -17 8 30 11 16 -9 h
+0 g 3738 2985 N -16 9 29 10 17 -8 h
+0 g 3709 2975 N -17 8 30 11 16 -9 h
+0 g 3679 2964 N -16 9 29 10 17 -8 h
+0 g 3650 2954 N -17 8 30 11 16 -9 h
+0 g 3620 2943 N -16 9 29 10 17 -8 h
+0 g 3591 2932 N -17 8 30 11 16 -8 h
+0 g 3561 2922 N -16 8 29 11 17 -9 h
+0 g 3532 2911 N -17 9 30 10 16 -8 h
+0 g 3502 2901 N -16 8 29 11 17 -9 h
+0 g 3473 2890 N -17 9 30 10 16 -8 h
+0 g 3443 2880 N -16 8 29 11 17 -9 h
+0 g 3414 2869 N -17 9 30 10 16 -8 h
+0 g 3384 2858 N -16 8 29 11 17 -8 h
+0 g 3355 2848 N -17 8 30 11 16 -9 h
+0 g 3325 2837 N -16 9 29 10 17 -8 h
+0 g 3296 2827 N -17 8 30 11 16 -9 h
+0 g 3266 2816 N -16 9 29 10 17 -8 h
+0 g 3237 2806 N -17 8 30 11 16 -9 h
+0 g 3207 2795 N -16 9 29 10 17 -8 h
+0 g 3178 2784 N -17 8 30 11 16 -8 h
+0 g 3149 2774 N -16 8 29 11 16 -9 h
+0 g 3119 2763 N -16 9 29 10 17 -8 h
+0 g 3090 2753 N -17 8 30 11 16 -9 h
+0 g 3060 2742 N -16 9 29 10 17 -8 h
+0 g 3031 2732 N -17 8 30 11 16 -9 h
+0 g 3001 2721 N -16 9 29 10 17 -8 h
+0 g 2972 2710 N -17 8 30 11 16 -8 h
+0 g 2942 2700 N -16 8 29 11 17 -9 h
+0 g 2913 2689 N -17 9 30 10 16 -8 h
+0 g 2883 2679 N -16 8 29 11 17 -9 h
+0 g 2854 2668 N -17 9 30 10 16 -8 h
+0 g 2824 2658 N -16 8 29 11 17 -9 h
+0 g 2795 2647 N -17 9 30 10 16 -8 h
+0 g 2765 2636 N -16 8 29 11 17 -8 h
+0 g 2736 2626 N -17 8 30 11 16 -9 h
+0 g 2706 2615 N -16 9 29 10 17 -8 h
+0 g 2677 2605 N -17 8 30 11 16 -9 h
+0 g 2647 2594 N -16 9 29 10 17 -8 h
+0 g 2618 2584 N -17 8 30 11 16 -9 h
+0 g 2588 2573 N -16 9 29 10 17 -8 h
+0 g 2559 2562 N -17 8 30 11 16 -8 h
+0 g 2529 2552 N -16 8 29 11 17 -9 h
+0 g 2500 2541 N -17 9 30 10 16 -8 h
+0 g 2470 2531 N -16 8 29 11 17 -9 h
+0 g 2441 2520 N -17 9 30 10 16 -8 h
+0 g 2411 2510 N -16 8 29 11 17 -9 h
+0 g 2382 2499 N -17 9 30 10 16 -8 h
+0 g 2352 2488 N -16 8 29 11 17 -8 h
+0 g 2323 2478 N -17 8 30 10 16 -8 h
+0 g 2293 2467 N -16 8 29 11 17 -8 h
+0 g 2264 2457 N -17 8 30 11 16 -9 h
+0 g 2234 2446 N -16 9 29 10 17 -8 h
+0 g 2205 2436 N -17 8 30 11 16 -9 h
+0 g 2175 2425 N -16 9 29 10 17 -8 h
+0 g 2146 2414 N -17 8 30 11 16 -8 h
+0 g 2116 2404 N -16 8 29 10 17 -8 h
+0 g 2087 2393 N -17 8 30 11 16 -8 h
+0 g 2057 2383 N -16 8 29 11 17 -9 h
+0 g 2028 2372 N -17 9 30 10 16 -8 h
+0 g 1998 2362 N -16 8 29 11 17 -9 h
+0 g 1969 2351 N -17 9 30 10 16 -8 h
+0 g 1939 2341 N -16 8 29 11 17 -9 h
+0 g 1910 2330 N -17 9 30 10 16 -8 h
+0 g 1880 2319 N -16 8 29 11 17 -8 h
+0 g 1851 2309 N -17 8 30 11 16 -9 h
+0 g 1821 2298 N -16 9 29 10 17 -8 h
+0 g 1792 2288 N -17 8 30 11 16 -9 h
+0 g 1762 2277 N -16 9 29 10 17 -8 h
+0 g 1733 2267 N -17 8 30 11 16 -9 h
+0 g 1703 2256 N -16 9 29 10 17 -8 h
+0 g 1674 2245 N -17 8 30 11 16 -8 h
+0 g 1644 2235 N -16 8 29 11 17 -9 h
+0 g 1615 2224 N -17 9 30 10 16 -8 h
+0 g 1585 2214 N -16 8 29 11 17 -9 h
+0 g 1556 2203 N -17 9 30 10 16 -8 h
+0 g 1526 2193 N -16 8 29 11 17 -9 h
+0 g 1497 2182 N -17 9 30 10 16 -8 h
+0 g 1467 2171 N -16 8 29 11 17 -8 h
+0 g 1438 2161 N -17 8 30 11 16 -9 h
+0 g 1408 2150 N -16 9 29 10 17 -8 h
+0 g 1379 2140 N -17 8 30 11 16 -9 h
+0 g 1349 2129 N -16 9 29 10 17 -8 h
+0 g 4256 3156 N -16 8 29 11 17 -8 h
+0 g 4227 3146 N -17 8 30 10 16 -8 h
+0 g 4197 3135 N -16 8 29 11 17 -8 h
+0 g 4168 3125 N -17 8 30 11 16 -9 h
+0 g 4138 3114 N -16 9 29 10 17 -8 h
+0 g 4109 3104 N -17 8 30 11 16 -9 h
+0 g 4079 3093 N -16 9 29 10 17 -8 h
+0 g 4050 3083 N -17 8 30 11 16 -9 h
+0 g 4020 3072 N -16 9 29 10 17 -8 h
+0 g 3991 3061 N -17 8 30 11 16 -8 h
+0 g 3961 3051 N -16 8 29 11 17 -9 h
+0 g 3932 3040 N -17 9 30 10 16 -8 h
+0 g 3902 3030 N -16 8 29 11 17 -9 h
+0 g 3873 3019 N -17 9 30 10 16 -8 h
+0 g 3843 3009 N -16 8 29 11 17 -9 h
+0 g 3814 2998 N -17 9 30 10 16 -8 h
+0 g 3784 2987 N -16 8 29 11 17 -8 h
+0 g 3755 2977 N -17 8 30 11 16 -9 h
+0 g 3725 2966 N -16 9 29 10 17 -8 h
+0 g 3696 2956 N -17 8 30 11 16 -9 h
+0 g 3666 2945 N -16 9 29 10 17 -8 h
+0 g 3637 2935 N -17 8 30 11 16 -9 h
+0 g 3607 2924 N -16 9 29 10 17 -8 h
+0 g 3578 2913 N -17 8 30 11 16 -8 h
+0 g 3548 2903 N -16 8 29 11 17 -9 h
+0 g 3519 2892 N -17 9 30 10 16 -8 h
+0 g 3489 2882 N -16 8 29 11 17 -9 h
+0 g 3460 2871 N -17 9 30 10 16 -8 h
+0 g 3430 2861 N -16 8 29 11 17 -9 h
+0 g 3401 2850 N -17 9 30 10 16 -8 h
+0 g 3371 2839 N -16 8 29 11 17 -8 h
+0 g 3342 2829 N -17 8 30 11 16 -9 h
+0 g 3312 2818 N -16 9 29 10 17 -8 h
+0 g 3283 2808 N -17 8 30 11 16 -9 h
+0 g 3253 2797 N -16 9 29 10 17 -8 h
+0 g 3224 2787 N -17 8 30 11 16 -9 h
+0 g 3194 2776 N -16 9 29 10 17 -8 h
+0 g 3165 2765 N -17 8 29 11 17 -8 h
+0 g 3136 2755 N -17 8 30 11 16 -9 h
+0 g 3106 2744 N -16 9 29 10 17 -8 h
+0 g 3077 2734 N -17 8 30 11 16 -9 h
+0 g 3047 2723 N -16 9 29 10 17 -8 h
+0 g 3018 2713 N -17 8 30 11 16 -9 h
+0 g 2988 2702 N -16 9 29 10 17 -8 h
+0 g 2959 2691 N -17 8 30 11 16 -8 h
+0 g 2929 2681 N -16 8 29 11 17 -9 h
+0 g 2900 2670 N -17 9 30 10 16 -8 h
+0 g 2870 2660 N -16 8 29 11 17 -9 h
+0 g 2841 2649 N -17 9 30 10 16 -8 h
+0 g 2811 2639 N -16 8 29 11 17 -9 h
+0 g 2782 2628 N -17 9 30 10 16 -8 h
+0 g 2752 2617 N -16 8 29 11 17 -8 h
+0 g 2723 2607 N -17 8 30 10 16 -8 h
+0 g 2693 2596 N -16 8 29 11 17 -8 h
+0 g 2664 2586 N -17 8 30 11 16 -9 h
+0 g 2634 2575 N -16 9 29 10 17 -8 h
+0 g 2605 2565 N -17 8 30 11 16 -9 h
+0 g 2575 2554 N -16 9 29 10 17 -8 h
+0 g 2546 2543 N -17 8 30 11 16 -8 h
+0 g 2516 2533 N -16 8 29 10 17 -8 h
+0 g 2487 2522 N -17 8 30 11 16 -8 h
+0 g 2457 2512 N -16 8 29 11 17 -9 h
+0 g 2428 2501 N -17 9 30 10 16 -8 h
+0 g 2398 2491 N -16 8 29 11 17 -9 h
+0 g 2369 2480 N -17 9 30 10 16 -8 h
+0 g 2339 2470 N -16 8 29 11 17 -9 h
+0 g 2310 2459 N -17 9 30 10 16 -8 h
+0 g 2280 2448 N -16 8 29 11 17 -8 h
+0 g 2251 2438 N -17 8 30 11 16 -9 h
+0 g 2221 2427 N -16 9 29 10 17 -8 h
+0 g 2192 2417 N -17 8 30 11 16 -9 h
+0 g 2162 2406 N -16 9 29 10 17 -8 h
+0 g 2133 2396 N -17 8 30 11 16 -9 h
+0 g 2103 2385 N -16 9 29 10 17 -8 h
+0 g 2074 2374 N -17 8 30 11 16 -8 h
+0 g 2044 2364 N -16 8 29 11 17 -9 h
+0 g 2015 2353 N -17 9 30 10 16 -8 h
+0 g 1985 2343 N -16 8 29 11 17 -9 h
+0 g 1956 2332 N -17 9 30 10 16 -8 h
+0 g 1926 2322 N -16 8 29 11 17 -9 h
+0 g 1897 2311 N -17 9 30 10 16 -8 h
+0 g 1867 2300 N -16 8 29 11 17 -8 h
+0 g 1838 2290 N -17 8 30 11 16 -9 h
+0 g 1808 2279 N -16 9 29 10 17 -8 h
+0 g 1779 2269 N -17 8 30 11 16 -9 h
+0 g 1749 2258 N -16 9 29 10 17 -8 h
+0 g 1720 2248 N -17 8 30 11 16 -9 h
+0 g 1690 2237 N -16 9 29 10 17 -8 h
+0 g 1661 2226 N -17 8 30 11 16 -8 h
+0 g 1631 2216 N -16 8 29 11 17 -9 h
+0 g 1602 2205 N -17 9 30 10 16 -8 h
+0 g 1572 2195 N -16 8 29 11 17 -9 h
+0 g 1543 2184 N -17 9 30 10 16 -8 h
+0 g 1513 2174 N -16 8 29 11 17 -9 h
+0 g 1484 2163 N -17 9 30 10 16 -8 h
+0 g 1454 2152 N -16 8 29 11 17 -8 h
+0 g 1425 2142 N -17 8 30 11 16 -9 h
+0 g 1395 2131 N -16 9 29 10 17 -8 h
+0 g 1366 2121 N -17 8 30 11 16 -9 h
+0 g 4273 3148 N -17 9 30 10 16 -8 h
+0 g 4243 3138 N -16 8 29 11 17 -9 h
+0 g 4214 3127 N -17 9 30 10 16 -8 h
+0 g 4184 3116 N -16 8 29 11 17 -8 h
+0 g 4155 3106 N -17 8 30 11 16 -9 h
+0 g 4125 3095 N -16 9 29 10 17 -8 h
+0 g 4096 3085 N -17 8 30 11 16 -9 h
+0 g 4066 3074 N -16 9 29 10 17 -8 h
+0 g 4037 3064 N -17 8 30 11 16 -9 h
+0 g 4007 3053 N -16 9 29 10 17 -8 h
+0 g 3978 3042 N -17 8 30 11 16 -8 h
+0 g 3948 3032 N -16 8 29 11 17 -9 h
+0 g 3919 3021 N -17 9 30 10 16 -8 h
+0 g 3889 3011 N -16 8 29 11 17 -9 h
+0 g 3860 3000 N -17 9 30 10 16 -8 h
+0 g 3830 2990 N -16 8 29 11 17 -9 h
+0 g 3801 2979 N -17 9 30 10 16 -8 h
+0 g 3771 2968 N -16 8 29 11 17 -8 h
+0 g 3742 2958 N -17 8 30 11 16 -9 h
+0 g 3712 2947 N -16 9 29 10 17 -8 h
+0 g 3683 2937 N -17 8 30 11 16 -9 h
+0 g 3653 2926 N -16 9 29 10 17 -8 h
+0 g 3624 2916 N -17 8 30 11 16 -9 h
+0 g 3594 2905 N -16 9 29 10 17 -8 h
+0 g 3565 2894 N -17 8 30 11 16 -8 h
+0 g 3535 2884 N -16 8 29 11 17 -9 h
+0 g 3506 2873 N -17 9 30 10 16 -8 h
+0 g 3476 2863 N -16 8 29 11 17 -9 h
+0 g 3447 2852 N -17 9 30 10 16 -8 h
+0 g 3417 2842 N -16 8 29 11 17 -9 h
+0 g 3388 2831 N -17 9 30 10 16 -8 h
+0 g 3358 2820 N -16 8 29 11 17 -8 h
+0 g 3329 2810 N -17 8 30 11 16 -9 h
+0 g 3299 2799 N -16 9 29 10 17 -8 h
+0 g 3270 2789 N -17 8 30 11 16 -9 h
+0 g 3240 2778 N -16 9 29 10 17 -8 h
+0 g 3211 2768 N -17 8 30 11 16 -9 h
+0 g 3182 2757 N -16 9 29 10 16 -8 h
+0 g 3152 2746 N -16 8 29 11 17 -8 h
+0 g 3123 2736 N -17 8 30 10 16 -8 h
+0 g 3093 2725 N -16 8 29 11 17 -8 h
+0 g 3064 2715 N -17 8 30 11 16 -9 h
+0 g 3034 2704 N -16 9 29 10 17 -8 h
+0 g 3005 2694 N -17 8 30 11 16 -9 h
+0 g 2975 2683 N -16 9 29 10 17 -8 h
+0 g 2946 2672 N -17 8 30 11 16 -8 h
+0 g 2916 2662 N -16 8 29 10 17 -8 h
+0 g 2887 2651 N -17 8 30 11 16 -8 h
+0 g 2857 2641 N -16 8 29 11 17 -9 h
+0 g 2828 2630 N -17 9 30 10 16 -8 h
+0 g 2798 2620 N -16 8 29 11 17 -9 h
+0 g 2769 2609 N -17 9 30 10 16 -8 h
+0 g 2739 2599 N -16 8 29 11 17 -9 h
+0 g 2710 2588 N -17 9 30 10 16 -8 h
+0 g 2680 2577 N -16 8 29 11 17 -8 h
+0 g 2651 2567 N -17 8 30 11 16 -9 h
+0 g 2621 2556 N -16 9 29 10 17 -8 h
+0 g 2592 2546 N -17 8 30 11 16 -9 h
+0 g 2562 2535 N -16 9 29 10 17 -8 h
+0 g 2533 2525 N -17 8 30 11 16 -9 h
+0 g 2503 2514 N -16 9 29 10 17 -8 h
+0 g 2474 2503 N -17 8 30 11 16 -8 h
+0 g 2444 2493 N -16 8 29 11 17 -9 h
+0 g 2415 2482 N -17 9 30 10 16 -8 h
+0 g 2385 2472 N -16 8 29 11 17 -9 h
+0 g 2356 2461 N -17 9 30 10 16 -8 h
+0 g 2326 2451 N -16 8 29 11 17 -9 h
+0 g 2297 2440 N -17 9 30 10 16 -8 h
+0 g 2267 2429 N -16 8 29 11 17 -8 h
+0 g 2238 2419 N -17 8 30 11 16 -9 h
+0 g 2208 2408 N -16 9 29 10 17 -8 h
+0 g 2179 2398 N -17 8 30 11 16 -9 h
+0 g 2149 2387 N -16 9 29 10 17 -8 h
+0 g 2120 2377 N -17 8 30 11 16 -9 h
+0 g 2090 2366 N -16 9 29 10 17 -8 h
+0 g 2061 2355 N -17 8 30 11 16 -8 h
+0 g 2031 2345 N -16 8 29 11 17 -9 h
+0 g 2002 2334 N -17 9 30 10 16 -8 h
+0 g 1972 2324 N -16 8 29 11 17 -9 h
+0 g 1943 2313 N -17 9 30 10 16 -8 h
+0 g 1913 2303 N -16 8 29 11 17 -9 h
+0 g 1884 2292 N -17 9 30 10 16 -8 h
+0 g 1854 2281 N -16 8 29 11 17 -8 h
+0 g 1825 2271 N -17 8 30 11 16 -9 h
+0 g 1795 2260 N -16 9 29 10 17 -8 h
+0 g 1766 2250 N -17 8 30 11 16 -9 h
+0 g 1736 2239 N -16 9 29 10 17 -8 h
+0 g 1707 2229 N -17 8 30 11 16 -9 h
+0 g 1677 2218 N -16 9 29 10 17 -8 h
+0 g 1648 2207 N -17 8 30 11 16 -8 h
+0 g 1618 2197 N -16 8 29 11 17 -9 h
+0 g 1589 2186 N -17 9 30 10 16 -8 h
+0 g 1559 2176 N -16 8 29 11 17 -9 h
+0 g 1530 2165 N -17 9 30 10 16 -8 h
+0 g 1500 2155 N -16 8 29 11 17 -9 h
+0 g 1471 2144 N -17 9 30 10 16 -8 h
+0 g 1441 2133 N -16 8 29 11 17 -8 h
+0 g 1412 2123 N -17 8 30 10 16 -8 h
+0 g 1382 2112 N -16 8 29 11 17 -8 h
+0 g 4289 3140 N -16 8 29 11 17 -9 h
+0 g 4260 3129 N -17 9 30 10 16 -8 h
+0 g 4230 3119 N -16 8 29 11 17 -9 h
+0 g 4201 3108 N -17 9 30 10 16 -8 h
+0 g 4171 3097 N -16 8 29 11 17 -8 h
+0 g 4142 3087 N -17 8 30 11 16 -9 h
+0 g 4112 3076 N -16 9 29 10 17 -8 h
+0 g 4083 3066 N -17 8 30 11 16 -9 h
+0 g 4053 3055 N -16 9 29 10 17 -8 h
+0 g 4024 3045 N -17 8 30 11 16 -9 h
+0 g 3994 3034 N -16 9 29 10 17 -8 h
+0 g 3965 3023 N -17 8 30 11 16 -8 h
+0 g 3935 3013 N -16 8 29 11 17 -9 h
+0 g 3906 3002 N -17 9 30 10 16 -8 h
+0 g 3876 2992 N -16 8 29 11 17 -9 h
+0 g 3847 2981 N -17 9 30 10 16 -8 h
+0 g 3817 2971 N -16 8 29 11 17 -9 h
+0 g 3788 2960 N -17 9 30 10 16 -8 h
+0 g 3758 2949 N -16 8 29 11 17 -8 h
+0 g 3729 2939 N -17 8 30 11 16 -9 h
+0 g 3699 2928 N -16 9 29 10 17 -8 h
+0 g 3670 2918 N -17 8 30 11 16 -9 h
+0 g 3640 2907 N -16 9 29 10 17 -8 h
+0 g 3611 2897 N -17 8 30 11 16 -9 h
+0 g 3581 2886 N -16 9 29 10 17 -8 h
+0 g 3552 2875 N -17 8 30 11 16 -8 h
+0 g 3522 2865 N -16 8 29 10 17 -8 h
+0 g 3493 2854 N -17 8 30 11 16 -8 h
+0 g 3463 2844 N -16 8 29 11 17 -9 h
+0 g 3434 2833 N -17 9 30 10 16 -8 h
+0 g 3404 2823 N -16 8 29 11 17 -9 h
+0 g 3375 2812 N -17 9 30 10 16 -8 h
+0 g 3345 2801 N -16 8 29 11 17 -8 h
+0 g 3316 2791 N -17 8 30 10 16 -8 h
+0 g 3286 2780 N -16 8 29 11 17 -8 h
+0 g 3257 2770 N -17 8 30 11 16 -9 h
+0 g 3227 2759 N -16 9 29 10 17 -8 h
+0 g 3198 2749 N -17 8 30 11 16 -9 h
+0 g 3169 2738 N -16 9 29 10 16 -8 h
+0 g 3139 2728 N -16 8 29 11 17 -9 h
+0 g 3110 2717 N -17 9 30 10 16 -8 h
+0 g 3080 2706 N -16 8 29 11 17 -8 h
+0 g 3051 2696 N -17 8 30 11 16 -9 h
+0 g 3021 2685 N -16 9 29 10 17 -8 h
+0 g 2992 2675 N -17 8 30 11 16 -9 h
+0 g 2962 2664 N -16 9 29 10 17 -8 h
+0 g 2933 2654 N -17 8 30 11 16 -9 h
+0 g 2903 2643 N -16 9 29 10 17 -8 h
+0 g 2874 2632 N -17 8 30 11 16 -8 h
+0 g 2844 2622 N -16 8 29 11 17 -9 h
+0 g 2815 2611 N -17 9 30 10 16 -8 h
+0 g 2785 2601 N -16 8 29 11 17 -9 h
+0 g 2756 2590 N -17 9 30 10 16 -8 h
+0 g 2726 2580 N -16 8 29 11 17 -9 h
+0 g 2697 2569 N -17 9 30 10 16 -8 h
+0 g 2667 2558 N -16 8 29 11 17 -8 h
+0 g 2638 2548 N -17 8 30 11 16 -9 h
+0 g 2608 2537 N -16 9 29 10 17 -8 h
+0 g 2579 2527 N -17 8 30 11 16 -9 h
+0 g 2549 2516 N -16 9 29 10 17 -8 h
+0 g 2520 2506 N -17 8 30 11 16 -9 h
+0 g 2490 2495 N -16 9 29 10 17 -8 h
+0 g 2461 2484 N -17 8 30 11 16 -8 h
+0 g 2431 2474 N -16 8 29 11 17 -9 h
+0 g 2402 2463 N -17 9 30 10 16 -8 h
+0 g 2372 2453 N -16 8 29 11 17 -9 h
+0 g 2343 2442 N -17 9 30 10 16 -8 h
+0 g 2313 2432 N -16 8 29 11 17 -9 h
+0 g 2284 2421 N -17 9 30 10 16 -8 h
+0 g 2254 2410 N -16 8 29 11 17 -8 h
+0 g 2225 2400 N -17 8 30 11 16 -9 h
+0 g 2195 2389 N -16 9 29 10 17 -8 h
+0 g 2166 2379 N -17 8 30 11 16 -9 h
+0 g 2136 2368 N -16 9 29 10 17 -8 h
+0 g 2107 2358 N -17 8 30 11 16 -9 h
+0 g 2077 2347 N -16 9 29 10 17 -8 h
+0 g 2048 2336 N -17 8 30 11 16 -8 h
+0 g 2018 2326 N -16 8 29 11 17 -9 h
+0 g 1989 2315 N -17 9 30 10 16 -8 h
+0 g 1959 2305 N -16 8 29 11 17 -9 h
+0 g 1930 2294 N -17 9 30 10 16 -8 h
+0 g 1900 2284 N -16 8 29 11 17 -9 h
+0 g 1871 2273 N -17 9 30 10 16 -8 h
+0 g 1841 2262 N -16 8 29 11 17 -8 h
+0 g 1812 2252 N -17 8 30 10 16 -8 h
+0 g 1782 2241 N -16 8 29 11 17 -8 h
+0 g 1753 2231 N -17 8 30 11 16 -9 h
+0 g 1723 2220 N -16 9 29 10 17 -8 h
+0 g 1694 2210 N -17 8 30 11 16 -9 h
+0 g 1664 2199 N -16 9 29 10 17 -8 h
+0 g 1635 2188 N -17 8 30 11 16 -8 h
+0 g 1605 2178 N -16 8 29 10 17 -8 h
+0 g 1576 2167 N -17 8 30 11 16 -8 h
+0 g 1546 2157 N -16 8 29 11 17 -9 h
+0 g 1517 2146 N -17 9 30 10 16 -8 h
+0 g 1487 2136 N -16 8 29 11 17 -9 h
+0 g 1458 2125 N -17 9 30 10 16 -8 h
+0 g 1428 2115 N -16 8 29 11 17 -9 h
+0 g 1399 2104 N -17 9 30 10 16 -8 h
+0 g 4306 3131 N -17 9 30 10 16 -8 h
+0 g 4276 3121 N -16 8 29 11 17 -9 h
+0 g 4247 3110 N -17 9 30 10 16 -8 h
+0 g 4217 3100 N -16 8 29 11 17 -9 h
+0 g 4188 3089 N -17 9 30 10 16 -8 h
+0 g 4158 3078 N -16 8 29 11 17 -8 h
+0 g 4129 3068 N -17 8 30 11 16 -9 h
+0 g 4099 3057 N -16 9 29 10 17 -8 h
+0 g 4070 3047 N -17 8 30 11 16 -9 h
+0 g 4040 3036 N -16 9 29 10 17 -8 h
+0 g 4011 3026 N -17 8 30 11 16 -9 h
+0 g 3981 3015 N -16 9 29 10 17 -8 h
+0 g 3952 3004 N -17 8 30 11 16 -8 h
+0 g 3922 2994 N -16 8 29 10 17 -8 h
+0 g 3893 2983 N -17 8 30 11 16 -8 h
+0 g 3863 2973 N -16 8 29 11 17 -9 h
+0 g 3834 2962 N -17 9 30 10 16 -8 h
+0 g 3804 2952 N -16 8 29 11 17 -9 h
+0 g 3775 2941 N -17 9 30 10 16 -8 h
+0 g 3745 2930 N -16 8 29 11 17 -8 h
+0 g 3716 2920 N -17 8 30 10 16 -8 h
+0 g 3686 2909 N -16 8 29 11 17 -8 h
+0 g 3657 2899 N -17 8 30 11 16 -9 h
+0 g 3627 2888 N -16 9 29 10 17 -8 h
+0 g 3598 2878 N -17 8 30 11 16 -9 h
+0 g 3568 2867 N -16 9 29 10 17 -8 h
+0 g 3539 2857 N -17 8 30 11 16 -9 h
+0 g 3509 2846 N -16 9 29 10 17 -8 h
+0 g 3480 2835 N -17 8 30 11 16 -8 h
+0 g 3450 2825 N -16 8 29 11 17 -9 h
+0 g 3421 2814 N -17 9 30 10 16 -8 h
+0 g 3391 2804 N -16 8 29 11 17 -9 h
+0 g 3362 2793 N -17 9 30 10 16 -8 h
+0 g 3332 2783 N -16 8 29 11 17 -9 h
+0 g 3303 2772 N -17 9 30 10 16 -8 h
+0 g 3273 2761 N -16 8 29 11 17 -8 h
+0 g 3244 2751 N -17 8 30 11 16 -9 h
+0 g 3214 2740 N -16 9 29 10 17 -8 h
+0 g 3185 2730 N -17 8 29 11 17 -9 h
+0 g 3156 2719 N -17 9 30 10 16 -8 h
+0 g 3126 2709 N -16 8 29 11 17 -9 h
+0 g 3097 2698 N -17 9 30 10 16 -8 h
+0 g 3067 2687 N -16 8 29 11 17 -8 h
+0 g 3038 2677 N -17 8 30 11 16 -9 h
+0 g 3008 2666 N -16 9 29 10 17 -8 h
+0 g 2979 2656 N -17 8 30 11 16 -9 h
+0 g 2949 2645 N -16 9 29 10 17 -8 h
+0 g 2920 2635 N -17 8 30 11 16 -9 h
+0 g 2890 2624 N -16 9 29 10 17 -8 h
+0 g 2861 2613 N -17 8 30 11 16 -8 h
+0 g 2831 2603 N -16 8 29 11 17 -9 h
+0 g 2802 2592 N -17 9 30 10 16 -8 h
+0 g 2772 2582 N -16 8 29 11 17 -9 h
+0 g 2743 2571 N -17 9 30 10 16 -8 h
+0 g 2713 2561 N -16 8 29 11 17 -9 h
+0 g 2684 2550 N -17 9 30 10 16 -8 h
+0 g 2654 2539 N -16 8 29 11 17 -8 h
+0 g 2625 2529 N -17 8 30 11 16 -9 h
+0 g 2595 2518 N -16 9 29 10 17 -8 h
+0 g 2566 2508 N -17 8 30 11 16 -9 h
+0 g 2536 2497 N -16 9 29 10 17 -8 h
+0 g 2507 2487 N -17 8 30 11 16 -9 h
+0 g 2477 2476 N -16 9 29 10 17 -8 h
+0 g 2448 2465 N -17 8 30 11 16 -8 h
+0 g 2418 2455 N -16 8 29 11 17 -9 h
+0 g 2389 2444 N -17 9 30 10 16 -8 h
+0 g 2359 2434 N -16 8 29 11 17 -9 h
+0 g 2330 2423 N -17 9 30 10 16 -8 h
+0 g 2300 2413 N -16 8 29 11 17 -9 h
+0 g 2271 2402 N -17 9 30 10 16 -8 h
+0 g 2241 2391 N -16 8 29 11 17 -8 h
+0 g 2212 2381 N -17 8 30 10 16 -8 h
+0 g 2182 2370 N -16 8 29 11 17 -8 h
+0 g 2153 2360 N -17 8 30 11 16 -9 h
+0 g 2123 2349 N -16 9 29 10 17 -8 h
+0 g 2094 2339 N -17 8 30 11 16 -9 h
+0 g 2064 2328 N -16 9 29 10 17 -8 h
+0 g 2035 2317 N -17 8 30 11 16 -8 h
+0 g 2005 2307 N -16 8 29 10 17 -8 h
+0 g 1976 2296 N -17 8 30 11 16 -8 h
+0 g 1946 2286 N -16 8 29 11 17 -9 h
+0 g 1917 2275 N -17 9 30 10 16 -8 h
+0 g 1887 2265 N -16 8 29 11 17 -9 h
+0 g 1858 2254 N -17 9 30 10 16 -8 h
+0 g 1828 2244 N -16 8 29 11 17 -9 h
+0 g 1799 2233 N -17 9 30 10 16 -8 h
+0 g 1769 2222 N -16 8 29 11 17 -8 h
+0 g 1740 2212 N -17 8 30 11 16 -9 h
+0 g 1710 2201 N -16 9 29 10 17 -8 h
+0 g 1681 2191 N -17 8 30 11 16 -9 h
+0 g 1651 2180 N -16 9 29 10 17 -8 h
+0 g 1622 2170 N -17 8 30 11 16 -9 h
+0 g 1592 2159 N -16 9 29 10 17 -8 h
+0 g 1563 2148 N -17 8 30 11 16 -8 h
+0 g 1533 2138 N -16 8 29 11 17 -9 h
+0 g 1504 2127 N -17 9 30 10 16 -8 h
+0 g 1474 2117 N -16 8 29 11 17 -9 h
+0 g 1445 2106 N -17 9 30 10 16 -8 h
+0 g 1415 2096 N -16 8 29 11 17 -9 h
+0 g 4322 3123 N -16 8 29 10 17 -8 h
+0 g 4293 3112 N -17 8 30 11 16 -8 h
+0 g 4263 3102 N -16 8 29 11 17 -9 h
+0 g 4234 3091 N -17 9 30 10 16 -8 h
+0 g 4204 3081 N -16 8 29 11 17 -9 h
+0 g 4175 3070 N -17 9 30 10 16 -8 h
+0 g 4145 3059 N -16 8 29 11 17 -8 h
+0 g 4116 3049 N -17 8 30 10 16 -8 h
+0 g 4086 3038 N -16 8 29 11 17 -8 h
+0 g 4057 3028 N -17 8 30 11 16 -9 h
+0 g 4027 3017 N -16 9 29 10 17 -8 h
+0 g 3998 3007 N -17 8 30 11 16 -9 h
+0 g 3968 2996 N -16 9 29 10 17 -8 h
+0 g 3939 2986 N -17 8 30 11 16 -9 h
+0 g 3909 2975 N -16 9 29 10 17 -8 h
+0 g 3880 2964 N -17 8 30 11 16 -8 h
+0 g 3850 2954 N -16 8 29 11 17 -9 h
+0 g 3821 2943 N -17 9 30 10 16 -8 h
+0 g 3791 2933 N -16 8 29 11 17 -9 h
+0 g 3762 2922 N -17 9 30 10 16 -8 h
+0 g 3732 2912 N -16 8 29 11 17 -9 h
+0 g 3703 2901 N -17 9 30 10 16 -8 h
+0 g 3673 2890 N -16 8 29 11 17 -8 h
+0 g 3644 2880 N -17 8 30 11 16 -9 h
+0 g 3614 2869 N -16 9 29 10 17 -8 h
+0 g 3585 2859 N -17 8 30 11 16 -9 h
+0 g 3555 2848 N -16 9 29 10 17 -8 h
+0 g 3526 2838 N -17 8 30 11 16 -9 h
+0 g 3496 2827 N -16 9 29 10 17 -8 h
+0 g 3467 2816 N -17 8 30 11 16 -8 h
+0 g 3437 2806 N -16 8 29 11 17 -9 h
+0 g 3408 2795 N -17 9 30 10 16 -8 h
+0 g 3378 2785 N -16 8 29 11 17 -9 h
+0 g 3349 2774 N -17 9 30 10 16 -8 h
+0 g 3319 2764 N -16 8 29 11 17 -9 h
+0 g 3290 2753 N -17 9 30 10 16 -8 h
+0 g 3260 2742 N -16 8 29 11 17 -8 h
+0 g 3231 2732 N -17 8 30 11 16 -9 h
+0 g 3202 2721 N -16 9 29 10 16 -8 h
+0 g 3172 2711 N -16 8 29 11 17 -9 h
+0 g 3143 2700 N -17 9 30 10 16 -8 h
+0 g 3113 2690 N -16 8 29 11 17 -9 h
+0 g 3084 2679 N -17 9 30 10 16 -8 h
+0 g 3054 2668 N -16 8 29 11 17 -8 h
+0 g 3025 2658 N -17 8 30 11 16 -9 h
+0 g 2995 2647 N -16 9 29 10 17 -8 h
+0 g 2966 2637 N -17 8 30 11 16 -9 h
+0 g 2936 2626 N -16 9 29 10 17 -8 h
+0 g 2907 2616 N -17 8 30 11 16 -9 h
+0 g 2877 2605 N -16 9 29 10 17 -8 h
+0 g 2848 2594 N -17 8 30 11 16 -8 h
+0 g 2818 2584 N -16 8 29 11 17 -9 h
+0 g 2789 2573 N -17 9 30 10 16 -8 h
+0 g 2759 2563 N -16 8 29 11 17 -9 h
+0 g 2730 2552 N -17 9 30 10 16 -8 h
+0 g 2700 2542 N -16 8 29 11 17 -9 h
+0 g 2671 2531 N -17 9 30 10 16 -8 h
+0 g 2641 2520 N -16 8 29 11 17 -8 h
+0 g 2612 2510 N -17 8 30 10 16 -8 h
+0 g 2582 2499 N -16 8 29 11 17 -8 h
+0 g 2553 2489 N -17 8 30 11 16 -9 h
+0 g 2523 2478 N -16 9 29 10 17 -8 h
+0 g 2494 2468 N -17 8 30 11 16 -9 h
+0 g 2464 2457 N -16 9 29 10 17 -8 h
+0 g 2435 2446 N -17 8 30 11 16 -8 h
+0 g 2405 2436 N -16 8 29 10 17 -8 h
+0 g 2376 2425 N -17 8 30 11 16 -8 h
+0 g 2346 2415 N -16 8 29 11 17 -9 h
+0 g 2317 2404 N -17 9 30 10 16 -8 h
+0 g 2287 2394 N -16 8 29 11 17 -9 h
+0 g 2258 2383 N -17 9 30 10 16 -8 h
+0 g 2228 2373 N -16 8 29 11 17 -9 h
+0 g 2199 2362 N -17 9 30 10 16 -8 h
+0 g 2169 2351 N -16 8 29 11 17 -8 h
+0 g 2140 2341 N -17 8 30 11 16 -9 h
+0 g 2110 2330 N -16 9 29 10 17 -8 h
+0 g 2081 2320 N -17 8 30 11 16 -9 h
+0 g 2051 2309 N -16 9 29 10 17 -8 h
+0 g 2022 2299 N -17 8 30 11 16 -9 h
+0 g 1992 2288 N -16 9 29 10 17 -8 h
+0 g 1963 2277 N -17 8 30 11 16 -8 h
+0 g 1933 2267 N -16 8 29 11 17 -9 h
+0 g 1904 2256 N -17 9 30 10 16 -8 h
+0 g 1874 2246 N -16 8 29 11 17 -9 h
+0 g 1845 2235 N -17 9 30 10 16 -8 h
+0 g 1815 2225 N -16 8 29 11 17 -9 h
+0 g 1786 2214 N -17 9 30 10 16 -8 h
+0 g 1756 2203 N -16 8 29 11 17 -8 h
+0 g 1727 2193 N -17 8 30 11 16 -9 h
+0 g 1697 2182 N -16 9 29 10 17 -8 h
+0 g 1668 2172 N -17 8 30 11 16 -9 h
+0 g 1638 2161 N -16 9 29 10 17 -8 h
+0 g 1609 2151 N -17 8 30 11 16 -9 h
+0 g 1579 2140 N -16 9 29 10 17 -8 h
+0 g 1550 2129 N -17 8 30 11 16 -8 h
+0 g 1520 2119 N -16 8 29 11 17 -9 h
+0 g 1491 2108 N -17 9 30 10 16 -8 h
+0 g 1461 2098 N -16 8 29 11 17 -9 h
+0 g 1432 2087 N -17 9 30 10 16 -8 h
+0 g 4339 3115 N -17 8 30 11 16 -9 h
+0 g 4309 3104 N -16 9 29 10 17 -8 h
+0 g 4280 3093 N -17 8 30 11 16 -8 h
+0 g 4250 3083 N -16 8 29 11 17 -9 h
+0 g 4221 3072 N -17 9 30 10 16 -8 h
+0 g 4191 3062 N -16 8 29 11 17 -9 h
+0 g 4162 3051 N -17 9 30 10 16 -8 h
+0 g 4132 3041 N -16 8 29 11 17 -9 h
+0 g 4103 3030 N -17 9 30 10 16 -8 h
+0 g 4073 3019 N -16 8 29 11 17 -8 h
+0 g 4044 3009 N -17 8 30 11 16 -9 h
+0 g 4014 2998 N -16 9 29 10 17 -8 h
+0 g 3985 2988 N -17 8 30 11 16 -9 h
+0 g 3955 2977 N -16 9 29 10 17 -8 h
+0 g 3926 2967 N -17 8 30 11 16 -9 h
+0 g 3896 2956 N -16 9 29 10 17 -8 h
+0 g 3867 2945 N -17 8 30 11 16 -8 h
+0 g 3837 2935 N -16 8 29 11 17 -9 h
+0 g 3808 2924 N -17 9 30 10 16 -8 h
+0 g 3778 2914 N -16 8 29 11 17 -9 h
+0 g 3749 2903 N -17 9 30 10 16 -8 h
+0 g 3719 2893 N -16 8 29 11 17 -9 h
+0 g 3690 2882 N -17 9 30 10 16 -8 h
+0 g 3660 2871 N -16 8 29 11 17 -8 h
+0 g 3631 2861 N -17 8 30 11 16 -9 h
+0 g 3601 2850 N -16 9 29 10 17 -8 h
+0 g 3572 2840 N -17 8 30 11 16 -9 h
+0 g 3542 2829 N -16 9 29 10 17 -8 h
+0 g 3513 2819 N -17 8 30 11 16 -9 h
+0 g 3483 2808 N -16 9 29 10 17 -8 h
+0 g 3454 2797 N -17 8 30 11 16 -8 h
+0 g 3424 2787 N -16 8 29 11 17 -9 h
+0 g 3395 2776 N -17 9 30 10 16 -8 h
+0 g 3365 2766 N -16 8 29 11 17 -9 h
+0 g 3336 2755 N -17 9 30 10 16 -8 h
+0 g 3306 2745 N -16 8 29 11 17 -9 h
+0 g 3277 2734 N -17 9 30 10 16 -8 h
+0 g 3247 2723 N -16 8 29 11 17 -8 h
+0 g 3218 2713 N -17 8 30 11 16 -9 h
+0 g 3189 2702 N -16 9 29 10 16 -8 h
+0 g 3159 2692 N -16 8 29 11 17 -9 h
+0 g 3130 2681 N -17 9 30 10 16 -8 h
+0 g 3100 2671 N -16 8 29 11 17 -9 h
+0 g 3071 2660 N -17 9 30 10 16 -8 h
+0 g 3041 2649 N -16 8 29 11 17 -8 h
+0 g 3012 2639 N -17 8 30 10 16 -8 h
+0 g 2982 2628 N -16 8 29 11 17 -8 h
+0 g 2953 2618 N -17 8 30 11 16 -9 h
+0 g 2923 2607 N -16 9 29 10 17 -8 h
+0 g 2894 2597 N -17 8 30 11 16 -9 h
+0 g 2864 2586 N -16 9 29 10 17 -8 h
+0 g 2835 2575 N -17 8 30 11 16 -8 h
+0 g 2805 2565 N -16 8 29 10 17 -8 h
+0 g 2776 2554 N -17 8 30 11 16 -8 h
+0 g 2746 2544 N -16 8 29 11 17 -9 h
+0 g 2717 2533 N -17 9 30 10 16 -8 h
+0 g 2687 2523 N -16 8 29 11 17 -9 h
+0 g 2658 2512 N -17 9 30 10 16 -8 h
+0 g 2628 2502 N -16 8 29 11 17 -9 h
+0 g 2599 2491 N -17 9 30 10 16 -8 h
+0 g 2569 2480 N -16 8 29 11 17 -8 h
+0 g 2540 2470 N -17 8 30 11 16 -9 h
+0 g 2510 2459 N -16 9 29 10 17 -8 h
+0 g 2481 2449 N -17 8 30 11 16 -9 h
+0 g 2451 2438 N -16 9 29 10 17 -8 h
+0 g 2422 2428 N -17 8 30 11 16 -9 h
+0 g 2392 2417 N -16 9 29 10 17 -8 h
+0 g 2363 2406 N -17 8 30 11 16 -8 h
+0 g 2333 2396 N -16 8 29 11 17 -9 h
+0 g 2304 2385 N -17 9 30 10 16 -8 h
+0 g 2274 2375 N -16 8 29 11 17 -9 h
+0 g 2245 2364 N -17 9 30 10 16 -8 h
+0 g 2215 2354 N -16 8 29 11 17 -9 h
+0 g 2186 2343 N -17 9 30 10 16 -8 h
+0 g 2156 2332 N -16 8 29 11 17 -8 h
+0 g 2127 2322 N -17 8 30 11 16 -9 h
+0 g 2097 2311 N -16 9 29 10 17 -8 h
+0 g 2068 2301 N -17 8 30 11 16 -9 h
+0 g 2038 2290 N -16 9 29 10 17 -8 h
+0 g 2009 2280 N -17 8 30 11 16 -9 h
+0 g 1979 2269 N -16 9 29 10 17 -8 h
+0 g 1950 2258 N -17 8 30 11 16 -8 h
+0 g 1920 2248 N -16 8 29 11 17 -9 h
+0 g 1891 2237 N -17 9 30 10 16 -8 h
+0 g 1861 2227 N -16 8 29 11 17 -9 h
+0 g 1832 2216 N -17 9 30 10 16 -8 h
+0 g 1802 2206 N -16 8 29 11 17 -9 h
+0 g 1773 2195 N -17 9 30 10 16 -8 h
+0 g 1743 2184 N -16 8 29 11 17 -8 h
+0 g 1714 2174 N -17 8 30 11 16 -9 h
+0 g 1684 2163 N -16 9 29 10 17 -8 h
+0 g 1655 2153 N -17 8 30 11 16 -9 h
+0 g 1625 2142 N -16 9 29 10 17 -8 h
+0 g 1596 2132 N -17 8 30 11 16 -9 h
+0 g 1566 2121 N -16 9 29 10 17 -8 h
+0 g 1537 2110 N -17 8 30 11 16 -8 h
+0 g 1507 2100 N -16 8 29 11 17 -9 h
+0 g 1478 2089 N -17 9 30 10 16 -8 h
+0 g 1448 2079 N -16 8 29 11 17 -9 h
+0 g 4355 3106 N -16 9 29 10 17 -8 h
+0 g 4326 3096 N -17 8 30 11 16 -9 h
+0 g 4296 3085 N -16 9 29 10 17 -8 h
+0 g 4267 3074 N -17 8 30 11 16 -8 h
+0 g 4237 3064 N -16 8 29 11 17 -9 h
+0 g 4208 3053 N -17 9 30 10 16 -8 h
+0 g 4178 3043 N -16 8 29 11 17 -9 h
+0 g 4149 3032 N -17 9 30 10 16 -8 h
+0 g 4119 3022 N -16 8 29 11 17 -9 h
+0 g 4090 3011 N -17 9 30 10 16 -8 h
+0 g 4060 3000 N -16 8 29 11 17 -8 h
+0 g 4031 2990 N -17 8 30 11 16 -9 h
+0 g 4001 2979 N -16 9 29 10 17 -8 h
+0 g 3972 2969 N -17 8 30 11 16 -9 h
+0 g 3942 2958 N -16 9 29 10 17 -8 h
+0 g 3913 2948 N -17 8 30 11 16 -9 h
+0 g 3883 2937 N -16 9 29 10 17 -8 h
+0 g 3854 2926 N -17 8 30 11 16 -8 h
+0 g 3824 2916 N -16 8 29 11 17 -9 h
+0 g 3795 2905 N -17 9 30 10 16 -8 h
+0 g 3765 2895 N -16 8 29 11 17 -9 h
+0 g 3736 2884 N -17 9 30 10 16 -8 h
+0 g 3706 2874 N -16 8 29 11 17 -9 h
+0 g 3677 2863 N -17 9 30 10 16 -8 h
+0 g 3647 2852 N -16 8 29 11 17 -8 h
+0 g 3618 2842 N -17 8 30 11 16 -9 h
+0 g 3588 2831 N -16 9 29 10 17 -8 h
+0 g 3559 2821 N -17 8 30 11 16 -9 h
+0 g 3529 2810 N -16 9 29 10 17 -8 h
+0 g 3500 2800 N -17 8 30 11 16 -9 h
+0 g 3470 2789 N -16 9 29 10 17 -8 h
+0 g 3441 2778 N -17 8 30 11 16 -8 h
+0 g 3411 2768 N -16 8 29 10 17 -8 h
+0 g 3382 2757 N -17 8 30 11 16 -8 h
+0 g 3352 2747 N -16 8 29 11 17 -9 h
+0 g 3323 2736 N -17 9 30 10 16 -8 h
+0 g 3293 2726 N -16 8 29 11 17 -9 h
+0 g 3264 2715 N -17 9 30 10 16 -8 h
+0 g 3234 2704 N -16 8 29 11 17 -8 h
+0 g 3205 2694 N -17 8 29 10 17 -8 h
+0 g 3176 2683 N -17 8 30 11 16 -8 h
+0 g 3146 2673 N -16 8 29 11 17 -9 h
+0 g 3117 2662 N -17 9 30 10 16 -8 h
+0 g 3087 2652 N -16 8 29 11 17 -9 h
+0 g 3058 2641 N -17 9 30 10 16 -8 h
+0 g 3028 2631 N -16 8 29 11 17 -9 h
+0 g 2999 2620 N -17 9 30 10 16 -8 h
+.0001 g 2969 2609 N -16 8 29 11 17 -8 h
+.0001 g 2940 2599 N -17 8 30 10 16 -8 h
+.0001 g 2910 2588 N -16 8 29 11 17 -8 h
+.0001 g 2881 2578 N -17 8 30 10 16 -8 h
+.0001 g 2851 2567 N -16 8 29 11 17 -8 h
+.0001 g 2822 2557 N -17 8 30 11 16 -9 h
+.0001 g 2792 2546 N -16 9 29 10 17 -8 h
+.0001 g 2763 2535 N -17 8 30 11 16 -8 h
+.0001 g 2733 2525 N -16 8 29 10 17 -8 h
+.0173 g 2704 2514 N -17 8 30 -79 16 82 h
+.0486 g 2674 2504 N -16 -82 29 -63 17 155 h
+.0627 g 2645 2493 N -17 -155 30 11 16 155 h
+.0627 g 2615 2483 N -16 -155 29 10 17 155 h
+.0627 g 2586 2472 N -17 -155 30 10 16 156 h
+.0628 g 2556 2461 N -16 -156 29 11 17 156 h
+.0628 g 2527 2451 N -17 -156 30 10 16 156 h
+.0629 g 2497 2440 N -16 -156 29 11 17 156 h
+.0629 g 2468 2430 N -17 -156 30 10 16 156 h
+.063 g 2438 2419 N -16 -156 29 11 17 156 h
+.063 g 2409 2409 N -17 -156 30 10 16 156 h
+.063 g 2379 2398 N -16 -156 29 11 17 156 h
+.0631 g 2350 2387 N -17 -156 30 10 16 157 h
+.0631 g 2320 2377 N -16 -157 29 11 17 156 h
+.0632 g 2291 2366 N -17 -156 30 10 16 157 h
+.0632 g 2261 2356 N -16 -157 29 10 17 157 h
+.0633 g 2232 2345 N -17 -157 30 11 16 157 h
+.0633 g 2202 2335 N -16 -157 29 10 17 157 h
+.0633 g 2173 2324 N -17 -157 30 11 16 157 h
+.0634 g 2143 2313 N -16 -157 29 10 17 158 h
+.0492 g 2114 2303 N -17 -158 30 85 16 83 h
+.0176 g 2084 2292 N -16 -83 29 102 17 -8 h
+.0001 g 2055 2282 N -17 8 30 10 16 -8 h
+.0001 g 2025 2271 N -16 8 29 11 17 -8 h
+.0001 g 1996 2261 N -17 8 30 10 16 -8 h
+.0001 g 1966 2250 N -16 8 29 11 17 -8 h
+.0001 g 1937 2239 N -17 8 30 11 16 -8 h
+.0001 g 1907 2229 N -16 8 29 10 17 -8 h
+.0001 g 1878 2218 N -17 8 30 11 16 -8 h
+.0001 g 1848 2208 N -16 8 29 10 17 -8 h
+.0001 g 1819 2197 N -17 8 30 11 16 -8 h
+0 g 1789 2187 N -16 8 29 11 17 -9 h
+0 g 1760 2176 N -17 9 30 10 16 -8 h
+0 g 1730 2165 N -16 8 29 11 17 -8 h
+0 g 1701 2155 N -17 8 30 10 16 -8 h
+0 g 1671 2144 N -16 8 29 11 17 -8 h
+0 g 1642 2134 N -17 8 30 11 16 -9 h
+0 g 1612 2123 N -16 9 29 10 17 -8 h
+0 g 1583 2113 N -17 8 30 11 16 -9 h
+0 g 1553 2102 N -16 9 29 10 17 -8 h
+0 g 1524 2091 N -17 8 30 11 16 -8 h
+0 g 1494 2081 N -16 8 29 10 17 -8 h
+0 g 1465 2070 N -17 8 30 11 16 -8 h
+0 g 4372 3098 N -17 8 30 11 16 -9 h
+0 g 4342 3087 N -16 9 29 10 17 -8 h
+0 g 4313 3077 N -17 8 30 11 16 -9 h
+0 g 4283 3066 N -16 9 29 10 17 -8 h
+0 g 4254 3055 N -17 8 30 11 16 -8 h
+0 g 4224 3045 N -16 8 29 11 17 -9 h
+0 g 4195 3034 N -17 9 30 10 16 -8 h
+0 g 4165 3024 N -16 8 29 11 17 -9 h
+0 g 4136 3013 N -17 9 30 10 16 -8 h
+0 g 4106 3003 N -16 8 29 11 17 -9 h
+0 g 4077 2992 N -17 9 30 10 16 -8 h
+0 g 4047 2981 N -16 8 29 11 17 -8 h
+0 g 4018 2971 N -17 8 30 11 16 -9 h
+0 g 3988 2960 N -16 9 29 10 17 -8 h
+0 g 3959 2950 N -17 8 30 11 16 -9 h
+0 g 3929 2939 N -16 9 29 10 17 -8 h
+0 g 3900 2929 N -17 8 30 11 16 -9 h
+0 g 3870 2918 N -16 9 29 10 17 -8 h
+0 g 3841 2907 N -17 8 30 11 16 -8 h
+0 g 3811 2897 N -16 8 29 10 17 -8 h
+0 g 3782 2886 N -17 8 30 11 16 -8 h
+0 g 3752 2876 N -16 8 29 11 17 -9 h
+0 g 3723 2865 N -17 9 30 10 16 -8 h
+0 g 3693 2855 N -16 8 29 11 17 -9 h
+0 g 3664 2844 N -17 9 30 10 16 -8 h
+0 g 3634 2833 N -16 8 29 11 17 -8 h
+0 g 3605 2823 N -17 8 30 10 16 -8 h
+0 g 3575 2812 N -16 8 29 11 17 -8 h
+0 g 3546 2802 N -17 8 30 11 16 -9 h
+0 g 3516 2791 N -16 9 29 10 17 -8 h
+0 g 3487 2781 N -17 8 30 11 16 -9 h
+0 g 3457 2770 N -16 9 29 10 17 -8 h
+0 g 3428 2760 N -17 8 30 11 16 -9 h
+0 g 3398 2749 N -16 9 29 10 17 -8 h
+0 g 3369 2738 N -17 8 30 11 16 -8 h
+0 g 3339 2728 N -16 8 29 11 17 -9 h
+.0001 g 3310 2717 N -17 9 30 10 16 -8 h
+.0002 g 3280 2707 N -16 8 29 10 17 -8 h
+.0003 g 3251 2696 N -17 8 30 11 16 -8 h
+.0003 g 3222 2686 N -16 8 29 10 16 -8 h
+.0003 g 3192 2675 N -16 8 29 11 17 -8 h
+.0003 g 3163 2664 N -17 8 30 10 16 -7 h
+.0003 g 3133 2654 N -16 7 29 11 17 -8 h
+.0003 g 3104 2643 N -17 8 30 10 16 -7 h
+.0003 g 3074 2633 N -16 7 29 11 17 -8 h
+.0003 g 3045 2622 N -17 8 30 11 16 -8 h
+.0014 g 3015 2612 N -16 8 29 4 17 -2 h
+.0036 g 2986 2601 N -17 2 30 5 16 4 h
+.0047 g 2956 2591 N -16 -4 29 11 17 3 h
+.0047 g 2927 2580 N -17 -3 30 11 16 3 h
+.0047 g 2897 2570 N -16 -3 29 10 17 3 h
+.0047 g 2868 2559 N -17 -3 30 11 16 3 h
+.0047 g 2838 2548 N -16 -3 29 10 17 4 h
+.0047 g 2809 2538 N -17 -4 30 11 16 3 h
+.0047 g 2779 2527 N -16 -3 29 10 17 4 h
+.0047 g 2750 2517 N -17 -4 30 11 16 3 h
+.2025 g 2720 2596 N -16 -3 29 -933 17 857 h
+.4643 g 2691 2659 N -17 -857 30 -251 16 1045 h
+.5284 g 2661 2648 N -16 -1045 29 11 17 1045 h
+.5285 g 2632 2638 N -17 -1045 30 10 16 1045 h
+.5287 g 2602 2628 N -16 -1045 29 10 17 1045 h
+.5289 g 2573 2617 N -17 -1045 30 10 16 1046 h
+.529 g 2543 2607 N -16 -1046 29 11 17 1045 h
+.5292 g 2514 2596 N -17 -1045 30 10 16 1046 h
+.5294 g 2484 2586 N -16 -1046 29 10 17 1046 h
+.5295 g 2455 2575 N -17 -1046 30 11 16 1046 h
+.5297 g 2425 2565 N -16 -1046 29 10 17 1046 h
+.5298 g 2396 2554 N -17 -1046 30 10 16 1047 h
+.53 g 2366 2544 N -16 -1047 29 10 17 1047 h
+.5302 g 2337 2533 N -17 -1047 30 11 16 1047 h
+.5303 g 2307 2523 N -16 -1047 29 10 17 1047 h
+.5305 g 2278 2513 N -17 -1047 30 10 16 1047 h
+.5307 g 2248 2502 N -16 -1047 29 10 17 1048 h
+.5308 g 2219 2492 N -17 -1048 30 11 16 1047 h
+.531 g 2189 2481 N -16 -1047 29 10 17 1048 h
+.5312 g 2160 2471 N -17 -1048 30 10 16 1048 h
+.4672 g 2130 2386 N -16 -1048 29 271 17 862 h
+.204 g 2101 2284 N -17 -862 30 960 16 4 h
+.0048 g 2071 2274 N -16 -4 29 11 17 3 h
+.0048 g 2042 2263 N -17 -3 30 10 16 4 h
+.0048 g 2012 2253 N -16 -4 29 11 17 3 h
+.0048 g 1983 2242 N -17 -3 30 10 16 4 h
+.0048 g 1953 2231 N -16 -4 29 11 17 4 h
+.0049 g 1924 2221 N -17 -4 30 11 16 3 h
+.0049 g 1894 2210 N -16 -3 29 10 17 4 h
+.0049 g 1865 2200 N -17 -4 30 11 16 3 h
+.0037 g 1835 2189 N -16 -3 29 16 17 -2 h
+.0015 g 1806 2178 N -17 2 30 16 16 -7 h
+.0003 g 1776 2168 N -16 7 29 11 17 -8 h
+.0003 g 1747 2157 N -17 8 30 11 16 -8 h
+.0003 g 1717 2147 N -16 8 29 10 17 -8 h
+.0003 g 1688 2136 N -17 8 30 11 16 -8 h
+.0003 g 1658 2125 N -16 8 29 10 17 -7 h
+.0003 g 1629 2115 N -17 7 30 11 16 -8 h
+.0003 g 1599 2104 N -16 8 29 10 17 -7 h
+.0003 g 1570 2094 N -17 7 30 11 16 -8 h
+.0002 g 1540 2083 N -16 8 29 11 17 -8 h
+.0001 g 1511 2073 N -17 8 30 11 16 -9 h
+0 g 1481 2062 N -16 9 29 10 17 -8 h
+0 g 4388 3089 N -16 9 29 10 17 -8 h
+0 g 4359 3079 N -17 8 30 11 16 -9 h
+0 g 4329 3068 N -16 9 29 10 17 -8 h
+0 g 4300 3058 N -17 8 30 11 16 -9 h
+0 g 4270 3047 N -16 9 29 10 17 -8 h
+0 g 4241 3036 N -17 8 30 11 16 -8 h
+0 g 4211 3026 N -16 8 29 10 17 -8 h
+0 g 4182 3015 N -17 8 30 11 16 -8 h
+0 g 4152 3005 N -16 8 29 11 17 -9 h
+0 g 4123 2994 N -17 9 30 10 16 -8 h
+0 g 4093 2984 N -16 8 29 11 17 -9 h
+0 g 4064 2973 N -17 9 30 10 16 -8 h
+0 g 4034 2962 N -16 8 29 11 17 -8 h
+0 g 4005 2952 N -17 8 30 10 16 -8 h
+0 g 3975 2941 N -16 8 29 11 17 -8 h
+0 g 3946 2931 N -17 8 30 11 16 -9 h
+0 g 3916 2920 N -16 9 29 10 17 -8 h
+0 g 3887 2910 N -17 8 30 11 16 -9 h
+0 g 3857 2899 N -16 9 29 10 17 -8 h
+0 g 3828 2889 N -17 8 30 11 16 -9 h
+0 g 3798 2878 N -16 9 29 10 17 -8 h
+0 g 3769 2867 N -17 8 30 11 16 -8 h
+0 g 3739 2857 N -16 8 29 11 17 -9 h
+0 g 3710 2846 N -17 9 30 10 16 -8 h
+0 g 3680 2836 N -16 8 29 11 17 -9 h
+0 g 3651 2825 N -17 9 30 10 16 -8 h
+0 g 3621 2815 N -16 8 29 11 17 -9 h
+0 g 3592 2804 N -17 9 30 10 16 -8 h
+0 g 3562 2793 N -16 8 29 11 17 -8 h
+0 g 3533 2783 N -17 8 30 11 16 -9 h
+0 g 3503 2772 N -16 9 29 10 17 -8 h
+0 g 3474 2762 N -17 8 30 11 16 -9 h
+0 g 3444 2751 N -16 9 29 10 17 -8 h
+0 g 3415 2741 N -17 8 30 11 16 -9 h
+0 g 3385 2730 N -16 9 29 10 17 -8 h
+0 g 3356 2719 N -17 8 30 11 16 -8 h
+.0001 g 3326 2709 N -16 8 29 10 17 -8 h
+.0004 g 3297 2699 N -17 8 30 10 16 -8 h
+.0006 g 3267 2688 N -16 8 29 11 17 -8 h
+.0006 g 3238 2678 N -17 8 29 11 17 -9 h
+.0006 g 3209 2667 N -17 9 30 10 16 -8 h
+.0006 g 3179 2657 N -16 8 29 11 17 -9 h
+.0006 g 3150 2646 N -17 9 30 10 16 -8 h
+.0006 g 3120 2636 N -16 8 29 11 17 -9 h
+.0006 g 3091 2625 N -17 9 30 10 16 -8 h
+.0006 g 3061 2614 N -16 8 29 11 17 -8 h
+.0028 g 3032 2610 N -17 8 30 5 16 -9 h
+.0071 g 3002 2605 N -16 9 29 5 17 -9 h
+.0092 g 2973 2594 N -17 9 30 10 16 -8 h
+.0092 g 2943 2583 N -16 8 29 11 17 -8 h
+.0092 g 2914 2573 N -17 8 30 10 16 -8 h
+.0092 g 2884 2562 N -16 8 29 11 17 -8 h
+.0092 g 2855 2552 N -17 8 30 11 16 -9 h
+.0092 g 2825 2541 N -16 9 29 10 17 -8 h
+.0092 g 2796 2531 N -17 8 30 11 16 -9 h
+.0092 g 2766 2520 N -16 9 29 10 17 -8 h
+.3704 g 2737 3453 N -17 8 30 -933 16 -8 h
+.8314 g 2707 3704 N -16 8 29 -250 17 -9 h
+.9314 g 2678 3693 N -17 9 30 10 16 -8 h
+.9317 g 2648 3683 N -16 8 29 10 17 -8 h
+.9319 g 2619 3673 N -17 8 30 11 16 -9 h
+.9322 g 2589 3663 N -16 9 29 10 17 -9 h
+.9324 g 2560 3652 N -17 9 30 10 16 -8 h
+.9326 g 2530 3642 N -16 8 29 10 17 -8 h
+.9329 g 2501 3632 N -17 8 30 11 16 -9 h
+.9331 g 2471 3621 N -16 9 29 10 17 -8 h
+.9334 g 2442 3611 N -17 8 30 10 16 -8 h
+.9336 g 2412 3601 N -16 8 29 10 17 -8 h
+.9339 g 2383 3591 N -17 8 30 11 16 -9 h
+.9341 g 2353 3580 N -16 9 29 10 17 -8 h
+.9343 g 2324 3570 N -17 8 30 10 16 -8 h
+.9346 g 2294 3560 N -16 8 29 10 17 -8 h
+.9348 g 2265 3550 N -17 8 30 11 16 -9 h
+.9351 g 2235 3539 N -16 9 29 10 17 -8 h
+.9353 g 2206 3529 N -17 8 30 10 16 -8 h
+.9356 g 2176 3519 N -16 8 29 10 17 -8 h
+.8359 g 2147 3248 N -17 8 30 272 16 -9 h
+.3728 g 2117 2288 N -16 9 29 960 17 -9 h
+.0094 g 2088 2277 N -17 9 30 10 16 -8 h
+.0094 g 2058 2267 N -16 8 29 11 17 -9 h
+.0094 g 2029 2256 N -17 9 30 10 16 -8 h
+.0094 g 1999 2246 N -16 8 29 11 17 -9 h
+.0095 g 1970 2235 N -17 9 30 10 16 -8 h
+.0095 g 1940 2224 N -16 8 29 11 17 -8 h
+.0095 g 1911 2214 N -17 8 30 11 16 -9 h
+.0095 g 1881 2203 N -16 9 29 10 17 -8 h
+.0073 g 1852 2187 N -17 8 30 16 16 -8 h
+.0028 g 1822 2171 N -16 8 29 17 17 -9 h
+.0006 g 1793 2160 N -17 9 30 10 16 -8 h
+.0006 g 1763 2149 N -16 8 29 11 17 -8 h
+.0006 g 1734 2139 N -17 8 30 10 16 -8 h
+.0006 g 1704 2128 N -16 8 29 11 17 -8 h
+.0006 g 1675 2118 N -17 8 30 11 16 -9 h
+.0006 g 1645 2107 N -16 9 29 10 17 -8 h
+.0006 g 1616 2097 N -17 8 30 11 16 -9 h
+.0006 g 1586 2086 N -16 9 29 10 17 -8 h
+.0005 g 1557 2075 N -17 8 30 11 16 -8 h
+.0002 g 1527 2064 N -16 8 29 11 17 -8 h
+0 g 1498 2054 N -17 8 30 11 16 -9 h
+0 g 4405 3081 N -17 8 30 10 16 -8 h
+0 g 4375 3070 N -16 8 29 11 17 -8 h
+0 g 4346 3060 N -17 8 30 11 16 -9 h
+0 g 4316 3049 N -16 9 29 10 17 -8 h
+0 g 4287 3039 N -17 8 30 11 16 -9 h
+0 g 4257 3028 N -16 9 29 10 17 -8 h
+0 g 4228 3018 N -17 8 30 11 16 -9 h
+0 g 4198 3007 N -16 9 29 10 17 -8 h
+0 g 4169 2996 N -17 8 30 11 16 -8 h
+0 g 4139 2986 N -16 8 29 11 17 -9 h
+0 g 4110 2975 N -17 9 30 10 16 -8 h
+0 g 4080 2965 N -16 8 29 11 17 -9 h
+0 g 4051 2954 N -17 9 30 10 16 -8 h
+0 g 4021 2944 N -16 8 29 11 17 -9 h
+0 g 3992 2933 N -17 9 30 10 16 -8 h
+0 g 3962 2922 N -16 8 29 11 17 -8 h
+0 g 3933 2912 N -17 8 30 11 16 -9 h
+0 g 3903 2901 N -16 9 29 10 17 -8 h
+0 g 3874 2891 N -17 8 30 11 16 -9 h
+0 g 3844 2880 N -16 9 29 10 17 -8 h
+0 g 3815 2870 N -17 8 30 11 16 -9 h
+0 g 3785 2859 N -16 9 29 10 17 -8 h
+0 g 3756 2848 N -17 8 30 11 16 -8 h
+0 g 3726 2838 N -16 8 29 11 17 -9 h
+0 g 3697 2827 N -17 9 30 10 16 -8 h
+0 g 3667 2817 N -16 8 29 11 17 -9 h
+0 g 3638 2806 N -17 9 30 10 16 -8 h
+0 g 3608 2796 N -16 8 29 11 17 -9 h
+0 g 3579 2785 N -17 9 30 10 16 -8 h
+0 g 3549 2774 N -16 8 29 11 17 -8 h
+0 g 3520 2764 N -17 8 30 11 16 -9 h
+0 g 3490 2753 N -16 9 29 10 17 -8 h
+0 g 3461 2743 N -17 8 30 11 16 -9 h
+0 g 3431 2732 N -16 9 29 10 17 -8 h
+0 g 3402 2722 N -17 8 30 11 16 -9 h
+0 g 3372 2711 N -16 9 29 10 17 -8 h
+.0001 g 3343 2701 N -17 8 30 11 16 -9 h
+.0004 g 3313 2691 N -16 9 29 10 17 -9 h
+.0006 g 3284 2680 N -17 9 30 10 16 -8 h
+.0006 g 3255 2669 N -16 8 29 11 16 -8 h
+.0006 g 3225 2659 N -16 8 29 10 17 -8 h
+.0006 g 3196 2648 N -17 8 30 11 16 -8 h
+.0006 g 3166 2638 N -16 8 29 11 17 -9 h
+.0006 g 3137 2627 N -17 9 30 10 16 -8 h
+.0006 g 3107 2617 N -16 8 29 11 17 -9 h
+.0006 g 3078 2606 N -17 9 30 10 16 -8 h
+.0028 g 3048 2601 N -16 8 29 5 17 -8 h
+.0071 g 3019 2596 N -17 8 30 5 16 -8 h
+.0092 g 2989 2586 N -16 8 29 11 17 -9 h
+.0092 g 2960 2575 N -17 9 30 10 16 -8 h
+.0092 g 2930 2565 N -16 8 29 11 17 -9 h
+.0092 g 2901 2554 N -17 9 30 10 16 -8 h
+.0092 g 2871 2543 N -16 8 29 11 17 -8 h
+.0092 g 2842 2533 N -17 8 30 11 16 -9 h
+.0092 g 2812 2522 N -16 9 29 10 17 -8 h
+.0092 g 2783 2512 N -17 8 30 11 16 -9 h
+.3704 g 2753 3445 N -16 9 29 -933 17 -9 h
+.8314 g 2724 3695 N -17 9 30 -251 16 -8 h
+.9314 g 2694 3685 N -16 8 29 11 17 -9 h
+.9317 g 2665 3675 N -17 9 30 10 16 -9 h
+.9319 g 2635 3664 N -16 9 29 10 17 -8 h
+.9322 g 2606 3654 N -17 8 30 10 16 -8 h
+.9324 g 2576 3644 N -16 8 29 11 17 -9 h
+.9326 g 2547 3634 N -17 9 30 10 16 -9 h
+.9329 g 2517 3623 N -16 9 29 10 17 -8 h
+.9331 g 2488 3613 N -17 8 30 10 16 -8 h
+.9334 g 2458 3603 N -16 8 29 11 17 -9 h
+.9336 g 2429 3593 N -17 9 30 10 16 -9 h
+.9339 g 2399 3582 N -16 9 29 10 17 -8 h
+.9341 g 2370 3572 N -17 8 30 10 16 -8 h
+.9343 g 2340 3562 N -16 8 29 11 17 -9 h
+.9346 g 2311 3552 N -17 9 30 10 16 -9 h
+.9348 g 2281 3541 N -16 9 29 10 17 -8 h
+.9351 g 2252 3531 N -17 8 30 10 16 -8 h
+.9353 g 2222 3521 N -16 8 29 11 17 -9 h
+.9356 g 2193 3511 N -17 9 30 10 16 -9 h
+.8359 g 2163 3239 N -16 9 29 271 17 -8 h
+.3728 g 2134 2279 N -17 8 30 960 16 -8 h
+.0094 g 2104 2269 N -16 8 29 11 17 -9 h
+.0094 g 2075 2258 N -17 9 30 10 16 -8 h
+.0094 g 2045 2248 N -16 8 29 11 17 -9 h
+.0094 g 2016 2237 N -17 9 30 10 16 -8 h
+.0095 g 1986 2227 N -16 8 29 11 17 -9 h
+.0095 g 1957 2216 N -17 9 30 10 16 -8 h
+.0095 g 1927 2205 N -16 8 29 11 17 -8 h
+.0095 g 1898 2195 N -17 8 30 10 16 -8 h
+.0073 g 1868 2179 N -16 8 29 17 17 -9 h
+.0028 g 1839 2162 N -17 9 30 16 16 -8 h
+.0006 g 1809 2152 N -16 8 29 11 17 -9 h
+.0006 g 1780 2141 N -17 9 30 10 16 -8 h
+.0006 g 1750 2131 N -16 8 29 11 17 -9 h
+.0006 g 1721 2120 N -17 9 30 10 16 -8 h
+.0006 g 1691 2109 N -16 8 29 11 17 -8 h
+.0006 g 1662 2099 N -17 8 30 11 16 -9 h
+.0006 g 1632 2088 N -16 9 29 10 17 -8 h
+.0006 g 1603 2078 N -17 8 30 11 16 -9 h
+.0005 g 1573 2067 N -16 9 29 11 17 -9 h
+.0002 g 1544 2056 N -17 9 30 11 16 -9 h
+0 g 1514 2045 N -16 9 29 10 17 -8 h
+0 g 4421 3073 N -16 8 29 11 17 -9 h
+0 g 4392 3062 N -17 9 30 10 16 -8 h
+0 g 4362 3051 N -16 8 29 11 17 -8 h
+0 g 4333 3041 N -17 8 30 11 16 -9 h
+0 g 4303 3030 N -16 9 29 10 17 -8 h
+0 g 4274 3020 N -17 8 30 11 16 -9 h
+0 g 4244 3009 N -16 9 29 10 17 -8 h
+0 g 4215 2999 N -17 8 30 11 16 -9 h
+0 g 4185 2988 N -16 9 29 10 17 -8 h
+0 g 4156 2977 N -17 8 30 11 16 -8 h
+0 g 4126 2967 N -16 8 29 11 17 -9 h
+0 g 4097 2956 N -17 9 30 10 16 -8 h
+0 g 4067 2946 N -16 8 29 11 17 -9 h
+0 g 4038 2935 N -17 9 30 10 16 -8 h
+0 g 4008 2925 N -16 8 29 11 17 -9 h
+0 g 3979 2914 N -17 9 30 10 16 -8 h
+0 g 3949 2903 N -16 8 29 11 17 -8 h
+0 g 3920 2893 N -17 8 30 11 16 -9 h
+0 g 3890 2882 N -16 9 29 10 17 -8 h
+0 g 3861 2872 N -17 8 30 11 16 -9 h
+0 g 3831 2861 N -16 9 29 10 17 -8 h
+0 g 3802 2851 N -17 8 30 11 16 -9 h
+0 g 3772 2840 N -16 9 29 10 17 -8 h
+0 g 3743 2829 N -17 8 30 11 16 -8 h
+0 g 3713 2819 N -16 8 29 11 17 -9 h
+0 g 3684 2808 N -17 9 30 10 16 -8 h
+0 g 3654 2798 N -16 8 29 11 17 -9 h
+0 g 3625 2787 N -17 9 30 10 16 -8 h
+0 g 3595 2777 N -16 8 29 11 17 -9 h
+0 g 3566 2766 N -17 9 30 10 16 -8 h
+0 g 3536 2755 N -16 8 29 11 17 -8 h
+0 g 3507 2745 N -17 8 30 11 16 -9 h
+0 g 3477 2734 N -16 9 29 10 17 -8 h
+0 g 3448 2724 N -17 8 30 11 16 -9 h
+0 g 3418 2713 N -16 9 29 10 17 -8 h
+0 g 3389 2703 N -17 8 30 11 16 -9 h
+.0001 g 3359 2692 N -16 9 29 10 17 -8 h
+.0004 g 3330 2682 N -17 8 30 10 16 -8 h
+.0006 g 3300 2672 N -16 8 29 11 17 -9 h
+.0006 g 3271 2661 N -17 9 30 10 16 -8 h
+.0006 g 3242 2651 N -16 8 29 11 16 -9 h
+.0006 g 3212 2640 N -16 9 29 10 17 -8 h
+.0006 g 3183 2629 N -17 8 30 11 16 -8 h
+.0006 g 3153 2619 N -16 8 29 11 17 -9 h
+.0006 g 3124 2608 N -17 9 30 10 16 -8 h
+.0006 g 3094 2598 N -16 8 29 11 17 -9 h
+.0028 g 3065 2593 N -17 9 30 5 16 -9 h
+.0071 g 3035 2588 N -16 9 29 5 17 -9 h
+.0092 g 3006 2577 N -17 9 30 10 16 -8 h
+.0092 g 2976 2567 N -16 8 29 11 17 -9 h
+.0092 g 2947 2556 N -17 9 30 10 16 -8 h
+.0092 g 2917 2546 N -16 8 29 11 17 -9 h
+.0092 g 2888 2535 N -17 9 30 10 16 -8 h
+.0092 g 2858 2524 N -16 8 29 11 17 -8 h
+.0092 g 2829 2514 N -17 8 30 11 16 -9 h
+.0092 g 2799 2503 N -16 9 29 10 17 -8 h
+.3704 g 2770 3436 N -17 8 30 -933 16 -8 h
+.8314 g 2740 3687 N -16 8 29 -250 17 -9 h
+.9314 g 2711 3676 N -17 9 30 10 16 -8 h
+.9317 g 2681 3666 N -16 8 29 10 17 -8 h
+.9319 g 2652 3656 N -17 8 30 10 16 -8 h
+.9322 g 2622 3646 N -16 8 29 11 17 -9 h
+.9324 g 2593 3635 N -17 9 30 10 16 -8 h
+.9326 g 2563 3625 N -16 8 29 10 17 -8 h
+.9329 g 2534 3615 N -17 8 30 10 16 -8 h
+.9331 g 2504 3605 N -16 8 29 11 17 -9 h
+.9334 g 2475 3594 N -17 9 30 10 16 -8 h
+.9336 g 2445 3584 N -16 8 29 10 17 -8 h
+.9339 g 2416 3574 N -17 8 30 10 16 -8 h
+.9341 g 2386 3564 N -16 8 29 11 17 -9 h
+.9343 g 2357 3553 N -17 9 30 10 16 -8 h
+.9346 g 2327 3543 N -16 8 29 10 17 -8 h
+.9348 g 2298 3533 N -17 8 30 10 16 -8 h
+.9351 g 2268 3523 N -16 8 29 11 17 -9 h
+.9353 g 2239 3512 N -17 9 30 10 16 -8 h
+.9356 g 2209 3502 N -16 8 29 10 17 -8 h
+.8359 g 2180 3231 N -17 8 30 271 16 -8 h
+.3728 g 2150 2271 N -16 8 29 960 17 -8 h
+.0094 g 2121 2260 N -17 8 30 11 16 -8 h
+.0094 g 2091 2250 N -16 8 29 11 17 -9 h
+.0094 g 2062 2239 N -17 9 30 10 16 -8 h
+.0094 g 2032 2229 N -16 8 29 11 17 -9 h
+.0095 g 2003 2218 N -17 9 30 10 16 -8 h
+.0095 g 1973 2208 N -16 8 29 11 17 -9 h
+.0095 g 1944 2197 N -17 9 30 10 16 -8 h
+.0095 g 1914 2187 N -16 8 29 11 17 -9 h
+.0073 g 1885 2170 N -17 9 30 16 16 -8 h
+.0028 g 1855 2154 N -16 8 29 17 17 -9 h
+.0006 g 1826 2143 N -17 9 30 10 16 -8 h
+.0006 g 1796 2133 N -16 8 29 11 17 -9 h
+.0006 g 1767 2122 N -17 9 30 10 16 -8 h
+.0006 g 1737 2112 N -16 8 29 11 17 -9 h
+.0006 g 1708 2101 N -17 9 30 10 16 -8 h
+.0006 g 1678 2090 N -16 8 29 11 17 -8 h
+.0006 g 1649 2080 N -17 8 30 11 16 -9 h
+.0006 g 1619 2069 N -16 9 29 10 17 -8 h
+.0005 g 1590 2058 N -17 8 30 11 16 -8 h
+.0002 g 1560 2047 N -16 8 29 11 17 -8 h
+0 g 1531 2037 N -17 8 30 11 16 -9 h
+0 g 4438 3064 N -17 9 30 10 16 -8 h
+0 g 4408 3054 N -16 8 29 11 17 -9 h
+0 g 4379 3043 N -17 9 30 10 16 -8 h
+0 g 4349 3032 N -16 8 29 11 17 -8 h
+0 g 4320 3022 N -17 8 30 11 16 -9 h
+0 g 4290 3011 N -16 9 29 10 17 -8 h
+0 g 4261 3001 N -17 8 30 11 16 -9 h
+0 g 4231 2990 N -16 9 29 10 17 -8 h
+0 g 4202 2980 N -17 8 30 11 16 -9 h
+0 g 4172 2969 N -16 9 29 10 17 -8 h
+0 g 4143 2958 N -17 8 30 11 16 -8 h
+0 g 4113 2948 N -16 8 29 11 17 -9 h
+0 g 4084 2937 N -17 9 30 10 16 -8 h
+0 g 4054 2927 N -16 8 29 11 17 -9 h
+0 g 4025 2916 N -17 9 30 10 16 -8 h
+0 g 3995 2906 N -16 8 29 11 17 -9 h
+0 g 3966 2895 N -17 9 30 10 16 -8 h
+0 g 3936 2884 N -16 8 29 11 17 -8 h
+0 g 3907 2874 N -17 8 30 11 16 -9 h
+0 g 3877 2863 N -16 9 29 10 17 -8 h
+0 g 3848 2853 N -17 8 30 11 16 -9 h
+0 g 3818 2842 N -16 9 29 10 17 -8 h
+0 g 3789 2832 N -17 8 30 11 16 -9 h
+0 g 3759 2821 N -16 9 29 10 17 -8 h
+0 g 3730 2810 N -17 8 30 11 16 -8 h
+0 g 3700 2800 N -16 8 29 11 17 -9 h
+0 g 3671 2789 N -17 9 30 10 16 -8 h
+0 g 3641 2779 N -16 8 29 11 17 -9 h
+0 g 3612 2768 N -17 9 30 10 16 -8 h
+0 g 3582 2758 N -16 8 29 11 17 -9 h
+0 g 3553 2747 N -17 9 30 10 16 -8 h
+0 g 3523 2736 N -16 8 29 11 17 -8 h
+0 g 3494 2726 N -17 8 30 10 16 -8 h
+0 g 3464 2715 N -16 8 29 11 17 -8 h
+0 g 3435 2705 N -17 8 30 11 16 -9 h
+0 g 3405 2694 N -16 9 29 10 17 -8 h
+.0001 g 3376 2684 N -17 8 30 10 16 -8 h
+.0004 g 3346 2674 N -16 8 29 11 17 -9 h
+.0006 g 3317 2663 N -17 9 30 10 16 -8 h
+.0006 g 3287 2653 N -16 8 29 11 17 -9 h
+.0006 g 3258 2642 N -17 9 29 10 17 -8 h
+.0006 g 3229 2632 N -17 8 30 11 16 -9 h
+.0006 g 3199 2621 N -16 9 29 10 17 -8 h
+.0006 g 3170 2610 N -17 8 30 11 16 -8 h
+.0006 g 3140 2600 N -16 8 29 11 17 -9 h
+.0006 g 3111 2589 N -17 9 30 10 16 -8 h
+.0028 g 3081 2584 N -16 8 29 5 17 -8 h
+.0071 g 3052 2579 N -17 8 30 5 16 -8 h
+.0092 g 3022 2569 N -16 8 29 11 17 -9 h
+.0092 g 2993 2558 N -17 9 30 10 16 -8 h
+.0092 g 2963 2548 N -16 8 29 11 17 -9 h
+.0092 g 2934 2537 N -17 9 30 10 16 -8 h
+.0092 g 2904 2527 N -16 8 29 11 17 -9 h
+.0092 g 2875 2516 N -17 9 30 10 16 -8 h
+.0092 g 2845 2505 N -16 8 29 11 17 -8 h
+.0092 g 2816 2495 N -17 8 30 10 16 -8 h
+.3704 g 2786 3428 N -16 8 29 -933 17 -8 h
+.8314 g 2757 3678 N -17 8 30 -250 16 -8 h
+.9314 g 2727 3668 N -16 8 29 10 17 -8 h
+.9317 g 2698 3658 N -17 8 30 11 16 -9 h
+.9319 g 2668 3648 N -16 9 29 10 17 -9 h
+.9322 g 2639 3637 N -17 9 30 10 16 -8 h
+.9324 g 2609 3627 N -16 8 29 10 17 -8 h
+.9326 g 2580 3617 N -17 8 30 11 16 -9 h
+.9329 g 2550 3607 N -16 9 29 10 17 -9 h
+.9331 g 2521 3596 N -17 9 30 10 16 -8 h
+.9334 g 2491 3586 N -16 8 29 10 17 -8 h
+.9336 g 2462 3576 N -17 8 30 11 16 -9 h
+.9339 g 2432 3566 N -16 9 29 10 17 -9 h
+.9341 g 2403 3555 N -17 9 30 10 16 -8 h
+.9343 g 2373 3545 N -16 8 29 10 17 -8 h
+.9346 g 2344 3535 N -17 8 30 11 16 -9 h
+.9348 g 2314 3525 N -16 9 29 10 17 -9 h
+.9351 g 2285 3514 N -17 9 30 10 16 -8 h
+.9353 g 2255 3504 N -16 8 29 10 17 -8 h
+.9356 g 2226 3494 N -17 8 30 11 16 -9 h
+.8359 g 2196 3223 N -16 9 29 271 17 -9 h
+.3728 g 2167 2263 N -17 9 30 960 16 -9 h
+.0094 g 2137 2252 N -16 9 29 10 17 -8 h
+.0094 g 2108 2241 N -17 8 30 11 16 -8 h
+.0094 g 2078 2231 N -16 8 29 10 17 -8 h
+.0094 g 2049 2220 N -17 8 30 11 16 -8 h
+.0095 g 2019 2210 N -16 8 29 11 17 -9 h
+.0095 g 1990 2199 N -17 9 30 10 16 -8 h
+.0095 g 1960 2189 N -16 8 29 11 17 -9 h
+.0095 g 1931 2178 N -17 9 30 10 16 -8 h
+.0073 g 1901 2162 N -16 8 29 17 17 -9 h
+.0028 g 1872 2145 N -17 9 30 16 16 -8 h
+.0006 g 1842 2135 N -16 8 29 11 17 -9 h
+.0006 g 1813 2124 N -17 9 30 10 16 -8 h
+.0006 g 1783 2114 N -16 8 29 11 17 -9 h
+.0006 g 1754 2103 N -17 9 30 10 16 -8 h
+.0006 g 1724 2093 N -16 8 29 11 17 -9 h
+.0006 g 1695 2082 N -17 9 30 10 16 -8 h
+.0006 g 1665 2071 N -16 8 29 11 17 -8 h
+.0006 g 1636 2061 N -17 8 30 11 16 -9 h
+.0005 g 1606 2050 N -16 9 29 11 17 -9 h
+.0002 g 1577 2039 N -17 9 30 10 16 -8 h
+0 g 1547 2028 N -16 8 29 11 17 -8 h
+0 g 4454 3056 N -16 8 29 11 17 -9 h
+0 g 4425 3045 N -17 9 30 10 16 -8 h
+0 g 4395 3035 N -16 8 29 11 17 -9 h
+0 g 4366 3024 N -17 9 30 10 16 -8 h
+0 g 4336 3013 N -16 8 29 11 17 -8 h
+0 g 4307 3003 N -17 8 30 11 16 -9 h
+0 g 4277 2992 N -16 9 29 10 17 -8 h
+0 g 4248 2982 N -17 8 30 11 16 -9 h
+0 g 4218 2971 N -16 9 29 10 17 -8 h
+0 g 4189 2961 N -17 8 30 11 16 -9 h
+0 g 4159 2950 N -16 9 29 10 17 -8 h
+0 g 4130 2939 N -17 8 30 11 16 -8 h
+0 g 4100 2929 N -16 8 29 10 17 -8 h
+0 g 4071 2918 N -17 8 30 11 16 -8 h
+0 g 4041 2908 N -16 8 29 11 17 -9 h
+0 g 4012 2897 N -17 9 30 10 16 -8 h
+0 g 3982 2887 N -16 8 29 11 17 -9 h
+0 g 3953 2876 N -17 9 30 10 16 -8 h
+0 g 3923 2865 N -16 8 29 11 17 -8 h
+0 g 3894 2855 N -17 8 30 10 16 -8 h
+0 g 3864 2844 N -16 8 29 11 17 -8 h
+0 g 3835 2834 N -17 8 30 11 16 -9 h
+0 g 3805 2823 N -16 9 29 10 17 -8 h
+0 g 3776 2813 N -17 8 30 11 16 -9 h
+0 g 3746 2802 N -16 9 29 10 17 -8 h
+0 g 3717 2791 N -17 8 30 11 16 -8 h
+0 g 3687 2781 N -16 8 29 10 17 -8 h
+0 g 3658 2770 N -17 8 30 11 16 -8 h
+0 g 3628 2760 N -16 8 29 11 17 -9 h
+0 g 3599 2749 N -17 9 30 10 16 -8 h
+0 g 3569 2739 N -16 8 29 11 17 -9 h
+0 g 3540 2728 N -17 9 30 10 16 -8 h
+0 g 3510 2718 N -16 8 29 11 17 -9 h
+0 g 3481 2707 N -17 9 30 10 16 -8 h
+0 g 3451 2696 N -16 8 29 11 17 -8 h
+0 g 3422 2686 N -17 8 30 11 16 -9 h
+.0001 g 3392 2676 N -16 9 29 10 17 -9 h
+.0004 g 3363 2665 N -17 9 30 10 16 -8 h
+.0006 g 3333 2655 N -16 8 29 11 17 -9 h
+.0006 g 3304 2644 N -17 9 30 10 16 -8 h
+.0006 g 3275 2634 N -16 8 29 11 16 -9 h
+.0006 g 3245 2623 N -16 9 29 10 17 -8 h
+.0006 g 3216 2613 N -17 8 30 11 16 -9 h
+.0006 g 3186 2602 N -16 9 29 10 17 -8 h
+.0006 g 3157 2591 N -17 8 30 11 16 -8 h
+.0006 g 3127 2581 N -16 8 29 11 17 -9 h
+.0028 g 3098 2576 N -17 9 30 4 16 -8 h
+.0071 g 3068 2571 N -16 8 29 5 17 -8 h
+.0092 g 3039 2560 N -17 8 30 11 16 -8 h
+.0092 g 3009 2550 N -16 8 29 11 17 -9 h
+.0092 g 2980 2539 N -17 9 30 10 16 -8 h
+.0092 g 2950 2529 N -16 8 29 11 17 -9 h
+.0092 g 2921 2518 N -17 9 30 10 16 -8 h
+.0092 g 2891 2508 N -16 8 29 11 17 -9 h
+.0092 g 2862 2497 N -17 9 30 10 16 -8 h
+.0092 g 2832 2487 N -16 8 29 11 17 -9 h
+.3704 g 2803 3420 N -17 9 30 -933 16 -9 h
+.8314 g 2773 3670 N -16 9 29 -251 17 -8 h
+.9314 g 2744 3660 N -17 8 30 11 16 -9 h
+.9317 g 2714 3649 N -16 9 29 10 17 -8 h
+.9319 g 2685 3639 N -17 8 30 10 16 -8 h
+.9322 g 2655 3629 N -16 8 29 10 17 -8 h
+.9324 g 2626 3619 N -17 8 30 11 16 -9 h
+.9326 g 2596 3608 N -16 9 29 10 17 -8 h
+.9329 g 2567 3598 N -17 8 30 10 16 -8 h
+.9331 g 2537 3588 N -16 8 29 10 17 -8 h
+.9334 g 2508 3578 N -17 8 30 11 16 -9 h
+.9336 g 2478 3567 N -16 9 29 10 17 -8 h
+.9339 g 2449 3557 N -17 8 30 10 16 -8 h
+.9341 g 2419 3547 N -16 8 29 10 17 -8 h
+.9343 g 2390 3537 N -17 8 30 11 16 -9 h
+.9346 g 2360 3526 N -16 9 29 10 17 -8 h
+.9348 g 2331 3516 N -17 8 30 10 16 -8 h
+.9351 g 2301 3506 N -16 8 29 11 17 -9 h
+.9353 g 2272 3496 N -17 9 30 10 16 -9 h
+.9356 g 2242 3485 N -16 9 29 10 17 -8 h
+.8359 g 2213 3214 N -17 8 30 271 16 -8 h
+.3728 g 2183 2254 N -16 8 29 960 17 -8 h
+.0094 g 2154 2244 N -17 8 30 11 16 -9 h
+.0094 g 2124 2233 N -16 9 29 10 17 -8 h
+.0094 g 2095 2223 N -17 8 30 11 16 -9 h
+.0094 g 2065 2212 N -16 9 29 10 17 -8 h
+.0095 g 2036 2201 N -17 8 30 11 16 -8 h
+.0095 g 2006 2191 N -16 8 29 11 17 -9 h
+.0095 g 1977 2180 N -17 9 30 10 16 -8 h
+.0095 g 1947 2170 N -16 8 29 11 17 -9 h
+.0073 g 1918 2153 N -17 9 30 16 16 -8 h
+.0028 g 1888 2137 N -16 8 29 16 17 -8 h
+.0006 g 1859 2126 N -17 8 30 11 16 -8 h
+.0006 g 1829 2116 N -16 8 29 11 17 -9 h
+.0006 g 1800 2105 N -17 9 30 10 16 -8 h
+.0006 g 1770 2095 N -16 8 29 11 17 -9 h
+.0006 g 1741 2084 N -17 9 30 10 16 -8 h
+.0006 g 1711 2074 N -16 8 29 11 17 -9 h
+.0006 g 1682 2063 N -17 9 30 10 16 -8 h
+.0006 g 1652 2052 N -16 8 29 11 17 -8 h
+.0005 g 1623 2041 N -17 8 30 11 16 -8 h
+.0002 g 1593 2031 N -16 8 29 11 17 -9 h
+0 g 1564 2020 N -17 9 30 10 16 -8 h
+0 g 4471 3047 N -17 8 30 11 16 -8 h
+0 g 4441 3037 N -16 8 29 11 17 -9 h
+0 g 4412 3026 N -17 9 30 10 16 -8 h
+0 g 4382 3016 N -16 8 29 11 17 -9 h
+0 g 4353 3005 N -17 9 30 10 16 -8 h
+0 g 4323 2994 N -16 8 29 11 17 -8 h
+0 g 4294 2984 N -17 8 30 10 16 -8 h
+0 g 4264 2973 N -16 8 29 11 17 -8 h
+0 g 4235 2963 N -17 8 30 11 16 -9 h
+0 g 4205 2952 N -16 9 29 10 17 -8 h
+0 g 4176 2942 N -17 8 30 11 16 -9 h
+0 g 4146 2931 N -16 9 29 10 17 -8 h
+0 g 4117 2921 N -17 8 30 11 16 -9 h
+0 g 4087 2910 N -16 9 29 10 17 -8 h
+0 g 4058 2899 N -17 8 30 11 16 -8 h
+0 g 4028 2889 N -16 8 29 11 17 -9 h
+0 g 3999 2878 N -17 9 30 10 16 -8 h
+0 g 3969 2868 N -16 8 29 11 17 -9 h
+0 g 3940 2857 N -17 9 30 10 16 -8 h
+0 g 3910 2847 N -16 8 29 11 17 -9 h
+0 g 3881 2836 N -17 9 30 10 16 -8 h
+0 g 3851 2825 N -16 8 29 11 17 -8 h
+0 g 3822 2815 N -17 8 30 11 16 -9 h
+0 g 3792 2804 N -16 9 29 10 17 -8 h
+0 g 3763 2794 N -17 8 30 11 16 -9 h
+0 g 3733 2783 N -16 9 29 10 17 -8 h
+0 g 3704 2773 N -17 8 30 11 16 -9 h
+0 g 3674 2762 N -16 9 29 10 17 -8 h
+0 g 3645 2751 N -17 8 30 11 16 -8 h
+0 g 3615 2741 N -16 8 29 11 17 -9 h
+0 g 3586 2730 N -17 9 30 10 16 -8 h
+0 g 3556 2720 N -16 8 29 11 17 -9 h
+0 g 3527 2709 N -17 9 30 10 16 -8 h
+0 g 3497 2699 N -16 8 29 11 17 -9 h
+0 g 3468 2688 N -17 9 30 10 16 -8 h
+0 g 3438 2677 N -16 8 29 11 17 -8 h
+.0001 g 3409 2667 N -17 8 30 11 16 -9 h
+.0002 g 3379 2657 N -16 9 29 10 17 -9 h
+.0003 g 3350 2646 N -17 9 30 11 16 -9 h
+.0003 g 3320 2636 N -16 9 29 10 17 -9 h
+.0003 g 3291 2625 N -17 9 30 11 16 -9 h
+.0003 g 3262 2615 N -16 9 29 10 16 -9 h
+.0003 g 3232 2604 N -16 9 29 11 17 -9 h
+.0003 g 3203 2594 N -17 9 30 10 16 -9 h
+.0003 g 3173 2583 N -16 9 29 11 17 -9 h
+.0003 g 3144 2572 N -17 9 30 11 16 -9 h
+.0014 g 3114 2568 N -16 9 29 10 17 -15 h
+.0037 g 3085 2563 N -17 15 30 10 16 -20 h
+.0048 g 3055 2552 N -16 20 29 11 17 -20 h
+.0049 g 3026 2541 N -17 20 30 10 16 -19 h
+.0049 g 2996 2531 N -16 19 29 11 17 -20 h
+.0049 g 2967 2520 N -17 20 30 10 16 -19 h
+.0049 g 2937 2510 N -16 19 29 11 17 -20 h
+.0049 g 2908 2499 N -17 20 30 11 16 -20 h
+.0049 g 2878 2489 N -16 20 29 10 17 -20 h
+.0049 g 2849 2478 N -17 20 30 11 16 -20 h
+.2176 g 2819 3411 N -16 20 29 -158 17 -795 h
+.503 g 2790 3662 N -17 795 30 -108 16 -938 h
+.5758 g 2760 3651 N -16 938 29 10 17 -937 h
+.576 g 2731 3641 N -17 937 30 11 16 -938 h
+.5762 g 2701 3631 N -16 938 29 10 17 -938 h
+.5763 g 2672 3621 N -17 938 30 11 16 -939 h
+.5765 g 2642 3610 N -16 939 29 10 17 -938 h
+.5767 g 2613 3600 N -17 938 30 10 16 -938 h
+.5769 g 2583 3590 N -16 938 29 11 17 -939 h
+.5771 g 2554 3580 N -17 939 30 10 16 -939 h
+.5773 g 2524 3569 N -16 939 29 11 17 -939 h
+.5775 g 2495 3559 N -17 939 30 10 16 -939 h
+.5776 g 2465 3549 N -16 939 29 10 17 -939 h
+.5778 g 2436 3539 N -17 939 30 11 16 -940 h
+.578 g 2406 3528 N -16 940 29 10 17 -939 h
+.5782 g 2377 3518 N -17 939 30 11 16 -940 h
+.5784 g 2347 3508 N -16 940 29 10 17 -940 h
+.5786 g 2318 3497 N -17 940 30 10 16 -939 h
+.5788 g 2288 3487 N -16 939 29 11 17 -940 h
+.579 g 2259 3477 N -17 940 30 10 16 -940 h
+.5063 g 2229 3206 N -16 940 29 130 17 -799 h
+.2193 g 2200 2246 N -17 799 30 181 16 -20 h
+.005 g 2170 2235 N -16 20 29 11 17 -20 h
+.005 g 2141 2225 N -17 20 30 10 16 -20 h
+.005 g 2111 2214 N -16 20 29 11 17 -20 h
+.005 g 2082 2204 N -17 20 30 10 16 -20 h
+.005 g 2052 2193 N -16 20 29 11 17 -20 h
+.005 g 2023 2182 N -17 20 30 11 16 -20 h
+.005 g 1993 2172 N -16 20 29 10 17 -20 h
+.005 g 1964 2161 N -17 20 30 11 16 -20 h
+.0038 g 1934 2145 N -16 20 29 11 17 -15 h
+.0015 g 1905 2129 N -17 15 30 11 16 -10 h
+.0003 g 1875 2118 N -16 10 29 10 17 -9 h
+.0003 g 1846 2107 N -17 9 30 11 16 -9 h
+.0003 g 1816 2097 N -16 9 29 10 17 -9 h
+.0003 g 1787 2086 N -17 9 30 11 16 -9 h
+.0003 g 1757 2076 N -16 9 29 10 17 -9 h
+.0003 g 1728 2065 N -17 9 30 11 16 -9 h
+.0003 g 1698 2055 N -16 9 29 11 17 -10 h
+.0003 g 1669 2044 N -17 10 30 10 16 -9 h
+.0002 g 1639 2033 N -16 9 29 11 17 -9 h
+.0001 g 1610 2022 N -17 9 30 10 16 -8 h
+0 g 1580 2012 N -16 8 29 11 17 -9 h
+0 g 4487 3039 N -16 9 29 10 17 -8 h
+0 g 4458 3028 N -17 8 30 11 16 -8 h
+0 g 4428 3018 N -16 8 29 11 17 -9 h
+0 g 4399 3007 N -17 9 30 10 16 -8 h
+0 g 4369 2997 N -16 8 29 11 17 -9 h
+0 g 4340 2986 N -17 9 30 10 16 -8 h
+0 g 4310 2976 N -16 8 29 11 17 -9 h
+0 g 4281 2965 N -17 9 30 10 16 -8 h
+0 g 4251 2954 N -16 8 29 11 17 -8 h
+0 g 4222 2944 N -17 8 30 11 16 -9 h
+0 g 4192 2933 N -16 9 29 10 17 -8 h
+0 g 4163 2923 N -17 8 30 11 16 -9 h
+0 g 4133 2912 N -16 9 29 10 17 -8 h
+0 g 4104 2902 N -17 8 30 11 16 -9 h
+0 g 4074 2891 N -16 9 29 10 17 -8 h
+0 g 4045 2880 N -17 8 30 11 16 -8 h
+0 g 4015 2870 N -16 8 29 11 17 -9 h
+0 g 3986 2859 N -17 9 30 10 16 -8 h
+0 g 3956 2849 N -16 8 29 11 17 -9 h
+0 g 3927 2838 N -17 9 30 10 16 -8 h
+0 g 3897 2828 N -16 8 29 11 17 -9 h
+0 g 3868 2817 N -17 9 30 10 16 -8 h
+0 g 3838 2806 N -16 8 29 11 17 -8 h
+0 g 3809 2796 N -17 8 30 11 16 -9 h
+0 g 3779 2785 N -16 9 29 10 17 -8 h
+0 g 3750 2775 N -17 8 30 11 16 -9 h
+0 g 3720 2764 N -16 9 29 10 17 -8 h
+0 g 3691 2754 N -17 8 30 11 16 -9 h
+0 g 3661 2743 N -16 9 29 10 17 -8 h
+0 g 3632 2732 N -17 8 30 11 16 -8 h
+0 g 3602 2722 N -16 8 29 11 17 -9 h
+0 g 3573 2711 N -17 9 30 10 16 -8 h
+0 g 3543 2701 N -16 8 29 11 17 -9 h
+0 g 3514 2690 N -17 9 30 10 16 -8 h
+0 g 3484 2680 N -16 8 29 11 17 -9 h
+0 g 3455 2669 N -17 9 30 10 16 -8 h
+0 g 3425 2658 N -16 8 29 11 17 -8 h
+0 g 3396 2648 N -17 8 30 11 16 -9 h
+0 g 3366 2637 N -16 9 29 10 17 -8 h
+0 g 3337 2627 N -17 8 30 11 16 -9 h
+0 g 3307 2616 N -16 9 29 10 17 -8 h
+0 g 3278 2606 N -17 8 29 11 17 -9 h
+0 g 3249 2595 N -17 9 30 10 16 -8 h
+0 g 3219 2585 N -16 8 29 11 17 -9 h
+0 g 3190 2574 N -17 9 30 11 16 -9 h
+0 g 3160 2563 N -16 9 29 10 17 -8 h
+.0001 g 3131 2553 N -17 8 30 11 16 -9 h
+.0002 g 3101 2543 N -16 9 29 10 17 -9 h
+.0003 g 3072 2532 N -17 9 30 11 16 -9 h
+.0003 g 3042 2522 N -16 9 29 10 17 -9 h
+.0003 g 3013 2511 N -17 9 30 11 16 -9 h
+.0003 g 2983 2501 N -16 9 29 10 17 -9 h
+.0003 g 2954 2490 N -17 9 30 11 16 -9 h
+.0003 g 2924 2479 N -16 9 29 11 17 -9 h
+.0003 g 2895 2469 N -17 9 30 10 16 -9 h
+.0003 g 2865 2458 N -16 9 29 11 17 -9 h
+.0324 g 2836 2616 N -17 9 30 10 16 -177 h
+.0873 g 2806 2724 N -16 177 29 11 17 -296 h
+.1101 g 2777 2714 N -17 296 30 10 16 -296 h
+.1101 g 2747 2703 N -16 296 29 11 17 -296 h
+.1102 g 2718 2693 N -17 296 30 11 16 -297 h
+.1103 g 2688 2682 N -16 297 29 10 17 -296 h
+.1103 g 2659 2672 N -17 296 30 11 16 -297 h
+.1104 g 2629 2662 N -16 297 29 10 17 -297 h
+.1105 g 2600 2651 N -17 297 30 11 16 -297 h
+.1105 g 2570 2641 N -16 297 29 10 17 -297 h
+.1106 g 2541 2630 N -17 297 30 11 16 -297 h
+.1107 g 2511 2620 N -16 297 29 11 17 -298 h
+.1107 g 2482 2610 N -17 298 30 10 16 -298 h
+.1108 g 2452 2599 N -16 298 29 11 17 -298 h
+.1108 g 2423 2589 N -17 298 30 10 16 -298 h
+.1109 g 2393 2578 N -16 298 29 11 17 -298 h
+.111 g 2364 2568 N -17 298 30 10 16 -298 h
+.111 g 2334 2558 N -16 298 29 11 17 -299 h
+.1111 g 2305 2547 N -17 299 30 11 16 -299 h
+.1112 g 2275 2537 N -16 299 29 10 17 -299 h
+.0884 g 2246 2407 N -17 299 30 11 16 -180 h
+.0329 g 2216 2226 N -16 180 29 10 17 -9 h
+.0003 g 2187 2215 N -17 9 30 11 16 -9 h
+.0003 g 2157 2205 N -16 9 29 10 17 -9 h
+.0003 g 2128 2194 N -17 9 30 11 16 -9 h
+.0003 g 2098 2184 N -16 9 29 11 17 -10 h
+.0003 g 2069 2173 N -17 10 30 10 16 -9 h
+.0003 g 2039 2162 N -16 9 29 11 17 -9 h
+.0003 g 2010 2152 N -17 9 30 10 16 -9 h
+.0003 g 1980 2141 N -16 9 29 11 17 -9 h
+.0002 g 1951 2130 N -17 9 30 10 16 -8 h
+.0001 g 1921 2119 N -16 8 29 11 17 -8 h
+0 g 1892 2109 N -17 8 30 11 16 -9 h
+0 g 1862 2098 N -16 9 29 10 17 -8 h
+0 g 1833 2088 N -17 8 30 11 16 -9 h
+0 g 1803 2077 N -16 9 29 10 17 -8 h
+0 g 1774 2067 N -17 8 30 11 16 -9 h
+0 g 1744 2056 N -16 9 29 10 17 -8 h
+0 g 1715 2045 N -17 8 30 11 16 -8 h
+0 g 1685 2035 N -16 8 29 11 17 -9 h
+0 g 1656 2024 N -17 9 30 10 16 -8 h
+0 g 1626 2014 N -16 8 29 11 17 -9 h
+0 g 1597 2003 N -17 9 30 10 16 -8 h
+0 g 4504 3031 N -17 8 30 11 16 -9 h
+0 g 4474 3020 N -16 9 29 10 17 -8 h
+0 g 4445 3009 N -17 8 30 11 16 -8 h
+0 g 4415 2999 N -16 8 29 11 17 -9 h
+0 g 4386 2988 N -17 9 30 10 16 -8 h
+0 g 4356 2978 N -16 8 29 11 17 -9 h
+0 g 4327 2967 N -17 9 30 10 16 -8 h
+0 g 4297 2957 N -16 8 29 11 17 -9 h
+0 g 4268 2946 N -17 9 30 10 16 -8 h
+0 g 4238 2935 N -16 8 29 11 17 -8 h
+0 g 4209 2925 N -17 8 30 11 16 -9 h
+0 g 4179 2914 N -16 9 29 10 17 -8 h
+0 g 4150 2904 N -17 8 30 11 16 -9 h
+0 g 4120 2893 N -16 9 29 10 17 -8 h
+0 g 4091 2883 N -17 8 30 11 16 -9 h
+0 g 4061 2872 N -16 9 29 10 17 -8 h
+0 g 4032 2861 N -17 8 30 11 16 -8 h
+0 g 4002 2851 N -16 8 29 11 17 -9 h
+0 g 3973 2840 N -17 9 30 10 16 -8 h
+0 g 3943 2830 N -16 8 29 11 17 -9 h
+0 g 3914 2819 N -17 9 30 10 16 -8 h
+0 g 3884 2809 N -16 8 29 11 17 -9 h
+0 g 3855 2798 N -17 9 30 10 16 -8 h
+0 g 3825 2787 N -16 8 29 11 17 -8 h
+0 g 3796 2777 N -17 8 30 11 16 -9 h
+0 g 3766 2766 N -16 9 29 10 17 -8 h
+0 g 3737 2756 N -17 8 30 11 16 -9 h
+0 g 3707 2745 N -16 9 29 10 17 -8 h
+0 g 3678 2735 N -17 8 30 11 16 -9 h
+0 g 3648 2724 N -16 9 29 10 17 -8 h
+0 g 3619 2713 N -17 8 30 11 16 -8 h
+0 g 3589 2703 N -16 8 29 11 17 -9 h
+0 g 3560 2692 N -17 9 30 10 16 -8 h
+0 g 3530 2682 N -16 8 29 11 17 -9 h
+0 g 3501 2671 N -17 9 30 10 16 -8 h
+0 g 3471 2661 N -16 8 29 11 17 -9 h
+0 g 3442 2650 N -17 9 30 10 16 -8 h
+0 g 3412 2639 N -16 8 29 11 17 -8 h
+0 g 3383 2629 N -17 8 30 10 16 -8 h
+0 g 3353 2618 N -16 8 29 11 17 -8 h
+0 g 3324 2608 N -17 8 30 11 16 -9 h
+0 g 3295 2597 N -16 9 29 10 16 -8 h
+0 g 3265 2587 N -16 8 29 11 17 -9 h
+0 g 3236 2576 N -17 9 30 10 16 -8 h
+0 g 3206 2565 N -16 8 29 11 17 -8 h
+0 g 3177 2555 N -17 8 30 10 16 -8 h
+0 g 3147 2544 N -16 8 29 11 17 -8 h
+0 g 3118 2534 N -17 8 30 11 16 -9 h
+0 g 3088 2523 N -16 9 29 10 17 -8 h
+0 g 3059 2513 N -17 8 30 11 16 -9 h
+0 g 3029 2502 N -16 9 29 10 17 -8 h
+0 g 3000 2492 N -17 8 30 11 16 -9 h
+0 g 2970 2481 N -16 9 29 10 17 -8 h
+0 g 2941 2470 N -17 8 30 11 16 -8 h
+0 g 2911 2460 N -16 8 29 11 17 -9 h
+0 g 2882 2449 N -17 9 30 10 16 -8 h
+0 g 2852 2439 N -16 8 29 11 17 -9 h
+0 g 2823 2428 N -17 9 30 10 16 -8 h
+0 g 2793 2418 N -16 8 29 11 17 -9 h
+0 g 2764 2407 N -17 9 30 10 16 -8 h
+0 g 2734 2396 N -16 8 29 11 17 -8 h
+0 g 2705 2386 N -17 8 30 11 16 -9 h
+0 g 2675 2375 N -16 9 29 10 17 -8 h
+0 g 2646 2365 N -17 8 30 11 16 -9 h
+0 g 2616 2354 N -16 9 29 10 17 -8 h
+0 g 2587 2344 N -17 8 30 11 16 -9 h
+0 g 2557 2333 N -16 9 29 10 17 -8 h
+0 g 2528 2322 N -17 8 30 11 16 -8 h
+0 g 2498 2312 N -16 8 29 11 17 -9 h
+0 g 2469 2301 N -17 9 30 10 16 -8 h
+0 g 2439 2291 N -16 8 29 11 17 -9 h
+0 g 2410 2280 N -17 9 30 10 16 -8 h
+0 g 2380 2270 N -16 8 29 11 17 -9 h
+0 g 2351 2259 N -17 9 30 10 16 -8 h
+0 g 2321 2248 N -16 8 29 11 17 -8 h
+0 g 2292 2238 N -17 8 30 11 16 -9 h
+0 g 2262 2227 N -16 9 29 10 17 -8 h
+0 g 2233 2217 N -17 8 30 11 16 -9 h
+0 g 2203 2206 N -16 9 29 10 17 -8 h
+0 g 2174 2196 N -17 8 30 11 16 -9 h
+0 g 2144 2185 N -16 9 29 10 17 -8 h
+0 g 2115 2174 N -17 8 30 11 16 -8 h
+0 g 2085 2164 N -16 8 29 11 17 -9 h
+0 g 2056 2153 N -17 9 30 10 16 -8 h
+0 g 2026 2143 N -16 8 29 11 17 -9 h
+0 g 1997 2132 N -17 9 30 10 16 -8 h
+0 g 1967 2122 N -16 8 29 11 17 -9 h
+0 g 1938 2111 N -17 9 30 10 16 -8 h
+0 g 1908 2100 N -16 8 29 11 17 -8 h
+0 g 1879 2090 N -17 8 30 11 16 -9 h
+0 g 1849 2079 N -16 9 29 10 17 -8 h
+0 g 1820 2069 N -17 8 30 11 16 -9 h
+0 g 1790 2058 N -16 9 29 10 17 -8 h
+0 g 1761 2048 N -17 8 30 11 16 -9 h
+0 g 1731 2037 N -16 9 29 10 17 -8 h
+0 g 1702 2026 N -17 8 30 11 16 -8 h
+0 g 1672 2016 N -16 8 29 10 17 -8 h
+0 g 1643 2005 N -17 8 30 11 16 -8 h
+0 g 1613 1995 N -16 8 29 11 17 -9 h
+0 g 4520 3022 N -16 9 29 10 17 -8 h
+0 g 4491 3012 N -17 8 30 11 16 -9 h
+0 g 4461 3001 N -16 9 29 10 17 -8 h
+0 g 4432 2990 N -17 8 30 11 16 -8 h
+0 g 4402 2980 N -16 8 29 11 17 -9 h
+0 g 4373 2969 N -17 9 30 10 16 -8 h
+0 g 4343 2959 N -16 8 29 11 17 -9 h
+0 g 4314 2948 N -17 9 30 10 16 -8 h
+0 g 4284 2938 N -16 8 29 11 17 -9 h
+0 g 4255 2927 N -17 9 30 10 16 -8 h
+0 g 4225 2916 N -16 8 29 11 17 -8 h
+0 g 4196 2906 N -17 8 30 11 16 -9 h
+0 g 4166 2895 N -16 9 29 10 17 -8 h
+0 g 4137 2885 N -17 8 30 11 16 -9 h
+0 g 4107 2874 N -16 9 29 10 17 -8 h
+0 g 4078 2864 N -17 8 30 11 16 -9 h
+0 g 4048 2853 N -16 9 29 10 17 -8 h
+0 g 4019 2842 N -17 8 30 11 16 -8 h
+0 g 3989 2832 N -16 8 29 11 17 -9 h
+0 g 3960 2821 N -17 9 30 10 16 -8 h
+0 g 3930 2811 N -16 8 29 11 17 -9 h
+0 g 3901 2800 N -17 9 30 10 16 -8 h
+0 g 3871 2790 N -16 8 29 11 17 -9 h
+0 g 3842 2779 N -17 9 30 10 16 -8 h
+0 g 3812 2768 N -16 8 29 11 17 -8 h
+0 g 3783 2758 N -17 8 30 10 16 -8 h
+0 g 3753 2747 N -16 8 29 11 17 -8 h
+0 g 3724 2737 N -17 8 30 11 16 -9 h
+0 g 3694 2726 N -16 9 29 10 17 -8 h
+0 g 3665 2716 N -17 8 30 11 16 -9 h
+0 g 3635 2705 N -16 9 29 10 17 -8 h
+0 g 3606 2694 N -17 8 30 11 16 -8 h
+0 g 3576 2684 N -16 8 29 10 17 -8 h
+0 g 3547 2673 N -17 8 30 11 16 -8 h
+0 g 3517 2663 N -16 8 29 11 17 -9 h
+0 g 3488 2652 N -17 9 30 10 16 -8 h
+0 g 3458 2642 N -16 8 29 11 17 -9 h
+0 g 3429 2631 N -17 9 30 10 16 -8 h
+0 g 3399 2621 N -16 8 29 11 17 -9 h
+0 g 3370 2610 N -17 9 30 10 16 -8 h
+0 g 3340 2599 N -16 8 29 11 17 -8 h
+0 g 3311 2589 N -17 8 29 11 17 -9 h
+0 g 3282 2578 N -17 9 30 10 16 -8 h
+0 g 3252 2568 N -16 8 29 11 17 -9 h
+0 g 3223 2557 N -17 9 30 10 16 -8 h
+0 g 3193 2547 N -16 8 29 11 17 -9 h
+0 g 3164 2536 N -17 9 30 10 16 -8 h
+0 g 3134 2525 N -16 8 29 11 17 -8 h
+0 g 3105 2515 N -17 8 30 11 16 -9 h
+0 g 3075 2504 N -16 9 29 10 17 -8 h
+0 g 3046 2494 N -17 8 30 11 16 -9 h
+0 g 3016 2483 N -16 9 29 10 17 -8 h
+0 g 2987 2473 N -17 8 30 11 16 -9 h
+0 g 2957 2462 N -16 9 29 10 17 -8 h
+0 g 2928 2451 N -17 8 30 11 16 -8 h
+0 g 2898 2441 N -16 8 29 11 17 -9 h
+0 g 2869 2430 N -17 9 30 10 16 -8 h
+0 g 2839 2420 N -16 8 29 11 17 -9 h
+0 g 2810 2409 N -17 9 30 10 16 -8 h
+0 g 2780 2399 N -16 8 29 11 17 -9 h
+0 g 2751 2388 N -17 9 30 10 16 -8 h
+0 g 2721 2377 N -16 8 29 11 17 -8 h
+0 g 2692 2367 N -17 8 30 11 16 -9 h
+0 g 2662 2356 N -16 9 29 10 17 -8 h
+0 g 2633 2346 N -17 8 30 11 16 -9 h
+0 g 2603 2335 N -16 9 29 10 17 -8 h
+0 g 2574 2325 N -17 8 30 11 16 -9 h
+0 g 2544 2314 N -16 9 29 10 17 -8 h
+0 g 2515 2303 N -17 8 30 11 16 -8 h
+0 g 2485 2293 N -16 8 29 11 17 -9 h
+0 g 2456 2282 N -17 9 30 10 16 -8 h
+0 g 2426 2272 N -16 8 29 11 17 -9 h
+0 g 2397 2261 N -17 9 30 10 16 -8 h
+0 g 2367 2251 N -16 8 29 11 17 -9 h
+0 g 2338 2240 N -17 9 30 10 16 -8 h
+0 g 2308 2229 N -16 8 29 11 17 -8 h
+0 g 2279 2219 N -17 8 30 11 16 -9 h
+0 g 2249 2208 N -16 9 29 10 17 -8 h
+0 g 2220 2198 N -17 8 30 11 16 -9 h
+0 g 2190 2187 N -16 9 29 10 17 -8 h
+0 g 2161 2177 N -17 8 30 11 16 -9 h
+0 g 2131 2166 N -16 9 29 10 17 -8 h
+0 g 2102 2155 N -17 8 30 11 16 -8 h
+0 g 2072 2145 N -16 8 29 10 17 -8 h
+0 g 2043 2134 N -17 8 30 11 16 -8 h
+0 g 2013 2124 N -16 8 29 11 17 -9 h
+0 g 1984 2113 N -17 9 30 10 16 -8 h
+0 g 1954 2103 N -16 8 29 11 17 -9 h
+0 g 1925 2092 N -17 9 30 10 16 -8 h
+0 g 1895 2081 N -16 8 29 11 17 -8 h
+0 g 1866 2071 N -17 8 30 10 16 -8 h
+0 g 1836 2060 N -16 8 29 11 17 -8 h
+0 g 1807 2050 N -17 8 30 11 16 -9 h
+0 g 1777 2039 N -16 9 29 10 17 -8 h
+0 g 1748 2029 N -17 8 30 11 16 -9 h
+0 g 1718 2018 N -16 9 29 10 17 -8 h
+0 g 1689 2008 N -17 8 30 11 16 -9 h
+0 g 1659 1997 N -16 9 29 10 17 -8 h
+0 g 1630 1986 N -17 8 30 11 16 -8 h
+0 g 4537 3014 N -17 8 30 11 16 -9 h
+0 g 4507 3003 N -16 9 29 10 17 -8 h
+0 g 4478 2993 N -17 8 30 11 16 -9 h
+0 g 4448 2982 N -16 9 29 10 17 -8 h
+0 g 4419 2971 N -17 8 30 11 16 -8 h
+0 g 4389 2961 N -16 8 29 11 17 -9 h
+0 g 4360 2950 N -17 9 30 10 16 -8 h
+0 g 4330 2940 N -16 8 29 11 17 -9 h
+0 g 4301 2929 N -17 9 30 10 16 -8 h
+0 g 4271 2919 N -16 8 29 11 17 -9 h
+0 g 4242 2908 N -17 9 30 10 16 -8 h
+0 g 4212 2897 N -16 8 29 11 17 -8 h
+0 g 4183 2887 N -17 8 30 10 16 -8 h
+0 g 4153 2876 N -16 8 29 11 17 -8 h
+0 g 4124 2866 N -17 8 30 11 16 -9 h
+0 g 4094 2855 N -16 9 29 10 17 -8 h
+0 g 4065 2845 N -17 8 30 11 16 -9 h
+0 g 4035 2834 N -16 9 29 10 17 -8 h
+0 g 4006 2823 N -17 8 30 11 16 -8 h
+0 g 3976 2813 N -16 8 29 10 17 -8 h
+0 g 3947 2802 N -17 8 30 11 16 -8 h
+0 g 3917 2792 N -16 8 29 11 17 -9 h
+0 g 3888 2781 N -17 9 30 10 16 -8 h
+0 g 3858 2771 N -16 8 29 11 17 -9 h
+0 g 3829 2760 N -17 9 30 10 16 -8 h
+0 g 3799 2750 N -16 8 29 11 17 -9 h
+0 g 3770 2739 N -17 9 30 10 16 -8 h
+0 g 3740 2728 N -16 8 29 11 17 -8 h
+0 g 3711 2718 N -17 8 30 11 16 -9 h
+0 g 3681 2707 N -16 9 29 10 17 -8 h
+0 g 3652 2697 N -17 8 30 11 16 -9 h
+0 g 3622 2686 N -16 9 29 10 17 -8 h
+0 g 3593 2676 N -17 8 30 11 16 -9 h
+0 g 3563 2665 N -16 9 29 10 17 -8 h
+0 g 3534 2654 N -17 8 30 11 16 -8 h
+0 g 3504 2644 N -16 8 29 11 17 -9 h
+0 g 3475 2633 N -17 9 30 10 16 -8 h
+0 g 3445 2623 N -16 8 29 11 17 -9 h
+0 g 3416 2612 N -17 9 30 10 16 -8 h
+0 g 3386 2602 N -16 8 29 11 17 -9 h
+0 g 3357 2591 N -17 9 30 10 16 -8 h
+0 g 3328 2580 N -16 8 29 11 16 -8 h
+0 g 3298 2570 N -16 8 29 11 17 -9 h
+0 g 3269 2559 N -17 9 30 10 16 -8 h
+0 g 3239 2549 N -16 8 29 11 17 -9 h
+0 g 3210 2538 N -17 9 30 10 16 -8 h
+0 g 3180 2528 N -16 8 29 11 17 -9 h
+0 g 3151 2517 N -17 9 30 10 16 -8 h
+0 g 3121 2506 N -16 8 29 11 17 -8 h
+0 g 3092 2496 N -17 8 30 11 16 -9 h
+0 g 3062 2485 N -16 9 29 10 17 -8 h
+0 g 3033 2475 N -17 8 30 11 16 -9 h
+0 g 3003 2464 N -16 9 29 10 17 -8 h
+0 g 2974 2454 N -17 8 30 11 16 -9 h
+0 g 2944 2443 N -16 9 29 10 17 -8 h
+0 g 2915 2432 N -17 8 30 11 16 -8 h
+0 g 2885 2422 N -16 8 29 11 17 -9 h
+0 g 2856 2411 N -17 9 30 10 16 -8 h
+0 g 2826 2401 N -16 8 29 11 17 -9 h
+0 g 2797 2390 N -17 9 30 10 16 -8 h
+0 g 2767 2380 N -16 8 29 11 17 -9 h
+0 g 2738 2369 N -17 9 30 10 16 -8 h
+0 g 2708 2358 N -16 8 29 11 17 -8 h
+0 g 2679 2348 N -17 8 30 11 16 -9 h
+0 g 2649 2337 N -16 9 29 10 17 -8 h
+0 g 2620 2327 N -17 8 30 11 16 -9 h
+0 g 2590 2316 N -16 9 29 10 17 -8 h
+0 g 2561 2306 N -17 8 30 11 16 -9 h
+0 g 2531 2295 N -16 9 29 10 17 -8 h
+0 g 2502 2284 N -17 8 30 11 16 -8 h
+0 g 2472 2274 N -16 8 29 10 17 -8 h
+0 g 2443 2263 N -17 8 30 11 16 -8 h
+0 g 2413 2253 N -16 8 29 11 17 -9 h
+0 g 2384 2242 N -17 9 30 10 16 -8 h
+0 g 2354 2232 N -16 8 29 11 17 -9 h
+0 g 2325 2221 N -17 9 30 10 16 -8 h
+0 g 2295 2210 N -16 8 29 11 17 -8 h
+0 g 2266 2200 N -17 8 30 10 16 -8 h
+0 g 2236 2189 N -16 8 29 11 17 -8 h
+0 g 2207 2179 N -17 8 30 11 16 -9 h
+0 g 2177 2168 N -16 9 29 10 17 -8 h
+0 g 2148 2158 N -17 8 30 11 16 -9 h
+0 g 2118 2147 N -16 9 29 10 17 -8 h
+0 g 2089 2137 N -17 8 30 11 16 -9 h
+0 g 2059 2126 N -16 9 29 10 17 -8 h
+0 g 2030 2115 N -17 8 30 11 16 -8 h
+0 g 2000 2105 N -16 8 29 11 17 -9 h
+0 g 1971 2094 N -17 9 30 10 16 -8 h
+0 g 1941 2084 N -16 8 29 11 17 -9 h
+0 g 1912 2073 N -17 9 30 10 16 -8 h
+0 g 1882 2063 N -16 8 29 11 17 -9 h
+0 g 1853 2052 N -17 9 30 10 16 -8 h
+0 g 1823 2041 N -16 8 29 11 17 -8 h
+0 g 1794 2031 N -17 8 30 11 16 -9 h
+0 g 1764 2020 N -16 9 29 10 17 -8 h
+0 g 1735 2010 N -17 8 30 11 16 -9 h
+0 g 1705 1999 N -16 9 29 10 17 -8 h
+0 g 1676 1989 N -17 8 30 11 16 -9 h
+0 g 1646 1978 N -16 9 29 10 17 -8 h
+0 g 4553 3005 N -16 8 29 11 17 -8 h
+0 g 4524 2995 N -17 8 30 11 16 -9 h
+0 g 4494 2984 N -16 9 29 10 17 -8 h
+0 g 4465 2974 N -17 8 30 11 16 -9 h
+0 g 4435 2963 N -16 9 29 10 17 -8 h
+0 g 4406 2952 N -17 8 30 11 16 -8 h
+0 g 4376 2942 N -16 8 29 10 17 -8 h
+0 g 4347 2931 N -17 8 30 11 16 -8 h
+0 g 4317 2921 N -16 8 29 11 17 -9 h
+0 g 4288 2910 N -17 9 30 10 16 -8 h
+0 g 4258 2900 N -16 8 29 11 17 -9 h
+0 g 4229 2889 N -17 9 30 10 16 -8 h
+0 g 4199 2879 N -16 8 29 11 17 -9 h
+0 g 4170 2868 N -17 9 30 10 16 -8 h
+0 g 4140 2857 N -16 8 29 11 17 -8 h
+0 g 4111 2847 N -17 8 30 11 16 -9 h
+0 g 4081 2836 N -16 9 29 10 17 -8 h
+0 g 4052 2826 N -17 8 30 11 16 -9 h
+0 g 4022 2815 N -16 9 29 10 17 -8 h
+0 g 3993 2805 N -17 8 30 11 16 -9 h
+0 g 3963 2794 N -16 9 29 10 17 -8 h
+0 g 3934 2783 N -17 8 30 11 16 -8 h
+0 g 3904 2773 N -16 8 29 11 17 -9 h
+0 g 3875 2762 N -17 9 30 10 16 -8 h
+0 g 3845 2752 N -16 8 29 11 17 -9 h
+0 g 3816 2741 N -17 9 30 10 16 -8 h
+0 g 3786 2731 N -16 8 29 11 17 -9 h
+0 g 3757 2720 N -17 9 30 10 16 -8 h
+0 g 3727 2709 N -16 8 29 11 17 -8 h
+0 g 3698 2699 N -17 8 30 11 16 -9 h
+0 g 3668 2688 N -16 9 29 10 17 -8 h
+0 g 3639 2678 N -17 8 30 11 16 -9 h
+0 g 3609 2667 N -16 9 29 10 17 -8 h
+0 g 3580 2657 N -17 8 30 11 16 -9 h
+0 g 3550 2646 N -16 9 29 10 17 -8 h
+0 g 3521 2635 N -17 8 30 11 16 -8 h
+0 g 3491 2625 N -16 8 29 11 17 -9 h
+0 g 3462 2614 N -17 9 30 10 16 -8 h
+0 g 3432 2604 N -16 8 29 11 17 -9 h
+0 g 3403 2593 N -17 9 30 10 16 -8 h
+0 g 3373 2583 N -16 8 29 11 17 -9 h
+0 g 3344 2572 N -17 9 30 10 16 -8 h
+0 g 3315 2561 N -16 8 29 11 16 -8 h
+0 g 3285 2551 N -16 8 29 11 17 -9 h
+0 g 3256 2540 N -17 9 30 10 16 -8 h
+0 g 3226 2530 N -16 8 29 11 17 -9 h
+0 g 3197 2519 N -17 9 30 10 16 -8 h
+0 g 3167 2509 N -16 8 29 11 17 -9 h
+0 g 3138 2498 N -17 9 30 10 16 -8 h
+0 g 3108 2487 N -16 8 29 11 17 -8 h
+0 g 3079 2477 N -17 8 30 11 16 -9 h
+0 g 3049 2466 N -16 9 29 10 17 -8 h
+0 g 3020 2456 N -17 8 30 11 16 -9 h
+0 g 2990 2445 N -16 9 29 10 17 -8 h
+0 g 2961 2435 N -17 8 30 11 16 -9 h
+0 g 2931 2424 N -16 9 29 10 17 -8 h
+0 g 2902 2413 N -17 8 30 11 16 -8 h
+0 g 2872 2403 N -16 8 29 10 17 -8 h
+0 g 2843 2392 N -17 8 30 11 16 -8 h
+0 g 2813 2382 N -16 8 29 11 17 -9 h
+0 g 2784 2371 N -17 9 30 10 16 -8 h
+0 g 2754 2361 N -16 8 29 11 17 -9 h
+0 g 2725 2350 N -17 9 30 10 16 -8 h
+0 g 2695 2339 N -16 8 29 11 17 -8 h
+0 g 2666 2329 N -17 8 30 10 16 -8 h
+0 g 2636 2318 N -16 8 29 11 17 -8 h
+0 g 2607 2308 N -17 8 30 11 16 -9 h
+0 g 2577 2297 N -16 9 29 10 17 -8 h
+0 g 2548 2287 N -17 8 30 11 16 -9 h
+0 g 2518 2276 N -16 9 29 10 17 -8 h
+0 g 2489 2266 N -17 8 30 11 16 -9 h
+0 g 2459 2255 N -16 9 29 10 17 -8 h
+0 g 2430 2244 N -17 8 30 11 16 -8 h
+0 g 2400 2234 N -16 8 29 11 17 -9 h
+0 g 2371 2223 N -17 9 30 10 16 -8 h
+0 g 2341 2213 N -16 8 29 11 17 -9 h
+0 g 2312 2202 N -17 9 30 10 16 -8 h
+0 g 2282 2192 N -16 8 29 11 17 -9 h
+0 g 2253 2181 N -17 9 30 10 16 -8 h
+0 g 2223 2170 N -16 8 29 11 17 -8 h
+0 g 2194 2160 N -17 8 30 11 16 -9 h
+0 g 2164 2149 N -16 9 29 10 17 -8 h
+0 g 2135 2139 N -17 8 30 11 16 -9 h
+0 g 2105 2128 N -16 9 29 10 17 -8 h
+0 g 2076 2118 N -17 8 30 11 16 -9 h
+0 g 2046 2107 N -16 9 29 10 17 -8 h
+0 g 2017 2096 N -17 8 30 11 16 -8 h
+0 g 1987 2086 N -16 8 29 11 17 -9 h
+0 g 1958 2075 N -17 9 30 10 16 -8 h
+0 g 1928 2065 N -16 8 29 11 17 -9 h
+0 g 1899 2054 N -17 9 30 10 16 -8 h
+0 g 1869 2044 N -16 8 29 11 17 -9 h
+0 g 1840 2033 N -17 9 30 10 16 -8 h
+0 g 1810 2022 N -16 8 29 11 17 -8 h
+0 g 1781 2012 N -17 8 30 11 16 -9 h
+0 g 1751 2001 N -16 9 29 10 17 -8 h
+0 g 1722 1991 N -17 8 30 11 16 -9 h
+0 g 1692 1980 N -16 9 29 10 17 -8 h
+0 g 1663 1970 N -17 8 30 11 16 -9 h
+0 g 4570 2997 N -17 9 30 10 16 -8 h
+0 g 4540 2986 N -16 8 29 11 17 -8 h
+0 g 4511 2976 N -17 8 30 11 16 -9 h
+0 g 4481 2965 N -16 9 29 10 17 -8 h
+0 g 4452 2955 N -17 8 30 11 16 -9 h
+0 g 4422 2944 N -16 9 29 10 17 -8 h
+0 g 4393 2934 N -17 8 30 11 16 -9 h
+0 g 4363 2923 N -16 9 29 10 17 -8 h
+0 g 4334 2912 N -17 8 30 11 16 -8 h
+0 g 4304 2902 N -16 8 29 11 17 -9 h
+0 g 4275 2891 N -17 9 30 10 16 -8 h
+0 g 4245 2881 N -16 8 29 11 17 -9 h
+0 g 4216 2870 N -17 9 30 10 16 -8 h
+0 g 4186 2860 N -16 8 29 11 17 -9 h
+0 g 4157 2849 N -17 9 30 10 16 -8 h
+0 g 4127 2838 N -16 8 29 11 17 -8 h
+0 g 4098 2828 N -17 8 30 11 16 -9 h
+0 g 4068 2817 N -16 9 29 10 17 -8 h
+0 g 4039 2807 N -17 8 30 11 16 -9 h
+0 g 4009 2796 N -16 9 29 10 17 -8 h
+0 g 3980 2786 N -17 8 30 11 16 -9 h
+0 g 3950 2775 N -16 9 29 10 17 -8 h
+0 g 3921 2764 N -17 8 30 11 16 -8 h
+0 g 3891 2754 N -16 8 29 11 17 -9 h
+0 g 3862 2743 N -17 9 30 10 16 -8 h
+0 g 3832 2733 N -16 8 29 11 17 -9 h
+0 g 3803 2722 N -17 9 30 10 16 -8 h
+0 g 3773 2712 N -16 8 29 11 17 -9 h
+0 g 3744 2701 N -17 9 30 10 16 -8 h
+0 g 3714 2690 N -16 8 29 11 17 -8 h
+0 g 3685 2680 N -17 8 30 11 16 -9 h
+0 g 3655 2669 N -16 9 29 10 17 -8 h
+0 g 3626 2659 N -17 8 30 11 16 -9 h
+0 g 3596 2648 N -16 9 29 10 17 -8 h
+0 g 3567 2638 N -17 8 30 11 16 -9 h
+0 g 3537 2627 N -16 9 29 10 17 -8 h
+0 g 3508 2616 N -17 8 30 11 16 -8 h
+0 g 3478 2606 N -16 8 29 11 17 -9 h
+0 g 3449 2595 N -17 9 30 10 16 -8 h
+0 g 3419 2585 N -16 8 29 11 17 -9 h
+0 g 3390 2574 N -17 9 30 10 16 -8 h
+0 g 3360 2564 N -16 8 29 11 17 -9 h
+0 g 3331 2553 N -17 9 29 10 17 -8 h
+0 g 3302 2542 N -17 8 30 11 16 -8 h
+0 g 3272 2532 N -16 8 29 10 17 -8 h
+0 g 3243 2521 N -17 8 30 11 16 -8 h
+0 g 3213 2511 N -16 8 29 11 17 -9 h
+0 g 3184 2500 N -17 9 30 10 16 -8 h
+0 g 3154 2490 N -16 8 29 11 17 -9 h
+0 g 3125 2479 N -17 9 30 10 16 -8 h
+0 g 3095 2468 N -16 8 29 11 17 -8 h
+0 g 3066 2458 N -17 8 30 10 16 -8 h
+0 g 3036 2447 N -16 8 29 11 17 -8 h
+0 g 3007 2437 N -17 8 30 11 16 -9 h
+0 g 2977 2426 N -16 9 29 10 17 -8 h
+0 g 2948 2416 N -17 8 30 11 16 -9 h
+0 g 2918 2405 N -16 9 29 10 17 -8 h
+0 g 2889 2395 N -17 8 30 11 16 -9 h
+0 g 2859 2384 N -16 9 29 10 17 -8 h
+0 g 2830 2373 N -17 8 30 11 16 -8 h
+0 g 2800 2363 N -16 8 29 11 17 -9 h
+0 g 2771 2352 N -17 9 30 10 16 -8 h
+0 g 2741 2342 N -16 8 29 11 17 -9 h
+0 g 2712 2331 N -17 9 30 10 16 -8 h
+0 g 2682 2321 N -16 8 29 11 17 -9 h
+0 g 2653 2310 N -17 9 30 10 16 -8 h
+0 g 2623 2299 N -16 8 29 11 17 -8 h
+0 g 2594 2289 N -17 8 30 11 16 -9 h
+0 g 2564 2278 N -16 9 29 10 17 -8 h
+0 g 2535 2268 N -17 8 30 11 16 -9 h
+0 g 2505 2257 N -16 9 29 10 17 -8 h
+0 g 2476 2247 N -17 8 30 11 16 -9 h
+0 g 2446 2236 N -16 9 29 10 17 -8 h
+0 g 2417 2225 N -17 8 30 11 16 -8 h
+0 g 2387 2215 N -16 8 29 11 17 -9 h
+0 g 2358 2204 N -17 9 30 10 16 -8 h
+0 g 2328 2194 N -16 8 29 11 17 -9 h
+0 g 2299 2183 N -17 9 30 10 16 -8 h
+0 g 2269 2173 N -16 8 29 11 17 -9 h
+0 g 2240 2162 N -17 9 30 10 16 -8 h
+0 g 2210 2151 N -16 8 29 11 17 -8 h
+0 g 2181 2141 N -17 8 30 11 16 -9 h
+0 g 2151 2130 N -16 9 29 10 17 -8 h
+0 g 2122 2120 N -17 8 30 11 16 -9 h
+0 g 2092 2109 N -16 9 29 10 17 -8 h
+0 g 2063 2099 N -17 8 30 11 16 -9 h
+0 g 2033 2088 N -16 9 29 10 17 -8 h
+0 g 2004 2077 N -17 8 30 11 16 -8 h
+0 g 1974 2067 N -16 8 29 11 17 -9 h
+0 g 1945 2056 N -17 9 30 10 16 -8 h
+0 g 1915 2046 N -16 8 29 11 17 -9 h
+0 g 1886 2035 N -17 9 30 10 16 -8 h
+0 g 1856 2025 N -16 8 29 11 17 -9 h
+0 g 1827 2014 N -17 9 30 10 16 -8 h
+0 g 1797 2003 N -16 8 29 11 17 -8 h
+0 g 1768 1993 N -17 8 30 11 16 -9 h
+0 g 1738 1982 N -16 9 29 10 17 -8 h
+0 g 1709 1972 N -17 8 30 11 16 -9 h
+0 g 1679 1961 N -16 9 29 10 17 -8 h
+0 g 4586 2989 N -16 8 29 11 17 -9 h
+0 g 4557 2978 N -17 9 30 10 16 -8 h
+0 g 4527 2967 N -16 8 29 11 17 -8 h
+0 g 4498 2957 N -17 8 30 11 16 -9 h
+0 g 4468 2946 N -16 9 29 10 17 -8 h
+0 g 4439 2936 N -17 8 30 11 16 -9 h
+0 g 4409 2925 N -16 9 29 10 17 -8 h
+0 g 4380 2915 N -17 8 30 11 16 -9 h
+0 g 4350 2904 N -16 9 29 10 17 -8 h
+0 g 4321 2893 N -17 8 30 11 16 -8 h
+0 g 4291 2883 N -16 8 29 11 17 -9 h
+0 g 4262 2872 N -17 9 30 10 16 -8 h
+0 g 4232 2862 N -16 8 29 11 17 -9 h
+0 g 4203 2851 N -17 9 30 10 16 -8 h
+0 g 4173 2841 N -16 8 29 11 17 -9 h
+0 g 4144 2830 N -17 9 30 10 16 -8 h
+0 g 4114 2819 N -16 8 29 11 17 -8 h
+0 g 4085 2809 N -17 8 30 11 16 -9 h
+0 g 4055 2798 N -16 9 29 10 17 -8 h
+0 g 4026 2788 N -17 8 30 11 16 -9 h
+0 g 3996 2777 N -16 9 29 10 17 -8 h
+0 g 3967 2767 N -17 8 30 11 16 -9 h
+0 g 3937 2756 N -16 9 29 10 17 -8 h
+0 g 3908 2745 N -17 8 30 11 16 -8 h
+0 g 3878 2735 N -16 8 29 11 17 -9 h
+0 g 3849 2724 N -17 9 30 10 16 -8 h
+0 g 3819 2714 N -16 8 29 11 17 -9 h
+0 g 3790 2703 N -17 9 30 10 16 -8 h
+0 g 3760 2693 N -16 8 29 11 17 -9 h
+0 g 3731 2682 N -17 9 30 10 16 -8 h
+0 g 3701 2671 N -16 8 29 11 17 -8 h
+0 g 3672 2661 N -17 8 30 10 16 -8 h
+0 g 3642 2650 N -16 8 29 11 17 -8 h
+0 g 3613 2640 N -17 8 30 11 16 -9 h
+0 g 3583 2629 N -16 9 29 10 17 -8 h
+0 g 3554 2619 N -17 8 30 11 16 -9 h
+0 g 3524 2608 N -16 9 29 10 17 -8 h
+0 g 3495 2597 N -17 8 30 11 16 -8 h
+0 g 3465 2587 N -16 8 29 10 17 -8 h
+0 g 3436 2576 N -17 8 30 11 16 -8 h
+0 g 3406 2566 N -16 8 29 11 17 -9 h
+0 g 3377 2555 N -17 9 30 10 16 -8 h
+0 g 3348 2545 N -16 8 29 11 16 -9 h
+0 g 3318 2534 N -16 9 29 10 17 -8 h
+0 g 3289 2524 N -17 8 30 11 16 -9 h
+0 g 3259 2513 N -16 9 29 10 17 -8 h
+0 g 3230 2502 N -17 8 30 11 16 -8 h
+0 g 3200 2492 N -16 8 29 11 17 -9 h
+0 g 3171 2481 N -17 9 30 10 16 -8 h
+0 g 3141 2471 N -16 8 29 11 17 -9 h
+0 g 3112 2460 N -17 9 30 10 16 -8 h
+0 g 3082 2450 N -16 8 29 11 17 -9 h
+0 g 3053 2439 N -17 9 30 10 16 -8 h
+0 g 3023 2428 N -16 8 29 11 17 -8 h
+0 g 2994 2418 N -17 8 30 11 16 -9 h
+0 g 2964 2407 N -16 9 29 10 17 -8 h
+0 g 2935 2397 N -17 8 30 11 16 -9 h
+0 g 2905 2386 N -16 9 29 10 17 -8 h
+0 g 2876 2376 N -17 8 30 11 16 -9 h
+0 g 2846 2365 N -16 9 29 10 17 -8 h
+0 g 2817 2354 N -17 8 30 11 16 -8 h
+0 g 2787 2344 N -16 8 29 11 17 -9 h
+0 g 2758 2333 N -17 9 30 10 16 -8 h
+0 g 2728 2323 N -16 8 29 11 17 -9 h
+0 g 2699 2312 N -17 9 30 10 16 -8 h
+0 g 2669 2302 N -16 8 29 11 17 -9 h
+0 g 2640 2291 N -17 9 30 10 16 -8 h
+0 g 2610 2280 N -16 8 29 11 17 -8 h
+0 g 2581 2270 N -17 8 30 11 16 -9 h
+0 g 2551 2259 N -16 9 29 10 17 -8 h
+0 g 2522 2249 N -17 8 30 11 16 -9 h
+0 g 2492 2238 N -16 9 29 10 17 -8 h
+0 g 2463 2228 N -17 8 30 11 16 -9 h
+0 g 2433 2217 N -16 9 29 10 17 -8 h
+0 g 2404 2206 N -17 8 30 11 16 -8 h
+0 g 2374 2196 N -16 8 29 11 17 -9 h
+0 g 2345 2185 N -17 9 30 10 16 -8 h
+0 g 2315 2175 N -16 8 29 11 17 -9 h
+0 g 2286 2164 N -17 9 30 10 16 -8 h
+0 g 2256 2154 N -16 8 29 11 17 -9 h
+0 g 2227 2143 N -17 9 30 10 16 -8 h
+0 g 2197 2132 N -16 8 29 11 17 -8 h
+0 g 2168 2122 N -17 8 30 11 16 -9 h
+0 g 2138 2111 N -16 9 29 10 17 -8 h
+0 g 2109 2101 N -17 8 30 11 16 -9 h
+0 g 2079 2090 N -16 9 29 10 17 -8 h
+0 g 2050 2080 N -17 8 30 11 16 -9 h
+0 g 2020 2069 N -16 9 29 10 17 -8 h
+0 g 1991 2058 N -17 8 30 11 16 -8 h
+0 g 1961 2048 N -16 8 29 10 17 -8 h
+0 g 1932 2037 N -17 8 30 11 16 -8 h
+0 g 1902 2027 N -16 8 29 11 17 -9 h
+0 g 1873 2016 N -17 9 30 10 16 -8 h
+0 g 1843 2006 N -16 8 29 11 17 -9 h
+0 g 1814 1995 N -17 9 30 10 16 -8 h
+0 g 1784 1984 N -16 8 29 11 17 -8 h
+0 g 1755 1974 N -17 8 30 10 16 -8 h
+0 g 1725 1963 N -16 8 29 11 17 -8 h
+0 g 1696 1953 N -17 8 30 11 16 -9 h
+0 g 4603 2980 N -17 9 30 10 16 -8 h
+0 g 4573 2970 N -16 8 29 11 17 -9 h
+0 g 4544 2959 N -17 9 30 10 16 -8 h
+0 g 4514 2948 N -16 8 29 11 17 -8 h
+0 g 4485 2938 N -17 8 30 11 16 -9 h
+0 g 4455 2927 N -16 9 29 10 17 -8 h
+0 g 4426 2917 N -17 8 30 11 16 -9 h
+0 g 4396 2906 N -16 9 29 10 17 -8 h
+0 g 4367 2896 N -17 8 30 11 16 -9 h
+0 g 4337 2885 N -16 9 29 10 17 -8 h
+0 g 4308 2874 N -17 8 30 11 16 -8 h
+0 g 4278 2864 N -16 8 29 11 17 -9 h
+.0007 g 4249 2853 N -17 9 30 6 16 -4 h
+.0021 g 4219 2843 N -16 4 29 7 17 -1 h
+.0028 g 4190 2832 N -17 1 30 11 16 -1 h
+.0028 g 4160 2822 N -16 1 29 10 17 -1 h
+.0028 g 4131 2811 N -17 1 30 11 16 -1 h
+.0028 g 4101 2800 N -16 1 29 11 17 -1 h
+.0035 g 4072 2790 N -17 1 30 7 16 2 h
+.0049 g 4042 2779 N -16 -2 29 6 17 7 h
+.0056 g 4013 2769 N -17 -7 30 11 16 6 h
+.0056 g 3983 2758 N -16 -6 29 11 17 6 h
+.0056 g 3954 2748 N -17 -6 30 10 16 6 h
+.0056 g 3924 2737 N -16 -6 29 11 17 6 h
+.0061 g 3895 2726 N -17 -6 30 7 16 10 h
+.0072 g 3865 2716 N -16 -10 29 8 17 12 h
+.0077 g 3836 2705 N -17 -12 30 11 16 12 h
+.0077 g 3806 2695 N -16 -12 29 10 17 12 h
+.0078 g 3777 2684 N -17 -12 30 11 16 12 h
+.0078 g 3747 2674 N -16 -12 29 10 17 12 h
+.0805 g 3718 2663 N -17 -12 30 -369 16 392 h
+.1902 g 3688 2653 N -16 -392 29 -182 17 584 h
+.2271 g 3659 2642 N -17 -584 30 10 16 585 h
+.2272 g 3629 2631 N -16 -585 29 10 17 586 h
+.2273 g 3600 2621 N -17 -586 30 11 16 585 h
+.2274 g 3570 2610 N -16 -585 29 10 17 586 h
+.3102 g 3541 2600 N -17 -586 30 -422 16 1018 h
+.4321 g 3511 2589 N -16 -1018 29 -194 17 1223 h
+.4714 g 3482 2579 N -17 -1223 30 10 16 1223 h
+.4715 g 3452 2568 N -16 -1223 29 10 17 1224 h
+.4716 g 3423 2557 N -17 -1224 30 11 16 1224 h
+.4717 g 3393 2547 N -16 -1224 29 10 17 1224 h
+.4734 g 3364 2536 N -17 -1224 30 2 16 1233 h
+.4767 g 3335 2526 N -16 -1233 29 2 16 1241 h
+.4783 g 3305 2515 N -16 -1241 29 10 17 1242 h
+.4784 g 3276 2505 N -17 -1242 30 11 16 1241 h
+.4786 g 3246 2494 N -16 -1241 29 10 17 1242 h
+.4787 g 3217 2483 N -17 -1242 30 10 16 1243 h
+.4429 g 3187 2473 N -16 -1243 29 198 17 1055 h
+.3382 g 3158 2462 N -17 -1055 30 371 16 695 h
+.2693 g 3128 2452 N -16 -695 29 10 17 695 h
+.2694 g 3099 2441 N -17 -695 30 10 16 696 h
+.2695 g 3069 2431 N -16 -696 29 10 17 696 h
+.2696 g 3040 2420 N -17 -696 30 11 16 696 h
+.2356 g 3010 2409 N -16 -696 29 188 17 519 h
+.1392 g 2981 2399 N -17 -519 30 337 16 192 h
+.077 g 2951 2388 N -16 -192 29 10 17 193 h
+.077 g 2922 2378 N -17 -193 30 10 16 193 h
+.0771 g 2892 2367 N -16 -193 29 11 17 193 h
+.0771 g 2863 2357 N -17 -193 30 10 16 193 h
+.0667 g 2833 2346 N -16 -193 29 66 17 138 h
+.0441 g 2804 2335 N -17 -138 30 73 16 76 h
+.032 g 2774 2325 N -16 -76 29 11 17 75 h
+.032 g 2745 2314 N -17 -75 30 10 16 76 h
+.032 g 2715 2304 N -16 -76 29 11 17 75 h
+.0321 g 2686 2293 N -17 -75 30 10 16 76 h
+.0286 g 2656 2283 N -16 -76 29 29 17 57 h
+.0213 g 2627 2272 N -17 -57 30 30 16 38 h
+.0177 g 2597 2261 N -16 -38 29 11 17 38 h
+.0177 g 2568 2251 N -17 -38 30 10 16 38 h
+.0177 g 2538 2240 N -16 -38 29 11 17 38 h
+.0177 g 2509 2230 N -17 -38 30 10 16 38 h
+.0175 g 2479 2219 N -16 -38 29 12 17 37 h
+.017 g 2450 2209 N -17 -37 30 12 16 35 h
+.0168 g 2420 2198 N -16 -35 29 10 17 36 h
+.0168 g 2391 2187 N -17 -36 30 11 16 36 h
+.0168 g 2361 2177 N -16 -36 29 10 17 36 h
+.0169 g 2332 2166 N -17 -36 30 11 16 36 h
+.0169 g 2302 2156 N -16 -36 29 11 17 35 h
+.0169 g 2273 2145 N -17 -35 30 10 16 36 h
+.0169 g 2243 2135 N -16 -36 29 11 17 35 h
+.0169 g 2214 2124 N -17 -35 30 10 16 36 h
+.0169 g 2184 2113 N -16 -36 29 11 17 36 h
+.0169 g 2155 2103 N -17 -36 30 10 16 36 h
+.017 g 2125 2092 N -16 -36 29 11 17 36 h
+.017 g 2096 2082 N -17 -36 30 10 16 36 h
+.017 g 2066 2071 N -16 -36 29 11 17 36 h
+.017 g 2037 2061 N -17 -36 30 10 16 36 h
+.017 g 2007 2050 N -16 -36 29 11 17 36 h
+.017 g 1978 2040 N -17 -36 30 10 16 36 h
+.0164 g 1948 2029 N -16 -36 29 14 17 33 h
+.0152 g 1919 2018 N -17 -33 30 14 16 30 h
+.0145 g 1889 2008 N -16 -30 29 11 17 29 h
+.0146 g 1860 1997 N -17 -29 30 10 16 30 h
+.0146 g 1830 1987 N -16 -30 29 11 17 29 h
+.0146 g 1801 1976 N -17 -29 30 10 16 30 h
+.0136 g 1771 1966 N -16 -30 29 16 17 24 h
+.0117 g 1742 1955 N -17 -24 30 16 16 19 h
+.0107 g 1712 1944 N -16 -19 29 10 17 20 h
+0 g 4619 2972 N -16 8 29 11 17 -9 h
+0 g 4590 2961 N -17 9 30 10 16 -8 h
+0 g 4560 2951 N -16 8 29 11 17 -9 h
+0 g 4531 2940 N -17 9 30 10 16 -8 h
+0 g 4501 2929 N -16 8 29 11 17 -8 h
+0 g 4472 2919 N -17 8 30 10 16 -8 h
+0 g 4442 2908 N -16 8 29 11 17 -8 h
+0 g 4413 2898 N -17 8 30 11 16 -9 h
+0 g 4383 2887 N -16 9 29 10 17 -8 h
+0 g 4354 2877 N -17 8 30 11 16 -9 h
+0 g 4324 2866 N -16 9 29 10 17 -8 h
+0 g 4295 2855 N -17 8 30 11 16 -8 h
+.0014 g 4265 2849 N -16 8 29 7 17 -9 h
+.0042 g 4236 2842 N -17 9 30 7 16 -9 h
+.0056 g 4206 2831 N -16 9 29 10 17 -8 h
+.0056 g 4177 2821 N -17 8 30 11 16 -9 h
+.0056 g 4147 2810 N -16 9 29 10 17 -8 h
+.0056 g 4118 2799 N -17 8 30 11 16 -8 h
+.007 g 4088 2792 N -16 8 29 7 17 -8 h
+.0098 g 4059 2786 N -17 8 30 7 16 -9 h
+.0112 g 4029 2775 N -16 9 29 10 17 -8 h
+.0112 g 4000 2764 N -17 8 30 11 16 -8 h
+.0112 g 3970 2754 N -16 8 29 11 17 -9 h
+.0112 g 3941 2743 N -17 9 30 10 16 -8 h
+.0123 g 3911 2736 N -16 8 29 8 17 -9 h
+.0144 g 3882 2728 N -17 9 30 8 16 -9 h
+.0155 g 3852 2717 N -16 9 29 10 17 -8 h
+.0155 g 3823 2707 N -17 8 30 11 16 -9 h
+.0155 g 3793 2696 N -16 9 29 10 17 -8 h
+.0155 g 3764 2686 N -17 8 30 11 16 -9 h
+.161 g 3734 3055 N -16 9 29 -370 17 -8 h
+.3803 g 3705 3237 N -17 8 30 -182 16 -8 h
+.4542 g 3675 3227 N -16 8 29 10 17 -8 h
+.4544 g 3646 3217 N -17 8 30 11 16 -9 h
+.4546 g 3616 3206 N -16 9 29 10 17 -8 h
+.4548 g 3587 3196 N -17 8 30 10 16 -8 h
+.6204 g 3557 3618 N -16 8 29 -422 17 -8 h
+.8643 g 3528 3812 N -17 8 30 -194 16 -8 h
+.9427 g 3498 3802 N -16 8 29 11 17 -9 h
+.943 g 3469 3792 N -17 9 30 10 16 -9 h
+.9432 g 3439 3781 N -16 9 29 10 17 -8 h
+.9435 g 3410 3771 N -17 8 30 10 16 -8 h
+.9469 g 3380 3769 N -16 8 29 2 17 -8 h
+.9533 g 3351 3767 N -17 8 29 3 17 -9 h
+.9567 g 3322 3757 N -17 9 30 10 16 -9 h
+.9569 g 3292 3746 N -16 9 29 10 17 -8 h
+.9571 g 3263 3736 N -17 8 30 10 16 -8 h
+.9574 g 3233 3726 N -16 8 29 11 17 -9 h
+.8858 g 3204 3528 N -17 9 30 197 16 -8 h
+.6763 g 3174 3157 N -16 8 29 371 17 -8 h
+.5386 g 3145 3147 N -17 8 30 10 16 -8 h
+.5389 g 3115 3137 N -16 8 29 11 17 -9 h
+.5391 g 3086 3127 N -17 9 30 10 16 -9 h
+.5393 g 3056 3116 N -16 9 29 10 17 -8 h
+.4713 g 3027 2928 N -17 8 30 189 16 -9 h
+.2785 g 2997 2591 N -16 9 29 336 17 -8 h
+.1539 g 2968 2581 N -17 8 30 10 16 -8 h
+.154 g 2938 2571 N -16 8 29 11 17 -9 h
+.1541 g 2909 2560 N -17 9 30 10 16 -8 h
+.1542 g 2879 2550 N -16 8 29 11 17 -9 h
+.1333 g 2850 2484 N -17 9 30 65 16 -8 h
+.0882 g 2820 2411 N -16 8 29 74 17 -9 h
+.064 g 2791 2400 N -17 9 30 10 16 -8 h
+.064 g 2761 2390 N -16 8 29 11 17 -9 h
+.0641 g 2732 2379 N -17 9 30 10 16 -8 h
+.0641 g 2702 2369 N -16 8 29 11 17 -9 h
+.0571 g 2673 2340 N -17 9 30 29 16 -9 h
+.0427 g 2643 2310 N -16 9 29 30 17 -9 h
+.0353 g 2614 2299 N -17 9 30 10 16 -8 h
+.0353 g 2584 2289 N -16 8 29 11 17 -9 h
+.0354 g 2555 2278 N -17 9 30 10 16 -8 h
+.0354 g 2525 2268 N -16 8 29 11 17 -9 h
+.035 g 2496 2256 N -17 9 30 12 16 -9 h
+.0341 g 2466 2244 N -16 9 29 11 17 -8 h
+.0336 g 2437 2234 N -17 8 30 11 16 -9 h
+.0337 g 2407 2223 N -16 9 29 10 17 -8 h
+.0337 g 2378 2213 N -17 8 30 11 16 -9 h
+.0337 g 2348 2202 N -16 9 29 10 17 -8 h
+.0338 g 2319 2191 N -17 8 30 11 16 -8 h
+.0338 g 2289 2181 N -16 8 29 10 17 -8 h
+.0338 g 2260 2170 N -17 8 30 11 16 -8 h
+.0338 g 2230 2160 N -16 8 29 11 17 -9 h
+.0339 g 2201 2149 N -17 9 30 10 16 -8 h
+.0339 g 2171 2139 N -16 8 29 11 17 -9 h
+.0339 g 2142 2128 N -17 9 30 10 16 -8 h
+.0339 g 2112 2118 N -16 8 29 11 17 -9 h
+.034 g 2083 2107 N -17 9 30 10 16 -8 h
+.034 g 2053 2097 N -16 8 29 11 17 -9 h
+.034 g 2024 2086 N -17 9 30 10 16 -8 h
+.034 g 1994 2076 N -16 8 29 11 17 -9 h
+.0328 g 1965 2062 N -17 9 30 14 16 -9 h
+.0303 g 1935 2048 N -16 9 29 13 17 -8 h
+.0291 g 1906 2037 N -17 8 30 11 16 -8 h
+.0291 g 1876 2027 N -16 8 29 11 17 -9 h
+.0291 g 1847 2016 N -17 9 30 10 16 -8 h
+.0292 g 1817 2006 N -16 8 29 11 17 -9 h
+.0272 g 1788 1990 N -17 9 30 15 16 -8 h
+.0233 g 1758 1974 N -16 8 29 16 17 -8 h
+.0214 g 1729 1964 N -17 8 30 10 16 -8 h
+0 g 4636 2963 N -17 8 30 11 16 -8 h
+0 g 4606 2953 N -16 8 29 11 17 -9 h
+0 g 4577 2942 N -17 9 30 10 16 -8 h
+0 g 4547 2932 N -16 8 29 11 17 -9 h
+0 g 4518 2921 N -17 9 30 10 16 -8 h
+0 g 4488 2911 N -16 8 29 11 17 -9 h
+0 g 4459 2900 N -17 9 30 10 16 -8 h
+0 g 4429 2889 N -16 8 29 11 17 -8 h
+0 g 4400 2879 N -17 8 30 11 16 -9 h
+0 g 4370 2868 N -16 9 29 10 17 -8 h
+0 g 4341 2858 N -17 8 30 11 16 -9 h
+0 g 4311 2847 N -16 9 29 10 17 -8 h
+.0014 g 4282 2840 N -17 8 30 7 16 -8 h
+.0042 g 4252 2833 N -16 8 29 7 17 -8 h
+.0056 g 4223 2823 N -17 8 30 11 16 -9 h
+.0056 g 4193 2812 N -16 9 29 10 17 -8 h
+.0056 g 4164 2802 N -17 8 30 11 16 -9 h
+.0056 g 4134 2791 N -16 9 29 10 17 -8 h
+.007 g 4105 2784 N -17 8 30 7 16 -8 h
+.0098 g 4075 2777 N -16 8 29 7 17 -8 h
+.0112 g 4046 2767 N -17 8 30 11 16 -9 h
+.0112 g 4016 2756 N -16 9 29 10 17 -8 h
+.0112 g 3987 2745 N -17 8 30 11 16 -8 h
+.0112 g 3957 2735 N -16 8 29 10 17 -8 h
+.0123 g 3928 2727 N -17 8 30 8 16 -8 h
+.0144 g 3898 2719 N -16 8 29 8 17 -8 h
+.0155 g 3869 2709 N -17 8 30 11 16 -9 h
+.0155 g 3839 2698 N -16 9 29 10 17 -8 h
+.0155 g 3810 2688 N -17 8 30 11 16 -9 h
+.0155 g 3780 2677 N -16 9 29 10 17 -8 h
+.161 g 3751 3047 N -17 8 30 -369 16 -9 h
+.3803 g 3721 3229 N -16 9 29 -183 17 -8 h
+.4542 g 3692 3219 N -17 8 30 11 16 -9 h
+.4544 g 3662 3208 N -16 9 29 10 17 -8 h
+.4546 g 3633 3198 N -17 8 30 10 16 -8 h
+.4548 g 3603 3188 N -16 8 29 11 17 -9 h
+.6204 g 3574 3610 N -17 9 30 -422 16 -9 h
+.8643 g 3544 3804 N -16 9 29 -194 17 -9 h
+.9428 g 3515 3793 N -17 9 30 10 16 -8 h
+.943 g 3485 3783 N -16 8 29 10 17 -8 h
+.9432 g 3456 3773 N -17 8 30 10 16 -8 h
+.9435 g 3426 3763 N -16 8 29 11 17 -9 h
+.9469 g 3397 3761 N -17 9 30 2 16 -9 h
+.9533 g 3368 3758 N -16 9 29 2 16 -8 h
+.9567 g 3338 3748 N -16 8 29 10 17 -8 h
+.9569 g 3309 3738 N -17 8 30 10 16 -8 h
+.9571 g 3279 3728 N -16 8 29 11 17 -9 h
+.9574 g 3250 3717 N -17 9 30 10 16 -8 h
+.8858 g 3220 3520 N -16 8 29 198 17 -9 h
+.6763 g 3191 3149 N -17 9 30 370 16 -8 h
+.5387 g 3161 3139 N -16 8 29 11 17 -9 h
+.5389 g 3132 3128 N -17 9 30 10 16 -8 h
+.5391 g 3102 3118 N -16 8 29 10 17 -8 h
+.5393 g 3073 3108 N -17 8 30 11 16 -9 h
+.4713 g 3043 2919 N -16 9 29 188 17 -8 h
+.2785 g 3014 2583 N -17 8 30 336 16 -8 h
+.1539 g 2984 2573 N -16 8 29 11 17 -9 h
+.154 g 2955 2562 N -17 9 30 10 16 -8 h
+.1541 g 2925 2552 N -16 8 29 11 17 -9 h
+.1542 g 2896 2541 N -17 9 30 10 16 -8 h
+.1333 g 2866 2476 N -16 8 29 65 17 -8 h
+.0882 g 2837 2402 N -17 8 30 74 16 -8 h
+.064 g 2807 2392 N -16 8 29 11 17 -9 h
+.064 g 2778 2381 N -17 9 30 10 16 -8 h
+.0641 g 2748 2371 N -16 8 29 11 17 -9 h
+.0641 g 2719 2360 N -17 9 30 10 16 -8 h
+.0571 g 2689 2331 N -16 8 29 29 17 -8 h
+.0427 g 2660 2301 N -17 8 30 30 16 -8 h
+.0353 g 2630 2291 N -16 8 29 11 17 -9 h
+.0353 g 2601 2280 N -17 9 30 10 16 -8 h
+.0354 g 2571 2270 N -16 8 29 11 17 -9 h
+.0354 g 2542 2259 N -17 9 30 10 16 -8 h
+.035 g 2512 2247 N -16 8 29 12 17 -8 h
+.0341 g 2483 2236 N -17 8 30 12 16 -9 h
+.0336 g 2453 2225 N -16 9 29 10 17 -8 h
+.0337 g 2424 2215 N -17 8 30 11 16 -9 h
+.0337 g 2394 2204 N -16 9 29 10 17 -8 h
+.0337 g 2365 2194 N -17 8 30 11 16 -9 h
+.0338 g 2335 2183 N -16 9 29 10 17 -8 h
+.0338 g 2306 2173 N -17 8 30 11 16 -9 h
+.0338 g 2276 2162 N -16 9 29 10 17 -8 h
+.0338 g 2247 2151 N -17 8 30 11 16 -8 h
+.0339 g 2217 2141 N -16 8 29 10 17 -8 h
+.0339 g 2188 2130 N -17 8 30 11 16 -8 h
+.0339 g 2158 2120 N -16 8 29 11 17 -9 h
+.0339 g 2129 2109 N -17 9 30 10 16 -8 h
+.034 g 2099 2099 N -16 8 29 11 17 -9 h
+.034 g 2070 2088 N -17 9 30 10 16 -8 h
+.034 g 2040 2078 N -16 8 29 11 17 -9 h
+.034 g 2011 2067 N -17 9 30 10 16 -8 h
+.0328 g 1981 2053 N -16 8 29 14 17 -8 h
+.0303 g 1952 2040 N -17 8 30 14 16 -9 h
+.0291 g 1922 2029 N -16 9 29 10 17 -8 h
+.0291 g 1893 2018 N -17 8 30 11 16 -8 h
+.0291 g 1863 2008 N -16 8 29 10 17 -8 h
+.0292 g 1834 1997 N -17 8 30 11 16 -8 h
+.0272 g 1804 1982 N -16 8 29 16 17 -9 h
+.0233 g 1775 1966 N -17 9 30 15 16 -8 h
+.0214 g 1745 1956 N -16 8 29 11 17 -9 h
+0 g 4652 2955 N -16 9 29 10 17 -8 h
+0 g 4623 2944 N -17 8 30 11 16 -8 h
+0 g 4593 2934 N -16 8 29 11 17 -9 h
+0 g 4564 2923 N -17 9 30 10 16 -8 h
+0 g 4534 2913 N -16 8 29 11 17 -9 h
+0 g 4505 2902 N -17 9 30 10 16 -8 h
+0 g 4475 2892 N -16 8 29 11 17 -9 h
+0 g 4446 2881 N -17 9 30 10 16 -8 h
+0 g 4416 2870 N -16 8 29 11 17 -8 h
+0 g 4387 2860 N -17 8 30 11 16 -9 h
+0 g 4357 2849 N -16 9 29 10 17 -8 h
+0 g 4328 2839 N -17 8 30 11 16 -9 h
+.0014 g 4298 2832 N -16 9 29 7 17 -9 h
+.0042 g 4269 2825 N -17 9 30 7 16 -9 h
+.0056 g 4239 2814 N -16 9 29 10 17 -8 h
+.0056 g 4210 2804 N -17 8 30 11 16 -9 h
+.0056 g 4180 2793 N -16 9 29 10 17 -8 h
+.0056 g 4151 2783 N -17 8 30 11 16 -9 h
+.007 g 4121 2776 N -16 9 29 7 17 -9 h
+.0098 g 4092 2769 N -17 9 30 7 16 -9 h
+.0112 g 4062 2758 N -16 9 29 10 17 -8 h
+.0112 g 4033 2748 N -17 8 30 11 16 -9 h
+.0112 g 4003 2737 N -16 9 29 10 17 -8 h
+.0112 g 3974 2727 N -17 8 30 11 16 -9 h
+.0123 g 3944 2719 N -16 9 29 8 17 -9 h
+.0144 g 3915 2711 N -17 9 30 7 16 -8 h
+.0155 g 3885 2700 N -16 8 29 11 17 -8 h
+.0155 g 3856 2690 N -17 8 30 11 16 -9 h
+.0155 g 3826 2679 N -16 9 29 10 17 -8 h
+.0155 g 3797 2669 N -17 8 30 11 16 -9 h
+.161 g 3767 3038 N -16 9 29 -370 17 -8 h
+.3803 g 3738 3221 N -17 8 30 -182 16 -9 h
+.4542 g 3708 3210 N -16 9 29 10 17 -8 h
+.4544 g 3679 3200 N -17 8 30 10 16 -8 h
+.4546 g 3649 3190 N -16 8 29 11 17 -9 h
+.4548 g 3620 3179 N -17 9 30 10 16 -8 h
+.6204 g 3590 3601 N -16 8 29 -422 17 -8 h
+.8643 g 3561 3795 N -17 8 30 -194 16 -8 h
+.9428 g 3531 3785 N -16 8 29 10 17 -8 h
+.943 g 3502 3775 N -17 8 30 11 16 -9 h
+.9432 g 3472 3765 N -16 9 29 10 17 -9 h
+.9435 g 3443 3754 N -17 9 30 10 16 -8 h
+.9469 g 3413 3752 N -16 8 29 2 17 -8 h
+.9533 g 3384 3750 N -17 8 29 2 17 -8 h
+.9567 g 3355 3740 N -17 8 30 11 16 -9 h
+.9569 g 3325 3730 N -16 9 29 10 17 -9 h
+.9571 g 3296 3719 N -17 9 30 10 16 -8 h
+.9574 g 3266 3709 N -16 8 29 10 17 -8 h
+.8858 g 3237 3511 N -17 8 30 198 16 -8 h
+.6763 g 3207 3141 N -16 8 29 371 17 -9 h
+.5387 g 3178 3130 N -17 9 30 10 16 -8 h
+.5389 g 3148 3120 N -16 8 29 10 17 -8 h
+.5391 g 3119 3110 N -17 8 30 11 16 -9 h
+.5393 g 3089 3099 N -16 9 29 10 17 -8 h
+.4713 g 3060 2911 N -17 8 30 188 16 -8 h
+.2785 g 3030 2575 N -16 8 29 337 17 -9 h
+.1539 g 3001 2564 N -17 9 30 10 16 -8 h
+.154 g 2971 2554 N -16 8 29 11 17 -9 h
+.1541 g 2942 2543 N -17 9 30 10 16 -8 h
+.1542 g 2912 2533 N -16 8 29 10 17 -8 h
+.1333 g 2883 2468 N -17 8 30 66 16 -9 h
+.0882 g 2853 2394 N -16 9 29 74 17 -9 h
+.064 g 2824 2383 N -17 9 30 10 16 -8 h
+.064 g 2794 2373 N -16 8 29 11 17 -9 h
+.0641 g 2765 2362 N -17 9 30 10 16 -8 h
+.0641 g 2735 2352 N -16 8 29 11 17 -9 h
+.0571 g 2706 2323 N -17 9 30 29 16 -9 h
+.0427 g 2676 2293 N -16 9 29 29 17 -8 h
+.0353 g 2647 2282 N -17 8 30 11 16 -8 h
+.0353 g 2617 2272 N -16 8 29 11 17 -9 h
+.0354 g 2588 2261 N -17 9 30 10 16 -8 h
+.0354 g 2558 2251 N -16 8 29 11 17 -9 h
+.035 g 2529 2239 N -17 9 30 11 16 -8 h
+.0341 g 2499 2227 N -16 8 29 12 17 -8 h
+.0336 g 2470 2217 N -17 8 30 11 16 -9 h
+.0337 g 2440 2206 N -16 9 29 10 17 -8 h
+.0337 g 2411 2196 N -17 8 30 11 16 -9 h
+.0337 g 2381 2185 N -16 9 29 10 17 -8 h
+.0338 g 2352 2175 N -17 8 30 11 16 -9 h
+.0338 g 2322 2164 N -16 9 29 10 17 -8 h
+.0338 g 2293 2154 N -17 8 30 11 16 -9 h
+.0338 g 2263 2143 N -16 9 29 10 17 -8 h
+.0339 g 2234 2133 N -17 8 30 11 16 -9 h
+.0339 g 2204 2122 N -16 9 29 10 17 -8 h
+.0339 g 2175 2111 N -17 8 30 11 16 -8 h
+.0339 g 2145 2101 N -16 8 29 10 17 -8 h
+.034 g 2116 2090 N -17 8 30 11 16 -8 h
+.034 g 2086 2080 N -16 8 29 11 17 -9 h
+.034 g 2057 2069 N -17 9 30 10 16 -8 h
+.034 g 2027 2059 N -16 8 29 11 17 -9 h
+.0328 g 1998 2045 N -17 9 30 13 16 -8 h
+.0303 g 1968 2031 N -16 8 29 14 17 -8 h
+.0291 g 1939 2021 N -17 8 30 11 16 -9 h
+.0291 g 1909 2010 N -16 9 29 10 17 -8 h
+.0291 g 1880 2000 N -17 8 30 11 16 -9 h
+.0292 g 1850 1989 N -16 9 29 10 17 -8 h
+.0272 g 1821 1973 N -17 8 30 16 16 -8 h
+.0233 g 1791 1958 N -16 8 29 16 17 -9 h
+.0214 g 1762 1947 N -17 9 30 10 16 -8 h
+0 g 4669 2947 N -17 8 30 11 16 -9 h
+0 g 4639 2936 N -16 9 29 10 17 -8 h
+0 g 4610 2925 N -17 8 30 11 16 -8 h
+0 g 4580 2915 N -16 8 29 11 17 -9 h
+0 g 4551 2904 N -17 9 30 10 16 -8 h
+0 g 4521 2894 N -16 8 29 11 17 -9 h
+0 g 4492 2883 N -17 9 30 10 16 -8 h
+0 g 4462 2873 N -16 8 29 11 17 -9 h
+0 g 4433 2862 N -17 9 30 10 16 -8 h
+0 g 4403 2851 N -16 8 29 11 17 -8 h
+0 g 4374 2841 N -17 8 30 11 16 -9 h
+0 g 4344 2830 N -16 9 29 10 17 -8 h
+.0008 g 4315 2823 N -17 8 30 10 16 -11 h
+.0025 g 4285 2816 N -16 11 29 10 17 -14 h
+.0033 g 4256 2806 N -17 14 30 11 16 -15 h
+.0033 g 4226 2795 N -16 15 29 10 17 -14 h
+.0033 g 4197 2785 N -17 14 30 11 16 -15 h
+.0033 g 4167 2774 N -16 15 29 10 17 -14 h
+.0041 g 4138 2767 N -17 14 30 10 16 -17 h
+.0057 g 4108 2760 N -16 17 29 10 17 -20 h
+.0065 g 4079 2750 N -17 20 30 11 16 -21 h
+.0065 g 4049 2739 N -16 21 29 10 17 -20 h
+.0065 g 4020 2729 N -17 20 30 11 16 -21 h
+.0065 g 3990 2718 N -16 21 29 10 17 -20 h
+.0072 g 3961 2710 N -17 20 30 11 16 -23 h
+.0084 g 3931 2703 N -16 23 29 10 17 -26 h
+.0091 g 3902 2692 N -17 26 30 10 16 -25 h
+.0091 g 3872 2681 N -16 25 29 11 17 -25 h
+.0091 g 3843 2671 N -17 25 30 10 16 -25 h
+.0091 g 3813 2660 N -16 25 29 11 17 -25 h
+.1004 g 3784 3030 N -17 25 30 -86 16 -309 h
+.2436 g 3754 3212 N -16 309 29 -68 17 -423 h
+.2955 g 3725 3202 N -17 423 30 10 16 -423 h
+.2957 g 3695 3192 N -16 423 29 11 17 -424 h
+.2958 g 3666 3181 N -17 424 30 10 16 -423 h
+.296 g 3636 3171 N -16 423 29 11 17 -424 h
+.428 g 3607 3593 N -17 424 30 -247 16 -599 h
+.629 g 3577 3787 N -16 599 29 -146 17 -647 h
+.6982 g 3548 3777 N -17 647 30 11 16 -648 h
+.6984 g 3518 3766 N -16 648 29 10 17 -647 h
+.6986 g 3489 3756 N -17 647 30 10 16 -647 h
+.6988 g 3459 3746 N -16 647 29 11 17 -648 h
+.7019 g 3430 3744 N -17 648 30 3 16 -649 h
+.7077 g 3401 3742 N -16 649 29 4 16 -651 h
+.7108 g 3371 3731 N -16 651 29 10 17 -650 h
+.711 g 3342 3721 N -17 650 30 11 16 -651 h
+.7112 g 3312 3711 N -16 651 29 10 17 -651 h
+.7114 g 3283 3701 N -17 651 30 10 16 -651 h
+.6479 g 3253 3503 N -16 651 29 156 17 -609 h
+.4714 g 3224 3132 N -17 609 30 240 16 -478 h
+.3587 g 3194 3122 N -16 478 29 11 17 -479 h
+.3589 g 3165 3112 N -17 479 30 10 16 -479 h
+.3591 g 3135 3101 N -16 479 29 10 17 -478 h
+.3592 g 3106 3091 N -17 478 30 11 16 -479 h
+.309 g 3076 2903 N -16 479 29 95 17 -386 h
+.1757 g 3047 2566 N -17 386 30 119 16 -168 h
+.0927 g 3017 2556 N -16 168 29 10 17 -168 h
+.0928 g 2988 2545 N -17 168 30 11 16 -168 h
+.0929 g 2958 2535 N -16 168 29 11 17 -169 h
+.0929 g 2929 2525 N -17 169 30 10 16 -169 h
+.08 g 2899 2459 N -16 169 29 23 17 -126 h
+.0524 g 2870 2385 N -17 126 30 24 16 -76 h
+.0378 g 2840 2375 N -16 76 29 11 17 -77 h
+.0378 g 2811 2364 N -17 77 30 10 16 -76 h
+.0379 g 2781 2354 N -16 76 29 11 17 -77 h
+.0379 g 2752 2343 N -17 77 30 11 16 -77 h
+.0337 g 2722 2314 N -16 77 29 14 17 -62 h
+.0251 g 2693 2285 N -17 62 30 14 16 -47 h
+.0207 g 2663 2274 N -16 47 29 10 17 -46 h
+.0208 g 2634 2263 N -17 46 30 11 16 -46 h
+.0208 g 2604 2253 N -16 46 29 11 17 -47 h
+.0208 g 2575 2242 N -17 47 30 10 16 -46 h
+.0205 g 2545 2231 N -16 46 29 11 17 -46 h
+.02 g 2516 2219 N -17 46 30 11 16 -45 h
+.0198 g 2486 2208 N -16 45 29 10 17 -44 h
+.0198 g 2457 2198 N -17 44 30 11 16 -45 h
+.0198 g 2427 2187 N -16 45 29 10 17 -44 h
+.0198 g 2398 2177 N -17 44 30 11 16 -45 h
+.0198 g 2368 2166 N -16 45 29 11 17 -45 h
+.0198 g 2339 2156 N -17 45 30 10 16 -45 h
+.0199 g 2309 2145 N -16 45 29 11 17 -45 h
+.0199 g 2280 2135 N -17 45 30 10 16 -45 h
+.0199 g 2250 2124 N -16 45 29 11 17 -45 h
+.0199 g 2221 2114 N -17 45 30 10 16 -45 h
+.0199 g 2191 2103 N -16 45 29 11 17 -45 h
+.0199 g 2162 2093 N -17 45 30 10 16 -45 h
+.0199 g 2132 2082 N -16 45 29 11 17 -45 h
+.02 g 2103 2071 N -17 45 30 11 16 -45 h
+.02 g 2073 2061 N -16 45 29 10 17 -45 h
+.02 g 2044 2050 N -17 45 30 11 16 -45 h
+.0193 g 2014 2037 N -16 45 29 11 17 -43 h
+.0178 g 1985 2023 N -17 43 30 11 16 -40 h
+.0171 g 1955 2012 N -16 40 29 11 17 -40 h
+.0171 g 1926 2002 N -17 40 30 10 16 -40 h
+.0171 g 1896 1991 N -16 40 29 11 17 -40 h
+.0171 g 1867 1981 N -17 40 30 10 16 -40 h
+.016 g 1837 1965 N -16 40 29 12 17 -36 h
+.0137 g 1808 1949 N -17 36 30 11 16 -31 h
+.0125 g 1778 1939 N -16 31 29 11 17 -32 h
+0 g 4685 2938 N -16 9 29 10 17 -8 h
+0 g 4656 2928 N -17 8 30 11 16 -9 h
+0 g 4626 2917 N -16 9 29 10 17 -8 h
+0 g 4597 2906 N -17 8 30 11 16 -8 h
+0 g 4567 2896 N -16 8 29 11 17 -9 h
+0 g 4538 2885 N -17 9 30 10 16 -8 h
+0 g 4508 2875 N -16 8 29 11 17 -9 h
+0 g 4479 2864 N -17 9 30 10 16 -8 h
+0 g 4449 2854 N -16 8 29 11 17 -9 h
+0 g 4420 2843 N -17 9 30 10 16 -8 h
+0 g 4390 2832 N -16 8 29 11 17 -8 h
+0 g 4361 2822 N -17 8 30 10 16 -8 h
+.0001 g 4331 2812 N -16 8 29 11 17 -9 h
+.0004 g 4302 2802 N -17 9 30 11 16 -10 h
+.0005 g 4272 2791 N -16 10 29 10 17 -9 h
+.0005 g 4243 2781 N -17 9 30 11 16 -10 h
+.0005 g 4213 2770 N -16 10 29 10 17 -9 h
+.0005 g 4184 2760 N -17 9 30 11 16 -10 h
+.0006 g 4154 2750 N -16 10 29 10 17 -10 h
+.0008 g 4125 2740 N -17 10 30 11 16 -11 h
+.0009 g 4095 2729 N -16 11 29 11 17 -11 h
+.0009 g 4066 2719 N -17 11 30 10 16 -11 h
+.0009 g 4036 2708 N -16 11 29 11 17 -11 h
+.0009 g 4007 2698 N -17 11 30 10 16 -11 h
+.001 g 3977 2687 N -16 11 29 11 17 -11 h
+.0012 g 3948 2677 N -17 11 30 10 16 -11 h
+.0013 g 3918 2667 N -16 11 29 11 17 -12 h
+.0013 g 3889 2656 N -17 12 30 11 16 -12 h
+.0013 g 3859 2646 N -16 12 29 10 17 -12 h
+.0013 g 3830 2635 N -17 12 30 11 16 -12 h
+.0199 g 3800 2721 N -16 12 29 10 17 -108 h
+.0534 g 3771 2789 N -17 108 30 11 16 -187 h
+.0684 g 3741 2779 N -16 187 29 10 17 -187 h
+.0684 g 3712 2768 N -17 187 30 11 16 -187 h
+.0685 g 3682 2758 N -16 187 29 11 17 -188 h
+.0685 g 3653 2747 N -17 188 30 10 16 -187 h
+.1177 g 3623 2994 N -16 187 29 11 17 -445 h
+.1968 g 3594 3140 N -17 445 30 10 16 -601 h
+.2268 g 3564 3129 N -16 601 29 11 17 -601 h
+.2269 g 3535 3119 N -17 601 30 10 16 -601 h
+.227 g 3505 3109 N -16 601 29 11 17 -602 h
+.2271 g 3476 3098 N -17 602 30 11 16 -602 h
+.2285 g 3446 3095 N -16 602 29 10 17 -609 h
+.2311 g 3417 3091 N -17 609 30 11 16 -616 h
+.2324 g 3388 3081 N -16 616 29 10 16 -616 h
+.2325 g 3358 3070 N -16 616 29 11 17 -616 h
+.2326 g 3329 3060 N -17 616 30 10 16 -616 h
+.2327 g 3299 3050 N -16 616 29 11 17 -617 h
+.205 g 3270 2894 N -17 617 30 11 16 -472 h
+.1333 g 3240 2654 N -16 472 29 10 17 -242 h
+.0894 g 3211 2643 N -17 242 30 11 16 -242 h
+.0895 g 3181 2633 N -16 242 29 10 17 -242 h
+.0895 g 3152 2623 N -17 242 30 11 16 -243 h
+.0896 g 3122 2612 N -16 243 29 10 17 -242 h
+.0733 g 3093 2517 N -17 242 30 11 16 -158 h
+.0364 g 3063 2398 N -16 158 29 11 17 -50 h
+.0158 g 3034 2388 N -17 50 30 10 16 -50 h
+.0158 g 3004 2377 N -16 50 29 11 17 -50 h
+.0158 g 2975 2366 N -17 50 30 10 16 -49 h
+.0158 g 2945 2356 N -16 49 29 11 17 -50 h
+.0134 g 2916 2333 N -17 50 30 10 16 -37 h
+.0084 g 2886 2309 N -16 37 29 11 17 -24 h
+.0058 g 2857 2298 N -17 24 30 11 16 -24 h
+.0058 g 2827 2288 N -16 24 29 10 17 -24 h
+.0058 g 2798 2277 N -17 24 30 11 16 -24 h
+.0058 g 2768 2266 N -16 24 29 10 17 -23 h
+.0051 g 2739 2252 N -17 23 30 11 16 -20 h
+.0038 g 2709 2238 N -16 20 29 10 17 -16 h
+.0031 g 2680 2228 N -17 16 30 11 16 -17 h
+.0031 g 2650 2217 N -16 17 29 10 17 -16 h
+.0031 g 2621 2206 N -17 16 30 11 16 -16 h
+.0031 g 2591 2196 N -16 16 29 11 17 -17 h
+.0031 g 2562 2185 N -17 17 30 10 16 -16 h
+.003 g 2532 2174 N -16 16 29 11 17 -16 h
+.0029 g 2503 2164 N -17 16 30 10 16 -16 h
+.0029 g 2473 2153 N -16 16 29 11 17 -16 h
+.0029 g 2444 2143 N -17 16 30 10 16 -16 h
+.0029 g 2414 2132 N -16 16 29 11 17 -16 h
+.0029 g 2385 2121 N -17 16 30 11 16 -16 h
+.0029 g 2355 2111 N -16 16 29 10 17 -16 h
+.0029 g 2326 2100 N -17 16 30 11 16 -16 h
+.003 g 2296 2090 N -16 16 29 10 17 -16 h
+.003 g 2267 2079 N -17 16 30 11 16 -16 h
+.003 g 2237 2069 N -16 16 29 10 17 -16 h
+.003 g 2208 2058 N -17 16 30 11 16 -16 h
+.003 g 2178 2048 N -16 16 29 11 17 -17 h
+.003 g 2149 2037 N -17 17 30 10 16 -16 h
+.003 g 2119 2026 N -16 16 29 11 17 -16 h
+.003 g 2090 2016 N -17 16 30 10 16 -16 h
+.003 g 2060 2005 N -16 16 29 11 17 -16 h
+.0029 g 2031 1994 N -17 16 30 10 16 -15 h
+.0026 g 2001 1983 N -16 15 29 11 17 -15 h
+.0025 g 1972 1972 N -17 15 30 11 16 -15 h
+.0025 g 1942 1962 N -16 15 29 10 17 -15 h
+.0025 g 1913 1951 N -17 15 30 11 16 -15 h
+.0025 g 1883 1941 N -16 15 29 10 17 -15 h
+.0024 g 1854 1929 N -17 15 30 11 16 -14 h
+.002 g 1824 1918 N -16 14 29 10 17 -13 h
+.0018 g 1795 1907 N -17 13 30 11 16 -13 h
+0 g 4702 2930 N -17 8 30 11 16 -9 h
+0 g 4672 2919 N -16 9 29 10 17 -8 h
+0 g 4643 2909 N -17 8 30 11 16 -9 h
+0 g 4613 2898 N -16 9 29 10 17 -8 h
+0 g 4584 2887 N -17 8 30 11 16 -8 h
+0 g 4554 2877 N -16 8 29 10 17 -8 h
+0 g 4525 2866 N -17 8 30 11 16 -8 h
+0 g 4495 2856 N -16 8 29 11 17 -9 h
+0 g 4466 2845 N -17 9 30 10 16 -8 h
+0 g 4436 2835 N -16 8 29 11 17 -9 h
+0 g 4407 2824 N -17 9 30 10 16 -8 h
+0 g 4377 2814 N -16 8 29 11 17 -9 h
+0 g 4348 2803 N -17 9 30 10 16 -8 h
+0 g 4318 2792 N -16 8 29 11 17 -8 h
+0 g 4289 2782 N -17 8 30 11 16 -9 h
+0 g 4259 2771 N -16 9 29 10 17 -8 h
+0 g 4230 2761 N -17 8 30 11 16 -9 h
+0 g 4200 2750 N -16 9 29 10 17 -8 h
+0 g 4171 2740 N -17 8 30 11 16 -9 h
+0 g 4141 2729 N -16 9 29 10 17 -8 h
+0 g 4112 2718 N -17 8 30 11 16 -8 h
+0 g 4082 2708 N -16 8 29 11 17 -9 h
+0 g 4053 2697 N -17 9 30 10 16 -8 h
+0 g 4023 2687 N -16 8 29 11 17 -9 h
+0 g 3994 2676 N -17 9 30 10 16 -8 h
+0 g 3964 2666 N -16 8 29 11 17 -9 h
+0 g 3935 2655 N -17 9 30 10 16 -8 h
+0 g 3905 2644 N -16 8 29 11 17 -8 h
+0 g 3876 2634 N -17 8 30 11 16 -9 h
+0 g 3846 2623 N -16 9 29 10 17 -8 h
+0 g 3817 2613 N -17 8 30 11 16 -9 h
+0 g 3787 2602 N -16 9 29 10 17 -8 h
+0 g 3758 2592 N -17 8 30 11 16 -9 h
+0 g 3728 2581 N -16 9 29 10 17 -8 h
+0 g 3699 2570 N -17 8 30 11 16 -8 h
+0 g 3669 2560 N -16 8 29 11 17 -9 h
+0 g 3640 2549 N -17 9 30 10 16 -8 h
+0 g 3610 2539 N -16 8 29 11 17 -9 h
+0 g 3581 2528 N -17 9 30 10 16 -8 h
+0 g 3551 2518 N -16 8 29 11 17 -9 h
+0 g 3522 2507 N -17 9 30 10 16 -8 h
+0 g 3492 2496 N -16 8 29 11 17 -8 h
+0 g 3463 2486 N -17 8 30 11 16 -9 h
+0 g 3433 2475 N -16 9 29 10 17 -8 h
+0 g 3404 2465 N -17 8 29 11 17 -9 h
+0 g 3375 2454 N -17 9 30 10 16 -8 h
+0 g 3345 2444 N -16 8 29 11 17 -9 h
+0 g 3316 2433 N -17 9 30 10 16 -8 h
+0 g 3286 2422 N -16 8 29 11 17 -8 h
+0 g 3257 2412 N -17 8 30 11 16 -9 h
+0 g 3227 2401 N -16 9 29 10 17 -8 h
+0 g 3198 2391 N -17 8 30 11 16 -9 h
+0 g 3168 2380 N -16 9 29 10 17 -8 h
+0 g 3139 2370 N -17 8 30 11 16 -9 h
+0 g 3109 2359 N -16 9 29 10 17 -8 h
+0 g 3080 2348 N -17 8 30 11 16 -8 h
+0 g 3050 2338 N -16 8 29 10 17 -8 h
+0 g 3021 2327 N -17 8 30 11 16 -8 h
+0 g 2991 2317 N -16 8 29 11 17 -9 h
+0 g 2962 2306 N -17 9 30 10 16 -8 h
+0 g 2932 2296 N -16 8 29 11 17 -9 h
+0 g 2903 2285 N -17 9 30 10 16 -8 h
+0 g 2873 2274 N -16 8 29 11 17 -8 h
+0 g 2844 2264 N -17 8 30 10 16 -8 h
+0 g 2814 2253 N -16 8 29 11 17 -8 h
+0 g 2785 2243 N -17 8 30 11 16 -9 h
+0 g 2755 2232 N -16 9 29 10 17 -8 h
+0 g 2726 2222 N -17 8 30 11 16 -9 h
+0 g 2696 2211 N -16 9 29 10 17 -8 h
+0 g 2667 2201 N -17 8 30 11 16 -9 h
+0 g 2637 2190 N -16 9 29 10 17 -8 h
+0 g 2608 2179 N -17 8 30 11 16 -8 h
+0 g 2578 2169 N -16 8 29 11 17 -9 h
+0 g 2549 2158 N -17 9 30 10 16 -8 h
+0 g 2519 2148 N -16 8 29 11 17 -9 h
+0 g 2490 2137 N -17 9 30 10 16 -8 h
+0 g 2460 2127 N -16 8 29 11 17 -9 h
+0 g 2431 2116 N -17 9 30 10 16 -8 h
+0 g 2401 2105 N -16 8 29 11 17 -8 h
+0 g 2372 2095 N -17 8 30 11 16 -9 h
+0 g 2342 2084 N -16 9 29 10 17 -8 h
+0 g 2313 2074 N -17 8 30 11 16 -9 h
+0 g 2283 2063 N -16 9 29 10 17 -8 h
+0 g 2254 2053 N -17 8 30 11 16 -9 h
+0 g 2224 2042 N -16 9 29 10 17 -8 h
+0 g 2195 2031 N -17 8 30 11 16 -8 h
+0 g 2165 2021 N -16 8 29 11 17 -9 h
+0 g 2136 2010 N -17 9 30 10 16 -8 h
+0 g 2106 2000 N -16 8 29 11 17 -9 h
+0 g 2077 1989 N -17 9 30 10 16 -8 h
+0 g 2047 1979 N -16 8 29 11 17 -9 h
+0 g 2018 1968 N -17 9 30 10 16 -8 h
+0 g 1988 1957 N -16 8 29 11 17 -8 h
+0 g 1959 1947 N -17 8 30 11 16 -9 h
+0 g 1929 1936 N -16 9 29 10 17 -8 h
+0 g 1900 1926 N -17 8 30 11 16 -9 h
+0 g 1870 1915 N -16 9 29 10 17 -8 h
+0 g 1841 1905 N -17 8 30 11 16 -9 h
+0 g 1811 1894 N -16 9 29 10 17 -8 h
+0 g 4718 2921 N -16 8 29 11 17 -8 h
+0 g 4689 2911 N -17 8 30 11 16 -9 h
+0 g 4659 2900 N -16 9 29 10 17 -8 h
+0 g 4630 2890 N -17 8 30 11 16 -9 h
+0 g 4600 2879 N -16 9 29 10 17 -8 h
+0 g 4571 2869 N -17 8 30 11 16 -9 h
+0 g 4541 2858 N -16 9 29 10 17 -8 h
+0 g 4512 2847 N -17 8 30 11 16 -8 h
+0 g 4482 2837 N -16 8 29 11 17 -9 h
+0 g 4453 2826 N -17 9 30 10 16 -8 h
+0 g 4423 2816 N -16 8 29 11 17 -9 h
+0 g 4394 2805 N -17 9 30 10 16 -8 h
+0 g 4364 2795 N -16 8 29 11 17 -9 h
+0 g 4335 2784 N -17 9 30 10 16 -8 h
+0 g 4305 2773 N -16 8 29 11 17 -8 h
+0 g 4276 2763 N -17 8 30 11 16 -9 h
+0 g 4246 2752 N -16 9 29 10 17 -8 h
+0 g 4217 2742 N -17 8 30 11 16 -9 h
+0 g 4187 2731 N -16 9 29 10 17 -8 h
+0 g 4158 2721 N -17 8 30 11 16 -9 h
+0 g 4128 2710 N -16 9 29 10 17 -8 h
+0 g 4099 2699 N -17 8 30 11 16 -8 h
+0 g 4069 2689 N -16 8 29 11 17 -9 h
+0 g 4040 2678 N -17 9 30 10 16 -8 h
+0 g 4010 2668 N -16 8 29 11 17 -9 h
+0 g 3981 2657 N -17 9 30 10 16 -8 h
+0 g 3951 2647 N -16 8 29 11 17 -9 h
+0 g 3922 2636 N -17 9 30 10 16 -8 h
+0 g 3892 2625 N -16 8 29 11 17 -8 h
+0 g 3863 2615 N -17 8 30 11 16 -9 h
+0 g 3833 2604 N -16 9 29 10 17 -8 h
+0 g 3804 2594 N -17 8 30 11 16 -9 h
+0 g 3774 2583 N -16 9 29 10 17 -8 h
+0 g 3745 2573 N -17 8 30 11 16 -9 h
+0 g 3715 2562 N -16 9 29 10 17 -8 h
+0 g 3686 2551 N -17 8 30 11 16 -8 h
+0 g 3656 2541 N -16 8 29 11 17 -9 h
+0 g 3627 2530 N -17 9 30 10 16 -8 h
+0 g 3597 2520 N -16 8 29 11 17 -9 h
+0 g 3568 2509 N -17 9 30 10 16 -8 h
+0 g 3538 2499 N -16 8 29 11 17 -9 h
+0 g 3509 2488 N -17 9 30 10 16 -8 h
+0 g 3479 2477 N -16 8 29 11 17 -8 h
+0 g 3450 2467 N -17 8 30 10 16 -8 h
+0 g 3421 2456 N -16 8 29 11 16 -8 h
+0 g 3391 2446 N -16 8 29 11 17 -9 h
+0 g 3362 2435 N -17 9 30 10 16 -8 h
+0 g 3332 2425 N -16 8 29 11 17 -9 h
+0 g 3303 2414 N -17 9 30 10 16 -8 h
+0 g 3273 2403 N -16 8 29 11 17 -8 h
+0 g 3244 2393 N -17 8 30 10 16 -8 h
+0 g 3214 2382 N -16 8 29 11 17 -8 h
+0 g 3185 2372 N -17 8 30 11 16 -9 h
+0 g 3155 2361 N -16 9 29 10 17 -8 h
+0 g 3126 2351 N -17 8 30 11 16 -9 h
+0 g 3096 2340 N -16 9 29 10 17 -8 h
+0 g 3067 2330 N -17 8 30 11 16 -9 h
+0 g 3037 2319 N -16 9 29 10 17 -8 h
+0 g 3008 2308 N -17 8 30 11 16 -8 h
+0 g 2978 2298 N -16 8 29 11 17 -9 h
+0 g 2949 2287 N -17 9 30 10 16 -8 h
+0 g 2919 2277 N -16 8 29 11 17 -9 h
+0 g 2890 2266 N -17 9 30 10 16 -8 h
+0 g 2860 2256 N -16 8 29 11 17 -9 h
+0 g 2831 2245 N -17 9 30 10 16 -8 h
+0 g 2801 2234 N -16 8 29 11 17 -8 h
+0 g 2772 2224 N -17 8 30 11 16 -9 h
+0 g 2742 2213 N -16 9 29 10 17 -8 h
+0 g 2713 2203 N -17 8 30 11 16 -9 h
+0 g 2683 2192 N -16 9 29 10 17 -8 h
+0 g 2654 2182 N -17 8 30 11 16 -9 h
+0 g 2624 2171 N -16 9 29 10 17 -8 h
+0 g 2595 2160 N -17 8 30 11 16 -8 h
+0 g 2565 2150 N -16 8 29 11 17 -9 h
+0 g 2536 2139 N -17 9 30 10 16 -8 h
+0 g 2506 2129 N -16 8 29 11 17 -9 h
+0 g 2477 2118 N -17 9 30 10 16 -8 h
+0 g 2447 2108 N -16 8 29 11 17 -9 h
+0 g 2418 2097 N -17 9 30 10 16 -8 h
+0 g 2388 2086 N -16 8 29 11 17 -8 h
+0 g 2359 2076 N -17 8 30 11 16 -9 h
+0 g 2329 2065 N -16 9 29 10 17 -8 h
+0 g 2300 2055 N -17 8 30 11 16 -9 h
+0 g 2270 2044 N -16 9 29 10 17 -8 h
+0 g 2241 2034 N -17 8 30 11 16 -9 h
+0 g 2211 2023 N -16 9 29 10 17 -8 h
+0 g 2182 2012 N -17 8 30 11 16 -8 h
+0 g 2152 2002 N -16 8 29 11 17 -9 h
+0 g 2123 1991 N -17 9 30 10 16 -8 h
+0 g 2093 1981 N -16 8 29 11 17 -9 h
+0 g 2064 1970 N -17 9 30 10 16 -8 h
+0 g 2034 1960 N -16 8 29 11 17 -9 h
+0 g 2005 1949 N -17 9 30 10 16 -8 h
+0 g 1975 1938 N -16 8 29 11 17 -8 h
+0 g 1946 1928 N -17 8 30 11 16 -9 h
+0 g 1916 1917 N -16 9 29 10 17 -8 h
+0 g 1887 1907 N -17 8 30 11 16 -9 h
+0 g 1857 1896 N -16 9 29 10 17 -8 h
+0 g 1828 1886 N -17 8 30 11 16 -9 h
+0 g 4735 2913 N -17 9 30 10 16 -8 h
+0 g 4705 2902 N -16 8 29 11 17 -8 h
+0 g 4676 2892 N -17 8 30 11 16 -9 h
+0 g 4646 2881 N -16 9 29 10 17 -8 h
+0 g 4617 2871 N -17 8 30 11 16 -9 h
+0 g 4587 2860 N -16 9 29 10 17 -8 h
+0 g 4558 2850 N -17 8 30 11 16 -9 h
+0 g 4528 2839 N -16 9 29 10 17 -8 h
+0 g 4499 2828 N -17 8 30 11 16 -8 h
+0 g 4469 2818 N -16 8 29 11 17 -9 h
+0 g 4440 2807 N -17 9 30 10 16 -8 h
+0 g 4410 2797 N -16 8 29 11 17 -9 h
+.0005 g 4381 2786 N -17 9 30 8 16 -6 h
+.0014 g 4351 2776 N -16 6 29 8 17 -4 h
+.0019 g 4322 2765 N -17 4 30 10 16 -3 h
+.0019 g 4292 2754 N -16 3 29 11 17 -3 h
+.0019 g 4263 2744 N -17 3 30 11 16 -4 h
+.0019 g 4233 2733 N -16 4 29 10 17 -3 h
+.0023 g 4204 2723 N -17 3 30 8 16 -1 h
+.0033 g 4174 2712 N -16 1 29 8 17 2 h
+.0037 g 4145 2702 N -17 -2 30 11 16 1 h
+.0037 g 4115 2691 N -16 -1 29 11 17 1 h
+.0038 g 4086 2680 N -17 -1 30 10 16 2 h
+.0038 g 4056 2670 N -16 -2 29 11 17 1 h
+.0041 g 4027 2659 N -17 -1 30 8 16 4 h
+.0048 g 3997 2649 N -16 -4 29 9 17 5 h
+.0052 g 3968 2638 N -17 -5 30 11 16 5 h
+.0052 g 3938 2628 N -16 -5 29 10 17 5 h
+.0052 g 3909 2617 N -17 -5 30 11 16 5 h
+.0052 g 3879 2606 N -16 -5 29 10 17 6 h
+.061 g 3850 2596 N -17 -6 30 -281 16 297 h
+.149 g 3820 2585 N -16 -297 29 -157 17 465 h
+.1812 g 3791 2575 N -17 -465 30 10 16 465 h
+.1813 g 3761 2564 N -16 -465 29 10 17 466 h
+.1814 g 3732 2554 N -17 -466 30 11 16 465 h
+.1815 g 3702 2543 N -16 -465 29 10 17 466 h
+.2588 g 3673 2532 N -17 -466 30 -393 16 870 h
+.3741 g 3643 2522 N -16 -870 29 -188 17 1068 h
+.4121 g 3614 2511 N -17 -1068 30 10 16 1069 h
+.4123 g 3584 2501 N -16 -1069 29 10 17 1069 h
+.4124 g 3555 2490 N -17 -1069 30 11 16 1069 h
+.4125 g 3525 2480 N -16 -1069 29 10 17 1069 h
+.4142 g 3496 2469 N -17 -1069 30 2 16 1078 h
+.4173 g 3466 2459 N -16 -1078 29 2 17 1086 h
+.4189 g 3437 2448 N -17 -1086 30 11 16 1086 h
+.4191 g 3408 2437 N -16 -1086 29 10 16 1087 h
+.4192 g 3378 2427 N -16 -1087 29 10 17 1087 h
+.4193 g 3349 2416 N -17 -1087 30 11 16 1087 h
+.3845 g 3319 2406 N -16 -1087 29 192 17 905 h
+.2846 g 3290 2395 N -17 -905 30 351 16 565 h
+.2195 g 3260 2385 N -16 -565 29 10 17 565 h
+.2196 g 3231 2374 N -17 -565 30 11 16 565 h
+.2197 g 3201 2363 N -16 -565 29 10 17 566 h
+.2198 g 3172 2353 N -17 -566 30 10 16 566 h
+.1892 g 3142 2342 N -16 -566 29 171 17 406 h
+.1069 g 3113 2332 N -17 -406 30 280 16 136 h
+.0553 g 3083 2321 N -16 -136 29 11 17 136 h
+.0553 g 3054 2311 N -17 -136 30 10 16 136 h
+.0554 g 3024 2300 N -16 -136 29 11 17 136 h
+.0554 g 2995 2289 N -17 -136 30 10 16 137 h
+.0475 g 2965 2279 N -16 -137 29 52 17 95 h
+.0308 g 2936 2268 N -17 -95 30 57 16 49 h
+.022 g 2906 2258 N -16 -49 29 10 17 49 h
+.0221 g 2877 2247 N -17 -49 30 11 16 49 h
+.0221 g 2847 2237 N -16 -49 29 10 17 49 h
+.0221 g 2818 2226 N -17 -49 30 11 16 49 h
+.0196 g 2788 2215 N -16 -49 29 23 17 37 h
+.0146 g 2759 2205 N -17 -37 30 24 16 23 h
+.012 g 2729 2194 N -16 -23 29 11 17 23 h
+.012 g 2700 2184 N -17 -23 30 10 16 23 h
+.012 g 2670 2173 N -16 -23 29 11 17 23 h
+.012 g 2641 2163 N -17 -23 30 10 16 23 h
+.0119 g 2611 2152 N -16 -23 29 12 17 22 h
+.0116 g 2582 2141 N -17 -22 30 11 16 22 h
+.0114 g 2552 2131 N -16 -22 29 11 17 21 h
+.0114 g 2523 2120 N -17 -21 30 10 16 22 h
+.0114 g 2493 2110 N -16 -22 29 11 17 21 h
+.0114 g 2464 2099 N -17 -21 30 10 16 22 h
+.0115 g 2434 2089 N -16 -22 29 11 17 21 h
+.0115 g 2405 2078 N -17 -21 30 10 16 22 h
+.0115 g 2375 2067 N -16 -22 29 11 17 22 h
+.0115 g 2346 2057 N -17 -22 30 11 16 21 h
+.0115 g 2316 2046 N -16 -21 29 10 17 22 h
+.0115 g 2287 2036 N -17 -22 30 11 16 21 h
+.0115 g 2257 2025 N -16 -21 29 10 17 22 h
+.0115 g 2228 2015 N -17 -22 30 11 16 21 h
+.0115 g 2198 2004 N -16 -21 29 10 17 22 h
+.0115 g 2169 1993 N -17 -22 30 11 16 22 h
+.0115 g 2139 1983 N -16 -22 29 10 17 22 h
+.0116 g 2110 1972 N -17 -22 30 11 16 22 h
+.0111 g 2080 1962 N -16 -22 29 13 17 19 h
+.0103 g 2051 1951 N -17 -19 30 12 16 18 h
+.0098 g 2021 1941 N -16 -18 29 11 17 17 h
+.0099 g 1992 1930 N -17 -17 30 11 16 17 h
+.0099 g 1962 1919 N -16 -17 29 10 17 18 h
+.0099 g 1933 1909 N -17 -18 30 11 16 17 h
+.0092 g 1903 1898 N -16 -17 29 14 17 14 h
+.0079 g 1874 1888 N -17 -14 30 14 16 10 h
+.0072 g 1844 1877 N -16 -10 29 10 17 11 h
+0 g 4751 2905 N -16 8 29 11 17 -9 h
+0 g 4722 2894 N -17 9 30 10 16 -8 h
+0 g 4692 2883 N -16 8 29 11 17 -8 h
+0 g 4663 2873 N -17 8 30 11 16 -9 h
+0 g 4633 2862 N -16 9 29 10 17 -8 h
+0 g 4604 2852 N -17 8 30 11 16 -9 h
+0 g 4574 2841 N -16 9 29 10 17 -8 h
+0 g 4545 2831 N -17 8 30 11 16 -9 h
+0 g 4515 2820 N -16 9 29 10 17 -8 h
+0 g 4486 2809 N -17 8 30 11 16 -8 h
+0 g 4456 2799 N -16 8 29 11 17 -9 h
+0 g 4427 2788 N -17 9 30 10 16 -8 h
+.0012 g 4397 2780 N -16 8 29 7 17 -7 h
+.0035 g 4368 2772 N -17 7 30 7 16 -6 h
+.0047 g 4338 2762 N -16 6 29 10 17 -6 h
+.0047 g 4309 2751 N -17 6 30 11 16 -6 h
+.0047 g 4279 2740 N -16 6 29 11 17 -6 h
+.0047 g 4250 2730 N -17 6 30 10 16 -6 h
+.0059 g 4220 2722 N -16 6 29 7 17 -5 h
+.0082 g 4191 2714 N -17 5 30 7 16 -4 h
+.0093 g 4161 2703 N -16 4 29 11 17 -4 h
+.0093 g 4132 2692 N -17 4 30 10 16 -3 h
+.0093 g 4102 2682 N -16 3 29 11 17 -4 h
+.0094 g 4073 2671 N -17 4 30 10 16 -3 h
+.0103 g 4043 2663 N -16 3 29 8 17 -3 h
+.012 g 4014 2654 N -17 3 30 8 16 -2 h
+.0129 g 3984 2643 N -16 2 29 10 17 -1 h
+.013 g 3955 2633 N -17 1 30 11 16 -2 h
+.013 g 3925 2622 N -16 2 29 10 17 -1 h
+.013 g 3896 2612 N -17 1 30 11 16 -2 h
+.1415 g 3866 2893 N -16 2 29 -370 17 87 h
+.3392 g 3837 3050 N -17 -87 30 -182 16 112 h
+.4083 g 3807 3040 N -16 -112 29 10 17 112 h
+.4085 g 3778 3030 N -17 -112 30 11 16 111 h
+.4087 g 3748 3019 N -16 -111 29 10 17 112 h
+.4089 g 3719 3009 N -17 -112 30 10 16 112 h
+.569 g 3689 3402 N -16 -112 29 -421 17 140 h
+.8062 g 3660 3590 N -17 -140 30 -195 16 147 h
+.8835 g 3630 3580 N -16 -147 29 11 17 146 h
+.8838 g 3601 3570 N -17 -146 30 10 16 146 h
+.884 g 3571 3559 N -16 -146 29 10 17 147 h
+.8842 g 3542 3549 N -17 -147 30 10 16 147 h
+.8876 g 3512 3547 N -16 -147 29 3 17 146 h
+.894 g 3483 3545 N -17 -146 30 2 16 146 h
+.8973 g 3453 3534 N -16 -146 29 10 17 147 h
+.8975 g 3424 3524 N -17 -147 29 10 17 147 h
+.8977 g 3395 3514 N -17 -147 30 10 16 147 h
+.898 g 3365 3503 N -16 -147 29 11 17 147 h
+.8274 g 3336 3311 N -17 -147 30 198 16 141 h
+.6227 g 3306 2960 N -16 -141 29 370 17 122 h
+.4888 g 3277 2950 N -17 -122 30 10 16 122 h
+.489 g 3247 2939 N -16 -122 29 11 17 122 h
+.4892 g 3218 2929 N -17 -122 30 10 16 122 h
+.4894 g 3188 2919 N -16 -122 29 10 17 122 h
+.4248 g 3159 2748 N -17 -122 30 189 16 104 h
+.2461 g 3129 2468 N -16 -104 29 336 17 48 h
+.1322 g 3100 2457 N -17 -48 30 11 16 48 h
+.1323 g 3070 2447 N -16 -48 29 10 17 48 h
+.1324 g 3041 2436 N -17 -48 30 10 16 49 h
+.1325 g 3011 2426 N -16 -49 29 11 17 48 h
+.1142 g 2982 2374 N -17 -48 30 65 16 35 h
+.0749 g 2952 2317 N -16 -35 29 74 17 18 h
+.054 g 2923 2307 N -17 -18 30 10 16 18 h
+.0541 g 2893 2296 N -16 -18 29 11 17 18 h
+.0541 g 2864 2286 N -17 -18 30 11 16 17 h
+.0542 g 2834 2275 N -16 -17 29 10 17 18 h
+.0482 g 2805 2252 N -17 -18 30 29 16 12 h
+.0359 g 2775 2228 N -16 -12 29 30 17 6 h
+.0296 g 2746 2217 N -17 -6 30 10 16 7 h
+.0297 g 2716 2207 N -16 -7 29 11 17 6 h
+.0297 g 2687 2196 N -17 -6 30 10 16 7 h
+.0297 g 2657 2186 N -16 -7 29 11 17 6 h
+.0294 g 2628 2174 N -17 -6 30 12 16 6 h
+.0286 g 2598 2163 N -16 -6 29 11 17 6 h
+.0282 g 2569 2152 N -17 -6 30 11 16 6 h
+.0283 g 2539 2142 N -16 -6 29 10 17 6 h
+.0283 g 2510 2131 N -17 -6 30 11 16 6 h
+.0283 g 2480 2121 N -16 -6 29 11 17 5 h
+.0283 g 2451 2110 N -17 -5 30 10 16 6 h
+.0284 g 2421 2100 N -16 -6 29 11 17 5 h
+.0284 g 2392 2089 N -17 -5 30 10 16 6 h
+.0284 g 2362 2078 N -16 -6 29 11 17 6 h
+.0284 g 2333 2068 N -17 -6 30 10 16 6 h
+.0284 g 2303 2057 N -16 -6 29 11 17 6 h
+.0285 g 2274 2047 N -17 -6 30 10 16 6 h
+.0285 g 2244 2036 N -16 -6 29 11 17 6 h
+.0285 g 2215 2026 N -17 -6 30 10 16 6 h
+.0285 g 2185 2015 N -16 -6 29 11 17 6 h
+.0286 g 2156 2005 N -17 -6 30 10 16 6 h
+.0286 g 2126 1994 N -16 -6 29 11 17 6 h
+.0275 g 2097 1981 N -17 -6 30 14 16 5 h
+.0254 g 2067 1969 N -16 -5 29 14 17 3 h
+.0244 g 2038 1958 N -17 -3 30 10 16 4 h
+.0244 g 2008 1947 N -16 -4 29 11 17 4 h
+.0244 g 1979 1937 N -17 -4 30 10 16 4 h
+.0245 g 1949 1926 N -16 -4 29 11 17 4 h
+.0228 g 1920 1912 N -17 -4 30 15 16 3 h
+.0195 g 1890 1898 N -16 -3 29 16 17 1 h
+.0179 g 1861 1888 N -17 -1 30 11 16 0 h
+0 g 4768 2896 N -17 9 30 10 16 -8 h
+0 g 4738 2886 N -16 8 29 11 17 -9 h
+0 g 4709 2875 N -17 9 30 10 16 -8 h
+0 g 4679 2864 N -16 8 29 11 17 -8 h
+0 g 4650 2854 N -17 8 30 10 16 -8 h
+0 g 4620 2843 N -16 8 29 11 17 -8 h
+0 g 4591 2833 N -17 8 30 11 16 -9 h
+0 g 4561 2822 N -16 9 29 10 17 -8 h
+0 g 4532 2812 N -17 8 30 11 16 -9 h
+0 g 4502 2801 N -16 9 29 10 17 -8 h
+0 g 4473 2790 N -17 8 30 11 16 -8 h
+0 g 4443 2780 N -16 8 29 10 17 -8 h
+.0014 g 4414 2773 N -17 8 30 7 16 -8 h
+.0042 g 4384 2766 N -16 8 29 7 17 -8 h
+.0056 g 4355 2756 N -17 8 30 11 16 -9 h
+.0056 g 4325 2745 N -16 9 29 10 17 -8 h
+.0056 g 4296 2734 N -17 8 30 11 16 -8 h
+.0056 g 4266 2724 N -16 8 29 11 17 -9 h
+.007 g 4237 2717 N -17 9 30 6 16 -8 h
+.0098 g 4207 2710 N -16 8 29 7 17 -8 h
+.0112 g 4178 2699 N -17 8 30 11 16 -8 h
+.0112 g 4148 2689 N -16 8 29 11 17 -9 h
+.0112 g 4119 2678 N -17 9 30 10 16 -8 h
+.0112 g 4089 2668 N -16 8 29 11 17 -9 h
+.0123 g 4060 2660 N -17 9 30 7 16 -8 h
+.0144 g 4030 2652 N -16 8 29 8 17 -8 h
+.0155 g 4001 2642 N -17 8 30 11 16 -9 h
+.0155 g 3971 2631 N -16 9 29 10 17 -8 h
+.0155 g 3942 2621 N -17 8 30 11 16 -9 h
+.0155 g 3912 2610 N -16 9 29 10 17 -8 h
+.161 g 3883 2980 N -17 8 30 -369 16 -9 h
+.3803 g 3853 3162 N -16 9 29 -182 17 -9 h
+.4542 g 3824 3152 N -17 9 30 10 16 -9 h
+.4544 g 3794 3141 N -16 9 29 10 17 -8 h
+.4546 g 3765 3131 N -17 8 30 11 16 -9 h
+.4548 g 3735 3121 N -16 9 29 10 17 -9 h
+.6204 g 3706 3542 N -17 9 30 -422 16 -8 h
+.8643 g 3676 3737 N -16 8 29 -194 17 -9 h
+.9428 g 3647 3726 N -17 9 30 10 16 -8 h
+.943 g 3617 3716 N -16 8 29 10 17 -8 h
+.9432 g 3588 3706 N -17 8 30 11 16 -9 h
+.9435 g 3558 3696 N -16 9 29 10 17 -9 h
+.9469 g 3529 3693 N -17 9 30 2 16 -8 h
+.9533 g 3499 3691 N -16 8 29 2 17 -8 h
+.9567 g 3470 3681 N -17 8 30 10 16 -8 h
+.9569 g 3441 3671 N -16 8 29 11 16 -9 h
+.9571 g 3411 3661 N -16 9 29 10 17 -9 h
+.9574 g 3382 3650 N -17 9 30 10 16 -8 h
+.8858 g 3352 3452 N -16 8 29 198 17 -8 h
+.6763 g 3323 3082 N -17 8 30 371 16 -9 h
+.5387 g 3293 3072 N -16 9 29 10 17 -9 h
+.5389 g 3264 3061 N -17 9 30 10 16 -8 h
+.5391 g 3234 3051 N -16 8 29 10 17 -8 h
+.5393 g 3205 3041 N -17 8 30 11 16 -9 h
+.4713 g 3175 2852 N -16 9 29 188 17 -8 h
+.2785 g 3146 2516 N -17 8 30 337 16 -9 h
+.1539 g 3116 2505 N -16 9 29 10 17 -8 h
+.154 g 3087 2495 N -17 8 30 10 16 -8 h
+.1541 g 3057 2485 N -16 8 29 11 17 -9 h
+.1542 g 3028 2474 N -17 9 30 10 16 -8 h
+.1333 g 2998 2409 N -16 8 29 66 17 -9 h
+.0882 g 2969 2335 N -17 9 30 73 16 -8 h
+.064 g 2939 2325 N -16 8 29 11 17 -9 h
+.064 g 2910 2314 N -17 9 30 10 16 -8 h
+.0641 g 2880 2303 N -16 8 29 11 17 -8 h
+.0641 g 2851 2293 N -17 8 30 10 16 -8 h
+.0571 g 2821 2264 N -16 8 29 29 17 -8 h
+.0427 g 2792 2234 N -17 8 30 30 16 -8 h
+.0353 g 2762 2224 N -16 8 29 11 17 -9 h
+.0353 g 2733 2213 N -17 9 30 10 16 -8 h
+.0354 g 2703 2203 N -16 8 29 11 17 -9 h
+.0354 g 2674 2192 N -17 9 30 10 16 -8 h
+.035 g 2644 2180 N -16 8 29 12 17 -8 h
+.0341 g 2615 2169 N -17 8 30 12 16 -9 h
+.0336 g 2585 2158 N -16 9 29 10 17 -8 h
+.0337 g 2556 2148 N -17 8 30 11 16 -9 h
+.0337 g 2526 2137 N -16 9 29 10 17 -8 h
+.0337 g 2497 2126 N -17 8 30 11 16 -8 h
+.0338 g 2467 2116 N -16 8 29 10 17 -8 h
+.0338 g 2438 2105 N -17 8 30 11 16 -8 h
+.0338 g 2408 2095 N -16 8 29 11 17 -9 h
+.0338 g 2379 2084 N -17 9 30 10 16 -8 h
+.0339 g 2349 2074 N -16 8 29 11 17 -9 h
+.0339 g 2320 2063 N -17 9 30 10 16 -8 h
+.0339 g 2290 2053 N -16 8 29 11 17 -9 h
+.0339 g 2261 2042 N -17 9 30 10 16 -8 h
+.034 g 2231 2032 N -16 8 29 11 17 -9 h
+.034 g 2202 2021 N -17 9 30 10 16 -8 h
+.034 g 2172 2011 N -16 8 29 11 17 -9 h
+.034 g 2143 2000 N -17 9 30 10 16 -8 h
+.0328 g 2113 1986 N -16 8 29 14 17 -8 h
+.0303 g 2084 1972 N -17 8 30 14 16 -8 h
+.0291 g 2054 1962 N -16 8 29 11 17 -9 h
+.0291 g 2025 1951 N -17 9 30 10 16 -8 h
+.0291 g 1995 1941 N -16 8 29 11 17 -9 h
+.0292 g 1966 1930 N -17 9 30 10 16 -8 h
+.0272 g 1936 1915 N -16 8 29 16 17 -9 h
+.0233 g 1907 1899 N -17 9 30 15 16 -8 h
+.0214 g 1877 1888 N -16 8 29 11 17 -8 h
+0 g 4784 2888 N -16 8 29 11 17 -9 h
+0 g 4755 2877 N -17 9 30 10 16 -8 h
+0 g 4725 2867 N -16 8 29 11 17 -9 h
+0 g 4696 2856 N -17 9 30 10 16 -8 h
+0 g 4666 2846 N -16 8 29 11 17 -9 h
+0 g 4637 2835 N -17 9 30 10 16 -8 h
+0 g 4607 2824 N -16 8 29 11 17 -8 h
+0 g 4578 2814 N -17 8 30 11 16 -9 h
+0 g 4548 2803 N -16 9 29 10 17 -8 h
+0 g 4519 2793 N -17 8 30 11 16 -9 h
+0 g 4489 2782 N -16 9 29 10 17 -8 h
+0 g 4460 2772 N -17 8 30 11 16 -9 h
+.0014 g 4430 2765 N -16 9 29 7 17 -9 h
+.0042 g 4401 2758 N -17 9 30 7 16 -9 h
+.0056 g 4371 2747 N -16 9 29 10 17 -8 h
+.0056 g 4342 2737 N -17 8 30 11 16 -9 h
+.0056 g 4312 2726 N -16 9 29 10 17 -8 h
+.0056 g 4283 2715 N -17 8 30 11 16 -8 h
+.007 g 4253 2709 N -16 8 29 7 17 -9 h
+.0098 g 4224 2702 N -17 9 30 7 16 -9 h
+.0112 g 4194 2691 N -16 9 29 10 17 -8 h
+.0112 g 4165 2680 N -17 8 30 11 16 -8 h
+.0112 g 4135 2670 N -16 8 29 11 17 -9 h
+.0112 g 4106 2659 N -17 9 30 10 16 -8 h
+.0123 g 4076 2652 N -16 8 29 8 17 -9 h
+.0144 g 4047 2644 N -17 9 30 8 16 -9 h
+.0155 g 4017 2633 N -16 9 29 10 17 -8 h
+.0155 g 3988 2623 N -17 8 30 11 16 -9 h
+.0155 g 3958 2612 N -16 9 29 10 17 -8 h
+.0155 g 3929 2602 N -17 8 30 11 16 -9 h
+.161 g 3899 2971 N -16 9 29 -370 17 -8 h
+.3803 g 3870 3153 N -17 8 30 -182 16 -8 h
+.4542 g 3840 3143 N -16 8 29 10 17 -8 h
+.4544 g 3811 3133 N -17 8 30 11 16 -9 h
+.4546 g 3781 3122 N -16 9 29 10 17 -8 h
+.4548 g 3752 3112 N -17 8 30 10 16 -8 h
+.6204 g 3722 3534 N -16 8 29 -422 17 -8 h
+.8643 g 3693 3728 N -17 8 30 -194 16 -8 h
+.9428 g 3663 3718 N -16 8 29 11 17 -9 h
+.943 g 3634 3708 N -17 9 30 10 16 -9 h
+.9432 g 3604 3697 N -16 9 29 10 17 -8 h
+.9435 g 3575 3687 N -17 8 30 10 16 -8 h
+.9469 g 3545 3685 N -16 8 29 2 17 -8 h
+.9533 g 3516 3683 N -17 8 30 2 16 -8 h
+.9567 g 3486 3673 N -16 8 29 11 17 -9 h
+.9569 g 3457 3662 N -17 9 29 10 17 -8 h
+.9571 g 3428 3652 N -17 8 30 10 16 -8 h
+.9574 g 3398 3642 N -16 8 29 11 17 -9 h
+.8858 g 3369 3444 N -17 9 30 197 16 -8 h
+.6763 g 3339 3073 N -16 8 29 371 17 -8 h
+.5387 g 3310 3063 N -17 8 30 10 16 -8 h
+.5389 g 3280 3053 N -16 8 29 11 17 -9 h
+.5391 g 3251 3043 N -17 9 30 10 16 -9 h
+.5393 g 3221 3032 N -16 9 29 10 17 -8 h
+.4713 g 3192 2844 N -17 8 30 189 16 -9 h
+.2785 g 3162 2507 N -16 9 29 336 17 -8 h
+.1539 g 3133 2497 N -17 8 30 10 16 -8 h
+.154 g 3103 2487 N -16 8 29 11 17 -9 h
+.1541 g 3074 2476 N -17 9 30 10 16 -8 h
+.1542 g 3044 2466 N -16 8 29 11 17 -9 h
+.1333 g 3015 2400 N -17 9 30 65 16 -8 h
+.0882 g 2985 2327 N -16 8 29 74 17 -9 h
+.064 g 2956 2316 N -17 9 30 10 16 -8 h
+.064 g 2926 2306 N -16 8 29 11 17 -9 h
+.0641 g 2897 2295 N -17 9 30 10 16 -8 h
+.0641 g 2867 2285 N -16 8 29 11 17 -9 h
+.0571 g 2838 2256 N -17 9 30 29 16 -9 h
+.0427 g 2808 2226 N -16 9 29 30 17 -9 h
+.0353 g 2779 2215 N -17 9 30 10 16 -8 h
+.0353 g 2749 2205 N -16 8 29 11 17 -9 h
+.0354 g 2720 2194 N -17 9 30 10 16 -8 h
+.0354 g 2690 2184 N -16 8 29 11 17 -9 h
+.035 g 2661 2172 N -17 9 30 11 16 -8 h
+.0341 g 2631 2160 N -16 8 29 12 17 -8 h
+.0336 g 2602 2150 N -17 8 30 11 16 -9 h
+.0337 g 2572 2139 N -16 9 29 10 17 -8 h
+.0337 g 2543 2129 N -17 8 30 11 16 -9 h
+.0337 g 2513 2118 N -16 9 29 10 17 -8 h
+.0338 g 2484 2108 N -17 8 30 11 16 -9 h
+.0338 g 2454 2097 N -16 9 29 10 17 -8 h
+.0338 g 2425 2086 N -17 8 30 11 16 -8 h
+.0338 g 2395 2076 N -16 8 29 10 17 -8 h
+.0339 g 2366 2065 N -17 8 30 11 16 -8 h
+.0339 g 2336 2055 N -16 8 29 11 17 -9 h
+.0339 g 2307 2044 N -17 9 30 10 16 -8 h
+.0339 g 2277 2034 N -16 8 29 11 17 -9 h
+.034 g 2248 2023 N -17 9 30 10 16 -8 h
+.034 g 2218 2013 N -16 8 29 11 17 -9 h
+.034 g 2189 2002 N -17 9 30 10 16 -8 h
+.034 g 2159 1992 N -16 8 29 11 17 -9 h
+.0328 g 2130 1978 N -17 9 30 14 16 -9 h
+.0303 g 2100 1964 N -16 9 29 13 17 -8 h
+.0291 g 2071 1953 N -17 8 30 11 16 -8 h
+.0291 g 2041 1943 N -16 8 29 10 17 -8 h
+.0291 g 2012 1932 N -17 8 30 11 16 -8 h
+.0292 g 1982 1922 N -16 8 29 11 17 -9 h
+.0272 g 1953 1906 N -17 9 30 15 16 -8 h
+.0233 g 1923 1891 N -16 8 29 16 17 -9 h
+.0214 g 1894 1880 N -17 9 30 10 16 -8 h
+0 g 4801 2879 N -17 8 30 11 16 -8 h
+0 g 4771 2869 N -16 8 29 11 17 -9 h
+0 g 4742 2858 N -17 9 30 10 16 -8 h
+0 g 4712 2848 N -16 8 29 11 17 -9 h
+0 g 4683 2837 N -17 9 30 10 16 -8 h
+0 g 4653 2827 N -16 8 29 11 17 -9 h
+0 g 4624 2816 N -17 9 30 10 16 -8 h
+0 g 4594 2805 N -16 8 29 11 17 -8 h
+0 g 4565 2795 N -17 8 30 11 16 -9 h
+0 g 4535 2784 N -16 9 29 10 17 -8 h
+0 g 4506 2774 N -17 8 30 11 16 -9 h
+0 g 4476 2763 N -16 9 29 10 17 -8 h
+.0011 g 4447 2756 N -17 8 30 9 16 -10 h
+.0032 g 4417 2749 N -16 10 29 9 17 -12 h
+.0042 g 4388 2739 N -17 12 30 10 16 -12 h
+.0042 g 4358 2728 N -16 12 29 11 17 -12 h
+.0042 g 4329 2718 N -17 12 30 10 16 -12 h
+.0042 g 4299 2707 N -16 12 29 11 17 -12 h
+.0053 g 4270 2700 N -17 12 30 9 16 -14 h
+.0074 g 4240 2693 N -16 14 29 8 17 -15 h
+.0084 g 4211 2683 N -17 15 30 11 16 -16 h
+.0084 g 4181 2672 N -16 16 29 11 17 -16 h
+.0084 g 4152 2661 N -17 16 30 10 16 -15 h
+.0084 g 4122 2651 N -16 15 29 11 17 -16 h
+.0092 g 4093 2643 N -17 16 30 9 16 -17 h
+.0109 g 4063 2635 N -16 17 29 9 17 -18 h
+.0117 g 4034 2625 N -17 18 30 11 16 -19 h
+.0117 g 4004 2614 N -16 19 29 10 17 -18 h
+.0117 g 3975 2604 N -17 18 30 11 16 -19 h
+.0117 g 3945 2593 N -16 19 29 10 17 -18 h
+.1299 g 3916 2963 N -17 18 30 -227 16 -161 h
+.3135 g 3886 3145 N -16 161 29 -138 17 -205 h
+.379 g 3857 3135 N -17 205 30 10 16 -205 h
+.3792 g 3827 3124 N -16 205 29 11 17 -205 h
+.3794 g 3798 3114 N -17 205 30 10 16 -205 h
+.3795 g 3768 3104 N -16 205 29 10 17 -205 h
+.535 g 3739 3526 N -17 205 30 -368 16 -259 h
+.7664 g 3709 3720 N -16 259 29 -183 17 -270 h
+.8425 g 3680 3709 N -17 270 30 11 16 -270 h
+.8428 g 3650 3699 N -16 270 29 10 17 -270 h
+.843 g 3621 3689 N -17 270 30 10 16 -270 h
+.8432 g 3591 3679 N -16 270 29 11 17 -271 h
+.8465 g 3562 3677 N -17 271 30 2 16 -271 h
+.8529 g 3532 3675 N -16 271 29 3 17 -272 h
+.8561 g 3503 3664 N -17 272 30 10 16 -271 h
+.8564 g 3474 3654 N -16 271 29 10 16 -271 h
+.8567 g 3444 3644 N -16 271 29 10 17 -271 h
+.8571 g 3415 3633 N -17 271 30 10 16 -270 h
+.7876 g 3385 3436 N -16 270 29 187 17 -260 h
+.5876 g 3356 3065 N -17 260 30 332 16 -221 h
+.4574 g 3326 3055 N -16 221 29 10 17 -221 h
+.4576 g 3297 3044 N -17 221 30 10 16 -220 h
+.4578 g 3267 3034 N -16 220 29 11 17 -221 h
+.458 g 3238 3024 N -17 221 30 10 16 -221 h
+.3963 g 3208 2835 N -16 221 29 155 17 -187 h
+.2287 g 3179 2499 N -17 187 30 238 16 -89 h
+.2666 g 3149 2489 N -16 89 29 -740 17 661 h
+.4579 g 3120 2478 N -17 -661 30 -238 16 910 h
+.5055 g 3090 2468 N -16 -910 29 10 17 910 h
+.5057 g 3061 2457 N -17 -910 30 11 16 910 h
+.4948 g 3031 2392 N -16 -910 29 13 17 962 h
+.4714 g 3002 2318 N -17 -962 30 13 16 1023 h
+.4589 g 2972 2308 N -16 -1023 29 10 17 1023 h
+.459 g 2943 2297 N -17 -1023 30 10 16 1024 h
+.4591 g 2913 2287 N -16 -1024 29 10 17 1024 h
+.4593 g 2884 2276 N -17 -1024 30 11 16 1024 h
+.4558 g 2854 2247 N -16 -1024 29 11 17 1042 h
+.4484 g 2825 2217 N -17 -1042 30 11 16 1061 h
+.4447 g 2795 2207 N -16 -1061 29 10 17 1061 h
+.4448 g 2766 2196 N -17 -1061 30 10 16 1062 h
+.445 g 2736 2186 N -16 -1062 29 10 17 1062 h
+.4451 g 2707 2175 N -17 -1062 30 11 16 1062 h
+.445 g 2677 2164 N -16 -1062 29 10 17 1063 h
+.4447 g 2648 2152 N -17 -1063 30 10 16 1065 h
+.4445 g 2618 2141 N -16 -1065 29 10 17 1066 h
+.4447 g 2589 2131 N -17 -1066 30 11 16 1065 h
+.3962 g 2559 2120 N -16 -1065 29 264 17 812 h
+.1883 g 2530 2110 N -17 -812 30 843 16 -21 h
+.0289 g 2500 2099 N -16 21 29 11 17 -21 h
+.029 g 2471 2089 N -17 21 30 10 16 -21 h
+.029 g 2441 2078 N -16 21 29 11 17 -21 h
+.029 g 2412 2068 N -17 21 30 11 16 -22 h
+.029 g 2382 2057 N -16 22 29 10 17 -21 h
+.0291 g 2353 2046 N -17 21 30 11 16 -21 h
+.0291 g 2323 2036 N -16 21 29 10 17 -21 h
+.0291 g 2294 2025 N -17 21 30 11 16 -21 h
+.0283 g 2264 2015 N -16 21 29 14 17 -25 h
+.0267 g 2235 2004 N -17 25 30 15 16 -29 h
+.026 g 2205 1994 N -16 29 29 11 17 -30 h
+.026 g 2176 1983 N -17 30 30 10 16 -29 h
+.0251 g 2146 1969 N -16 29 29 12 17 -27 h
+.0232 g 2117 1956 N -17 27 30 13 16 -27 h
+.0222 g 2087 1945 N -16 27 29 10 17 -26 h
+.0222 g 2058 1935 N -17 26 30 11 16 -27 h
+.0222 g 2028 1924 N -16 27 29 10 17 -26 h
+.0223 g 1999 1913 N -17 26 30 11 16 -26 h
+.0207 g 1969 1898 N -16 26 29 13 17 -24 h
+.0177 g 1940 1882 N -17 24 30 14 16 -22 h
+.0161 g 1910 1872 N -16 22 29 11 17 -23 h
+0 g 4817 2871 N -16 9 29 10 17 -8 h
+0 g 4788 2860 N -17 8 30 11 16 -8 h
+0 g 4758 2850 N -16 8 29 11 17 -9 h
+0 g 4729 2839 N -17 9 30 10 16 -8 h
+0 g 4699 2829 N -16 8 29 11 17 -9 h
+0 g 4670 2818 N -17 9 30 10 16 -8 h
+0 g 4640 2808 N -16 8 29 11 17 -9 h
+0 g 4611 2797 N -17 9 30 10 16 -8 h
+0 g 4581 2786 N -16 8 29 11 17 -8 h
+0 g 4552 2776 N -17 8 30 11 16 -9 h
+0 g 4522 2765 N -16 9 29 10 17 -8 h
+0 g 4493 2755 N -17 8 30 11 16 -9 h
+.0004 g 4463 2746 N -16 9 29 10 17 -10 h
+.0011 g 4434 2737 N -17 10 30 11 16 -12 h
+.0014 g 4404 2727 N -16 12 29 10 17 -12 h
+.0014 g 4375 2716 N -17 12 30 11 16 -12 h
+.0014 g 4345 2706 N -16 12 29 11 17 -13 h
+.0014 g 4316 2695 N -17 13 30 10 16 -12 h
+.0018 g 4286 2686 N -16 12 29 11 17 -14 h
+.0025 g 4257 2678 N -17 14 30 10 16 -16 h
+.0028 g 4227 2667 N -16 16 29 11 17 -16 h
+.0028 g 4198 2656 N -17 16 30 10 16 -15 h
+.0028 g 4168 2646 N -16 15 29 11 17 -16 h
+.0028 g 4139 2635 N -17 16 30 10 16 -15 h
+.0031 g 4109 2626 N -16 15 29 11 17 -17 h
+.0036 g 4080 2617 N -17 17 30 11 16 -19 h
+.0039 g 4050 2606 N -16 19 29 10 17 -18 h
+.0039 g 4021 2596 N -17 18 30 11 16 -19 h
+.0039 g 3991 2585 N -16 19 29 10 17 -18 h
+.0039 g 3962 2575 N -17 18 30 11 16 -19 h
+.0494 g 3932 2802 N -16 19 29 10 17 -256 h
+.1233 g 3903 2940 N -17 256 30 11 16 -405 h
+.1519 g 3873 2930 N -16 405 29 11 17 -406 h
+.152 g 3844 2919 N -17 406 30 10 16 -405 h
+.152 g 3814 2909 N -16 405 29 11 17 -406 h
+.1521 g 3785 2899 N -17 406 30 10 16 -406 h
+.2248 g 3755 3267 N -16 406 29 11 17 -785 h
+.3344 g 3726 3450 N -17 785 30 10 16 -978 h
+.3714 g 3696 3439 N -16 978 29 10 17 -977 h
+.3716 g 3667 3429 N -17 977 30 11 16 -978 h
+.3717 g 3637 3419 N -16 978 29 10 17 -978 h
+.3718 g 3608 3408 N -17 978 30 11 16 -978 h
+.3734 g 3578 3406 N -16 978 29 11 17 -987 h
+.3765 g 3549 3403 N -17 987 30 10 16 -994 h
+.3781 g 3519 3393 N -16 994 29 11 17 -995 h
+.3782 g 3490 3383 N -17 995 30 10 16 -995 h
+.3795 g 3461 3373 N -16 995 29 5 16 -990 h
+.3819 g 3431 3363 N -16 990 29 5 17 -985 h
+.3493 g 3402 3176 N -17 985 30 11 16 -809 h
+.254 g 3372 2844 N -16 809 29 10 17 -487 h
+.1927 g 3343 2834 N -17 487 30 11 16 -488 h
+.1927 g 3313 2824 N -16 488 29 10 17 -488 h
+.1928 g 3284 2813 N -17 488 30 11 16 -488 h
+.1929 g 3254 2803 N -16 488 29 11 17 -489 h
+.1653 g 3225 2648 N -17 489 30 10 16 -344 h
+.094 g 3195 2410 N -16 344 29 11 17 -117 h
+.3748 g 3166 3150 N -17 117 30 -933 16 76 h
+.7966 g 3136 3388 N -16 -76 29 -251 17 89 h
+.8942 g 3107 3378 N -17 -89 30 10 16 89 h
+.8944 g 3077 3367 N -16 -89 29 11 17 89 h
+.8941 g 3048 3354 N -17 -89 30 10 16 92 h
+.8933 g 3018 3341 N -16 -92 29 10 17 95 h
+.8931 g 2989 3331 N -17 -95 30 10 16 95 h
+.8933 g 2959 3321 N -16 -95 29 11 17 94 h
+.8935 g 2930 3311 N -17 -94 30 10 16 94 h
+.8938 g 2900 3300 N -16 -94 29 10 17 95 h
+.8939 g 2871 3289 N -17 -95 30 10 16 96 h
+.8939 g 2841 3278 N -16 -96 29 11 17 96 h
+.894 g 2812 3268 N -17 -96 30 10 16 96 h
+.8942 g 2782 3258 N -16 -96 29 10 17 96 h
+.8945 g 2753 3248 N -17 -96 30 10 16 96 h
+.8947 g 2723 3237 N -16 -96 29 11 17 96 h
+.8949 g 2694 3227 N -17 -96 30 10 16 96 h
+.8952 g 2664 3217 N -16 -96 29 10 17 96 h
+.8954 g 2635 3207 N -17 -96 30 10 16 96 h
+.8956 g 2605 3196 N -16 -96 29 11 17 96 h
+.7973 g 2576 2932 N -17 -96 30 271 16 89 h
+.3578 g 2546 2089 N -16 -89 29 960 17 -28 h
+.0168 g 2517 2078 N -17 28 30 10 16 -27 h
+.0168 g 2487 2068 N -16 27 29 11 17 -28 h
+.0168 g 2458 2057 N -17 28 30 11 16 -28 h
+.0168 g 2428 2046 N -16 28 29 10 17 -27 h
+.0168 g 2399 2036 N -17 27 30 11 16 -28 h
+.0168 g 2369 2025 N -16 28 29 10 17 -27 h
+.0169 g 2340 2015 N -17 27 30 11 16 -28 h
+.0169 g 2310 2004 N -16 28 29 10 17 -27 h
+.015 g 2281 1990 N -17 27 30 17 16 -30 h
+.0112 g 2251 1975 N -16 30 29 16 17 -31 h
+.0093 g 2222 1964 N -17 31 30 11 16 -31 h
+.0093 g 2192 1954 N -16 31 29 10 17 -31 h
+.0089 g 2163 1942 N -17 31 30 11 16 -30 h
+.0083 g 2133 1929 N -16 30 29 10 17 -27 h
+.008 g 2104 1919 N -17 27 30 11 16 -28 h
+.008 g 2074 1908 N -16 28 29 11 17 -28 h
+.008 g 2045 1898 N -17 28 30 10 16 -28 h
+.008 g 2015 1887 N -16 28 29 11 17 -28 h
+.0074 g 1986 1874 N -17 28 30 11 16 -26 h
+.0061 g 1956 1860 N -16 26 29 11 17 -23 h
+.0054 g 1927 1849 N -17 23 30 10 16 -22 h
+0 g 4834 2863 N -17 8 30 11 16 -9 h
+0 g 4804 2852 N -16 9 29 10 17 -8 h
+0 g 4775 2841 N -17 8 30 11 16 -8 h
+0 g 4745 2831 N -16 8 29 11 17 -9 h
+0 g 4716 2820 N -17 9 30 10 16 -8 h
+0 g 4686 2810 N -16 8 29 11 17 -9 h
+0 g 4657 2799 N -17 9 30 10 16 -8 h
+0 g 4627 2789 N -16 8 29 11 17 -9 h
+0 g 4598 2778 N -17 9 30 10 16 -8 h
+0 g 4568 2767 N -16 8 29 11 17 -8 h
+0 g 4539 2757 N -17 8 30 10 16 -8 h
+0 g 4509 2746 N -16 8 29 11 17 -8 h
+0 g 4480 2736 N -17 8 30 11 16 -9 h
+0 g 4450 2725 N -16 9 29 10 17 -8 h
+0 g 4421 2715 N -17 8 30 11 16 -9 h
+0 g 4391 2704 N -16 9 29 10 17 -8 h
+0 g 4362 2693 N -17 8 30 11 16 -8 h
+0 g 4332 2683 N -16 8 29 10 17 -8 h
+0 g 4303 2672 N -17 8 30 11 16 -8 h
+0 g 4273 2662 N -16 8 29 11 17 -9 h
+0 g 4244 2651 N -17 9 30 10 16 -8 h
+0 g 4214 2641 N -16 8 29 11 17 -9 h
+0 g 4185 2630 N -17 9 30 10 16 -8 h
+0 g 4155 2620 N -16 8 29 11 17 -9 h
+0 g 4126 2609 N -17 9 30 10 16 -8 h
+0 g 4096 2598 N -16 8 29 11 17 -8 h
+0 g 4067 2588 N -17 8 30 11 16 -9 h
+0 g 4037 2577 N -16 9 29 10 17 -8 h
+0 g 4008 2567 N -17 8 30 11 16 -9 h
+0 g 3978 2556 N -16 9 29 10 17 -8 h
+0 g 3949 2546 N -17 8 30 11 16 -9 h
+0 g 3919 2535 N -16 9 29 10 17 -8 h
+0 g 3890 2524 N -17 8 30 11 16 -8 h
+0 g 3860 2514 N -16 8 29 11 17 -9 h
+0 g 3831 2503 N -17 9 30 10 16 -8 h
+0 g 3801 2493 N -16 8 29 11 17 -9 h
+.0001 g 3772 2482 N -17 9 30 10 16 -8 h
+.0004 g 3742 2472 N -16 8 29 10 17 -8 h
+.0006 g 3713 2462 N -17 8 30 11 16 -9 h
+.0006 g 3683 2451 N -16 9 29 10 17 -8 h
+.0006 g 3654 2441 N -17 8 30 11 16 -9 h
+.0006 g 3624 2430 N -16 9 29 10 17 -8 h
+.0006 g 3595 2419 N -17 8 30 11 16 -8 h
+.0006 g 3565 2409 N -16 8 29 11 17 -9 h
+.0006 g 3536 2398 N -17 9 30 10 16 -8 h
+.0006 g 3506 2388 N -16 8 29 11 17 -9 h
+.0028 g 3477 2383 N -17 9 29 5 17 -9 h
+.0071 g 3448 2378 N -17 9 30 5 16 -9 h
+.0092 g 3418 2367 N -16 9 29 10 17 -8 h
+.0092 g 3389 2357 N -17 8 30 11 16 -9 h
+.0092 g 3359 2346 N -16 9 29 10 17 -8 h
+.0092 g 3330 2336 N -17 8 30 11 16 -9 h
+.0092 g 3300 2325 N -16 9 29 10 17 -8 h
+.0092 g 3271 2314 N -17 8 30 11 16 -8 h
+.0092 g 3241 2304 N -16 8 29 10 17 -8 h
+.0092 g 3212 2293 N -17 8 30 11 16 -8 h
+.3704 g 3182 3226 N -16 8 29 -933 17 -8 h
+.8314 g 3153 3477 N -17 8 30 -250 16 -9 h
+.9314 g 3123 3467 N -16 9 29 10 17 -9 h
+.9317 g 3094 3456 N -17 9 30 10 16 -8 h
+.9319 g 3064 3446 N -16 8 29 10 17 -8 h
+.9322 g 3035 3436 N -17 8 30 11 16 -9 h
+.9324 g 3005 3426 N -16 9 29 10 17 -9 h
+.9326 g 2976 3415 N -17 9 30 10 16 -8 h
+.9329 g 2946 3405 N -16 8 29 10 17 -8 h
+.9331 g 2917 3395 N -17 8 30 11 16 -9 h
+.9334 g 2887 3385 N -16 9 29 10 17 -9 h
+.9336 g 2858 3374 N -17 9 30 10 16 -8 h
+.9339 g 2828 3364 N -16 8 29 10 17 -8 h
+.9341 g 2799 3354 N -17 8 30 11 16 -9 h
+.9343 g 2769 3344 N -16 9 29 10 17 -9 h
+.9346 g 2740 3333 N -17 9 30 10 16 -8 h
+.9348 g 2710 3323 N -16 8 29 10 17 -8 h
+.9351 g 2681 3313 N -17 8 30 11 16 -9 h
+.9353 g 2651 3303 N -16 9 29 10 17 -9 h
+.9356 g 2622 3292 N -17 9 30 10 16 -8 h
+.8359 g 2592 3021 N -16 8 29 271 17 -8 h
+.3728 g 2563 2061 N -17 8 30 960 16 -8 h
+.0094 g 2533 2051 N -16 8 29 11 17 -9 h
+.0094 g 2504 2040 N -17 9 30 10 16 -8 h
+.0094 g 2474 2029 N -16 8 29 11 17 -8 h
+.0094 g 2445 2019 N -17 8 30 11 16 -9 h
+.0095 g 2415 2008 N -16 9 29 10 17 -8 h
+.0095 g 2386 1998 N -17 8 30 11 16 -9 h
+.0095 g 2356 1987 N -16 9 29 10 17 -8 h
+.0095 g 2327 1977 N -17 8 30 11 16 -9 h
+.0073 g 2297 1960 N -16 9 29 16 17 -8 h
+.0028 g 2268 1944 N -17 8 30 17 16 -9 h
+.0006 g 2238 1933 N -16 9 29 10 17 -8 h
+.0006 g 2209 1923 N -17 8 30 11 16 -9 h
+.0006 g 2179 1912 N -16 9 29 10 17 -8 h
+.0006 g 2150 1902 N -17 8 30 11 16 -9 h
+.0006 g 2120 1891 N -16 9 29 10 17 -8 h
+.0006 g 2091 1880 N -17 8 30 11 16 -8 h
+.0006 g 2061 1870 N -16 8 29 10 17 -8 h
+.0006 g 2032 1859 N -17 8 30 11 16 -8 h
+.0005 g 2002 1848 N -16 8 29 11 17 -8 h
+.0002 g 1973 1837 N -17 8 30 11 16 -8 h
+0 g 1943 1827 N -16 8 29 11 17 -9 h
+0 g 4850 2854 N -16 9 29 10 17 -8 h
+0 g 4821 2844 N -17 8 30 11 16 -9 h
+0 g 4791 2833 N -16 9 29 10 17 -8 h
+0 g 4762 2822 N -17 8 30 11 16 -8 h
+0 g 4732 2812 N -16 8 29 10 17 -8 h
+0 g 4703 2801 N -17 8 30 11 16 -8 h
+0 g 4673 2791 N -16 8 29 11 17 -9 h
+0 g 4644 2780 N -17 9 30 10 16 -8 h
+0 g 4614 2770 N -16 8 29 11 17 -9 h
+0 g 4585 2759 N -17 9 30 10 16 -8 h
+0 g 4555 2749 N -16 8 29 11 17 -9 h
+0 g 4526 2738 N -17 9 30 10 16 -8 h
+0 g 4496 2727 N -16 8 29 11 17 -8 h
+0 g 4467 2717 N -17 8 30 11 16 -9 h
+0 g 4437 2706 N -16 9 29 10 17 -8 h
+0 g 4408 2696 N -17 8 30 11 16 -9 h
+0 g 4378 2685 N -16 9 29 10 17 -8 h
+0 g 4349 2675 N -17 8 30 11 16 -9 h
+0 g 4319 2664 N -16 9 29 10 17 -8 h
+0 g 4290 2653 N -17 8 30 11 16 -8 h
+0 g 4260 2643 N -16 8 29 11 17 -9 h
+0 g 4231 2632 N -17 9 30 10 16 -8 h
+0 g 4201 2622 N -16 8 29 11 17 -9 h
+0 g 4172 2611 N -17 9 30 10 16 -8 h
+0 g 4142 2601 N -16 8 29 11 17 -9 h
+0 g 4113 2590 N -17 9 30 10 16 -8 h
+0 g 4083 2579 N -16 8 29 11 17 -8 h
+0 g 4054 2569 N -17 8 30 11 16 -9 h
+0 g 4024 2558 N -16 9 29 10 17 -8 h
+0 g 3995 2548 N -17 8 30 11 16 -9 h
+0 g 3965 2537 N -16 9 29 10 17 -8 h
+0 g 3936 2527 N -17 8 30 11 16 -9 h
+0 g 3906 2516 N -16 9 29 10 17 -8 h
+0 g 3877 2505 N -17 8 30 11 16 -8 h
+0 g 3847 2495 N -16 8 29 11 17 -9 h
+0 g 3818 2484 N -17 9 30 10 16 -8 h
+.0001 g 3788 2474 N -16 8 29 10 17 -8 h
+.0004 g 3759 2464 N -17 8 30 10 16 -8 h
+.0006 g 3729 2453 N -16 8 29 11 17 -8 h
+.0006 g 3700 2443 N -17 8 30 11 16 -9 h
+.0006 g 3670 2432 N -16 9 29 10 17 -8 h
+.0006 g 3641 2422 N -17 8 30 11 16 -9 h
+.0006 g 3611 2411 N -16 9 29 10 17 -8 h
+.0006 g 3582 2400 N -17 8 30 11 16 -8 h
+.0006 g 3552 2390 N -16 8 29 10 17 -8 h
+.0006 g 3523 2379 N -17 8 30 11 16 -8 h
+.0028 g 3494 2374 N -16 8 29 5 16 -8 h
+.0071 g 3464 2369 N -16 8 29 5 17 -8 h
+.0092 g 3435 2359 N -17 8 30 10 16 -8 h
+.0092 g 3405 2348 N -16 8 29 11 17 -8 h
+.0092 g 3376 2338 N -17 8 30 11 16 -9 h
+.0092 g 3346 2327 N -16 9 29 10 17 -8 h
+.0092 g 3317 2317 N -17 8 30 11 16 -9 h
+.0092 g 3287 2306 N -16 9 29 10 17 -8 h
+.0092 g 3258 2296 N -17 8 30 11 16 -9 h
+.0092 g 3228 2285 N -16 9 29 10 17 -8 h
+.3704 g 3199 3218 N -17 8 30 -933 16 -8 h
+.8314 g 3169 3468 N -16 8 29 -250 17 -8 h
+.9314 g 3140 3458 N -17 8 30 10 16 -8 h
+.9317 g 3110 3448 N -16 8 29 11 17 -9 h
+.9319 g 3081 3438 N -17 9 30 10 16 -9 h
+.9322 g 3051 3427 N -16 9 29 10 17 -8 h
+.9324 g 3022 3417 N -17 8 30 10 16 -8 h
+.9326 g 2992 3407 N -16 8 29 11 17 -9 h
+.9329 g 2963 3397 N -17 9 30 10 16 -9 h
+.9331 g 2933 3386 N -16 9 29 10 17 -8 h
+.9334 g 2904 3376 N -17 8 30 10 16 -8 h
+.9336 g 2874 3366 N -16 8 29 11 17 -9 h
+.9339 g 2845 3356 N -17 9 30 10 16 -9 h
+.9341 g 2815 3345 N -16 9 29 10 17 -8 h
+.9343 g 2786 3335 N -17 8 30 10 16 -8 h
+.9346 g 2756 3325 N -16 8 29 11 17 -9 h
+.9348 g 2727 3315 N -17 9 30 10 16 -9 h
+.9351 g 2697 3304 N -16 9 29 10 17 -8 h
+.9353 g 2668 3294 N -17 8 30 10 16 -8 h
+.9356 g 2638 3284 N -16 8 29 11 17 -9 h
+.8359 g 2609 3013 N -17 9 30 271 16 -9 h
+.3728 g 2579 2053 N -16 9 29 960 17 -9 h
+.0094 g 2550 2042 N -17 9 30 10 16 -8 h
+.0094 g 2520 2032 N -16 8 29 11 17 -9 h
+.0094 g 2491 2021 N -17 9 30 10 16 -8 h
+.0094 g 2461 2010 N -16 8 29 11 17 -8 h
+.0095 g 2432 2000 N -17 8 30 11 16 -9 h
+.0095 g 2402 1989 N -16 9 29 10 17 -8 h
+.0095 g 2373 1979 N -17 8 30 11 16 -9 h
+.0095 g 2343 1968 N -16 9 29 10 17 -8 h
+.0073 g 2314 1952 N -17 8 30 17 16 -9 h
+.0028 g 2284 1935 N -16 9 29 16 17 -8 h
+.0006 g 2255 1925 N -17 8 30 10 16 -8 h
+.0006 g 2225 1914 N -16 8 29 11 17 -8 h
+.0006 g 2196 1904 N -17 8 30 11 16 -9 h
+.0006 g 2166 1893 N -16 9 29 10 17 -8 h
+.0006 g 2137 1883 N -17 8 30 11 16 -9 h
+.0006 g 2107 1872 N -16 9 29 10 17 -8 h
+.0006 g 2078 1862 N -17 8 30 11 16 -9 h
+.0006 g 2048 1851 N -16 9 29 10 17 -8 h
+.0005 g 2019 1840 N -17 8 30 11 16 -8 h
+.0002 g 1989 1829 N -16 8 29 11 17 -8 h
+0 g 1960 1818 N -17 8 30 11 16 -8 h
+0 g 4867 2846 N -17 8 30 11 16 -9 h
+0 g 4837 2835 N -16 9 29 10 17 -8 h
+0 g 4808 2825 N -17 8 30 11 16 -9 h
+0 g 4778 2814 N -16 9 29 10 17 -8 h
+0 g 4749 2804 N -17 8 30 11 16 -9 h
+0 g 4719 2793 N -16 9 29 10 17 -8 h
+0 g 4690 2782 N -17 8 30 11 16 -8 h
+0 g 4660 2772 N -16 8 29 11 17 -9 h
+0 g 4631 2761 N -17 9 30 10 16 -8 h
+0 g 4601 2751 N -16 8 29 11 17 -9 h
+0 g 4572 2740 N -17 9 30 10 16 -8 h
+0 g 4542 2730 N -16 8 29 11 17 -9 h
+.0002 g 4513 2719 N -17 9 30 9 16 -7 h
+.0007 g 4483 2708 N -16 7 29 10 17 -6 h
+.0009 g 4454 2698 N -17 6 30 10 16 -6 h
+.0009 g 4424 2687 N -16 6 29 11 17 -6 h
+.0009 g 4395 2677 N -17 6 30 10 16 -6 h
+.0009 g 4365 2666 N -16 6 29 11 17 -6 h
+.0012 g 4336 2656 N -17 6 30 9 16 -5 h
+.0016 g 4306 2645 N -16 5 29 9 17 -3 h
+.0019 g 4277 2634 N -17 3 30 11 16 -3 h
+.0019 g 4247 2624 N -16 3 29 11 17 -4 h
+.0019 g 4218 2613 N -17 4 30 10 16 -3 h
+.0019 g 4188 2603 N -16 3 29 11 17 -4 h
+.0021 g 4159 2592 N -17 4 30 9 16 -2 h
+.0024 g 4129 2582 N -16 2 29 10 17 -2 h
+.0026 g 4100 2571 N -17 2 30 11 16 -2 h
+.0026 g 4070 2560 N -16 2 29 10 17 -1 h
+.0026 g 4041 2550 N -17 1 30 11 16 -2 h
+.0026 g 4011 2539 N -16 2 29 10 17 -1 h
+.0359 g 3982 2529 N -17 1 30 -163 16 172 h
+.0924 g 3952 2518 N -16 -172 29 -111 17 294 h
+.1157 g 3923 2508 N -17 -294 30 11 16 293 h
+.1157 g 3893 2497 N -16 -293 29 10 17 294 h
+.1158 g 3864 2486 N -17 -294 30 10 16 295 h
+.1159 g 3834 2476 N -16 -295 29 11 17 294 h
+.1807 g 3805 2466 N -17 -294 30 -328 16 632 h
+.2805 g 3775 2456 N -16 -632 29 -172 17 814 h
+.3155 g 3746 2445 N -17 -814 30 11 16 814 h
+.3156 g 3716 2434 N -16 -814 29 10 17 815 h
+.3157 g 3687 2424 N -17 -815 30 10 16 815 h
+.3158 g 3657 2413 N -16 -815 29 10 17 816 h
+.3173 g 3628 2403 N -17 -816 30 3 16 823 h
+.3203 g 3598 2392 N -16 -823 29 3 17 831 h
+.3218 g 3569 2382 N -17 -831 30 10 16 831 h
+.3219 g 3539 2371 N -16 -831 29 11 17 831 h
+.3233 g 3510 2366 N -17 -831 30 9 16 827 h
+.3258 g 3481 2361 N -16 -827 29 10 16 822 h
+.2951 g 3451 2351 N -16 -822 29 177 17 655 h
+.2076 g 3422 2340 N -17 -655 30 301 16 365 h
+.1521 g 3392 2329 N -16 -365 29 10 17 366 h
+.1522 g 3363 2319 N -17 -366 30 11 16 365 h
+.1523 g 3333 2308 N -16 -365 29 10 17 366 h
+.1524 g 3304 2298 N -17 -366 30 11 16 365 h
+.1291 g 3274 2287 N -16 -365 29 132 17 244 h
+.0721 g 3245 2277 N -17 -244 30 186 16 68 h
+.3866 g 3215 3210 N -16 -68 29 -864 17 -1 h
+.8338 g 3186 3460 N -17 1 30 -247 16 -4 h
+.9331 g 3156 3450 N -16 4 29 10 17 -4 h
+.9333 g 3127 3439 N -17 4 30 11 16 -4 h
+.9333 g 3097 3429 N -16 4 29 11 17 -5 h
+.933 g 3068 3419 N -17 5 30 12 16 -7 h
+.933 g 3038 3409 N -16 7 29 10 17 -7 h
+.9332 g 3009 3398 N -17 7 30 10 16 -6 h
+.9335 g 2979 3388 N -16 6 29 11 17 -7 h
+.9337 g 2950 3378 N -17 7 30 10 16 -7 h
+.9339 g 2920 3368 N -16 7 29 11 17 -8 h
+.934 g 2891 3357 N -17 8 30 10 16 -7 h
+.9342 g 2861 3347 N -16 7 29 10 17 -7 h
+.9344 g 2832 3337 N -17 7 30 11 16 -8 h
+.9347 g 2802 3327 N -16 8 29 10 17 -8 h
+.9349 g 2773 3316 N -17 8 30 10 16 -7 h
+.9351 g 2743 3306 N -16 7 29 10 17 -7 h
+.9354 g 2714 3296 N -17 7 30 11 16 -8 h
+.9356 g 2684 3286 N -16 8 29 10 17 -8 h
+.9359 g 2655 3275 N -17 8 30 10 16 -7 h
+.8364 g 2625 3004 N -16 7 29 271 17 -7 h
+.3759 g 2596 2044 N -17 7 30 946 16 7 h
+.0151 g 2566 2034 N -16 -7 29 11 17 6 h
+.0151 g 2537 2023 N -17 -6 30 10 16 7 h
+.0151 g 2507 2013 N -16 -7 29 11 17 6 h
+.0151 g 2478 2002 N -17 -6 30 11 16 6 h
+.0151 g 2448 1991 N -16 -6 29 10 17 7 h
+.0151 g 2419 1981 N -17 -7 30 11 16 6 h
+.0152 g 2389 1970 N -16 -6 29 10 17 7 h
+.0152 g 2360 1960 N -17 -7 30 11 16 6 h
+.013 g 2330 1943 N -16 -6 29 16 17 7 h
+.0087 g 2301 1927 N -17 -7 30 16 16 7 h
+.0065 g 2271 1917 N -16 -7 29 11 17 6 h
+.0065 g 2242 1906 N -17 -6 30 10 16 7 h
+.0063 g 2212 1895 N -16 -7 29 12 17 6 h
+.0058 g 2183 1885 N -17 -6 30 12 16 4 h
+.0056 g 2153 1874 N -16 -4 29 10 17 5 h
+.0056 g 2124 1864 N -17 -5 30 11 16 4 h
+.0056 g 2094 1853 N -16 -4 29 10 17 5 h
+.0056 g 2065 1843 N -17 -5 30 11 16 4 h
+.0051 g 2035 1832 N -16 -4 29 13 17 2 h
+.0041 g 2006 1821 N -17 -2 30 12 16 1 h
+.0036 g 1976 1810 N -16 -1 29 11 17 1 h
+0 g 4883 2837 N -16 8 29 11 17 -8 h
+0 g 4854 2827 N -17 8 30 11 16 -9 h
+0 g 4824 2816 N -16 9 29 10 17 -8 h
+0 g 4795 2806 N -17 8 30 11 16 -9 h
+0 g 4765 2795 N -16 9 29 10 17 -8 h
+0 g 4736 2785 N -17 8 30 11 16 -9 h
+0 g 4706 2774 N -16 9 29 10 17 -8 h
+0 g 4677 2763 N -17 8 30 11 16 -8 h
+0 g 4647 2753 N -16 8 29 11 17 -9 h
+0 g 4618 2742 N -17 9 30 10 16 -8 h
+0 g 4588 2732 N -16 8 29 11 17 -9 h
+0 g 4559 2721 N -17 9 30 10 16 -8 h
+.0009 g 4529 2712 N -16 8 29 7 17 -6 h
+.0028 g 4500 2702 N -17 6 30 7 16 -3 h
+.0037 g 4470 2692 N -16 3 29 11 17 -4 h
+.0037 g 4441 2681 N -17 4 30 10 16 -3 h
+.0038 g 4411 2671 N -16 3 29 11 17 -4 h
+.0038 g 4382 2660 N -17 4 30 10 16 -3 h
+.0047 g 4352 2651 N -16 3 29 7 17 -1 h
+.0065 g 4323 2642 N -17 1 30 7 16 1 h
+.0075 g 4293 2631 N -16 -1 29 11 17 1 h
+.0075 g 4264 2620 N -17 -1 30 10 16 2 h
+.0075 g 4234 2610 N -16 -2 29 11 17 1 h
+.0075 g 4205 2599 N -17 -1 30 10 16 2 h
+.0082 g 4175 2590 N -16 -2 29 8 17 3 h
+.0096 g 4146 2580 N -17 -3 30 8 16 5 h
+.0104 g 4116 2569 N -16 -5 29 11 17 5 h
+.0104 g 4087 2559 N -17 -5 30 10 16 5 h
+.0104 g 4057 2548 N -16 -5 29 11 17 5 h
+.0104 g 4028 2538 N -17 -5 30 10 16 5 h
+.1164 g 3998 2701 N -16 -5 29 -369 17 211 h
+.2826 g 3969 2812 N -17 -211 30 -183 16 283 h
+.3428 g 3939 2801 N -16 -283 29 11 17 283 h
+.343 g 3910 2791 N -17 -283 30 10 16 283 h
+.3431 g 3880 2781 N -16 -283 29 10 17 283 h
+.3433 g 3851 2770 N -17 -283 30 11 16 283 h
+.4909 g 3821 3098 N -16 -283 29 -422 17 377 h
+.7124 g 3792 3270 N -17 -377 30 -194 16 399 h
+.7866 g 3762 3259 N -16 -399 29 10 17 400 h
+.7868 g 3733 3249 N -17 -400 30 10 16 400 h
+.787 g 3703 3239 N -16 -400 29 10 17 400 h
+.7873 g 3674 3229 N -17 -400 30 11 16 399 h
+.7905 g 3644 3226 N -16 -399 29 2 17 400 h
+.7967 g 3615 3223 N -17 -400 30 2 16 401 h
+.7999 g 3585 3213 N -16 -401 29 10 17 401 h
+.8001 g 3556 3202 N -17 -401 30 10 16 402 h
+.8005 g 3526 3193 N -16 -402 29 10 17 401 h
+.8011 g 3497 3183 N -17 -401 29 10 17 401 h
+.7337 g 3468 3006 N -17 -401 30 198 16 380 h
+.5418 g 3438 2705 N -16 -380 29 369 17 312 h
+.4177 g 3409 2695 N -17 -312 30 10 16 312 h
+.4179 g 3379 2684 N -16 -312 29 11 17 312 h
+.4181 g 3350 2674 N -17 -312 30 10 16 312 h
+.4182 g 3320 2663 N -16 -312 29 10 17 313 h
+.3612 g 3291 2531 N -17 -313 30 188 16 257 h
+.2088 g 3261 2345 N -16 -257 29 332 17 111 h
+.4287 g 3232 3209 N -17 -111 30 -761 16 8 h
+.8408 g 3202 3456 N -16 -8 29 -239 17 0 h
+.938 g 3173 3446 N -17 0 30 10 16 0 h
+.9382 g 3143 3435 N -16 0 29 11 17 0 h
+.9374 g 3114 3424 N -17 0 30 14 16 -3 h
+.9356 g 3084 3412 N -16 3 29 14 17 -5 h
+.9347 g 3055 3402 N -17 5 30 10 16 -5 h
+.935 g 3025 3392 N -16 5 29 11 17 -6 h
+.9352 g 2996 3381 N -17 6 30 10 16 -5 h
+.9355 g 2966 3371 N -16 5 29 10 17 -5 h
+.9354 g 2937 3360 N -17 5 30 12 16 -6 h
+.9351 g 2907 3350 N -16 6 29 11 17 -7 h
+.9351 g 2878 3340 N -17 7 30 10 16 -7 h
+.9353 g 2848 3329 N -16 7 29 10 17 -6 h
+.9356 g 2819 3319 N -17 6 30 11 16 -7 h
+.9358 g 2789 3309 N -16 7 29 10 17 -7 h
+.936 g 2760 3299 N -17 7 30 10 16 -7 h
+.9363 g 2730 3288 N -16 7 29 11 17 -7 h
+.9365 g 2701 3278 N -17 7 30 10 16 -7 h
+.9367 g 2671 3268 N -16 7 29 10 17 -7 h
+.8376 g 2642 2997 N -17 7 30 269 16 -5 h
+.3849 g 2612 2051 N -16 5 29 922 17 19 h
+.0315 g 2583 2040 N -17 -19 30 10 16 20 h
+.0315 g 2553 2030 N -16 -20 29 11 17 19 h
+.0315 g 2524 2019 N -17 -19 30 10 16 20 h
+.0316 g 2494 2008 N -16 -20 29 11 17 20 h
+.0316 g 2465 1998 N -17 -20 30 10 16 20 h
+.0316 g 2435 1987 N -16 -20 29 11 17 20 h
+.0316 g 2406 1977 N -17 -20 30 10 16 20 h
+.0317 g 2376 1966 N -16 -20 29 11 17 20 h
+.0296 g 2347 1950 N -17 -20 30 16 16 20 h
+.0255 g 2317 1934 N -16 -20 29 15 17 21 h
+.0235 g 2288 1923 N -17 -21 30 11 16 21 h
+.0235 g 2258 1913 N -16 -21 29 10 17 21 h
+.0226 g 2229 1901 N -17 -21 30 14 16 19 h
+.021 g 2199 1889 N -16 -19 29 14 17 17 h
+.0201 g 2170 1879 N -17 -17 30 11 16 16 h
+.0201 g 2140 1868 N -16 -16 29 10 17 17 h
+.0202 g 2111 1858 N -17 -17 30 11 16 16 h
+.0202 g 2081 1847 N -16 -16 29 10 17 17 h
+.0187 g 2052 1834 N -17 -17 30 16 16 14 h
+.0158 g 2022 1822 N -16 -14 29 16 17 10 h
+.0143 g 1993 1811 N -17 -10 30 11 16 10 h
+0 g 4900 2829 N -17 9 30 10 16 -8 h
+0 g 4870 2818 N -16 8 29 11 17 -8 h
+0 g 4841 2808 N -17 8 30 11 16 -9 h
+0 g 4811 2797 N -16 9 29 10 17 -8 h
+0 g 4782 2787 N -17 8 30 11 16 -9 h
+0 g 4752 2776 N -16 9 29 10 17 -8 h
+0 g 4723 2766 N -17 8 30 11 16 -9 h
+0 g 4693 2755 N -16 9 29 10 17 -8 h
+0 g 4664 2744 N -17 8 30 11 16 -8 h
+0 g 4634 2734 N -16 8 29 11 17 -9 h
+0 g 4605 2723 N -17 9 30 10 16 -8 h
+0 g 4575 2713 N -16 8 29 11 17 -9 h
+.0014 g 4546 2706 N -17 9 30 7 16 -9 h
+.0042 g 4516 2699 N -16 9 29 6 17 -8 h
+.0056 g 4487 2688 N -17 8 30 11 16 -8 h
+.0056 g 4457 2678 N -16 8 29 11 17 -9 h
+.0056 g 4428 2667 N -17 9 30 10 16 -8 h
+.0056 g 4398 2657 N -16 8 29 11 17 -9 h
+.007 g 4369 2650 N -17 9 30 7 16 -9 h
+.0098 g 4339 2643 N -16 9 29 7 17 -9 h
+.0112 g 4310 2632 N -17 9 30 10 16 -8 h
+.0112 g 4280 2622 N -16 8 29 11 17 -9 h
+.0112 g 4251 2611 N -17 9 30 10 16 -8 h
+.0112 g 4221 2601 N -16 8 29 11 17 -9 h
+.0123 g 4192 2593 N -17 9 30 8 16 -9 h
+.0144 g 4162 2585 N -16 9 29 7 17 -8 h
+.0155 g 4133 2574 N -17 8 30 11 16 -8 h
+.0155 g 4103 2564 N -16 8 29 11 17 -9 h
+.0155 g 4074 2553 N -17 9 30 10 16 -8 h
+.0155 g 4044 2543 N -16 8 29 11 17 -9 h
+.161 g 4015 2912 N -17 9 30 -370 16 -8 h
+.3803 g 3985 3095 N -16 8 29 -182 17 -9 h
+.4542 g 3956 3084 N -17 9 30 10 16 -8 h
+.4544 g 3926 3074 N -16 8 29 10 17 -8 h
+.4546 g 3897 3064 N -17 8 30 11 16 -9 h
+.4548 g 3867 3053 N -16 9 29 10 17 -8 h
+.6204 g 3838 3475 N -17 8 30 -422 16 -8 h
+.8643 g 3808 3669 N -16 8 29 -194 17 -8 h
+.9428 g 3779 3659 N -17 8 30 10 16 -8 h
+.943 g 3749 3649 N -16 8 29 11 17 -9 h
+.9433 g 3720 3639 N -17 9 30 10 16 -9 h
+.9435 g 3690 3628 N -16 9 29 10 17 -8 h
+.9469 g 3661 3626 N -17 8 30 2 16 -8 h
+.9534 g 3631 3624 N -16 8 29 2 17 -8 h
+.9567 g 3602 3614 N -17 8 30 11 16 -9 h
+.9569 g 3572 3604 N -16 9 29 10 17 -9 h
+.9572 g 3543 3594 N -17 9 30 10 16 -9 h
+.9576 g 3514 3584 N -16 9 29 10 16 -9 h
+.8862 g 3484 3386 N -16 9 29 198 17 -9 h
+.6771 g 3455 3017 N -17 9 30 370 16 -10 h
+.5397 g 3425 3007 N -16 10 29 10 17 -10 h
+.5399 g 3396 2996 N -17 10 30 11 16 -10 h
+.5402 g 3366 2986 N -16 10 29 10 17 -10 h
+.5404 g 3337 2976 N -17 10 30 10 16 -10 h
+.4727 g 3307 2788 N -16 10 29 188 17 -10 h
+.2812 g 3278 2456 N -17 10 30 335 16 -13 h
+.3866 g 3248 3217 N -16 13 29 -415 17 -359 h
+.7024 g 3219 3456 N -17 359 30 -192 16 -406 h
+.7892 g 3189 3446 N -16 406 29 10 17 -406 h
+.7894 g 3160 3435 N -17 406 30 10 16 -405 h
+.7868 g 3130 3421 N -16 405 29 21 17 -412 h
+.7812 g 3101 3407 N -17 412 30 22 16 -420 h
+.7785 g 3071 3397 N -16 420 29 10 17 -420 h
+.7787 g 3042 3386 N -17 420 30 10 16 -419 h
+.779 g 3012 3376 N -16 419 29 11 17 -420 h
+.7792 g 2983 3366 N -17 420 30 10 16 -420 h
+.7786 g 2953 3354 N -16 420 29 13 17 -421 h
+.7773 g 2924 3343 N -17 421 30 14 16 -424 h
+.7768 g 2894 3333 N -16 424 29 10 17 -424 h
+.777 g 2865 3323 N -17 424 30 10 16 -424 h
+.7772 g 2835 3312 N -16 424 29 10 17 -423 h
+.7775 g 2806 3302 N -17 423 30 11 16 -424 h
+.7776 g 2776 3292 N -16 424 29 10 17 -424 h
+.7778 g 2747 3281 N -17 424 30 11 16 -424 h
+.778 g 2717 3271 N -16 424 29 10 17 -424 h
+.7782 g 2688 3261 N -17 424 30 10 16 -424 h
+.6861 g 2658 2992 N -16 424 29 234 17 -389 h
+.3167 g 2629 2070 N -17 389 30 549 16 -16 h
+.0394 g 2599 2060 N -16 16 29 10 17 -16 h
+.0394 g 2570 2049 N -17 16 30 11 16 -16 h
+.0394 g 2540 2039 N -16 16 29 10 17 -16 h
+.0395 g 2511 2028 N -17 16 30 11 16 -16 h
+.0395 g 2481 2018 N -16 16 29 10 17 -16 h
+.0395 g 2452 2007 N -17 16 30 11 16 -16 h
+.0395 g 2422 1997 N -16 16 29 10 17 -16 h
+.0396 g 2393 1986 N -17 16 30 11 16 -16 h
+.0383 g 2363 1970 N -16 16 29 12 17 -12 h
+.0357 g 2334 1955 N -17 12 30 12 16 -9 h
+.0344 g 2304 1944 N -16 9 29 11 17 -9 h
+.0344 g 2275 1934 N -17 9 30 10 16 -9 h
+.0332 g 2245 1920 N -16 9 29 14 17 -9 h
+.0307 g 2216 1906 N -17 9 30 14 16 -9 h
+.0295 g 2186 1895 N -16 9 29 10 17 -8 h
+.0295 g 2157 1885 N -17 8 30 11 16 -9 h
+.0295 g 2127 1874 N -16 9 29 11 17 -9 h
+.0295 g 2098 1864 N -17 9 30 10 16 -9 h
+.0275 g 2068 1848 N -16 9 29 16 17 -9 h
+.0234 g 2039 1832 N -17 9 30 16 16 -9 h
+.0214 g 2009 1821 N -16 9 29 10 17 -8 h
+0 g 4916 2821 N -16 8 29 11 17 -9 h
+0 g 4887 2810 N -17 9 30 10 16 -8 h
+0 g 4857 2799 N -16 8 29 11 17 -8 h
+0 g 4828 2789 N -17 8 30 10 16 -8 h
+0 g 4798 2778 N -16 8 29 11 17 -8 h
+0 g 4769 2768 N -17 8 30 11 16 -9 h
+0 g 4739 2757 N -16 9 29 10 17 -8 h
+0 g 4710 2747 N -17 8 30 11 16 -9 h
+0 g 4680 2736 N -16 9 29 10 17 -8 h
+0 g 4651 2725 N -17 8 30 11 16 -8 h
+0 g 4621 2715 N -16 8 29 10 17 -8 h
+0 g 4592 2704 N -17 8 30 11 16 -8 h
+.0014 g 4562 2697 N -16 8 29 7 17 -8 h
+.0042 g 4533 2691 N -17 8 30 7 16 -9 h
+.0056 g 4503 2680 N -16 9 29 10 17 -8 h
+.0056 g 4474 2669 N -17 8 30 11 16 -8 h
+.0056 g 4444 2659 N -16 8 29 11 17 -9 h
+.0056 g 4415 2648 N -17 9 30 10 16 -8 h
+.007 g 4385 2641 N -16 8 29 7 17 -8 h
+.0098 g 4356 2634 N -17 8 30 7 16 -8 h
+.0112 g 4326 2624 N -16 8 29 11 17 -9 h
+.0112 g 4297 2613 N -17 9 30 10 16 -8 h
+.0112 g 4267 2603 N -16 8 29 11 17 -9 h
+.0112 g 4238 2592 N -17 9 30 10 16 -8 h
+.0123 g 4208 2584 N -16 8 29 8 17 -8 h
+.0144 g 4179 2577 N -17 8 30 8 16 -9 h
+.0155 g 4149 2566 N -16 9 29 10 17 -8 h
+.0155 g 4120 2555 N -17 8 30 11 16 -8 h
+.0155 g 4090 2545 N -16 8 29 10 17 -8 h
+.0155 g 4061 2534 N -17 8 30 11 16 -8 h
+.161 g 4031 2904 N -16 8 29 -370 17 -8 h
+.3803 g 4002 3086 N -17 8 30 -182 16 -8 h
+.4542 g 3972 3076 N -16 8 29 10 17 -8 h
+.4544 g 3943 3066 N -17 8 30 11 16 -9 h
+.4546 g 3913 3055 N -16 9 29 10 17 -8 h
+.4548 g 3884 3045 N -17 8 30 10 16 -8 h
+.6204 g 3854 3467 N -16 8 29 -421 17 -9 h
+.8643 g 3825 3661 N -17 9 30 -195 16 -8 h
+.9428 g 3795 3651 N -16 8 29 11 17 -9 h
+.943 g 3766 3640 N -17 9 30 10 16 -8 h
+.9432 g 3736 3630 N -16 8 29 10 17 -8 h
+.9435 g 3707 3620 N -17 8 30 10 16 -8 h
+.9469 g 3677 3618 N -16 8 29 2 17 -8 h
+.9533 g 3648 3616 N -17 8 30 3 16 -9 h
+.9567 g 3618 3605 N -16 9 29 10 17 -8 h
+.9569 g 3589 3595 N -17 8 30 10 16 -8 h
+.9572 g 3559 3585 N -16 8 29 10 17 -8 h
+.9574 g 3530 3575 N -17 8 29 11 17 -9 h
+.8859 g 3501 3377 N -17 9 30 198 16 -9 h
+.6765 g 3471 3007 N -16 9 29 370 17 -9 h
+.5389 g 3442 2997 N -17 9 30 10 16 -9 h
+.5391 g 3412 2986 N -16 9 29 11 17 -9 h
+.5393 g 3383 2976 N -17 9 30 10 16 -9 h
+.5395 g 3353 2966 N -16 9 29 10 17 -9 h
+.4716 g 3324 2778 N -17 9 30 189 16 -10 h
+.2792 g 3294 2443 N -16 10 29 336 17 -11 h
+.2363 g 3265 2858 N -17 11 30 11 16 -437 h
+.3566 g 3235 3050 N -16 437 29 10 17 -639 h
+.3956 g 3206 3040 N -17 639 30 10 16 -639 h
+.3958 g 3176 3030 N -16 639 29 11 17 -640 h
+.3834 g 3147 3009 N -17 640 30 65 16 -684 h
+.3567 g 3117 2987 N -16 684 29 74 17 -736 h
+.3425 g 3088 2977 N -17 736 30 10 16 -736 h
+.3427 g 3058 2967 N -16 736 29 11 17 -737 h
+.3428 g 3029 2956 N -17 737 30 10 16 -736 h
+.3429 g 2999 2946 N -16 736 29 11 17 -737 h
+.339 g 2970 2933 N -17 737 30 29 16 -753 h
+.3307 g 2940 2919 N -16 753 29 30 17 -769 h
+.3266 g 2911 2909 N -17 769 30 10 16 -769 h
+.3267 g 2881 2899 N -16 769 29 11 17 -770 h
+.3268 g 2852 2889 N -17 770 30 10 16 -770 h
+.3269 g 2822 2878 N -16 770 29 11 17 -770 h
+.3268 g 2793 2868 N -17 770 30 12 16 -772 h
+.3264 g 2763 2857 N -16 772 29 11 17 -772 h
+.3263 g 2734 2847 N -17 772 30 11 16 -773 h
+.3264 g 2704 2837 N -16 773 29 10 17 -773 h
+.2838 g 2675 2603 N -17 773 30 11 16 -550 h
+.1381 g 2645 2054 N -16 550 29 11 17 -12 h
+.0351 g 2616 2044 N -17 12 30 10 16 -12 h
+.0352 g 2586 2033 N -16 12 29 11 17 -12 h
+.0352 g 2557 2023 N -17 12 30 10 16 -12 h
+.0352 g 2527 2012 N -16 12 29 11 17 -12 h
+.0352 g 2498 2002 N -17 12 30 10 16 -12 h
+.0353 g 2468 1991 N -16 12 29 11 17 -12 h
+.0353 g 2439 1981 N -17 12 30 10 16 -12 h
+.0353 g 2409 1970 N -16 12 29 11 17 -12 h
+.035 g 2380 1958 N -17 12 30 10 16 -10 h
+.0344 g 2350 1946 N -16 10 29 11 17 -9 h
+.0341 g 2321 1935 N -17 9 30 10 16 -8 h
+.0341 g 2291 1925 N -16 8 29 11 17 -9 h
+.0329 g 2262 1911 N -17 9 30 14 16 -9 h
+.0304 g 2232 1897 N -16 9 29 14 17 -9 h
+.0292 g 2203 1887 N -17 9 30 10 16 -9 h
+.0292 g 2173 1876 N -16 9 29 11 17 -9 h
+.0292 g 2144 1865 N -17 9 30 10 16 -8 h
+.0293 g 2114 1855 N -16 8 29 11 17 -9 h
+.0273 g 2085 1839 N -17 9 30 15 16 -8 h
+.0234 g 2055 1823 N -16 8 29 16 17 -8 h
+.0214 g 2026 1813 N -17 8 30 11 16 -9 h
+0 g 4933 2812 N -17 9 30 10 16 -8 h
+0 g 4903 2802 N -16 8 29 11 17 -9 h
+0 g 4874 2791 N -17 9 30 10 16 -8 h
+0 g 4844 2781 N -16 8 29 11 17 -9 h
+0 g 4815 2770 N -17 9 30 10 16 -8 h
+0 g 4785 2759 N -16 8 29 11 17 -8 h
+0 g 4756 2749 N -17 8 30 11 16 -9 h
+0 g 4726 2738 N -16 9 29 10 17 -8 h
+0 g 4697 2728 N -17 8 30 11 16 -9 h
+0 g 4667 2717 N -16 9 29 10 17 -8 h
+0 g 4638 2707 N -17 8 30 11 16 -9 h
+0 g 4608 2696 N -16 9 29 10 17 -8 h
+.0013 g 4579 2689 N -17 8 30 8 16 -9 h
+.0039 g 4549 2682 N -16 9 29 7 17 -9 h
+.0051 g 4520 2672 N -17 9 30 11 16 -10 h
+.0051 g 4490 2661 N -16 10 29 11 17 -10 h
+.0052 g 4461 2650 N -17 10 30 10 16 -9 h
+.0052 g 4431 2640 N -16 9 29 11 17 -10 h
+.0064 g 4402 2633 N -17 10 30 7 16 -10 h
+.009 g 4372 2626 N -16 10 29 8 17 -11 h
+.0103 g 4343 2615 N -17 11 30 10 16 -10 h
+.0103 g 4313 2605 N -16 10 29 11 17 -11 h
+.0103 g 4284 2594 N -17 11 30 10 16 -10 h
+.0103 g 4254 2584 N -16 10 29 11 17 -11 h
+.0113 g 4225 2576 N -17 11 30 8 16 -11 h
+.0132 g 4195 2568 N -16 11 29 8 17 -11 h
+.0142 g 4166 2558 N -17 11 30 11 16 -12 h
+.0142 g 4136 2547 N -16 12 29 11 17 -12 h
+.0142 g 4107 2537 N -17 12 30 10 16 -12 h
+.0143 g 4077 2526 N -16 12 29 11 17 -12 h
+.1518 g 4048 2896 N -17 12 30 -328 16 -54 h
+.3611 g 4018 3078 N -16 54 29 -172 17 -64 h
+.433 g 3989 3068 N -17 64 30 10 16 -64 h
+.4332 g 3959 3057 N -16 64 29 11 17 -64 h
+.4334 g 3930 3047 N -17 64 30 10 16 -64 h
+.4336 g 3900 3037 N -16 64 29 10 17 -64 h
+.5969 g 3871 3458 N -17 64 30 -410 16 -75 h
+.838 g 3841 3653 N -16 75 29 -191 17 -79 h
+.916 g 3812 3642 N -17 79 30 10 16 -78 h
+.9162 g 3782 3632 N -16 78 29 10 17 -78 h
+.9164 g 3753 3622 N -17 78 30 11 16 -79 h
+.9167 g 3723 3612 N -16 79 29 10 17 -79 h
+.92 g 3694 3610 N -17 79 30 2 16 -79 h
+.9265 g 3664 3607 N -16 79 29 2 17 -78 h
+.9298 g 3635 3597 N -17 78 30 10 16 -78 h
+.93 g 3605 3587 N -16 78 29 11 17 -79 h
+.9303 g 3576 3577 N -17 79 30 10 16 -79 h
+.9305 g 3547 3566 N -16 79 29 10 16 -78 h
+.8594 g 3517 3368 N -16 78 29 196 17 -76 h
+.6519 g 3488 2998 N -17 76 30 362 16 -68 h
+.5158 g 3458 2988 N -16 68 29 11 17 -69 h
+.516 g 3429 2977 N -17 69 30 10 16 -68 h
+.5162 g 3399 2967 N -16 68 29 10 17 -68 h
+.5164 g 3370 2957 N -17 68 30 11 16 -69 h
+.4498 g 3340 2768 N -16 69 29 181 17 -61 h
+.2633 g 3311 2432 N -17 61 30 311 16 -36 h
+.1435 g 3281 2421 N -16 36 29 10 17 -35 h
+.1436 g 3252 2411 N -17 35 30 11 16 -36 h
+.1436 g 3222 2401 N -16 36 29 10 17 -36 h
+.1437 g 3193 2390 N -17 36 30 11 16 -36 h
+.1241 g 3163 2325 N -16 36 29 59 17 -30 h
+.0817 g 3134 2251 N -17 30 30 65 16 -21 h
+.0591 g 3104 2241 N -16 21 29 11 17 -22 h
+.0591 g 3075 2230 N -17 22 30 10 16 -21 h
+.0592 g 3045 2220 N -16 21 29 11 17 -22 h
+.0592 g 3016 2209 N -17 22 30 10 16 -21 h
+.0527 g 2986 2180 N -16 21 29 27 17 -19 h
+.0393 g 2957 2150 N -17 19 30 27 16 -16 h
+.0325 g 2927 2140 N -16 16 29 10 17 -16 h
+.0325 g 2898 2129 N -17 16 30 11 16 -16 h
+.0326 g 2868 2119 N -16 16 29 10 17 -16 h
+.0326 g 2839 2108 N -17 16 30 11 16 -16 h
+.0322 g 2809 2096 N -16 16 29 11 17 -15 h
+.0314 g 2780 2085 N -17 15 30 12 16 -16 h
+.031 g 2750 2074 N -16 16 29 10 17 -15 h
+.031 g 2721 2064 N -17 15 30 11 16 -16 h
+.031 g 2691 2053 N -16 16 29 10 17 -15 h
+.031 g 2662 2042 N -17 15 30 11 16 -15 h
+.0311 g 2632 2032 N -16 15 29 10 17 -15 h
+.0311 g 2603 2021 N -17 15 30 11 16 -15 h
+.0311 g 2573 2011 N -16 15 29 11 17 -16 h
+.0311 g 2544 2000 N -17 16 30 10 16 -15 h
+.0312 g 2514 1990 N -16 15 29 11 17 -16 h
+.0312 g 2485 1979 N -17 16 30 10 16 -15 h
+.0312 g 2455 1969 N -16 15 29 11 17 -16 h
+.0312 g 2426 1958 N -17 16 30 10 16 -15 h
+.0313 g 2396 1948 N -16 15 29 11 17 -16 h
+.0313 g 2367 1937 N -17 16 30 10 16 -15 h
+.0313 g 2337 1927 N -16 15 29 11 17 -16 h
+.0313 g 2308 1916 N -17 16 30 10 16 -15 h
+.0302 g 2278 1902 N -16 15 29 14 17 -15 h
+.0279 g 2249 1888 N -17 15 30 13 16 -14 h
+.0268 g 2219 1878 N -16 14 29 11 17 -15 h
+.0268 g 2190 1867 N -17 15 30 10 16 -14 h
+.0268 g 2160 1857 N -16 14 29 11 17 -15 h
+.0268 g 2131 1846 N -17 15 30 10 16 -14 h
+.0251 g 2101 1831 N -16 14 29 15 17 -14 h
+.0215 g 2072 1815 N -17 14 30 15 16 -13 h
+.0196 g 2042 1804 N -16 13 29 11 17 -13 h
+0 g 4949 2804 N -16 8 29 11 17 -9 h
+0 g 4920 2793 N -17 9 30 10 16 -8 h
+0 g 4890 2783 N -16 8 29 11 17 -9 h
+0 g 4861 2772 N -17 9 30 10 16 -8 h
+0 g 4831 2762 N -16 8 29 11 17 -9 h
+0 g 4802 2751 N -17 9 30 10 16 -8 h
+0 g 4772 2740 N -16 8 29 11 17 -8 h
+0 g 4743 2730 N -17 8 30 11 16 -9 h
+0 g 4713 2719 N -16 9 29 10 17 -8 h
+0 g 4684 2709 N -17 8 30 11 16 -9 h
+0 g 4654 2698 N -16 9 29 10 17 -8 h
+0 g 4625 2688 N -17 8 30 11 16 -9 h
+.0006 g 4595 2680 N -16 9 29 10 17 -11 h
+.0018 g 4566 2673 N -17 11 30 11 16 -15 h
+.0023 g 4536 2662 N -16 15 29 11 17 -15 h
+.0023 g 4507 2651 N -17 15 30 10 16 -14 h
+.0023 g 4477 2641 N -16 14 29 11 17 -15 h
+.0023 g 4448 2630 N -17 15 30 10 16 -14 h
+.0029 g 4418 2623 N -16 14 29 11 17 -18 h
+.0041 g 4389 2615 N -17 18 30 10 16 -20 h
+.0047 g 4359 2605 N -16 20 29 11 17 -21 h
+.0047 g 4330 2594 N -17 21 30 11 16 -21 h
+.0047 g 4300 2584 N -16 21 29 10 17 -21 h
+.0047 g 4271 2573 N -17 21 30 11 16 -21 h
+.0051 g 4241 2565 N -16 21 29 10 17 -23 h
+.006 g 4212 2557 N -17 23 30 11 16 -26 h
+.0065 g 4182 2546 N -16 26 29 10 17 -25 h
+.0065 g 4153 2535 N -17 25 30 11 16 -25 h
+.0065 g 4123 2525 N -16 25 29 11 17 -26 h
+.0065 g 4094 2514 N -17 26 30 10 16 -25 h
+.0713 g 4064 2842 N -16 25 29 11 17 -364 h
+.171 g 4035 3014 N -17 364 30 10 16 -546 h
+.2059 g 4005 3004 N -16 546 29 11 17 -547 h
+.206 g 3976 2993 N -17 547 30 10 16 -546 h
+.206 g 3946 2983 N -16 546 29 11 17 -547 h
+.2061 g 3917 2973 N -17 547 30 11 16 -548 h
+.2867 g 3887 3383 N -16 548 29 10 17 -968 h
+.4058 g 3858 3574 N -17 968 30 11 16 -1170 h
+.4446 g 3828 3564 N -16 1170 29 10 17 -1170 h
+.4447 g 3799 3554 N -17 1170 30 11 16 -1171 h
+.4448 g 3769 3543 N -16 1171 29 10 17 -1170 h
+.4449 g 3740 3533 N -17 1170 30 11 16 -1171 h
+.4466 g 3710 3531 N -16 1171 29 10 17 -1179 h
+.4498 g 3681 3529 N -17 1179 30 11 16 -1188 h
+.4515 g 3651 3519 N -16 1188 29 11 17 -1189 h
+.4516 g 3622 3508 N -17 1189 30 10 16 -1188 h
+.4517 g 3592 3498 N -16 1188 29 11 17 -1189 h
+.4518 g 3563 3488 N -17 1189 30 10 16 -1189 h
+.4165 g 3534 3292 N -16 1189 29 11 16 -1004 h
+.3137 g 3504 2930 N -16 1004 29 10 17 -652 h
+.2464 g 3475 2919 N -17 652 30 11 16 -652 h
+.2465 g 3445 2909 N -16 652 29 11 17 -653 h
+.2466 g 3416 2899 N -17 653 30 10 16 -653 h
+.2467 g 3386 2888 N -16 653 29 11 17 -653 h
+.2142 g 3357 2707 N -17 653 30 10 16 -482 h
+.124 g 3327 2396 N -16 482 29 11 17 -182 h
+.0665 g 3298 2386 N -17 182 30 10 16 -182 h
+.0665 g 3268 2375 N -16 182 29 11 17 -182 h
+.0666 g 3239 2365 N -17 182 30 11 16 -183 h
+.0666 g 3209 2354 N -16 183 29 10 17 -182 h
+.0574 g 3180 2295 N -17 182 30 11 16 -134 h
+.0376 g 3150 2230 N -16 134 29 10 17 -79 h
+.0271 g 3121 2219 N -17 79 30 11 16 -79 h
+.0271 g 3091 2209 N -16 79 29 10 17 -79 h
+.0271 g 3062 2198 N -17 79 30 11 16 -79 h
+.0272 g 3032 2188 N -16 79 29 11 17 -80 h
+.0242 g 3003 2161 N -17 80 30 10 16 -63 h
+.018 g 2973 2134 N -16 63 29 11 17 -47 h
+.0149 g 2944 2124 N -17 47 30 10 16 -47 h
+.0149 g 2914 2113 N -16 47 29 11 17 -47 h
+.0149 g 2885 2103 N -17 47 30 10 16 -47 h
+.0149 g 2855 2092 N -16 47 29 11 17 -47 h
+.0147 g 2826 2081 N -17 47 30 11 16 -47 h
+.0143 g 2796 2069 N -16 47 29 10 17 -45 h
+.0141 g 2767 2059 N -17 45 30 11 16 -46 h
+.0142 g 2737 2048 N -16 46 29 10 17 -45 h
+.0142 g 2708 2038 N -17 45 30 11 16 -46 h
+.0142 g 2678 2027 N -16 46 29 10 17 -45 h
+.0142 g 2649 2017 N -17 45 30 11 16 -46 h
+.0142 g 2619 2006 N -16 46 29 11 17 -46 h
+.0142 g 2590 1995 N -17 46 30 10 16 -45 h
+.0142 g 2560 1985 N -16 45 29 11 17 -46 h
+.0142 g 2531 1974 N -17 46 30 10 16 -45 h
+.0142 g 2501 1964 N -16 45 29 11 17 -46 h
+.0143 g 2472 1953 N -17 46 30 10 16 -45 h
+.0143 g 2442 1943 N -16 45 29 11 17 -46 h
+.0143 g 2413 1932 N -17 46 30 11 16 -46 h
+.0143 g 2383 1922 N -16 46 29 10 17 -46 h
+.0143 g 2354 1911 N -17 46 30 11 16 -46 h
+.0143 g 2324 1901 N -16 46 29 10 17 -46 h
+.0138 g 2295 1887 N -17 46 30 11 16 -43 h
+.0127 g 2265 1874 N -16 43 29 10 17 -40 h
+.0122 g 2236 1863 N -17 40 30 11 16 -40 h
+.0122 g 2206 1853 N -16 40 29 11 17 -41 h
+.0122 g 2177 1842 N -17 41 30 10 16 -40 h
+.0122 g 2147 1832 N -16 40 29 11 17 -41 h
+.0114 g 2118 1817 N -17 41 30 10 16 -36 h
+.0098 g 2088 1802 N -16 36 29 11 17 -32 h
+.009 g 2059 1791 N -17 32 30 10 16 -31 h
+0 g 4966 2795 N -17 8 30 11 16 -8 h
+0 g 4936 2785 N -16 8 29 11 17 -9 h
+0 g 4907 2774 N -17 9 30 10 16 -8 h
+0 g 4877 2764 N -16 8 29 11 17 -9 h
+0 g 4848 2753 N -17 9 30 10 16 -8 h
+0 g 4818 2743 N -16 8 29 11 17 -9 h
+0 g 4789 2732 N -17 9 30 10 16 -8 h
+0 g 4759 2721 N -16 8 29 11 17 -8 h
+0 g 4730 2711 N -17 8 30 11 16 -9 h
+0 g 4700 2700 N -16 9 29 10 17 -8 h
+0 g 4671 2690 N -17 8 30 11 16 -9 h
+0 g 4641 2679 N -16 9 29 10 17 -8 h
+0 g 4612 2669 N -17 8 30 11 16 -9 h
+0 g 4582 2658 N -16 9 29 10 17 -8 h
+0 g 4553 2647 N -17 8 30 11 16 -8 h
+0 g 4523 2637 N -16 8 29 11 17 -9 h
+0 g 4494 2626 N -17 9 30 10 16 -8 h
+0 g 4464 2616 N -16 8 29 11 17 -9 h
+0 g 4435 2605 N -17 9 30 10 16 -8 h
+0 g 4405 2595 N -16 8 29 11 17 -9 h
+0 g 4376 2584 N -17 9 30 10 16 -8 h
+0 g 4346 2573 N -16 8 29 11 17 -8 h
+0 g 4317 2563 N -17 8 30 11 16 -9 h
+0 g 4287 2552 N -16 9 29 10 17 -8 h
+0 g 4258 2542 N -17 8 30 11 16 -9 h
+0 g 4228 2531 N -16 9 29 10 17 -8 h
+0 g 4199 2521 N -17 8 30 11 16 -9 h
+0 g 4169 2510 N -16 9 29 10 17 -8 h
+0 g 4140 2499 N -17 8 30 11 16 -8 h
+0 g 4110 2489 N -16 8 29 10 17 -8 h
+0 g 4081 2478 N -17 8 30 11 16 -8 h
+0 g 4051 2468 N -16 8 29 11 17 -9 h
+0 g 4022 2457 N -17 9 30 10 16 -8 h
+0 g 3992 2447 N -16 8 29 11 17 -9 h
+0 g 3963 2436 N -17 9 30 10 16 -8 h
+0 g 3933 2425 N -16 8 29 11 17 -8 h
+0 g 3904 2415 N -17 8 30 10 16 -8 h
+0 g 3874 2404 N -16 8 29 11 17 -8 h
+0 g 3845 2394 N -17 8 30 11 16 -9 h
+0 g 3815 2383 N -16 9 29 10 17 -8 h
+0 g 3786 2373 N -17 8 30 11 16 -9 h
+0 g 3756 2362 N -16 9 29 10 17 -8 h
+0 g 3727 2352 N -17 8 30 11 16 -9 h
+0 g 3697 2341 N -16 9 29 10 17 -8 h
+0 g 3668 2330 N -17 8 30 11 16 -8 h
+0 g 3638 2320 N -16 8 29 11 17 -9 h
+0 g 3609 2309 N -17 9 30 10 16 -8 h
+0 g 3579 2299 N -16 8 29 11 17 -9 h
+0 g 3550 2288 N -17 9 29 10 17 -8 h
+0 g 3521 2278 N -17 8 30 11 16 -9 h
+0 g 3491 2267 N -16 9 29 10 17 -8 h
+0 g 3462 2256 N -17 8 30 11 16 -8 h
+0 g 3432 2246 N -16 8 29 11 17 -9 h
+0 g 3403 2235 N -17 9 30 10 16 -8 h
+0 g 3373 2225 N -16 8 29 11 17 -9 h
+0 g 3344 2214 N -17 9 30 10 16 -8 h
+0 g 3314 2204 N -16 8 29 11 17 -9 h
+0 g 3285 2193 N -17 9 30 10 16 -8 h
+0 g 3255 2182 N -16 8 29 11 17 -8 h
+0 g 3226 2172 N -17 8 30 11 16 -9 h
+0 g 3196 2161 N -16 9 29 10 17 -8 h
+0 g 3167 2151 N -17 8 30 11 16 -9 h
+0 g 3137 2140 N -16 9 29 10 17 -8 h
+0 g 3108 2130 N -17 8 30 11 16 -9 h
+0 g 3078 2119 N -16 9 29 10 17 -8 h
+0 g 3049 2108 N -17 8 30 11 16 -8 h
+0 g 3019 2098 N -16 8 29 11 17 -9 h
+0 g 2990 2087 N -17 9 30 10 16 -8 h
+0 g 2960 2077 N -16 8 29 11 17 -9 h
+0 g 2931 2066 N -17 9 30 10 16 -8 h
+0 g 2901 2056 N -16 8 29 11 17 -9 h
+0 g 2872 2045 N -17 9 30 10 16 -8 h
+0 g 2842 2034 N -16 8 29 11 17 -8 h
+0 g 2813 2024 N -17 8 30 11 16 -9 h
+0 g 2783 2013 N -16 9 29 10 17 -8 h
+0 g 2754 2003 N -17 8 30 11 16 -9 h
+0 g 2724 1992 N -16 9 29 10 17 -8 h
+0 g 2695 1982 N -17 8 30 11 16 -9 h
+0 g 2665 1971 N -16 9 29 10 17 -8 h
+0 g 2636 1960 N -17 8 30 11 16 -8 h
+0 g 2606 1950 N -16 8 29 11 17 -9 h
+0 g 2577 1939 N -17 9 30 10 16 -8 h
+0 g 2547 1929 N -16 8 29 11 17 -9 h
+0 g 2518 1918 N -17 9 30 10 16 -8 h
+0 g 2488 1908 N -16 8 29 11 17 -9 h
+0 g 2459 1897 N -17 9 30 10 16 -8 h
+0 g 2429 1886 N -16 8 29 11 17 -8 h
+0 g 2400 1876 N -17 8 30 10 16 -8 h
+0 g 2370 1865 N -16 8 29 11 17 -8 h
+0 g 2341 1855 N -17 8 30 11 16 -9 h
+0 g 2311 1844 N -16 9 29 10 17 -8 h
+0 g 2282 1834 N -17 8 30 11 16 -9 h
+0 g 2252 1823 N -16 9 29 10 17 -8 h
+0 g 2223 1812 N -17 8 30 11 16 -8 h
+0 g 2193 1802 N -16 8 29 10 17 -8 h
+0 g 2164 1791 N -17 8 30 11 16 -8 h
+0 g 2134 1781 N -16 8 29 11 17 -9 h
+0 g 2105 1770 N -17 9 30 10 16 -8 h
+0 g 2075 1760 N -16 8 29 11 17 -9 h
+0 g 4982 2787 N -16 9 29 10 17 -8 h
+0 g 4953 2776 N -17 8 30 11 16 -8 h
+0 g 4923 2766 N -16 8 29 11 17 -9 h
+0 g 4894 2755 N -17 9 30 10 16 -8 h
+0 g 4864 2745 N -16 8 29 11 17 -9 h
+0 g 4835 2734 N -17 9 30 10 16 -8 h
+0 g 4805 2724 N -16 8 29 11 17 -9 h
+0 g 4776 2713 N -17 9 30 10 16 -8 h
+0 g 4746 2702 N -16 8 29 11 17 -8 h
+0 g 4717 2692 N -17 8 30 11 16 -9 h
+0 g 4687 2681 N -16 9 29 10 17 -8 h
+0 g 4658 2671 N -17 8 30 11 16 -9 h
+0 g 4628 2660 N -16 9 29 10 17 -8 h
+0 g 4599 2650 N -17 8 30 11 16 -9 h
+0 g 4569 2639 N -16 9 29 10 17 -8 h
+0 g 4540 2628 N -17 8 30 11 16 -8 h
+0 g 4510 2618 N -16 8 29 10 17 -8 h
+0 g 4481 2607 N -17 8 30 11 16 -8 h
+0 g 4451 2597 N -16 8 29 11 17 -9 h
+0 g 4422 2586 N -17 9 30 10 16 -8 h
+0 g 4392 2576 N -16 8 29 11 17 -9 h
+0 g 4363 2565 N -17 9 30 10 16 -8 h
+0 g 4333 2554 N -16 8 29 11 17 -8 h
+0 g 4304 2544 N -17 8 30 10 16 -8 h
+0 g 4274 2533 N -16 8 29 11 17 -8 h
+0 g 4245 2523 N -17 8 30 11 16 -9 h
+0 g 4215 2512 N -16 9 29 10 17 -8 h
+0 g 4186 2502 N -17 8 30 11 16 -9 h
+0 g 4156 2491 N -16 9 29 10 17 -8 h
+0 g 4127 2481 N -17 8 30 11 16 -9 h
+0 g 4097 2470 N -16 9 29 10 17 -8 h
+0 g 4068 2459 N -17 8 30 11 16 -8 h
+0 g 4038 2449 N -16 8 29 11 17 -9 h
+0 g 4009 2438 N -17 9 30 10 16 -8 h
+0 g 3979 2428 N -16 8 29 11 17 -9 h
+0 g 3950 2417 N -17 9 30 10 16 -8 h
+0 g 3920 2407 N -16 8 29 11 17 -9 h
+0 g 3891 2396 N -17 9 30 10 16 -8 h
+0 g 3861 2385 N -16 8 29 11 17 -8 h
+0 g 3832 2375 N -17 8 30 11 16 -9 h
+0 g 3802 2364 N -16 9 29 10 17 -8 h
+0 g 3773 2354 N -17 8 30 11 16 -9 h
+0 g 3743 2343 N -16 9 29 10 17 -8 h
+0 g 3714 2333 N -17 8 30 11 16 -9 h
+0 g 3684 2322 N -16 9 29 10 17 -8 h
+0 g 3655 2311 N -17 8 30 11 16 -8 h
+0 g 3625 2301 N -16 8 29 11 17 -9 h
+0 g 3596 2290 N -17 9 30 10 16 -8 h
+0 g 3567 2280 N -16 8 29 11 16 -9 h
+0 g 3537 2269 N -16 9 29 10 17 -8 h
+0 g 3508 2259 N -17 8 30 11 16 -9 h
+0 g 3478 2248 N -16 9 29 10 17 -8 h
+0 g 3449 2237 N -17 8 30 11 16 -8 h
+0 g 3419 2227 N -16 8 29 11 17 -9 h
+0 g 3390 2216 N -17 9 30 10 16 -8 h
+0 g 3360 2206 N -16 8 29 11 17 -9 h
+0 g 3331 2195 N -17 9 30 10 16 -8 h
+0 g 3301 2185 N -16 8 29 11 17 -9 h
+0 g 3272 2174 N -17 9 30 10 16 -8 h
+0 g 3242 2163 N -16 8 29 11 17 -8 h
+0 g 3213 2153 N -17 8 30 11 16 -9 h
+0 g 3183 2142 N -16 9 29 10 17 -8 h
+0 g 3154 2132 N -17 8 30 11 16 -9 h
+0 g 3124 2121 N -16 9 29 10 17 -8 h
+0 g 3095 2111 N -17 8 30 11 16 -9 h
+0 g 3065 2100 N -16 9 29 10 17 -8 h
+0 g 3036 2089 N -17 8 30 11 16 -8 h
+0 g 3006 2079 N -16 8 29 11 17 -9 h
+0 g 2977 2068 N -17 9 30 10 16 -8 h
+0 g 2947 2058 N -16 8 29 11 17 -9 h
+0 g 2918 2047 N -17 9 30 10 16 -8 h
+0 g 2888 2037 N -16 8 29 11 17 -9 h
+0 g 2859 2026 N -17 9 30 10 16 -8 h
+0 g 2829 2015 N -16 8 29 11 17 -8 h
+0 g 2800 2005 N -17 8 30 10 16 -8 h
+0 g 2770 1994 N -16 8 29 11 17 -8 h
+0 g 2741 1984 N -17 8 30 11 16 -9 h
+0 g 2711 1973 N -16 9 29 10 17 -8 h
+0 g 2682 1963 N -17 8 30 11 16 -9 h
+0 g 2652 1952 N -16 9 29 10 17 -8 h
+0 g 2623 1941 N -17 8 30 11 16 -8 h
+0 g 2593 1931 N -16 8 29 10 17 -8 h
+0 g 2564 1920 N -17 8 30 11 16 -8 h
+0 g 2534 1910 N -16 8 29 11 17 -9 h
+0 g 2505 1899 N -17 9 30 10 16 -8 h
+0 g 2475 1889 N -16 8 29 11 17 -9 h
+0 g 2446 1878 N -17 9 30 10 16 -8 h
+0 g 2416 1868 N -16 8 29 11 17 -9 h
+0 g 2387 1857 N -17 9 30 10 16 -8 h
+0 g 2357 1846 N -16 8 29 11 17 -8 h
+0 g 2328 1836 N -17 8 30 11 16 -9 h
+0 g 2298 1825 N -16 9 29 10 17 -8 h
+0 g 2269 1815 N -17 8 30 11 16 -9 h
+0 g 2239 1804 N -16 9 29 10 17 -8 h
+0 g 2210 1794 N -17 8 30 11 16 -9 h
+0 g 2180 1783 N -16 9 29 10 17 -8 h
+0 g 2151 1772 N -17 8 30 11 16 -8 h
+0 g 2121 1762 N -16 8 29 11 17 -9 h
+0 g 2092 1751 N -17 9 30 10 16 -8 h
+0 g 4999 2779 N -17 8 30 11 16 -9 h
+0 g 4969 2768 N -16 9 29 10 17 -8 h
+0 g 4940 2757 N -17 8 30 11 16 -8 h
+0 g 4910 2747 N -16 8 29 10 17 -8 h
+0 g 4881 2736 N -17 8 30 11 16 -8 h
+0 g 4851 2726 N -16 8 29 11 17 -9 h
+0 g 4822 2715 N -17 9 30 10 16 -8 h
+0 g 4792 2705 N -16 8 29 11 17 -9 h
+0 g 4763 2694 N -17 9 30 10 16 -8 h
+0 g 4733 2683 N -16 8 29 11 17 -8 h
+0 g 4704 2673 N -17 8 30 10 16 -8 h
+0 g 4674 2662 N -16 8 29 11 17 -8 h
+0 g 4645 2652 N -17 8 30 11 16 -9 h
+0 g 4615 2641 N -16 9 29 10 17 -8 h
+0 g 4586 2631 N -17 8 30 11 16 -9 h
+0 g 4556 2620 N -16 9 29 10 17 -8 h
+0 g 4527 2610 N -17 8 30 11 16 -9 h
+0 g 4497 2599 N -16 9 29 10 17 -8 h
+0 g 4468 2588 N -17 8 30 11 16 -8 h
+0 g 4438 2578 N -16 8 29 11 17 -9 h
+0 g 4409 2567 N -17 9 30 10 16 -8 h
+0 g 4379 2557 N -16 8 29 11 17 -9 h
+0 g 4350 2546 N -17 9 30 10 16 -8 h
+0 g 4320 2536 N -16 8 29 11 17 -9 h
+0 g 4291 2525 N -17 9 30 10 16 -8 h
+0 g 4261 2514 N -16 8 29 11 17 -8 h
+0 g 4232 2504 N -17 8 30 11 16 -9 h
+0 g 4202 2493 N -16 9 29 10 17 -8 h
+0 g 4173 2483 N -17 8 30 11 16 -9 h
+0 g 4143 2472 N -16 9 29 10 17 -8 h
+0 g 4114 2462 N -17 8 30 11 16 -9 h
+0 g 4084 2451 N -16 9 29 10 17 -8 h
+0 g 4055 2440 N -17 8 30 11 16 -8 h
+0 g 4025 2430 N -16 8 29 11 17 -9 h
+0 g 3996 2419 N -17 9 30 10 16 -8 h
+0 g 3966 2409 N -16 8 29 11 17 -9 h
+0 g 3937 2398 N -17 9 30 10 16 -8 h
+0 g 3907 2388 N -16 8 29 11 17 -9 h
+0 g 3878 2377 N -17 9 30 10 16 -8 h
+0 g 3848 2366 N -16 8 29 11 17 -8 h
+0 g 3819 2356 N -17 8 30 11 16 -9 h
+0 g 3789 2345 N -16 9 29 10 17 -8 h
+0 g 3760 2335 N -17 8 30 11 16 -9 h
+0 g 3730 2324 N -16 9 29 10 17 -8 h
+0 g 3701 2314 N -17 8 30 11 16 -9 h
+0 g 3671 2303 N -16 9 29 10 17 -8 h
+0 g 3642 2292 N -17 8 30 11 16 -8 h
+0 g 3612 2282 N -16 8 29 11 17 -9 h
+0 g 3583 2271 N -17 9 29 10 17 -8 h
+0 g 3554 2261 N -17 8 30 11 16 -9 h
+0 g 3524 2250 N -16 9 29 10 17 -8 h
+0 g 3495 2240 N -17 8 30 11 16 -9 h
+0 g 3465 2229 N -16 9 29 10 17 -8 h
+0 g 3436 2218 N -17 8 30 11 16 -8 h
+0 g 3406 2208 N -16 8 29 11 17 -9 h
+0 g 3377 2197 N -17 9 30 10 16 -8 h
+0 g 3347 2187 N -16 8 29 11 17 -9 h
+0 g 3318 2176 N -17 9 30 10 16 -8 h
+0 g 3288 2166 N -16 8 29 11 17 -9 h
+0 g 3259 2155 N -17 9 30 10 16 -8 h
+0 g 3229 2144 N -16 8 29 11 17 -8 h
+0 g 3200 2134 N -17 8 30 10 16 -8 h
+0 g 3170 2123 N -16 8 29 11 17 -8 h
+0 g 3141 2113 N -17 8 30 11 16 -9 h
+0 g 3111 2102 N -16 9 29 10 17 -8 h
+0 g 3082 2092 N -17 8 30 11 16 -9 h
+0 g 3052 2081 N -16 9 29 10 17 -8 h
+0 g 3023 2070 N -17 8 30 11 16 -8 h
+0 g 2993 2060 N -16 8 29 10 17 -8 h
+0 g 2964 2049 N -17 8 30 11 16 -8 h
+0 g 2934 2039 N -16 8 29 11 17 -9 h
+0 g 2905 2028 N -17 9 30 10 16 -8 h
+0 g 2875 2018 N -16 8 29 11 17 -9 h
+0 g 2846 2007 N -17 9 30 10 16 -8 h
+0 g 2816 1997 N -16 8 29 11 17 -9 h
+0 g 2787 1986 N -17 9 30 10 16 -8 h
+0 g 2757 1975 N -16 8 29 11 17 -8 h
+0 g 2728 1965 N -17 8 30 11 16 -9 h
+0 g 2698 1954 N -16 9 29 10 17 -8 h
+0 g 2669 1944 N -17 8 30 11 16 -9 h
+0 g 2639 1933 N -16 9 29 10 17 -8 h
+0 g 2610 1923 N -17 8 30 11 16 -9 h
+0 g 2580 1912 N -16 9 29 10 17 -8 h
+0 g 2551 1901 N -17 8 30 11 16 -8 h
+0 g 2521 1891 N -16 8 29 11 17 -9 h
+0 g 2492 1880 N -17 9 30 10 16 -8 h
+0 g 2462 1870 N -16 8 29 11 17 -9 h
+0 g 2433 1859 N -17 9 30 10 16 -8 h
+0 g 2403 1849 N -16 8 29 11 17 -9 h
+0 g 2374 1838 N -17 9 30 10 16 -8 h
+0 g 2344 1827 N -16 8 29 11 17 -8 h
+0 g 2315 1817 N -17 8 30 11 16 -9 h
+0 g 2285 1806 N -16 9 29 10 17 -8 h
+0 g 2256 1796 N -17 8 30 11 16 -9 h
+0 g 2226 1785 N -16 9 29 10 17 -8 h
+0 g 2197 1775 N -17 8 30 11 16 -9 h
+0 g 2167 1764 N -16 9 29 10 17 -8 h
+0 g 2138 1753 N -17 8 30 11 16 -8 h
+0 g 2108 1743 N -16 8 29 11 17 -9 h
+0 g 5015 2770 N -16 9 29 10 17 -8 h
+0 g 4986 2760 N -17 8 30 11 16 -9 h
+0 g 4956 2749 N -16 9 29 10 17 -8 h
+0 g 4927 2739 N -17 8 30 11 16 -9 h
+0 g 4897 2728 N -16 9 29 10 17 -8 h
+0 g 4868 2717 N -17 8 30 11 16 -8 h
+0 g 4838 2707 N -16 8 29 11 17 -9 h
+0 g 4809 2696 N -17 9 30 10 16 -8 h
+0 g 4779 2686 N -16 8 29 11 17 -9 h
+0 g 4750 2675 N -17 9 30 10 16 -8 h
+0 g 4720 2665 N -16 8 29 11 17 -9 h
+0 g 4691 2654 N -17 9 30 10 16 -8 h
+.0007 g 4661 2643 N -16 8 29 7 17 -4 h
+.0021 g 4632 2633 N -17 4 30 7 16 -1 h
+.0028 g 4602 2622 N -16 1 29 11 17 -1 h
+.0028 g 4573 2612 N -17 1 30 10 16 -1 h
+.0028 g 4543 2601 N -16 1 29 11 17 -1 h
+.0028 g 4514 2591 N -17 1 30 11 16 -2 h
+.0035 g 4484 2580 N -16 2 29 6 17 3 h
+.0049 g 4455 2569 N -17 -3 30 7 16 7 h
+.0056 g 4425 2559 N -16 -7 29 11 17 6 h
+.0056 g 4396 2548 N -17 -6 30 11 16 6 h
+.0056 g 4366 2538 N -16 -6 29 10 17 6 h
+.0056 g 4337 2527 N -17 -6 30 11 16 6 h
+.0061 g 4307 2517 N -16 -6 29 7 17 9 h
+.0072 g 4278 2506 N -17 -9 30 8 16 12 h
+.0077 g 4248 2495 N -16 -12 29 11 17 12 h
+.0077 g 4219 2485 N -17 -12 30 10 16 12 h
+.0078 g 4189 2474 N -16 -12 29 11 17 12 h
+.0078 g 4160 2464 N -17 -12 30 10 16 12 h
+.0805 g 4130 2453 N -16 -12 29 -369 17 392 h
+.1902 g 4101 2443 N -17 -392 30 -182 16 584 h
+.2271 g 4071 2432 N -16 -584 29 10 17 585 h
+.2272 g 4042 2421 N -17 -585 30 10 16 586 h
+.2273 g 4012 2411 N -16 -586 29 10 17 586 h
+.2274 g 3983 2400 N -17 -586 30 11 16 586 h
+.3102 g 3953 2390 N -16 -586 29 -422 17 1018 h
+.4321 g 3924 2379 N -17 -1018 30 -194 16 1223 h
+.4714 g 3894 2369 N -16 -1223 29 10 17 1223 h
+.4715 g 3865 2358 N -17 -1223 30 10 16 1224 h
+.4716 g 3835 2347 N -16 -1224 29 11 17 1224 h
+.4717 g 3806 2337 N -17 -1224 30 10 16 1224 h
+.4734 g 3776 2326 N -16 -1224 29 2 17 1233 h
+.4767 g 3747 2316 N -17 -1233 30 2 16 1241 h
+.4783 g 3717 2305 N -16 -1241 29 10 17 1242 h
+.4784 g 3688 2295 N -17 -1242 30 11 16 1241 h
+.4786 g 3658 2284 N -16 -1241 29 10 17 1242 h
+.4787 g 3629 2273 N -17 -1242 30 10 16 1243 h
+.4429 g 3600 2263 N -16 -1243 29 198 16 1055 h
+.3382 g 3570 2252 N -16 -1055 29 371 17 695 h
+.2693 g 3541 2242 N -17 -695 30 10 16 695 h
+.2694 g 3511 2231 N -16 -695 29 10 17 696 h
+.2695 g 3482 2221 N -17 -696 30 10 16 696 h
+.2696 g 3452 2210 N -16 -696 29 11 17 696 h
+.2356 g 3423 2199 N -17 -696 30 188 16 519 h
+.1392 g 3393 2189 N -16 -519 29 336 17 193 h
+.077 g 3364 2178 N -17 -193 30 11 16 193 h
+.077 g 3334 2168 N -16 -193 29 10 17 193 h
+.0771 g 3305 2157 N -17 -193 30 11 16 193 h
+.0771 g 3275 2147 N -16 -193 29 10 17 193 h
+.0667 g 3246 2136 N -17 -193 30 65 16 139 h
+.0441 g 3216 2126 N -16 -139 29 74 17 75 h
+.032 g 3187 2115 N -17 -75 30 11 16 75 h
+.032 g 3157 2104 N -16 -75 29 10 17 76 h
+.032 g 3128 2094 N -17 -76 30 11 16 75 h
+.0321 g 3098 2083 N -16 -75 29 10 17 76 h
+.0286 g 3069 2073 N -17 -76 30 29 16 57 h
+.0213 g 3039 2062 N -16 -57 29 30 17 38 h
+.0177 g 3010 2052 N -17 -38 30 11 16 37 h
+.0177 g 2980 2041 N -16 -37 29 10 17 38 h
+.0177 g 2951 2030 N -17 -38 30 11 16 38 h
+.0177 g 2921 2020 N -16 -38 29 10 17 38 h
+.0175 g 2892 2009 N -17 -38 30 12 16 37 h
+.017 g 2862 1999 N -16 -37 29 12 17 35 h
+.0168 g 2833 1988 N -17 -35 30 10 16 36 h
+.0168 g 2803 1978 N -16 -36 29 11 17 35 h
+.0168 g 2774 1967 N -17 -35 30 10 16 36 h
+.0169 g 2744 1956 N -16 -36 29 11 17 36 h
+.0169 g 2715 1946 N -17 -36 30 10 16 36 h
+.0169 g 2685 1935 N -16 -36 29 11 17 36 h
+.0169 g 2656 1925 N -17 -36 30 11 16 35 h
+.0169 g 2626 1914 N -16 -35 29 10 17 36 h
+.0169 g 2597 1904 N -17 -36 30 11 16 35 h
+.0169 g 2567 1893 N -16 -35 29 10 17 36 h
+.017 g 2538 1882 N -17 -36 30 11 16 36 h
+.017 g 2508 1872 N -16 -36 29 10 17 36 h
+.017 g 2479 1861 N -17 -36 30 11 16 36 h
+.017 g 2449 1851 N -16 -36 29 10 17 36 h
+.017 g 2420 1840 N -17 -36 30 11 16 36 h
+.017 g 2390 1830 N -16 -36 29 10 17 36 h
+.0164 g 2361 1819 N -17 -36 30 14 16 33 h
+.0152 g 2331 1808 N -16 -33 29 14 17 30 h
+.0145 g 2302 1798 N -17 -30 30 11 16 29 h
+.0146 g 2272 1787 N -16 -29 29 10 17 30 h
+.0146 g 2243 1777 N -17 -30 30 11 16 29 h
+.0146 g 2213 1766 N -16 -29 29 10 17 30 h
+.0136 g 2184 1756 N -17 -30 30 16 16 24 h
+.0117 g 2154 1745 N -16 -24 29 15 17 20 h
+.0107 g 2125 1734 N -17 -20 30 11 16 20 h
+0 g 5032 2762 N -17 8 30 11 16 -9 h
+0 g 5002 2751 N -16 9 29 10 17 -8 h
+0 g 4973 2741 N -17 8 30 11 16 -9 h
+0 g 4943 2730 N -16 9 29 10 17 -8 h
+0 g 4914 2720 N -17 8 30 11 16 -9 h
+0 g 4884 2709 N -16 9 29 10 17 -8 h
+0 g 4855 2698 N -17 8 30 11 16 -8 h
+0 g 4825 2688 N -16 8 29 11 17 -9 h
+0 g 4796 2677 N -17 9 30 10 16 -8 h
+0 g 4766 2667 N -16 8 29 11 17 -9 h
+0 g 4737 2656 N -17 9 30 10 16 -8 h
+0 g 4707 2646 N -16 8 29 11 17 -9 h
+.0014 g 4678 2639 N -17 9 30 7 16 -9 h
+.0042 g 4648 2632 N -16 9 29 7 17 -9 h
+.0056 g 4619 2621 N -17 9 30 10 16 -8 h
+.0056 g 4589 2611 N -16 8 29 11 17 -9 h
+.0056 g 4560 2600 N -17 9 30 10 16 -8 h
+.0056 g 4530 2589 N -16 8 29 11 17 -8 h
+.007 g 4501 2583 N -17 8 30 7 16 -9 h
+.0098 g 4471 2576 N -16 9 29 7 17 -9 h
+.0112 g 4442 2565 N -17 9 30 10 16 -8 h
+.0112 g 4412 2554 N -16 8 29 11 17 -8 h
+.0112 g 4383 2544 N -17 8 30 10 16 -8 h
+.0112 g 4353 2533 N -16 8 29 11 17 -8 h
+.0123 g 4324 2526 N -17 8 30 8 16 -9 h
+.0144 g 4294 2518 N -16 9 29 8 17 -9 h
+.0155 g 4265 2507 N -17 9 30 10 16 -8 h
+.0155 g 4235 2497 N -16 8 29 11 17 -9 h
+.0155 g 4206 2486 N -17 9 30 10 16 -8 h
+.0155 g 4176 2476 N -16 8 29 11 17 -9 h
+.161 g 4147 2845 N -17 9 30 -370 16 -8 h
+.3803 g 4117 3027 N -16 8 29 -182 17 -8 h
+.4542 g 4088 3017 N -17 8 30 10 16 -8 h
+.4544 g 4058 3007 N -16 8 29 11 17 -9 h
+.4546 g 4029 2997 N -17 9 30 10 16 -9 h
+.4548 g 3999 2986 N -16 9 29 10 17 -8 h
+.6204 g 3970 3408 N -17 8 30 -422 16 -8 h
+.8643 g 3940 3602 N -16 8 29 -194 17 -8 h
+.9427 g 3911 3592 N -17 8 30 10 16 -8 h
+.943 g 3881 3582 N -16 8 29 11 17 -9 h
+.9432 g 3852 3571 N -17 9 30 10 16 -8 h
+.9435 g 3822 3561 N -16 8 29 10 17 -8 h
+.9469 g 3793 3559 N -17 8 30 2 16 -8 h
+.9533 g 3763 3557 N -16 8 29 2 17 -8 h
+.9567 g 3734 3547 N -17 8 30 11 16 -9 h
+.9569 g 3704 3536 N -16 9 29 10 17 -8 h
+.9571 g 3675 3526 N -17 8 30 10 16 -8 h
+.9574 g 3645 3516 N -16 8 29 10 17 -8 h
+.8858 g 3616 3318 N -17 8 30 198 16 -8 h
+.6763 g 3587 2947 N -16 8 29 371 16 -8 h
+.5386 g 3557 2937 N -16 8 29 10 17 -8 h
+.5389 g 3528 2927 N -17 8 30 11 16 -9 h
+.5391 g 3498 2917 N -16 9 29 10 17 -9 h
+.5393 g 3469 2906 N -17 9 30 10 16 -8 h
+.4713 g 3439 2718 N -16 8 29 189 17 -9 h
+.2785 g 3410 2382 N -17 9 30 336 16 -9 h
+.1539 g 3380 2371 N -16 9 29 10 17 -8 h
+.154 g 3351 2361 N -17 8 30 11 16 -9 h
+.1541 g 3321 2350 N -16 9 29 10 17 -8 h
+.1542 g 3292 2340 N -17 8 30 11 16 -9 h
+.1333 g 3262 2275 N -16 9 29 65 17 -9 h
+.0882 g 3233 2201 N -17 9 30 74 16 -9 h
+.064 g 3203 2190 N -16 9 29 10 17 -8 h
+.064 g 3174 2180 N -17 8 30 11 16 -9 h
+.0641 g 3144 2169 N -16 9 29 10 17 -8 h
+.0641 g 3115 2159 N -17 8 30 11 16 -9 h
+.0571 g 3085 2130 N -16 9 29 29 17 -9 h
+.0427 g 3056 2100 N -17 9 30 30 16 -9 h
+.0353 g 3026 2089 N -16 9 29 10 17 -8 h
+.0353 g 2997 2079 N -17 8 30 11 16 -9 h
+.0354 g 2967 2068 N -16 9 29 10 17 -8 h
+.0354 g 2938 2058 N -17 8 30 11 16 -9 h
+.035 g 2908 2046 N -16 9 29 11 17 -8 h
+.0341 g 2879 2034 N -17 8 30 12 16 -8 h
+.0336 g 2849 2024 N -16 8 29 11 17 -9 h
+.0337 g 2820 2013 N -17 9 30 10 16 -8 h
+.0337 g 2790 2003 N -16 8 29 11 17 -9 h
+.0337 g 2761 1992 N -17 9 30 10 16 -8 h
+.0338 g 2731 1982 N -16 8 29 11 17 -9 h
+.0338 g 2702 1971 N -17 9 30 10 16 -8 h
+.0338 g 2672 1960 N -16 8 29 11 17 -8 h
+.0338 g 2643 1950 N -17 8 30 10 16 -8 h
+.0339 g 2613 1939 N -16 8 29 11 17 -8 h
+.0339 g 2584 1929 N -17 8 30 11 16 -9 h
+.0339 g 2554 1918 N -16 9 29 10 17 -8 h
+.0339 g 2525 1908 N -17 8 30 11 16 -9 h
+.034 g 2495 1897 N -16 9 29 10 17 -8 h
+.034 g 2466 1887 N -17 8 30 11 16 -9 h
+.034 g 2436 1876 N -16 9 29 10 17 -8 h
+.034 g 2407 1866 N -17 8 30 11 16 -9 h
+.0328 g 2377 1852 N -16 9 29 14 17 -9 h
+.0303 g 2348 1838 N -17 9 30 13 16 -8 h
+.0291 g 2318 1827 N -16 8 29 11 17 -8 h
+.0291 g 2289 1817 N -17 8 30 10 16 -8 h
+.0291 g 2259 1806 N -16 8 29 11 17 -8 h
+.0292 g 2230 1796 N -17 8 30 11 16 -9 h
+.0272 g 2200 1780 N -16 9 29 15 17 -8 h
+.0233 g 2171 1765 N -17 8 30 16 16 -9 h
+.0214 g 2141 1754 N -16 9 29 10 17 -8 h
+0 g 5048 2753 N -16 8 29 11 17 -8 h
+0 g 5019 2743 N -17 8 30 11 16 -9 h
+0 g 4989 2732 N -16 9 29 10 17 -8 h
+0 g 4960 2722 N -17 8 30 11 16 -9 h
+0 g 4930 2711 N -16 9 29 10 17 -8 h
+0 g 4901 2701 N -17 8 30 11 16 -9 h
+0 g 4871 2690 N -16 9 29 10 17 -8 h
+0 g 4842 2679 N -17 8 30 11 16 -8 h
+0 g 4812 2669 N -16 8 29 11 17 -9 h
+0 g 4783 2658 N -17 9 30 10 16 -8 h
+0 g 4753 2648 N -16 8 29 11 17 -9 h
+0 g 4724 2637 N -17 9 30 10 16 -8 h
+.0014 g 4694 2630 N -16 8 29 7 17 -8 h
+.0042 g 4665 2623 N -17 8 30 7 16 -8 h
+.0056 g 4635 2613 N -16 8 29 11 17 -9 h
+.0056 g 4606 2602 N -17 9 30 10 16 -8 h
+.0056 g 4576 2592 N -16 8 29 11 17 -9 h
+.0056 g 4547 2581 N -17 9 30 10 16 -8 h
+.007 g 4517 2574 N -16 8 29 7 17 -8 h
+.0098 g 4488 2567 N -17 8 30 7 16 -8 h
+.0112 g 4458 2557 N -16 8 29 11 17 -9 h
+.0112 g 4429 2546 N -17 9 30 10 16 -8 h
+.0112 g 4399 2536 N -16 8 29 11 17 -9 h
+.0112 g 4370 2525 N -17 9 30 10 16 -8 h
+.0123 g 4340 2517 N -16 8 29 8 17 -8 h
+.0144 g 4311 2509 N -17 8 30 8 16 -8 h
+.0155 g 4281 2499 N -16 8 29 11 17 -9 h
+.0155 g 4252 2488 N -17 9 30 10 16 -8 h
+.0155 g 4222 2478 N -16 8 29 11 17 -9 h
+.0155 g 4193 2467 N -17 9 30 10 16 -8 h
+.161 g 4163 2837 N -16 8 29 -369 17 -9 h
+.3803 g 4134 3019 N -17 9 30 -183 16 -8 h
+.4542 g 4104 3009 N -16 8 29 11 17 -9 h
+.4544 g 4075 2998 N -17 9 30 10 16 -8 h
+.4546 g 4045 2988 N -16 8 29 10 17 -8 h
+.4548 g 4016 2978 N -17 8 30 11 16 -9 h
+.6204 g 3986 3400 N -16 9 29 -422 17 -9 h
+.8643 g 3957 3594 N -17 9 30 -194 16 -9 h
+.9428 g 3927 3584 N -16 9 29 10 17 -9 h
+.943 g 3898 3573 N -17 9 30 10 16 -8 h
+.9432 g 3868 3563 N -16 8 29 10 17 -8 h
+.9435 g 3839 3553 N -17 8 30 11 16 -9 h
+.9469 g 3809 3551 N -16 9 29 2 17 -9 h
+.9533 g 3780 3549 N -17 9 30 2 16 -9 h
+.9567 g 3750 3538 N -16 9 29 10 17 -8 h
+.9569 g 3721 3528 N -17 8 30 10 16 -8 h
+.9572 g 3691 3518 N -16 8 29 10 17 -8 h
+.9575 g 3662 3508 N -17 8 30 10 16 -8 h
+.886 g 3632 3310 N -16 8 29 198 17 -8 h
+.6768 g 3603 2939 N -17 8 29 370 17 -7 h
+.5393 g 3574 2929 N -17 7 30 10 16 -7 h
+.5395 g 3544 2918 N -16 7 29 10 17 -6 h
+.5397 g 3515 2908 N -17 6 30 11 16 -7 h
+.5399 g 3485 2898 N -16 7 29 10 17 -7 h
+.4721 g 3456 2709 N -17 7 30 188 16 -6 h
+.2801 g 3426 2373 N -16 6 29 333 17 -3 h
+.286 g 3397 2363 N -17 3 30 -669 16 676 h
+.4623 g 3367 2352 N -16 -676 29 -231 17 918 h
+.5086 g 3338 2342 N -17 -918 30 10 16 918 h
+.5088 g 3308 2331 N -16 -918 29 11 17 918 h
+.4975 g 3279 2266 N -17 -918 30 15 16 968 h
+.473 g 3249 2192 N -16 -968 29 16 17 1026 h
+.46 g 3220 2182 N -17 -1026 30 10 16 1026 h
+.4601 g 3190 2171 N -16 -1026 29 10 17 1027 h
+.4603 g 3161 2161 N -17 -1027 30 10 16 1027 h
+.4604 g 3131 2150 N -16 -1027 29 11 17 1027 h
+.4568 g 3102 2121 N -17 -1027 30 11 16 1045 h
+.4491 g 3072 2091 N -16 -1045 29 12 17 1063 h
+.4453 g 3043 2081 N -17 -1063 30 10 16 1063 h
+.4454 g 3013 2070 N -16 -1063 29 10 17 1064 h
+.4456 g 2984 2060 N -17 -1064 30 11 16 1063 h
+.4457 g 2954 2049 N -16 -1063 29 10 17 1064 h
+.4456 g 2925 2038 N -17 -1064 30 10 16 1065 h
+.4452 g 2895 2026 N -16 -1065 29 11 17 1066 h
+.4451 g 2866 2015 N -17 -1066 30 10 16 1067 h
+.4452 g 2836 2005 N -16 -1067 29 10 17 1067 h
+.397 g 2807 1994 N -17 -1067 30 263 16 815 h
+.1928 g 2777 1984 N -16 -815 29 825 17 0 h
+.037 g 2748 1973 N -17 0 30 11 16 0 h
+.037 g 2718 1963 N -16 0 29 10 17 0 h
+.037 g 2689 1952 N -17 0 30 11 16 0 h
+.0371 g 2659 1942 N -16 0 29 10 17 0 h
+.0371 g 2630 1931 N -17 0 30 11 16 0 h
+.0371 g 2600 1920 N -16 0 29 10 17 1 h
+.0371 g 2571 1910 N -17 -1 30 11 16 0 h
+.0372 g 2541 1899 N -16 0 29 11 17 0 h
+.0365 g 2512 1889 N -17 0 30 14 16 -4 h
+.035 g 2482 1878 N -16 4 29 15 17 -8 h
+.0342 g 2453 1868 N -17 8 30 10 16 -8 h
+.0343 g 2423 1857 N -16 8 29 11 17 -8 h
+.033 g 2394 1843 N -17 8 30 13 16 -7 h
+.0305 g 2364 1830 N -16 7 29 14 17 -8 h
+.0293 g 2335 1819 N -17 8 30 11 16 -8 h
+.0293 g 2305 1809 N -16 8 29 10 17 -8 h
+.0294 g 2276 1798 N -17 8 30 11 16 -8 h
+.0294 g 2246 1787 N -16 8 29 10 17 -7 h
+.0274 g 2217 1772 N -17 7 30 16 16 -8 h
+.0234 g 2187 1756 N -16 8 29 16 17 -8 h
+.0214 g 2158 1746 N -17 8 30 11 16 -9 h
+0 g 5065 2745 N -17 9 30 10 16 -8 h
+0 g 5035 2734 N -16 8 29 11 17 -8 h
+0 g 5006 2724 N -17 8 30 11 16 -9 h
+0 g 4976 2713 N -16 9 29 10 17 -8 h
+0 g 4947 2703 N -17 8 30 11 16 -9 h
+0 g 4917 2692 N -16 9 29 10 17 -8 h
+0 g 4888 2682 N -17 8 30 11 16 -9 h
+0 g 4858 2671 N -16 9 29 10 17 -8 h
+0 g 4829 2660 N -17 8 30 11 16 -8 h
+0 g 4799 2650 N -16 8 29 10 17 -8 h
+0 g 4770 2639 N -17 8 30 11 16 -8 h
+0 g 4740 2629 N -16 8 29 11 17 -9 h
+.0014 g 4711 2622 N -17 9 30 7 16 -9 h
+.0042 g 4681 2615 N -16 9 29 6 17 -8 h
+.0056 g 4652 2604 N -17 8 30 11 16 -8 h
+.0056 g 4622 2594 N -16 8 29 11 17 -9 h
+.0056 g 4593 2583 N -17 9 30 10 16 -8 h
+.0056 g 4563 2573 N -16 8 29 11 17 -9 h
+.007 g 4534 2566 N -17 9 30 7 16 -9 h
+.0098 g 4504 2559 N -16 9 29 7 17 -9 h
+.0112 g 4475 2548 N -17 9 30 10 16 -8 h
+.0112 g 4445 2538 N -16 8 29 11 17 -9 h
+.0112 g 4416 2527 N -17 9 30 10 16 -8 h
+.0112 g 4386 2517 N -16 8 29 11 17 -9 h
+.0123 g 4357 2509 N -17 9 30 8 16 -9 h
+.0144 g 4327 2501 N -16 9 29 7 17 -8 h
+.0155 g 4298 2490 N -17 8 30 11 16 -8 h
+.0155 g 4268 2480 N -16 8 29 10 17 -8 h
+.0155 g 4239 2469 N -17 8 30 11 16 -8 h
+.0155 g 4209 2459 N -16 8 29 11 17 -9 h
+.161 g 4180 2828 N -17 9 30 -370 16 -8 h
+.3803 g 4150 3011 N -16 8 29 -182 17 -9 h
+.4542 g 4121 3000 N -17 9 30 10 16 -8 h
+.4544 g 4091 2990 N -16 8 29 10 17 -8 h
+.4546 g 4062 2980 N -17 8 30 11 16 -9 h
+.4548 g 4032 2969 N -16 9 29 10 17 -8 h
+.6205 g 4003 3391 N -17 8 30 -422 16 -8 h
+.8643 g 3973 3585 N -16 8 29 -194 17 -8 h
+.9428 g 3944 3575 N -17 8 30 10 16 -8 h
+.943 g 3914 3565 N -16 8 29 10 17 -8 h
+.9433 g 3885 3555 N -17 8 30 11 16 -9 h
+.9435 g 3855 3544 N -16 9 29 10 17 -8 h
+.9469 g 3826 3542 N -17 8 30 2 16 -8 h
+.9534 g 3796 3540 N -16 8 29 2 17 -8 h
+.9567 g 3767 3530 N -17 8 30 10 16 -8 h
+.9569 g 3737 3520 N -16 8 29 11 17 -9 h
+.9573 g 3708 3510 N -17 9 30 10 16 -9 h
+.9577 g 3678 3500 N -16 9 29 10 17 -9 h
+.8863 g 3649 3302 N -17 9 30 197 16 -8 h
+.6773 g 3620 2932 N -16 8 29 370 16 -8 h
+.5401 g 3590 2922 N -16 8 29 10 17 -8 h
+.5403 g 3561 2912 N -17 8 30 10 16 -8 h
+.5405 g 3531 2901 N -16 8 29 10 17 -7 h
+.5407 g 3502 2891 N -17 7 30 11 16 -8 h
+.4731 g 3472 2703 N -16 8 29 187 17 -7 h
+.2821 g 3443 2370 N -17 7 30 332 16 -6 h
+.4364 g 3413 3039 N -16 6 29 -760 17 85 h
+.808 g 3384 3270 N -17 -85 30 -240 16 94 h
+.9022 g 3354 3260 N -16 -94 29 11 17 93 h
+.9024 g 3325 3249 N -17 -93 30 10 16 94 h
+.9009 g 3295 3234 N -16 -94 29 14 17 95 h
+.8975 g 3266 3218 N -17 -95 30 15 16 96 h
+.8959 g 3236 3208 N -16 -96 29 10 17 96 h
+.8962 g 3207 3198 N -17 -96 30 10 16 96 h
+.8964 g 3177 3188 N -16 -96 29 10 17 96 h
+.8967 g 3148 3177 N -17 -96 30 11 16 96 h
+.8964 g 3118 3166 N -16 -96 29 11 17 96 h
+.8957 g 3089 3154 N -17 -96 30 11 16 97 h
+.8955 g 3059 3144 N -16 -97 29 11 17 96 h
+.8957 g 3030 3134 N -17 -96 30 10 16 96 h
+.896 g 3000 3123 N -16 -96 29 10 17 97 h
+.8962 g 2971 3113 N -17 -97 30 10 16 97 h
+.8964 g 2941 3103 N -16 -97 29 11 17 96 h
+.8966 g 2912 3092 N -17 -96 30 10 16 97 h
+.8968 g 2882 3082 N -16 -97 29 10 17 97 h
+.8971 g 2853 3072 N -17 -97 30 10 16 97 h
+.7994 g 2823 2809 N -16 -97 29 270 17 90 h
+.3714 g 2794 1984 N -17 -90 30 921 16 -6 h
+.0412 g 2764 1973 N -16 6 29 11 17 -6 h
+.0412 g 2735 1963 N -17 6 30 10 16 -6 h
+.0413 g 2705 1952 N -16 6 29 11 17 -6 h
+.0413 g 2676 1942 N -17 6 30 10 16 -6 h
+.0413 g 2646 1931 N -16 6 29 11 17 -6 h
+.0414 g 2617 1921 N -17 6 30 10 16 -6 h
+.0414 g 2587 1910 N -16 6 29 11 17 -6 h
+.0414 g 2558 1899 N -17 6 30 10 16 -5 h
+.0397 g 2528 1885 N -16 5 29 16 17 -7 h
+.0362 g 2499 1870 N -17 7 30 16 16 -8 h
+.0345 g 2469 1860 N -16 8 29 10 17 -8 h
+.0345 g 2440 1849 N -17 8 30 11 16 -8 h
+.0333 g 2410 1836 N -16 8 29 14 17 -9 h
+.0308 g 2381 1822 N -17 9 30 13 16 -8 h
+.0296 g 2351 1811 N -16 8 29 11 17 -8 h
+.0296 g 2322 1801 N -17 8 30 11 16 -9 h
+.0296 g 2292 1790 N -16 9 29 10 17 -8 h
+.0297 g 2263 1780 N -17 8 30 11 16 -9 h
+.0276 g 2233 1764 N -16 9 29 16 17 -9 h
+.0235 g 2204 1748 N -17 9 30 16 16 -9 h
+.0214 g 2174 1737 N -16 9 29 10 17 -8 h
+0 g 5081 2737 N -16 8 29 11 17 -9 h
+0 g 5052 2726 N -17 9 30 10 16 -8 h
+0 g 5022 2715 N -16 8 29 11 17 -8 h
+0 g 4993 2705 N -17 8 30 10 16 -8 h
+0 g 4963 2694 N -16 8 29 11 17 -8 h
+0 g 4934 2684 N -17 8 30 11 16 -9 h
+0 g 4904 2673 N -16 9 29 10 17 -8 h
+0 g 4875 2663 N -17 8 30 11 16 -9 h
+0 g 4845 2652 N -16 9 29 10 17 -8 h
+0 g 4816 2642 N -17 8 30 11 16 -9 h
+0 g 4786 2631 N -16 9 29 10 17 -8 h
+0 g 4757 2620 N -17 8 30 11 16 -8 h
+.0008 g 4727 2613 N -16 8 29 10 17 -11 h
+.0025 g 4698 2607 N -17 11 30 10 16 -15 h
+.0033 g 4668 2596 N -16 15 29 10 17 -14 h
+.0033 g 4639 2585 N -17 14 30 11 16 -14 h
+.0033 g 4609 2575 N -16 14 29 11 17 -15 h
+.0033 g 4580 2564 N -17 15 30 10 16 -14 h
+.0041 g 4550 2557 N -16 14 29 10 17 -17 h
+.0057 g 4521 2550 N -17 17 30 10 16 -20 h
+.0065 g 4491 2540 N -16 20 29 11 17 -21 h
+.0065 g 4462 2529 N -17 21 30 10 16 -20 h
+.0065 g 4432 2519 N -16 20 29 11 17 -21 h
+.0065 g 4403 2508 N -17 21 30 10 16 -20 h
+.0072 g 4373 2500 N -16 20 29 10 17 -22 h
+.0084 g 4344 2493 N -17 22 30 11 16 -26 h
+.0091 g 4314 2482 N -16 26 29 10 17 -25 h
+.0091 g 4285 2472 N -17 25 30 11 16 -26 h
+.0091 g 4255 2461 N -16 26 29 10 17 -25 h
+.0091 g 4226 2450 N -17 25 30 11 16 -25 h
+.1004 g 4196 2820 N -16 25 29 -87 17 -308 h
+.2436 g 4167 3002 N -17 308 30 -67 16 -423 h
+.2955 g 4137 2992 N -16 423 29 10 17 -423 h
+.2957 g 4108 2982 N -17 423 30 11 16 -424 h
+.2958 g 4078 2971 N -16 424 29 10 17 -423 h
+.296 g 4049 2961 N -17 423 30 11 16 -424 h
+.428 g 4019 3383 N -16 424 29 -247 17 -599 h
+.6291 g 3990 3577 N -17 599 30 -146 16 -647 h
+.6982 g 3960 3567 N -16 647 29 11 17 -648 h
+.6985 g 3931 3557 N -17 648 30 10 16 -648 h
+.6987 g 3901 3546 N -16 648 29 10 17 -647 h
+.6989 g 3872 3536 N -17 647 30 10 16 -647 h
+.702 g 3842 3534 N -16 647 29 4 17 -649 h
+.7078 g 3813 3532 N -17 649 30 4 16 -651 h
+.7108 g 3783 3522 N -16 651 29 10 17 -651 h
+.7111 g 3754 3511 N -17 651 30 11 16 -651 h
+.7116 g 3724 3501 N -16 651 29 9 17 -650 h
+.7124 g 3695 3491 N -17 650 30 9 16 -649 h
+.6494 g 3665 3294 N -16 649 29 154 17 -606 h
+.474 g 3636 2924 N -17 606 30 237 16 -473 h
+.3622 g 3607 2914 N -16 473 29 11 16 -474 h
+.3623 g 3577 2904 N -16 474 29 10 17 -474 h
+.3625 g 3548 2894 N -17 474 30 11 16 -475 h
+.3626 g 3518 2883 N -16 475 29 10 17 -474 h
+.3129 g 3489 2696 N -17 474 30 94 16 -381 h
+.1814 g 3459 2364 N -16 381 29 116 17 -165 h
+.421 g 3430 3124 N -17 165 30 -897 16 -28 h
+.8396 g 3400 3364 N -16 28 29 -249 17 -19 h
+.9371 g 3371 3353 N -17 19 30 11 16 -19 h
+.9374 g 3341 3343 N -16 19 29 10 17 -19 h
+.9367 g 3312 3329 N -17 19 30 11 16 -16 h
+.9351 g 3282 3314 N -16 16 29 11 17 -12 h
+.9344 g 3253 3304 N -17 12 30 10 16 -12 h
+.9347 g 3223 3294 N -16 12 29 10 17 -12 h
+.9349 g 3194 3284 N -17 12 30 11 16 -13 h
+.9352 g 3164 3273 N -16 13 29 10 17 -12 h
+.9352 g 3135 3262 N -17 12 30 10 16 -11 h
+.9349 g 3105 3251 N -16 11 29 11 17 -11 h
+.9349 g 3076 3240 N -17 11 30 10 16 -10 h
+.9352 g 3046 3230 N -16 10 29 10 17 -10 h
+.9354 g 3017 3220 N -17 10 30 10 16 -10 h
+.9357 g 2987 3210 N -16 10 29 11 17 -11 h
+.9359 g 2958 3199 N -17 11 30 10 16 -10 h
+.9361 g 2928 3189 N -16 10 29 10 17 -10 h
+.9363 g 2899 3179 N -17 10 30 10 16 -10 h
+.9366 g 2869 3169 N -16 10 29 11 17 -11 h
+.8374 g 2840 2899 N -17 11 30 271 16 -12 h
+.3834 g 2810 1978 N -16 12 29 953 17 -44 h
+.0287 g 2781 1967 N -17 44 30 10 16 -43 h
+.0287 g 2751 1957 N -16 43 29 11 17 -44 h
+.0287 g 2722 1946 N -17 44 30 10 16 -43 h
+.0287 g 2692 1936 N -16 43 29 11 17 -44 h
+.0288 g 2663 1925 N -17 44 30 11 16 -44 h
+.0288 g 2633 1915 N -16 44 29 10 17 -44 h
+.0288 g 2604 1904 N -17 44 30 11 16 -44 h
+.0288 g 2574 1894 N -16 44 29 10 17 -44 h
+.0268 g 2545 1878 N -17 44 30 16 16 -44 h
+.0226 g 2515 1862 N -16 44 29 17 17 -45 h
+.0205 g 2486 1852 N -17 45 30 10 16 -45 h
+.0206 g 2456 1841 N -16 45 29 11 17 -45 h
+.0198 g 2427 1827 N -17 45 30 11 16 -42 h
+.0184 g 2397 1814 N -16 42 29 11 17 -40 h
+.0176 g 2368 1803 N -17 40 30 11 16 -40 h
+.0177 g 2338 1792 N -16 40 29 10 17 -39 h
+.0177 g 2309 1782 N -17 39 30 11 16 -40 h
+.0177 g 2279 1771 N -16 40 29 10 17 -39 h
+.0164 g 2250 1755 N -17 39 30 12 16 -35 h
+.0138 g 2220 1739 N -16 35 29 12 17 -31 h
+.0125 g 2191 1729 N -17 31 30 11 16 -32 h
+0 g 5098 2728 N -17 9 30 10 16 -8 h
+0 g 5068 2718 N -16 8 29 11 17 -9 h
+0 g 5039 2707 N -17 9 30 10 16 -8 h
+0 g 5009 2697 N -16 8 29 11 17 -9 h
+0 g 4980 2686 N -17 9 30 10 16 -8 h
+0 g 4950 2675 N -16 8 29 11 17 -8 h
+0 g 4921 2665 N -17 8 30 11 16 -9 h
+0 g 4891 2654 N -16 9 29 10 17 -8 h
+0 g 4862 2644 N -17 8 30 11 16 -9 h
+0 g 4832 2633 N -16 9 29 10 17 -8 h
+0 g 4803 2623 N -17 8 30 11 16 -9 h
+0 g 4773 2612 N -16 9 29 10 17 -8 h
+.0001 g 4744 2602 N -17 8 30 11 16 -9 h
+.0004 g 4714 2592 N -16 9 29 11 17 -10 h
+.0005 g 4685 2582 N -17 10 30 10 16 -10 h
+.0005 g 4655 2571 N -16 10 29 11 17 -10 h
+.0005 g 4626 2560 N -17 10 30 10 16 -9 h
+.0005 g 4596 2550 N -16 9 29 11 17 -10 h
+.0006 g 4567 2540 N -17 10 30 10 16 -10 h
+.0008 g 4537 2530 N -16 10 29 11 17 -11 h
+.0009 g 4508 2519 N -17 11 30 11 16 -11 h
+.0009 g 4478 2509 N -16 11 29 10 17 -11 h
+.0009 g 4449 2498 N -17 11 30 11 16 -11 h
+.0009 g 4419 2488 N -16 11 29 10 17 -11 h
+.001 g 4390 2478 N -17 11 30 11 16 -12 h
+.0012 g 4360 2467 N -16 12 29 10 17 -11 h
+.0013 g 4331 2457 N -17 11 30 11 16 -12 h
+.0013 g 4301 2446 N -16 12 29 11 17 -12 h
+.0013 g 4272 2436 N -17 12 30 10 16 -12 h
+.0013 g 4242 2425 N -16 12 29 11 17 -12 h
+.0199 g 4213 2512 N -17 12 30 10 16 -109 h
+.0534 g 4183 2579 N -16 109 29 11 17 -187 h
+.0684 g 4154 2569 N -17 187 30 10 16 -187 h
+.0684 g 4124 2558 N -16 187 29 11 17 -187 h
+.0685 g 4095 2548 N -17 187 30 11 16 -188 h
+.0685 g 4065 2537 N -16 188 29 10 17 -187 h
+.1178 g 4036 2784 N -17 187 30 10 16 -444 h
+.1971 g 4006 2930 N -16 444 29 10 17 -600 h
+.2271 g 3977 2919 N -17 600 30 11 16 -600 h
+.2272 g 3947 2909 N -16 600 29 11 17 -601 h
+.2273 g 3918 2899 N -17 601 30 10 16 -601 h
+.2274 g 3888 2889 N -16 601 29 11 17 -602 h
+.2288 g 3859 2885 N -17 602 30 10 16 -608 h
+.2314 g 3829 2881 N -16 608 29 11 17 -615 h
+.2328 g 3800 2871 N -17 615 30 10 16 -615 h
+.2329 g 3770 2860 N -16 615 29 11 17 -615 h
+.2343 g 3741 2851 N -17 615 30 5 16 -611 h
+.237 g 3711 2842 N -16 611 29 5 17 -607 h
+.2108 g 3682 2688 N -17 607 30 10 16 -463 h
+.1399 g 3652 2451 N -16 463 29 11 17 -237 h
+.0966 g 3623 2440 N -17 237 29 11 17 -237 h
+.0967 g 3594 2430 N -17 237 30 10 16 -237 h
+.0967 g 3564 2419 N -16 237 29 11 17 -237 h
+.0968 g 3535 2409 N -17 237 30 10 16 -237 h
+.0809 g 3505 2315 N -16 237 29 11 17 -154 h
+.0447 g 3476 2199 N -17 154 30 10 16 -48 h
+.3788 g 3446 3096 N -16 48 29 -933 17 -12 h
+.8326 g 3417 3345 N -17 12 30 -250 16 -11 h
+.9323 g 3387 3334 N -16 11 29 10 17 -10 h
+.9325 g 3358 3324 N -17 10 30 10 16 -10 h
+.9326 g 3328 3313 N -16 10 29 11 17 -10 h
+.9326 g 3299 3302 N -17 10 30 10 16 -9 h
+.9327 g 3269 3292 N -16 9 29 10 17 -9 h
+.9329 g 3240 3282 N -17 9 30 10 16 -9 h
+.9332 g 3210 3271 N -16 9 29 11 17 -9 h
+.9334 g 3181 3261 N -17 9 30 10 16 -9 h
+.9336 g 3151 3251 N -16 9 29 10 17 -9 h
+.9338 g 3122 3240 N -17 9 30 10 16 -8 h
+.934 g 3092 3230 N -16 8 29 11 17 -9 h
+.9343 g 3063 3220 N -17 9 30 10 16 -9 h
+.9345 g 3033 3210 N -16 9 29 10 17 -9 h
+.9347 g 3004 3199 N -17 9 30 10 16 -8 h
+.935 g 2974 3189 N -16 8 29 11 17 -9 h
+.9352 g 2945 3179 N -17 9 30 10 16 -9 h
+.9355 g 2915 3169 N -16 9 29 10 17 -9 h
+.9357 g 2886 3158 N -17 9 30 10 16 -8 h
+.8361 g 2856 2887 N -16 8 29 272 17 -9 h
+.3744 g 2827 1934 N -17 9 30 960 16 -16 h
+.0123 g 2797 1924 N -16 16 29 10 17 -16 h
+.0123 g 2768 1913 N -17 16 30 11 16 -16 h
+.0123 g 2738 1903 N -16 16 29 10 17 -16 h
+.0123 g 2709 1892 N -17 16 30 11 16 -16 h
+.0123 g 2679 1881 N -16 16 29 10 17 -15 h
+.0123 g 2650 1871 N -17 15 30 11 16 -16 h
+.0123 g 2620 1860 N -16 16 29 11 17 -16 h
+.0123 g 2591 1850 N -17 16 30 10 16 -16 h
+.0102 g 2561 1834 N -16 16 29 16 17 -16 h
+.0058 g 2532 1817 N -17 16 30 17 16 -16 h
+.0036 g 2502 1807 N -16 16 29 10 17 -16 h
+.0036 g 2473 1796 N -17 16 30 11 16 -16 h
+.0035 g 2443 1785 N -16 16 29 11 17 -16 h
+.0032 g 2414 1774 N -17 16 30 10 16 -15 h
+.0031 g 2384 1763 N -16 15 29 11 17 -15 h
+.0031 g 2355 1753 N -17 15 30 10 16 -15 h
+.0031 g 2325 1742 N -16 15 29 11 17 -15 h
+.0031 g 2296 1732 N -17 15 30 10 16 -15 h
+.0028 g 2266 1720 N -16 15 29 11 17 -14 h
+.0022 g 2237 1708 N -17 14 30 11 16 -13 h
+.0018 g 2207 1697 N -16 13 29 11 17 -13 h
+0 g 5114 2720 N -16 8 29 11 17 -9 h
+0 g 5085 2709 N -17 9 30 10 16 -8 h
+0 g 5055 2699 N -16 8 29 11 17 -9 h
+0 g 5026 2688 N -17 9 30 10 16 -8 h
+0 g 4996 2678 N -16 8 29 11 17 -9 h
+0 g 4967 2667 N -17 9 30 10 16 -8 h
+0 g 4937 2656 N -16 8 29 11 17 -8 h
+0 g 4908 2646 N -17 8 30 11 16 -9 h
+0 g 4878 2635 N -16 9 29 10 17 -8 h
+0 g 4849 2625 N -17 8 30 11 16 -9 h
+0 g 4819 2614 N -16 9 29 10 17 -8 h
+0 g 4790 2604 N -17 8 30 11 16 -9 h
+0 g 4760 2593 N -16 9 29 10 17 -8 h
+0 g 4731 2582 N -17 8 30 11 16 -8 h
+0 g 4701 2572 N -16 8 29 11 17 -9 h
+0 g 4672 2561 N -17 9 30 10 16 -8 h
+0 g 4642 2551 N -16 8 29 11 17 -9 h
+0 g 4613 2540 N -17 9 30 10 16 -8 h
+0 g 4583 2530 N -16 8 29 11 17 -9 h
+0 g 4554 2519 N -17 9 30 10 16 -8 h
+0 g 4524 2508 N -16 8 29 11 17 -8 h
+0 g 4495 2498 N -17 8 30 11 16 -9 h
+0 g 4465 2487 N -16 9 29 10 17 -8 h
+0 g 4436 2477 N -17 8 30 11 16 -9 h
+0 g 4406 2466 N -16 9 29 10 17 -8 h
+0 g 4377 2456 N -17 8 30 11 16 -9 h
+0 g 4347 2445 N -16 9 29 10 17 -8 h
+0 g 4318 2434 N -17 8 30 11 16 -8 h
+0 g 4288 2424 N -16 8 29 10 17 -8 h
+0 g 4259 2413 N -17 8 30 11 16 -8 h
+0 g 4229 2403 N -16 8 29 11 17 -9 h
+0 g 4200 2392 N -17 9 30 10 16 -8 h
+0 g 4170 2382 N -16 8 29 11 17 -9 h
+0 g 4141 2371 N -17 9 30 10 16 -8 h
+0 g 4111 2360 N -16 8 29 11 17 -8 h
+0 g 4082 2350 N -17 8 30 10 16 -8 h
+.0001 g 4052 2340 N -16 8 29 11 17 -9 h
+.0004 g 4023 2330 N -17 9 30 10 16 -9 h
+.0006 g 3993 2319 N -16 9 29 10 17 -8 h
+.0006 g 3964 2308 N -17 8 30 11 16 -8 h
+.0006 g 3934 2298 N -16 8 29 11 17 -9 h
+.0006 g 3905 2287 N -17 9 30 10 16 -8 h
+.0006 g 3875 2277 N -16 8 29 11 17 -9 h
+.0006 g 3846 2266 N -17 9 30 10 16 -8 h
+.0006 g 3816 2256 N -16 8 29 11 17 -9 h
+.0006 g 3787 2245 N -17 9 30 10 16 -8 h
+.0028 g 3757 2240 N -16 8 29 5 17 -8 h
+.0071 g 3728 2235 N -17 8 30 5 16 -8 h
+.0092 g 3698 2225 N -16 8 29 11 17 -9 h
+.0092 g 3669 2214 N -17 9 30 10 16 -8 h
+.0092 g 3640 2203 N -16 8 29 11 16 -8 h
+.0092 g 3610 2193 N -16 8 29 11 17 -9 h
+.0092 g 3581 2182 N -17 9 30 10 16 -8 h
+.0092 g 3551 2172 N -16 8 29 11 17 -9 h
+.0092 g 3522 2161 N -17 9 30 10 16 -8 h
+.0092 g 3492 2151 N -16 8 29 11 17 -9 h
+.3704 g 3463 3084 N -17 9 30 -933 16 -9 h
+.8314 g 3433 3334 N -16 9 29 -251 17 -8 h
+.9314 g 3404 3324 N -17 8 30 11 16 -9 h
+.9317 g 3374 3314 N -16 9 29 10 17 -9 h
+.9319 g 3345 3303 N -17 9 30 10 16 -8 h
+.9322 g 3315 3293 N -16 8 29 10 17 -8 h
+.9324 g 3286 3283 N -17 8 30 11 16 -9 h
+.9326 g 3256 3273 N -16 9 29 10 17 -9 h
+.9329 g 3227 3262 N -17 9 30 10 16 -8 h
+.9331 g 3197 3252 N -16 8 29 10 17 -8 h
+.9334 g 3168 3242 N -17 8 30 11 16 -9 h
+.9336 g 3138 3232 N -16 9 29 10 17 -9 h
+.9339 g 3109 3221 N -17 9 30 10 16 -8 h
+.9341 g 3079 3211 N -16 8 29 10 17 -8 h
+.9343 g 3050 3201 N -17 8 30 11 16 -9 h
+.9346 g 3020 3191 N -16 9 29 10 17 -9 h
+.9348 g 2991 3180 N -17 9 30 10 16 -8 h
+.9351 g 2961 3170 N -16 8 29 10 17 -8 h
+.9353 g 2932 3160 N -17 8 30 11 16 -9 h
+.9356 g 2902 3150 N -16 9 29 10 17 -9 h
+.8359 g 2873 2878 N -17 9 30 271 16 -8 h
+.3728 g 2843 1918 N -16 8 29 960 17 -8 h
+.0094 g 2814 1908 N -17 8 30 11 16 -9 h
+.0094 g 2784 1897 N -16 9 29 10 17 -8 h
+.0094 g 2755 1887 N -17 8 30 11 16 -9 h
+.0094 g 2725 1876 N -16 9 29 10 17 -8 h
+.0095 g 2696 1866 N -17 8 30 11 16 -9 h
+.0095 g 2666 1855 N -16 9 29 10 17 -8 h
+.0095 g 2637 1844 N -17 8 30 11 16 -8 h
+.0095 g 2607 1834 N -16 8 29 11 17 -9 h
+.0073 g 2578 1818 N -17 9 30 16 16 -9 h
+.0028 g 2548 1801 N -16 9 29 16 17 -8 h
+.0006 g 2519 1791 N -17 8 30 11 16 -9 h
+.0006 g 2489 1780 N -16 9 29 10 17 -8 h
+.0006 g 2460 1769 N -17 8 30 11 16 -8 h
+.0006 g 2430 1759 N -16 8 29 11 17 -9 h
+.0006 g 2401 1748 N -17 9 30 10 16 -8 h
+.0006 g 2371 1738 N -16 8 29 11 17 -9 h
+.0006 g 2342 1727 N -17 9 30 10 16 -8 h
+.0006 g 2312 1717 N -16 8 29 11 17 -9 h
+.0005 g 2283 1706 N -17 9 30 11 16 -9 h
+.0002 g 2253 1695 N -16 9 29 11 17 -9 h
+0 g 2224 1684 N -17 9 30 10 16 -8 h
+0 g 5131 2711 N -17 8 30 11 16 -8 h
+0 g 5101 2701 N -16 8 29 11 17 -9 h
+0 g 5072 2690 N -17 9 30 10 16 -8 h
+0 g 5042 2680 N -16 8 29 11 17 -9 h
+0 g 5013 2669 N -17 9 30 10 16 -8 h
+0 g 4983 2659 N -16 8 29 11 17 -9 h
+0 g 4954 2648 N -17 9 30 10 16 -8 h
+0 g 4924 2637 N -16 8 29 11 17 -8 h
+0 g 4895 2627 N -17 8 30 11 16 -9 h
+0 g 4865 2616 N -16 9 29 10 17 -8 h
+0 g 4836 2606 N -17 8 30 11 16 -9 h
+0 g 4806 2595 N -16 9 29 10 17 -8 h
+0 g 4777 2585 N -17 8 30 11 16 -9 h
+0 g 4747 2574 N -16 9 29 10 17 -8 h
+0 g 4718 2563 N -17 8 30 11 16 -8 h
+0 g 4688 2553 N -16 8 29 10 17 -8 h
+0 g 4659 2542 N -17 8 30 11 16 -8 h
+0 g 4629 2532 N -16 8 29 11 17 -9 h
+0 g 4600 2521 N -17 9 30 10 16 -8 h
+0 g 4570 2511 N -16 8 29 11 17 -9 h
+0 g 4541 2500 N -17 9 30 10 16 -8 h
+0 g 4511 2489 N -16 8 29 11 17 -8 h
+0 g 4482 2479 N -17 8 30 10 16 -8 h
+0 g 4452 2468 N -16 8 29 11 17 -8 h
+0 g 4423 2458 N -17 8 30 11 16 -9 h
+0 g 4393 2447 N -16 9 29 10 17 -8 h
+0 g 4364 2437 N -17 8 30 11 16 -9 h
+0 g 4334 2426 N -16 9 29 10 17 -8 h
+0 g 4305 2416 N -17 8 30 11 16 -9 h
+0 g 4275 2405 N -16 9 29 10 17 -8 h
+0 g 4246 2394 N -17 8 30 11 16 -8 h
+0 g 4216 2384 N -16 8 29 11 17 -9 h
+0 g 4187 2373 N -17 9 30 10 16 -8 h
+0 g 4157 2363 N -16 8 29 11 17 -9 h
+0 g 4128 2352 N -17 9 30 10 16 -8 h
+0 g 4098 2342 N -16 8 29 11 17 -9 h
+.0001 g 4069 2331 N -17 9 30 10 16 -8 h
+.0004 g 4039 2321 N -16 8 29 10 17 -8 h
+.0006 g 4010 2311 N -17 8 30 11 16 -9 h
+.0006 g 3980 2300 N -16 9 29 10 17 -8 h
+.0006 g 3951 2289 N -17 8 30 11 16 -8 h
+.0006 g 3921 2279 N -16 8 29 11 17 -9 h
+.0006 g 3892 2268 N -17 9 30 10 16 -8 h
+.0006 g 3862 2258 N -16 8 29 11 17 -9 h
+.0006 g 3833 2247 N -17 9 30 10 16 -8 h
+.0006 g 3803 2237 N -16 8 29 11 17 -9 h
+.0028 g 3774 2232 N -17 9 30 5 16 -9 h
+.0071 g 3744 2227 N -16 9 29 5 17 -9 h
+.0092 g 3715 2216 N -17 9 30 10 16 -8 h
+.0092 g 3685 2206 N -16 8 29 11 17 -9 h
+.0092 g 3656 2195 N -17 9 29 10 17 -8 h
+.0092 g 3627 2184 N -17 8 30 11 16 -8 h
+.0092 g 3597 2174 N -16 8 29 10 17 -8 h
+.0092 g 3568 2163 N -17 8 30 11 16 -8 h
+.0092 g 3538 2153 N -16 8 29 11 17 -9 h
+.0092 g 3509 2142 N -17 9 30 10 16 -8 h
+.3704 g 3479 3075 N -16 8 29 -933 17 -8 h
+.8314 g 3450 3326 N -17 8 30 -250 16 -9 h
+.9314 g 3420 3315 N -16 9 29 10 17 -8 h
+.9317 g 3391 3305 N -17 8 30 10 16 -8 h
+.9319 g 3361 3295 N -16 8 29 11 17 -9 h
+.9322 g 3332 3285 N -17 9 30 10 16 -9 h
+.9324 g 3302 3274 N -16 9 29 10 17 -8 h
+.9326 g 3273 3264 N -17 8 30 10 16 -8 h
+.9329 g 3243 3254 N -16 8 29 11 17 -9 h
+.9331 g 3214 3244 N -17 9 30 10 16 -9 h
+.9334 g 3184 3233 N -16 9 29 10 17 -8 h
+.9336 g 3155 3223 N -17 8 30 10 16 -8 h
+.9339 g 3125 3213 N -16 8 29 11 17 -9 h
+.9341 g 3096 3203 N -17 9 30 10 16 -9 h
+.9343 g 3066 3192 N -16 9 29 10 17 -8 h
+.9346 g 3037 3182 N -17 8 30 10 16 -8 h
+.9348 g 3007 3172 N -16 8 29 11 17 -9 h
+.9351 g 2978 3162 N -17 9 30 10 16 -9 h
+.9353 g 2948 3151 N -16 9 29 10 17 -8 h
+.9356 g 2919 3141 N -17 8 30 10 16 -8 h
+.8359 g 2889 2870 N -16 8 29 271 17 -8 h
+.3728 g 2860 1910 N -17 8 30 960 16 -8 h
+.0094 g 2830 1899 N -16 8 29 11 17 -8 h
+.0094 g 2801 1889 N -17 8 30 11 16 -9 h
+.0094 g 2771 1878 N -16 9 29 10 17 -8 h
+.0094 g 2742 1868 N -17 8 30 11 16 -9 h
+.0095 g 2712 1857 N -16 9 29 10 17 -8 h
+.0095 g 2683 1847 N -17 8 30 11 16 -9 h
+.0095 g 2653 1836 N -16 9 29 10 17 -8 h
+.0095 g 2624 1825 N -17 8 30 11 16 -8 h
+.0073 g 2594 1809 N -16 8 29 16 17 -8 h
+.0028 g 2565 1793 N -17 8 30 17 16 -9 h
+.0006 g 2535 1782 N -16 9 29 10 17 -8 h
+.0006 g 2506 1772 N -17 8 30 11 16 -9 h
+.0006 g 2476 1761 N -16 9 29 10 17 -8 h
+.0006 g 2447 1750 N -17 8 30 11 16 -8 h
+.0006 g 2417 1740 N -16 8 29 11 17 -9 h
+.0006 g 2388 1729 N -17 9 30 10 16 -8 h
+.0006 g 2358 1719 N -16 8 29 11 17 -9 h
+.0006 g 2329 1708 N -17 9 30 10 16 -8 h
+.0005 g 2299 1697 N -16 8 29 11 17 -8 h
+.0002 g 2270 1686 N -17 8 30 11 16 -8 h
+0 g 2240 1676 N -16 8 29 11 17 -9 h
+0 g 5147 2703 N -16 9 29 10 17 -8 h
+0 g 5118 2692 N -17 8 30 11 16 -8 h
+0 g 5088 2682 N -16 8 29 10 17 -8 h
+0 g 5059 2671 N -17 8 30 11 16 -8 h
+0 g 5029 2661 N -16 8 29 11 17 -9 h
+0 g 5000 2650 N -17 9 30 10 16 -8 h
+0 g 4970 2640 N -16 8 29 11 17 -9 h
+0 g 4941 2629 N -17 9 30 10 16 -8 h
+0 g 4911 2618 N -16 8 29 11 17 -8 h
+0 g 4882 2608 N -17 8 30 10 16 -8 h
+0 g 4852 2597 N -16 8 29 11 17 -8 h
+0 g 4823 2587 N -17 8 30 11 16 -9 h
+.0005 g 4793 2576 N -16 9 29 8 17 -6 h
+.0014 g 4764 2566 N -17 6 30 8 16 -4 h
+.0019 g 4734 2555 N -16 4 29 10 17 -3 h
+.0019 g 4705 2545 N -17 3 30 11 16 -4 h
+.0019 g 4675 2534 N -16 4 29 11 17 -4 h
+.0019 g 4646 2523 N -17 4 30 10 16 -3 h
+.0023 g 4616 2513 N -16 3 29 8 17 -1 h
+.0033 g 4587 2502 N -17 1 30 8 16 2 h
+.0037 g 4557 2492 N -16 -2 29 11 17 1 h
+.0037 g 4528 2481 N -17 -1 30 11 16 1 h
+.0038 g 4498 2471 N -16 -1 29 10 17 1 h
+.0038 g 4469 2460 N -17 -1 30 11 16 1 h
+.0041 g 4439 2449 N -16 -1 29 8 17 4 h
+.0048 g 4410 2439 N -17 -4 30 9 16 5 h
+.0052 g 4380 2428 N -16 -5 29 11 17 5 h
+.0052 g 4351 2418 N -17 -5 30 10 16 5 h
+.0052 g 4321 2407 N -16 -5 29 11 17 5 h
+.0052 g 4292 2397 N -17 -5 30 10 16 5 h
+.061 g 4262 2386 N -16 -5 29 -281 17 297 h
+.149 g 4233 2375 N -17 -297 30 -157 16 465 h
+.1812 g 4203 2365 N -16 -465 29 10 17 465 h
+.1813 g 4174 2354 N -17 -465 30 10 16 466 h
+.1814 g 4144 2344 N -16 -466 29 11 17 465 h
+.1815 g 4115 2333 N -17 -465 30 10 16 466 h
+.2589 g 4085 2323 N -16 -466 29 -393 17 869 h
+.3743 g 4056 2313 N -17 -869 30 -188 16 1067 h
+.4124 g 4026 2302 N -16 -1067 29 10 17 1068 h
+.4126 g 3997 2292 N -17 -1068 30 10 16 1068 h
+.4127 g 3967 2281 N -16 -1068 29 11 17 1068 h
+.4128 g 3938 2270 N -17 -1068 30 10 16 1069 h
+.4145 g 3908 2260 N -16 -1069 29 2 17 1077 h
+.4176 g 3879 2249 N -17 -1077 30 2 16 1086 h
+.4192 g 3849 2239 N -16 -1086 29 11 17 1085 h
+.4194 g 3820 2228 N -17 -1085 30 10 16 1086 h
+.4206 g 3790 2223 N -16 -1086 29 10 17 1081 h
+.4229 g 3761 2218 N -17 -1081 30 10 16 1076 h
+.3892 g 3731 2208 N -16 -1076 29 193 17 893 h
+.2894 g 3702 2197 N -17 -893 30 350 16 554 h
+.2245 g 3673 2187 N -16 -554 29 10 16 554 h
+.2246 g 3643 2176 N -16 -554 29 10 17 555 h
+.2247 g 3614 2166 N -17 -555 30 11 16 554 h
+.2248 g 3584 2155 N -16 -554 29 10 17 555 h
+.1943 g 3555 2144 N -17 -555 30 171 16 395 h
+.1123 g 3525 2134 N -16 -395 29 279 17 126 h
+.3301 g 3496 3067 N -17 -126 30 -453 16 -354 h
+.6896 g 3466 3317 N -16 354 29 -200 17 -404 h
+.78 g 3437 3307 N -17 404 30 10 16 -404 h
+.7802 g 3407 3297 N -16 404 29 10 17 -404 h
+.779 g 3378 3286 N -17 404 30 18 16 -411 h
+.7764 g 3348 3276 N -16 411 29 18 17 -419 h
+.7751 g 3319 3266 N -17 419 30 10 16 -419 h
+.7754 g 3289 3256 N -16 419 29 11 17 -420 h
+.7756 g 3260 3245 N -17 420 30 10 16 -419 h
+.7758 g 3230 3235 N -16 419 29 10 17 -419 h
+.7757 g 3201 3225 N -17 419 30 12 16 -421 h
+.7751 g 3171 3215 N -16 421 29 13 17 -424 h
+.775 g 3142 3204 N -17 424 30 10 16 -423 h
+.7752 g 3112 3194 N -16 423 29 10 17 -423 h
+.7754 g 3083 3184 N -17 423 30 11 16 -424 h
+.7757 g 3053 3174 N -16 424 29 10 17 -424 h
+.7759 g 3024 3163 N -17 424 30 10 16 -423 h
+.7761 g 2994 3153 N -16 423 29 11 17 -424 h
+.7763 g 2965 3143 N -17 424 30 10 16 -424 h
+.7765 g 2935 3133 N -16 424 29 10 17 -424 h
+.6838 g 2906 2862 N -17 424 30 235 16 -388 h
+.3042 g 2876 1902 N -16 388 29 560 17 12 h
+.0176 g 2847 1891 N -17 -12 30 10 16 13 h
+.0176 g 2817 1880 N -16 -13 29 11 17 13 h
+.0176 g 2788 1870 N -17 -13 30 10 16 13 h
+.0176 g 2758 1859 N -16 -13 29 11 17 13 h
+.0176 g 2729 1849 N -17 -13 30 10 16 13 h
+.0177 g 2699 1838 N -16 -13 29 11 17 13 h
+.0177 g 2670 1828 N -17 -13 30 10 16 13 h
+.0177 g 2640 1817 N -16 -13 29 11 17 13 h
+.0163 g 2611 1801 N -17 -13 30 12 16 17 h
+.0134 g 2581 1784 N -16 -17 29 12 17 22 h
+.0119 g 2552 1774 N -17 -22 30 11 16 21 h
+.0119 g 2522 1763 N -16 -21 29 11 17 21 h
+.0115 g 2493 1753 N -17 -21 30 12 16 19 h
+.0107 g 2463 1742 N -16 -19 29 13 17 17 h
+.0102 g 2434 1731 N -17 -17 30 11 16 17 h
+.0103 g 2404 1721 N -16 -17 29 10 17 17 h
+.0103 g 2375 1710 N -17 -17 30 11 16 17 h
+.0103 g 2345 1700 N -16 -17 29 10 17 17 h
+.0095 g 2316 1689 N -17 -17 30 15 16 13 h
+.008 g 2286 1678 N -16 -13 29 14 17 10 h
+.0072 g 2257 1667 N -17 -10 30 10 16 11 h
+0 g 5164 2695 N -17 8 30 11 16 -9 h
+0 g 5134 2684 N -16 9 29 10 17 -8 h
+0 g 5105 2674 N -17 8 30 11 16 -9 h
+0 g 5075 2663 N -16 9 29 10 17 -8 h
+0 g 5046 2652 N -17 8 30 11 16 -8 h
+0 g 5016 2642 N -16 8 29 11 17 -9 h
+0 g 4987 2631 N -17 9 30 10 16 -8 h
+0 g 4957 2621 N -16 8 29 11 17 -9 h
+0 g 4928 2610 N -17 9 30 10 16 -8 h
+0 g 4898 2600 N -16 8 29 11 17 -9 h
+0 g 4869 2589 N -17 9 30 10 16 -8 h
+0 g 4839 2578 N -16 8 29 11 17 -8 h
+.0012 g 4810 2570 N -17 8 30 7 16 -7 h
+.0035 g 4780 2562 N -16 7 29 7 17 -6 h
+.0047 g 4751 2552 N -17 6 30 10 16 -6 h
+.0047 g 4721 2541 N -16 6 29 11 17 -6 h
+.0047 g 4692 2530 N -17 6 30 11 16 -6 h
+.0047 g 4662 2520 N -16 6 29 10 17 -6 h
+.0059 g 4633 2512 N -17 6 30 7 16 -5 h
+.0082 g 4603 2504 N -16 5 29 7 17 -4 h
+.0093 g 4574 2493 N -17 4 30 11 16 -4 h
+.0093 g 4544 2482 N -16 4 29 10 17 -3 h
+.0093 g 4515 2472 N -17 3 30 11 16 -4 h
+.0094 g 4485 2461 N -16 4 29 10 17 -3 h
+.0103 g 4456 2453 N -17 3 30 8 16 -3 h
+.012 g 4426 2444 N -16 3 29 8 17 -2 h
+.0129 g 4397 2433 N -17 2 30 10 16 -1 h
+.013 g 4367 2423 N -16 1 29 11 17 -2 h
+.013 g 4338 2412 N -17 2 30 10 16 -1 h
+.013 g 4308 2402 N -16 1 29 11 17 -2 h
+.1415 g 4279 2683 N -17 2 30 -370 16 87 h
+.3392 g 4249 2840 N -16 -87 29 -182 17 112 h
+.4083 g 4220 2830 N -17 -112 30 10 16 112 h
+.4085 g 4190 2820 N -16 -112 29 11 17 111 h
+.4087 g 4161 2809 N -17 -111 30 10 16 112 h
+.4089 g 4131 2799 N -16 -112 29 10 17 112 h
+.569 g 4102 3192 N -17 -112 30 -422 16 141 h
+.8063 g 4072 3380 N -16 -141 29 -194 17 147 h
+.8835 g 4043 3370 N -17 -147 30 11 16 146 h
+.8838 g 4013 3360 N -16 -146 29 10 17 146 h
+.884 g 3984 3349 N -17 -146 30 10 16 147 h
+.8842 g 3954 3339 N -16 -147 29 10 17 147 h
+.8876 g 3925 3337 N -17 -147 30 2 16 147 h
+.894 g 3895 3335 N -16 -147 29 3 17 146 h
+.8973 g 3866 3324 N -17 -146 30 10 16 147 h
+.8975 g 3836 3314 N -16 -147 29 10 17 147 h
+.8978 g 3807 3304 N -17 -147 30 10 16 147 h
+.8981 g 3777 3294 N -16 -147 29 11 17 146 h
+.8275 g 3748 3101 N -17 -146 30 198 16 141 h
+.623 g 3718 2751 N -16 -141 29 370 17 121 h
+.4892 g 3689 2741 N -17 -121 30 10 16 121 h
+.4894 g 3660 2731 N -16 -121 29 11 16 120 h
+.4896 g 3630 2720 N -16 -120 29 10 17 121 h
+.4898 g 3601 2710 N -17 -121 30 10 16 121 h
+.4253 g 3571 2539 N -16 -121 29 189 17 103 h
+.2469 g 3542 2260 N -17 -103 30 336 16 46 h
+.2219 g 3512 2713 N -16 -46 29 10 17 -417 h
+.3509 g 3483 2913 N -17 417 30 11 16 -628 h
+.3913 g 3453 2903 N -16 628 29 10 17 -628 h
+.3915 g 3424 2893 N -17 628 30 11 16 -629 h
+.3797 g 3394 2875 N -16 629 29 65 17 -676 h
+.3544 g 3365 2857 N -17 676 30 74 16 -732 h
+.3409 g 3335 2847 N -16 732 29 10 17 -732 h
+.3411 g 3306 2836 N -17 732 30 11 16 -732 h
+.3412 g 3276 2826 N -16 732 29 10 17 -732 h
+.3413 g 3247 2816 N -17 732 30 11 16 -733 h
+.3375 g 3217 2804 N -16 733 29 29 17 -750 h
+.3297 g 3188 2791 N -17 750 30 30 16 -767 h
+.3257 g 3158 2781 N -16 767 29 10 17 -767 h
+.3258 g 3129 2771 N -17 767 30 11 16 -768 h
+.326 g 3099 2760 N -16 768 29 10 17 -767 h
+.3261 g 3070 2750 N -17 767 30 11 16 -768 h
+.326 g 3040 2740 N -16 768 29 12 17 -770 h
+.3256 g 3011 2729 N -17 770 30 11 16 -770 h
+.3254 g 2981 2719 N -16 770 29 11 17 -771 h
+.3256 g 2952 2709 N -17 771 30 10 16 -771 h
+.2827 g 2922 2474 N -16 771 29 11 17 -547 h
+.1347 g 2893 1914 N -17 547 30 10 16 3 h
+.0298 g 2863 1904 N -16 -3 29 11 17 2 h
+.0298 g 2834 1893 N -17 -2 30 11 16 2 h
+.0298 g 2804 1883 N -16 -2 29 10 17 2 h
+.0298 g 2775 1872 N -17 -2 30 11 16 2 h
+.0298 g 2745 1862 N -16 -2 29 10 17 2 h
+.0299 g 2716 1851 N -17 -2 30 11 16 2 h
+.0299 g 2686 1841 N -16 -2 29 10 17 2 h
+.0299 g 2657 1830 N -17 -2 30 11 16 2 h
+.0296 g 2627 1818 N -16 -2 29 10 17 4 h
+.029 g 2598 1806 N -17 -4 30 11 16 5 h
+.0286 g 2568 1795 N -16 -5 29 10 17 6 h
+.0287 g 2539 1784 N -17 -6 30 11 16 6 h
+.0276 g 2509 1772 N -16 -6 29 14 17 4 h
+.0255 g 2480 1759 N -17 -4 30 14 16 3 h
+.0245 g 2450 1748 N -16 -3 29 10 17 4 h
+.0245 g 2421 1738 N -17 -4 30 11 16 3 h
+.0245 g 2391 1727 N -16 -3 29 10 17 4 h
+.0245 g 2362 1717 N -17 -4 30 11 16 3 h
+.0229 g 2332 1702 N -16 -3 29 15 17 3 h
+.0196 g 2303 1688 N -17 -3 30 16 16 1 h
+.0179 g 2273 1678 N -16 -1 29 11 17 0 h
+0 g 5180 2686 N -16 9 29 10 17 -8 h
+0 g 5151 2676 N -17 8 30 11 16 -9 h
+0 g 5121 2665 N -16 9 29 10 17 -8 h
+0 g 5092 2655 N -17 8 30 11 16 -9 h
+0 g 5062 2644 N -16 9 29 10 17 -8 h
+0 g 5033 2633 N -17 8 30 11 16 -8 h
+0 g 5003 2623 N -16 8 29 11 17 -9 h
+0 g 4974 2612 N -17 9 30 10 16 -8 h
+0 g 4944 2602 N -16 8 29 11 17 -9 h
+0 g 4915 2591 N -17 9 30 10 16 -8 h
+0 g 4885 2581 N -16 8 29 11 17 -9 h
+0 g 4856 2570 N -17 9 30 10 16 -8 h
+.0014 g 4826 2563 N -16 8 29 7 17 -8 h
+.0042 g 4797 2556 N -17 8 30 7 16 -8 h
+.0056 g 4767 2546 N -16 8 29 11 17 -9 h
+.0056 g 4738 2535 N -17 9 30 10 16 -8 h
+.0056 g 4708 2524 N -16 8 29 11 17 -8 h
+.0056 g 4679 2514 N -17 8 30 10 16 -8 h
+.007 g 4649 2507 N -16 8 29 7 17 -8 h
+.0098 g 4620 2500 N -17 8 30 7 16 -8 h
+.0112 g 4590 2489 N -16 8 29 11 17 -8 h
+.0112 g 4561 2479 N -17 8 30 10 16 -8 h
+.0112 g 4531 2468 N -16 8 29 11 17 -8 h
+.0112 g 4502 2458 N -17 8 30 11 16 -9 h
+.0123 g 4472 2450 N -16 9 29 7 17 -8 h
+.0144 g 4443 2442 N -17 8 30 8 16 -8 h
+.0155 g 4413 2432 N -16 8 29 11 17 -9 h
+.0155 g 4384 2421 N -17 9 30 10 16 -8 h
+.0155 g 4354 2411 N -16 8 29 11 17 -9 h
+.0155 g 4325 2400 N -17 9 30 10 16 -8 h
+.161 g 4295 2770 N -16 8 29 -369 17 -9 h
+.3803 g 4266 2952 N -17 9 30 -182 16 -9 h
+.4542 g 4236 2942 N -16 9 29 10 17 -9 h
+.4544 g 4207 2931 N -17 9 30 10 16 -8 h
+.4546 g 4177 2921 N -16 8 29 10 17 -8 h
+.4548 g 4148 2911 N -17 8 30 11 16 -9 h
+.6204 g 4118 3333 N -16 9 29 -422 17 -9 h
+.8643 g 4089 3527 N -17 9 30 -194 16 -9 h
+.9428 g 4059 3516 N -16 9 29 10 17 -8 h
+.943 g 4030 3506 N -17 8 30 10 16 -8 h
+.9432 g 4000 3496 N -16 8 29 11 17 -9 h
+.9435 g 3971 3486 N -17 9 30 10 16 -9 h
+.9469 g 3941 3484 N -16 9 29 2 17 -9 h
+.9533 g 3912 3481 N -17 9 30 2 16 -8 h
+.9567 g 3882 3471 N -16 8 29 10 17 -8 h
+.9569 g 3853 3461 N -17 8 30 11 16 -9 h
+.9571 g 3823 3451 N -16 9 29 10 17 -9 h
+.9574 g 3794 3440 N -17 9 30 10 16 -8 h
+.8858 g 3764 3242 N -16 8 29 198 17 -8 h
+.6763 g 3735 2872 N -17 8 30 370 16 -8 h
+.5387 g 3705 2862 N -16 8 29 11 17 -9 h
+.5389 g 3676 2851 N -17 9 29 10 17 -8 h
+.5391 g 3647 2841 N -17 8 30 10 16 -8 h
+.5393 g 3617 2831 N -16 8 29 11 17 -9 h
+.4713 g 3588 2642 N -17 9 30 188 16 -8 h
+.2785 g 3558 2306 N -16 8 29 336 17 -8 h
+.1539 g 3529 2296 N -17 8 30 11 16 -9 h
+.154 g 3499 2285 N -16 9 29 10 17 -8 h
+.1541 g 3470 2275 N -17 8 30 11 16 -9 h
+.1542 g 3440 2264 N -16 9 29 10 17 -8 h
+.1333 g 3411 2199 N -17 8 30 65 16 -8 h
+.0882 g 3381 2125 N -16 8 29 74 17 -8 h
+.064 g 3352 2115 N -17 8 30 11 16 -9 h
+.064 g 3322 2104 N -16 9 29 10 17 -8 h
+.0641 g 3293 2094 N -17 8 30 11 16 -9 h
+.0641 g 3263 2083 N -16 9 29 10 17 -8 h
+.0571 g 3234 2054 N -17 8 30 29 16 -8 h
+.0427 g 3204 2024 N -16 8 29 30 17 -8 h
+.0353 g 3175 2014 N -17 8 30 11 16 -9 h
+.0353 g 3145 2003 N -16 9 29 10 17 -8 h
+.0354 g 3116 1993 N -17 8 30 11 16 -9 h
+.0354 g 3086 1982 N -16 9 29 10 17 -8 h
+.035 g 3057 1970 N -17 8 30 12 16 -8 h
+.0341 g 3027 1959 N -16 8 29 12 17 -9 h
+.0336 g 2998 1948 N -17 9 30 10 16 -8 h
+.0337 g 2968 1938 N -16 8 29 11 17 -9 h
+.0337 g 2939 1927 N -17 9 30 10 16 -8 h
+.0337 g 2909 1917 N -16 8 29 11 17 -9 h
+.0338 g 2880 1906 N -17 9 30 10 16 -8 h
+.0338 g 2850 1895 N -16 8 29 11 17 -8 h
+.0338 g 2821 1885 N -17 8 30 10 16 -8 h
+.0338 g 2791 1874 N -16 8 29 11 17 -8 h
+.0339 g 2762 1864 N -17 8 30 11 16 -9 h
+.0339 g 2732 1853 N -16 9 29 10 17 -8 h
+.0339 g 2703 1843 N -17 8 30 11 16 -9 h
+.0339 g 2673 1832 N -16 9 29 10 17 -8 h
+.034 g 2644 1822 N -17 8 30 11 16 -9 h
+.034 g 2614 1811 N -16 9 29 10 17 -8 h
+.034 g 2585 1801 N -17 8 30 11 16 -9 h
+.034 g 2555 1790 N -16 9 29 10 17 -8 h
+.0328 g 2526 1776 N -17 8 30 14 16 -8 h
+.0303 g 2496 1762 N -16 8 29 14 17 -8 h
+.0291 g 2467 1752 N -17 8 30 10 16 -8 h
+.0291 g 2437 1741 N -16 8 29 11 17 -8 h
+.0291 g 2408 1731 N -17 8 30 11 16 -9 h
+.0292 g 2378 1720 N -16 9 29 10 17 -8 h
+.0272 g 2349 1705 N -17 8 30 16 16 -9 h
+.0233 g 2319 1689 N -16 9 29 15 17 -8 h
+.0214 g 2290 1678 N -17 8 30 11 16 -8 h
+0 g 5197 2678 N -17 8 30 11 16 -9 h
+0 g 5167 2667 N -16 9 29 10 17 -8 h
+0 g 5138 2657 N -17 8 30 11 16 -9 h
+0 g 5108 2646 N -16 9 29 10 17 -8 h
+0 g 5079 2636 N -17 8 30 11 16 -9 h
+0 g 5049 2625 N -16 9 29 10 17 -8 h
+0 g 5020 2614 N -17 8 30 11 16 -8 h
+0 g 4990 2604 N -16 8 29 11 17 -9 h
+0 g 4961 2593 N -17 9 30 10 16 -8 h
+0 g 4931 2583 N -16 8 29 11 17 -9 h
+0 g 4902 2572 N -17 9 30 10 16 -8 h
+0 g 4872 2562 N -16 8 29 11 17 -9 h
+.0014 g 4843 2555 N -17 9 30 7 16 -9 h
+.0042 g 4813 2548 N -16 9 29 7 17 -9 h
+.0056 g 4784 2537 N -17 9 30 10 16 -8 h
+.0056 g 4754 2527 N -16 8 29 11 17 -9 h
+.0056 g 4725 2516 N -17 9 30 10 16 -8 h
+.0056 g 4695 2506 N -16 8 29 11 17 -9 h
+.007 g 4666 2499 N -17 9 30 7 16 -9 h
+.0098 g 4636 2492 N -16 9 29 7 17 -9 h
+.0112 g 4607 2481 N -17 9 30 10 16 -8 h
+.0112 g 4577 2471 N -16 8 29 11 17 -9 h
+.0112 g 4548 2460 N -17 9 30 10 16 -8 h
+.0112 g 4518 2449 N -16 8 29 11 17 -8 h
+.0123 g 4489 2442 N -17 8 30 8 16 -9 h
+.0144 g 4459 2434 N -16 9 29 8 17 -9 h
+.0155 g 4430 2423 N -17 9 30 10 16 -8 h
+.0155 g 4400 2413 N -16 8 29 11 17 -9 h
+.0155 g 4371 2402 N -17 9 30 10 16 -8 h
+.0155 g 4341 2392 N -16 8 29 11 17 -9 h
+.161 g 4312 2761 N -17 9 30 -370 16 -8 h
+.3803 g 4282 2943 N -16 8 29 -182 17 -8 h
+.4542 g 4253 2933 N -17 8 30 10 16 -8 h
+.4544 g 4223 2923 N -16 8 29 11 17 -9 h
+.4546 g 4194 2913 N -17 9 30 10 16 -9 h
+.4548 g 4164 2902 N -16 9 29 10 17 -8 h
+.6204 g 4135 3324 N -17 8 30 -422 16 -8 h
+.8643 g 4105 3518 N -16 8 29 -194 17 -8 h
+.9428 g 4076 3508 N -17 8 30 10 16 -8 h
+.943 g 4046 3498 N -16 8 29 11 17 -9 h
+.9432 g 4017 3487 N -17 9 30 10 16 -8 h
+.9435 g 3987 3477 N -16 8 29 10 17 -8 h
+.9469 g 3958 3475 N -17 8 30 2 16 -8 h
+.9533 g 3928 3473 N -16 8 29 2 17 -8 h
+.9567 g 3899 3463 N -17 8 30 11 16 -9 h
+.9569 g 3869 3452 N -16 9 29 10 17 -8 h
+.9571 g 3840 3442 N -17 8 30 10 16 -8 h
+.9574 g 3810 3432 N -16 8 29 10 17 -8 h
+.8858 g 3781 3234 N -17 8 30 198 16 -8 h
+.6763 g 3751 2864 N -16 8 29 371 17 -9 h
+.5387 g 3722 2853 N -17 9 30 10 16 -8 h
+.5389 g 3693 2843 N -16 8 29 10 16 -8 h
+.5391 g 3663 2833 N -16 8 29 11 17 -9 h
+.5393 g 3634 2822 N -17 9 30 10 16 -8 h
+.4713 g 3604 2634 N -16 8 29 189 17 -9 h
+.2785 g 3575 2298 N -17 9 30 336 16 -9 h
+.1539 g 3545 2287 N -16 9 29 10 17 -8 h
+.154 g 3516 2277 N -17 8 30 11 16 -9 h
+.1541 g 3486 2266 N -16 9 29 10 17 -8 h
+.1542 g 3457 2256 N -17 8 30 11 16 -9 h
+.1333 g 3427 2191 N -16 9 29 65 17 -9 h
+.0882 g 3398 2117 N -17 9 30 74 16 -9 h
+.064 g 3368 2106 N -16 9 29 10 17 -8 h
+.064 g 3339 2096 N -17 8 30 11 16 -9 h
+.0641 g 3309 2085 N -16 9 29 10 17 -8 h
+.0641 g 3280 2075 N -17 8 30 11 16 -9 h
+.0571 g 3250 2046 N -16 9 29 29 17 -9 h
+.0427 g 3221 2016 N -17 9 30 30 16 -9 h
+.0353 g 3191 2005 N -16 9 29 10 17 -8 h
+.0353 g 3162 1995 N -17 8 30 11 16 -9 h
+.0354 g 3132 1984 N -16 9 29 10 17 -8 h
+.0354 g 3103 1974 N -17 8 30 11 16 -9 h
+.035 g 3073 1962 N -16 9 29 11 17 -8 h
+.0341 g 3044 1950 N -17 8 30 12 16 -8 h
+.0336 g 3014 1940 N -16 8 29 11 17 -9 h
+.0337 g 2985 1929 N -17 9 30 10 16 -8 h
+.0337 g 2955 1919 N -16 8 29 11 17 -9 h
+.0337 g 2926 1908 N -17 9 30 10 16 -8 h
+.0338 g 2896 1898 N -16 8 29 11 17 -9 h
+.0338 g 2867 1887 N -17 9 30 10 16 -8 h
+.0338 g 2837 1877 N -16 8 29 11 17 -9 h
+.0338 g 2808 1866 N -17 9 30 10 16 -8 h
+.0339 g 2778 1855 N -16 8 29 11 17 -8 h
+.0339 g 2749 1845 N -17 8 30 10 16 -8 h
+.0339 g 2719 1834 N -16 8 29 11 17 -8 h
+.0339 g 2690 1824 N -17 8 30 11 16 -9 h
+.034 g 2660 1813 N -16 9 29 10 17 -8 h
+.034 g 2631 1803 N -17 8 30 11 16 -9 h
+.034 g 2601 1792 N -16 9 29 10 17 -8 h
+.034 g 2572 1782 N -17 8 30 11 16 -9 h
+.0328 g 2542 1768 N -16 9 29 13 17 -8 h
+.0303 g 2513 1754 N -17 8 30 14 16 -8 h
+.0291 g 2483 1744 N -16 8 29 11 17 -9 h
+.0291 g 2454 1733 N -17 9 30 10 16 -8 h
+.0291 g 2424 1722 N -16 8 29 11 17 -8 h
+.0292 g 2395 1712 N -17 8 30 10 16 -8 h
+.0272 g 2365 1696 N -16 8 29 16 17 -8 h
+.0233 g 2336 1681 N -17 8 30 16 16 -9 h
+.0214 g 2306 1670 N -16 9 29 10 17 -8 h
+0 g 5213 2669 N -16 8 29 11 17 -8 h
+0 g 5184 2659 N -17 8 30 11 16 -9 h
+0 g 5154 2648 N -16 9 29 10 17 -8 h
+0 g 5125 2638 N -17 8 30 11 16 -9 h
+0 g 5095 2627 N -16 9 29 10 17 -8 h
+0 g 5066 2617 N -17 8 30 11 16 -9 h
+0 g 5036 2606 N -16 9 29 10 17 -8 h
+0 g 5007 2595 N -17 8 30 11 16 -8 h
+0 g 4977 2585 N -16 8 29 10 17 -8 h
+0 g 4948 2574 N -17 8 30 11 16 -8 h
+0 g 4918 2564 N -16 8 29 11 17 -9 h
+0 g 4889 2553 N -17 9 30 10 16 -8 h
+.0011 g 4859 2546 N -16 8 29 9 17 -10 h
+.0032 g 4830 2539 N -17 10 30 9 16 -12 h
+.0042 g 4800 2529 N -16 12 29 10 17 -12 h
+.0042 g 4771 2518 N -17 12 30 11 16 -12 h
+.0042 g 4741 2508 N -16 12 29 10 17 -12 h
+.0042 g 4712 2497 N -17 12 30 11 16 -12 h
+.0053 g 4682 2490 N -16 12 29 9 17 -14 h
+.0074 g 4653 2483 N -17 14 30 8 16 -15 h
+.0084 g 4623 2473 N -16 15 29 11 17 -16 h
+.0084 g 4594 2462 N -17 16 30 11 16 -16 h
+.0084 g 4564 2452 N -16 16 29 10 17 -16 h
+.0084 g 4535 2441 N -17 16 30 11 16 -16 h
+.0092 g 4505 2433 N -16 16 29 9 17 -17 h
+.0109 g 4476 2425 N -17 17 30 9 16 -18 h
+.0117 g 4446 2415 N -16 18 29 10 17 -18 h
+.0117 g 4417 2404 N -17 18 30 11 16 -18 h
+.0117 g 4387 2394 N -16 18 29 11 17 -19 h
+.0117 g 4358 2383 N -17 19 30 10 16 -18 h
+.1299 g 4328 2753 N -16 18 29 -227 17 -161 h
+.3135 g 4299 2935 N -17 161 30 -138 16 -205 h
+.379 g 4269 2925 N -16 205 29 10 17 -205 h
+.3792 g 4240 2914 N -17 205 30 11 16 -205 h
+.3794 g 4210 2904 N -16 205 29 10 17 -205 h
+.3795 g 4181 2894 N -17 205 30 10 16 -205 h
+.535 g 4151 3316 N -16 205 29 -368 17 -259 h
+.7663 g 4122 3510 N -17 259 30 -183 16 -270 h
+.8425 g 4092 3500 N -16 270 29 11 17 -271 h
+.8427 g 4063 3489 N -17 271 30 10 16 -270 h
+.843 g 4033 3479 N -16 270 29 10 17 -270 h
+.8432 g 4004 3469 N -17 270 30 11 16 -271 h
+.8465 g 3974 3467 N -16 271 29 2 17 -271 h
+.8529 g 3945 3465 N -17 271 30 3 16 -272 h
+.8561 g 3915 3454 N -16 272 29 10 17 -271 h
+.8563 g 3886 3444 N -17 271 30 10 16 -271 h
+.8566 g 3856 3434 N -16 271 29 10 17 -271 h
+.8568 g 3827 3424 N -17 271 30 11 16 -272 h
+.7872 g 3797 3226 N -16 272 29 187 17 -261 h
+.5868 g 3768 2855 N -17 261 30 333 16 -223 h
+.4563 g 3738 2845 N -16 223 29 11 17 -224 h
+.4565 g 3709 2835 N -17 224 30 10 16 -224 h
+.4567 g 3680 2824 N -16 224 29 10 16 -223 h
+.4569 g 3650 2814 N -16 223 29 11 17 -224 h
+.395 g 3621 2625 N -17 224 30 156 16 -191 h
+.2266 g 3591 2289 N -16 191 29 241 17 -96 h
+.1202 g 3562 2279 N -17 96 30 11 16 -97 h
+.1202 g 3532 2268 N -16 97 29 10 17 -96 h
+.1203 g 3503 2258 N -17 96 30 11 16 -97 h
+.1204 g 3473 2247 N -16 97 29 10 17 -96 h
+.1036 g 3444 2182 N -17 96 30 44 16 -75 h
+.0678 g 3414 2108 N -16 75 29 47 17 -48 h
+.0488 g 3385 2098 N -17 48 30 10 16 -48 h
+.0488 g 3355 2087 N -16 48 29 11 17 -48 h
+.0489 g 3326 2077 N -17 48 30 10 16 -48 h
+.0489 g 3296 2066 N -16 48 29 11 17 -48 h
+.0435 g 3267 2037 N -17 48 30 20 16 -39 h
+.0324 g 3237 2007 N -16 39 29 21 17 -30 h
+.0267 g 3208 1997 N -17 30 30 11 16 -31 h
+.0268 g 3178 1986 N -16 31 29 10 17 -30 h
+.0268 g 3149 1976 N -17 30 30 11 16 -31 h
+.0268 g 3119 1965 N -16 31 29 11 17 -31 h
+.0265 g 3090 1954 N -17 31 30 11 16 -31 h
+.0258 g 3060 1942 N -16 31 29 11 17 -30 h
+.0255 g 3031 1931 N -17 30 30 10 16 -29 h
+.0255 g 3001 1921 N -16 29 29 11 17 -30 h
+.0255 g 2972 1910 N -17 30 30 11 16 -30 h
+.0255 g 2942 1900 N -16 30 29 10 17 -30 h
+.0255 g 2913 1889 N -17 30 30 11 16 -30 h
+.0256 g 2883 1879 N -16 30 29 10 17 -30 h
+.0256 g 2854 1868 N -17 30 30 11 16 -30 h
+.0256 g 2824 1858 N -16 30 29 10 17 -30 h
+.0256 g 2795 1847 N -17 30 30 11 16 -30 h
+.0256 g 2765 1837 N -16 30 29 10 17 -30 h
+.0257 g 2736 1826 N -17 30 30 11 16 -30 h
+.0257 g 2706 1815 N -16 30 29 11 17 -30 h
+.0257 g 2677 1805 N -17 30 30 10 16 -30 h
+.0257 g 2647 1794 N -16 30 29 11 17 -30 h
+.0257 g 2618 1784 N -17 30 30 10 16 -30 h
+.0258 g 2588 1773 N -16 30 29 11 17 -30 h
+.0248 g 2559 1760 N -17 30 30 12 16 -29 h
+.0229 g 2529 1746 N -16 29 29 12 17 -27 h
+.022 g 2500 1735 N -17 27 30 11 16 -27 h
+.022 g 2470 1725 N -16 27 29 10 17 -27 h
+.022 g 2441 1714 N -17 27 30 11 16 -27 h
+.022 g 2411 1704 N -16 27 29 10 17 -27 h
+.0206 g 2382 1688 N -17 27 30 14 16 -25 h
+.0176 g 2352 1672 N -16 25 29 13 17 -22 h
+.0161 g 2323 1662 N -17 22 30 10 16 -22 h
+0 g 5230 2661 N -17 9 30 10 16 -8 h
+0 g 5200 2650 N -16 8 29 11 17 -8 h
+0 g 5171 2640 N -17 8 30 10 16 -8 h
+0 g 5141 2629 N -16 8 29 11 17 -8 h
+0 g 5112 2619 N -17 8 30 11 16 -9 h
+0 g 5082 2608 N -16 9 29 10 17 -8 h
+0 g 5053 2598 N -17 8 30 11 16 -9 h
+0 g 5023 2587 N -16 9 29 10 17 -8 h
+0 g 4994 2577 N -17 8 30 11 16 -9 h
+0 g 4964 2566 N -16 9 29 10 17 -8 h
+0 g 4935 2555 N -17 8 30 11 16 -8 h
+0 g 4905 2545 N -16 8 29 11 17 -9 h
+.0004 g 4876 2536 N -17 9 30 10 16 -10 h
+.0011 g 4846 2527 N -16 10 29 11 17 -12 h
+.0014 g 4817 2517 N -17 12 30 10 16 -12 h
+.0014 g 4787 2506 N -16 12 29 11 17 -12 h
+.0014 g 4758 2496 N -17 12 30 10 16 -12 h
+.0014 g 4728 2485 N -16 12 29 11 17 -12 h
+.0018 g 4699 2476 N -17 12 30 11 16 -14 h
+.0025 g 4669 2468 N -16 14 29 10 17 -16 h
+.0028 g 4640 2457 N -17 16 30 11 16 -16 h
+.0028 g 4610 2446 N -16 16 29 10 17 -15 h
+.0028 g 4581 2436 N -17 15 30 11 16 -16 h
+.0028 g 4551 2425 N -16 16 29 10 17 -15 h
+.0031 g 4522 2416 N -17 15 30 11 16 -17 h
+.0036 g 4492 2407 N -16 17 29 11 17 -19 h
+.0039 g 4463 2397 N -17 19 30 10 16 -19 h
+.0039 g 4433 2386 N -16 19 29 11 17 -19 h
+.0039 g 4404 2375 N -17 19 30 10 16 -18 h
+.0039 g 4374 2365 N -16 18 29 11 17 -19 h
+.0494 g 4345 2592 N -17 19 30 10 16 -256 h
+.1233 g 4315 2730 N -16 256 29 11 17 -405 h
+.1519 g 4286 2720 N -17 405 30 11 16 -406 h
+.152 g 4256 2709 N -16 406 29 10 17 -405 h
+.152 g 4227 2699 N -17 405 30 11 16 -406 h
+.1521 g 4197 2689 N -16 406 29 10 17 -406 h
+.2247 g 4168 3057 N -17 406 30 11 16 -785 h
+.3342 g 4138 3240 N -16 785 29 10 17 -978 h
+.3711 g 4109 3229 N -17 978 30 11 16 -978 h
+.3712 g 4079 3219 N -16 978 29 11 17 -979 h
+.3714 g 4050 3209 N -17 979 30 10 16 -979 h
+.3715 g 4020 3198 N -16 979 29 11 17 -979 h
+.3731 g 3991 3196 N -17 979 30 10 16 -987 h
+.3762 g 3961 3193 N -16 987 29 11 17 -995 h
+.3778 g 3932 3183 N -17 995 30 10 16 -995 h
+.3779 g 3902 3173 N -16 995 29 11 17 -996 h
+.378 g 3873 3163 N -17 996 30 11 16 -997 h
+.3781 g 3843 3152 N -16 997 29 10 17 -996 h
+.3443 g 3814 2965 N -17 996 30 11 16 -820 h
+.2487 g 3784 2632 N -16 820 29 10 17 -497 h
+.187 g 3755 2621 N -17 497 30 11 16 -497 h
+.1871 g 3725 2611 N -16 497 29 10 17 -497 h
+.1872 g 3696 2601 N -17 497 29 11 17 -498 h
+.1873 g 3667 2590 N -17 498 30 10 16 -497 h
+.1594 g 3637 2434 N -16 497 29 11 17 -352 h
+.0873 g 3608 2193 N -17 352 30 11 16 -122 h
+.0432 g 3578 2182 N -16 122 29 10 17 -121 h
+.0432 g 3549 2172 N -17 121 30 11 16 -122 h
+.0433 g 3519 2161 N -16 122 29 10 17 -121 h
+.0433 g 3490 2151 N -17 121 30 11 16 -122 h
+.037 g 3460 2107 N -16 122 29 10 17 -88 h
+.0237 g 3431 2060 N -17 88 30 11 16 -52 h
+.0168 g 3401 2050 N -16 52 29 11 17 -53 h
+.0168 g 3372 2039 N -17 53 30 10 16 -52 h
+.0168 g 3342 2029 N -16 52 29 11 17 -53 h
+.0169 g 3313 2018 N -17 53 30 10 16 -52 h
+.0149 g 3283 1998 N -16 52 29 11 17 -43 h
+.011 g 3254 1977 N -17 43 30 10 16 -32 h
+.0091 g 3224 1966 N -16 32 29 11 17 -32 h
+.0091 g 3195 1956 N -17 32 30 11 16 -33 h
+.0091 g 3165 1945 N -16 33 29 10 17 -32 h
+.0091 g 3136 1934 N -17 32 30 11 16 -32 h
+.009 g 3106 1923 N -16 32 29 10 17 -31 h
+.0088 g 3077 1912 N -17 31 30 11 16 -31 h
+.0086 g 3047 1902 N -16 31 29 10 17 -31 h
+.0086 g 3018 1891 N -17 31 30 11 16 -31 h
+.0087 g 2988 1880 N -16 31 29 11 17 -31 h
+.0087 g 2959 1870 N -17 31 30 10 16 -31 h
+.0087 g 2929 1859 N -16 31 29 11 17 -31 h
+.0087 g 2900 1849 N -17 31 30 10 16 -31 h
+.0087 g 2870 1838 N -16 31 29 11 17 -31 h
+.0087 g 2841 1828 N -17 31 30 10 16 -31 h
+.0087 g 2811 1817 N -16 31 29 11 17 -31 h
+.0087 g 2782 1807 N -17 31 30 11 16 -32 h
+.0087 g 2752 1796 N -16 32 29 10 17 -31 h
+.0087 g 2723 1785 N -17 31 30 11 16 -31 h
+.0087 g 2693 1775 N -16 31 29 10 17 -31 h
+.0087 g 2664 1764 N -17 31 30 11 16 -31 h
+.0087 g 2634 1754 N -16 31 29 10 17 -31 h
+.0087 g 2605 1743 N -17 31 30 11 16 -31 h
+.0084 g 2575 1731 N -16 31 29 11 17 -30 h
+.0078 g 2546 1719 N -17 30 30 10 16 -28 h
+.0074 g 2516 1708 N -16 28 29 11 17 -28 h
+.0075 g 2487 1698 N -17 28 30 10 16 -28 h
+.0075 g 2457 1687 N -16 28 29 11 17 -28 h
+.0075 g 2428 1677 N -17 28 30 10 16 -28 h
+.007 g 2398 1663 N -16 28 29 11 17 -25 h
+.0059 g 2369 1650 N -17 25 30 11 16 -23 h
+.0054 g 2339 1640 N -16 23 29 10 17 -23 h
+0 g 5246 2653 N -16 8 29 11 17 -9 h
+0 g 5217 2642 N -17 9 30 10 16 -8 h
+0 g 5187 2632 N -16 8 29 11 17 -9 h
+0 g 5158 2621 N -17 9 30 10 16 -8 h
+0 g 5128 2610 N -16 8 29 11 17 -8 h
+0 g 5099 2600 N -17 8 30 11 16 -9 h
+0 g 5069 2589 N -16 9 29 10 17 -8 h
+0 g 5040 2579 N -17 8 30 11 16 -9 h
+0 g 5010 2568 N -16 9 29 10 17 -8 h
+0 g 4981 2558 N -17 8 30 11 16 -9 h
+0 g 4951 2547 N -16 9 29 10 17 -8 h
+0 g 4922 2536 N -17 8 30 11 16 -8 h
+0 g 4892 2526 N -16 8 29 11 17 -9 h
+0 g 4863 2515 N -17 9 30 10 16 -8 h
+0 g 4833 2505 N -16 8 29 11 17 -9 h
+0 g 4804 2494 N -17 9 30 10 16 -8 h
+0 g 4774 2484 N -16 8 29 11 17 -9 h
+0 g 4745 2473 N -17 9 30 10 16 -8 h
+0 g 4715 2462 N -16 8 29 11 17 -8 h
+0 g 4686 2452 N -17 8 30 11 16 -9 h
+0 g 4656 2441 N -16 9 29 10 17 -8 h
+0 g 4627 2431 N -17 8 30 11 16 -9 h
+0 g 4597 2420 N -16 9 29 10 17 -8 h
+0 g 4568 2410 N -17 8 30 11 16 -9 h
+0 g 4538 2399 N -16 9 29 10 17 -8 h
+0 g 4509 2388 N -17 8 30 11 16 -8 h
+0 g 4479 2378 N -16 8 29 11 17 -9 h
+0 g 4450 2367 N -17 9 30 10 16 -8 h
+0 g 4420 2357 N -16 8 29 11 17 -9 h
+0 g 4391 2346 N -17 9 30 10 16 -8 h
+0 g 4361 2336 N -16 8 29 11 17 -9 h
+0 g 4332 2325 N -17 9 30 10 16 -8 h
+0 g 4302 2314 N -16 8 29 11 17 -8 h
+0 g 4273 2304 N -17 8 30 11 16 -9 h
+0 g 4243 2293 N -16 9 29 10 17 -8 h
+0 g 4214 2283 N -17 8 30 11 16 -9 h
+0 g 4184 2272 N -16 9 29 10 17 -8 h
+0 g 4155 2262 N -17 8 30 11 16 -9 h
+0 g 4125 2251 N -16 9 29 10 17 -8 h
+0 g 4096 2240 N -17 8 30 11 16 -8 h
+0 g 4066 2230 N -16 8 29 10 17 -8 h
+0 g 4037 2219 N -17 8 30 11 16 -8 h
+0 g 4007 2209 N -16 8 29 11 17 -9 h
+0 g 3978 2198 N -17 9 30 10 16 -8 h
+0 g 3948 2188 N -16 8 29 11 17 -9 h
+0 g 3919 2177 N -17 9 30 10 16 -8 h
+0 g 3889 2166 N -16 8 29 11 17 -8 h
+0 g 3860 2156 N -17 8 30 10 16 -8 h
+0 g 3830 2145 N -16 8 29 11 17 -8 h
+0 g 3801 2135 N -17 8 30 11 16 -9 h
+0 g 3771 2124 N -16 9 29 10 17 -8 h
+0 g 3742 2114 N -17 8 30 11 16 -9 h
+0 g 3713 2103 N -16 9 29 10 16 -8 h
+0 g 3683 2093 N -16 8 29 11 17 -9 h
+0 g 3654 2082 N -17 9 30 10 16 -8 h
+0 g 3624 2071 N -16 8 29 11 17 -8 h
+0 g 3595 2061 N -17 8 30 11 16 -9 h
+0 g 3565 2050 N -16 9 29 10 17 -8 h
+0 g 3536 2040 N -17 8 30 11 16 -9 h
+0 g 3506 2029 N -16 9 29 10 17 -8 h
+0 g 3477 2019 N -17 8 30 11 16 -9 h
+0 g 3447 2008 N -16 9 29 10 17 -8 h
+0 g 3418 1997 N -17 8 30 11 16 -8 h
+0 g 3388 1987 N -16 8 29 11 17 -9 h
+0 g 3359 1976 N -17 9 30 10 16 -8 h
+0 g 3329 1966 N -16 8 29 11 17 -9 h
+0 g 3300 1955 N -17 9 30 10 16 -8 h
+0 g 3270 1945 N -16 8 29 11 17 -9 h
+0 g 3241 1934 N -17 9 30 10 16 -8 h
+0 g 3211 1923 N -16 8 29 11 17 -8 h
+0 g 3182 1913 N -17 8 30 11 16 -9 h
+0 g 3152 1902 N -16 9 29 10 17 -8 h
+0 g 3123 1892 N -17 8 30 11 16 -9 h
+0 g 3093 1881 N -16 9 29 10 17 -8 h
+0 g 3064 1871 N -17 8 30 11 16 -9 h
+0 g 3034 1860 N -16 9 29 10 17 -8 h
+0 g 3005 1849 N -17 8 30 11 16 -8 h
+0 g 2975 1839 N -16 8 29 11 17 -9 h
+0 g 2946 1828 N -17 9 30 10 16 -8 h
+0 g 2916 1818 N -16 8 29 11 17 -9 h
+0 g 2887 1807 N -17 9 30 10 16 -8 h
+0 g 2857 1797 N -16 8 29 11 17 -9 h
+0 g 2828 1786 N -17 9 30 10 16 -8 h
+0 g 2798 1775 N -16 8 29 11 17 -8 h
+0 g 2769 1765 N -17 8 30 11 16 -9 h
+0 g 2739 1754 N -16 9 29 10 17 -8 h
+0 g 2710 1744 N -17 8 30 11 16 -9 h
+0 g 2680 1733 N -16 9 29 10 17 -8 h
+0 g 2651 1723 N -17 8 30 11 16 -9 h
+0 g 2621 1712 N -16 9 29 10 17 -8 h
+0 g 2592 1701 N -17 8 30 11 16 -8 h
+0 g 2562 1691 N -16 8 29 11 17 -9 h
+0 g 2533 1680 N -17 9 30 10 16 -8 h
+0 g 2503 1670 N -16 8 29 11 17 -9 h
+0 g 2474 1659 N -17 9 30 10 16 -8 h
+0 g 2444 1649 N -16 8 29 11 17 -9 h
+0 g 2415 1638 N -17 9 30 10 16 -8 h
+0 g 2385 1627 N -16 8 29 11 17 -8 h
+0 g 2356 1617 N -17 8 30 10 16 -8 h
+0 g 5263 2644 N -17 9 30 10 16 -8 h
+0 g 5233 2634 N -16 8 29 11 17 -9 h
+0 g 5204 2623 N -17 9 30 10 16 -8 h
+0 g 5174 2613 N -16 8 29 11 17 -9 h
+0 g 5145 2602 N -17 9 30 10 16 -8 h
+0 g 5115 2591 N -16 8 29 11 17 -8 h
+0 g 5086 2581 N -17 8 30 11 16 -9 h
+0 g 5056 2570 N -16 9 29 10 17 -8 h
+0 g 5027 2560 N -17 8 30 11 16 -9 h
+0 g 4997 2549 N -16 9 29 10 17 -8 h
+0 g 4968 2539 N -17 8 30 11 16 -9 h
+0 g 4938 2528 N -16 9 29 10 17 -8 h
+0 g 4909 2517 N -17 8 30 11 16 -8 h
+0 g 4879 2507 N -16 8 29 11 17 -9 h
+0 g 4850 2496 N -17 9 30 10 16 -8 h
+0 g 4820 2486 N -16 8 29 11 17 -9 h
+0 g 4791 2475 N -17 9 30 10 16 -8 h
+0 g 4761 2465 N -16 8 29 11 17 -9 h
+0 g 4732 2454 N -17 9 30 10 16 -8 h
+0 g 4702 2443 N -16 8 29 11 17 -8 h
+0 g 4673 2433 N -17 8 30 11 16 -9 h
+0 g 4643 2422 N -16 9 29 10 17 -8 h
+0 g 4614 2412 N -17 8 30 11 16 -9 h
+0 g 4584 2401 N -16 9 29 10 17 -8 h
+0 g 4555 2391 N -17 8 30 11 16 -9 h
+0 g 4525 2380 N -16 9 29 10 17 -8 h
+0 g 4496 2369 N -17 8 30 11 16 -8 h
+0 g 4466 2359 N -16 8 29 10 17 -8 h
+0 g 4437 2348 N -17 8 30 11 16 -8 h
+0 g 4407 2338 N -16 8 29 11 17 -9 h
+0 g 4378 2327 N -17 9 30 10 16 -8 h
+0 g 4348 2317 N -16 8 29 11 17 -9 h
+0 g 4319 2306 N -17 9 30 10 16 -8 h
+0 g 4289 2295 N -16 8 29 11 17 -8 h
+0 g 4260 2285 N -17 8 30 10 16 -8 h
+0 g 4230 2274 N -16 8 29 11 17 -8 h
+0 g 4201 2264 N -17 8 30 11 16 -9 h
+0 g 4171 2253 N -16 9 29 10 17 -8 h
+0 g 4142 2243 N -17 8 30 11 16 -9 h
+0 g 4112 2232 N -16 9 29 10 17 -8 h
+0 g 4083 2222 N -17 8 30 11 16 -9 h
+0 g 4053 2211 N -16 9 29 10 17 -8 h
+0 g 4024 2200 N -17 8 30 11 16 -8 h
+0 g 3994 2190 N -16 8 29 11 17 -9 h
+0 g 3965 2179 N -17 9 30 10 16 -8 h
+0 g 3935 2169 N -16 8 29 11 17 -9 h
+0 g 3906 2158 N -17 9 30 10 16 -8 h
+0 g 3876 2148 N -16 8 29 11 17 -9 h
+0 g 3847 2137 N -17 9 30 10 16 -8 h
+0 g 3817 2126 N -16 8 29 11 17 -8 h
+0 g 3788 2116 N -17 8 30 11 16 -9 h
+0 g 3758 2105 N -16 9 29 10 17 -8 h
+0 g 3729 2095 N -17 8 29 11 17 -9 h
+0 g 3700 2084 N -17 9 30 10 16 -8 h
+0 g 3670 2074 N -16 8 29 11 17 -9 h
+0 g 3641 2063 N -17 9 30 10 16 -8 h
+0 g 3611 2052 N -16 8 29 11 17 -8 h
+0 g 3582 2042 N -17 8 30 11 16 -9 h
+0 g 3552 2031 N -16 9 29 10 17 -8 h
+0 g 3523 2021 N -17 8 30 11 16 -9 h
+0 g 3493 2010 N -16 9 29 10 17 -8 h
+0 g 3464 2000 N -17 8 30 11 16 -9 h
+0 g 3434 1989 N -16 9 29 10 17 -8 h
+0 g 3405 1978 N -17 8 30 11 16 -8 h
+0 g 3375 1968 N -16 8 29 11 17 -9 h
+0 g 3346 1957 N -17 9 30 10 16 -8 h
+0 g 3316 1947 N -16 8 29 11 17 -9 h
+0 g 3287 1936 N -17 9 30 10 16 -8 h
+0 g 3257 1926 N -16 8 29 11 17 -9 h
+0 g 3228 1915 N -17 9 30 10 16 -8 h
+0 g 3198 1904 N -16 8 29 11 17 -8 h
+0 g 3169 1894 N -17 8 30 11 16 -9 h
+0 g 3139 1883 N -16 9 29 10 17 -8 h
+0 g 3110 1873 N -17 8 30 11 16 -9 h
+0 g 3080 1862 N -16 9 29 10 17 -8 h
+0 g 3051 1852 N -17 8 30 11 16 -9 h
+0 g 3021 1841 N -16 9 29 10 17 -8 h
+0 g 2992 1830 N -17 8 30 11 16 -8 h
+0 g 2962 1820 N -16 8 29 11 17 -9 h
+0 g 2933 1809 N -17 9 30 10 16 -8 h
+0 g 2903 1799 N -16 8 29 11 17 -9 h
+0 g 2874 1788 N -17 9 30 10 16 -8 h
+0 g 2844 1778 N -16 8 29 11 17 -9 h
+0 g 2815 1767 N -17 9 30 10 16 -8 h
+0 g 2785 1756 N -16 8 29 11 17 -8 h
+0 g 2756 1746 N -17 8 30 10 16 -8 h
+0 g 2726 1735 N -16 8 29 11 17 -8 h
+0 g 2697 1725 N -17 8 30 11 16 -9 h
+0 g 2667 1714 N -16 9 29 10 17 -8 h
+0 g 2638 1704 N -17 8 30 11 16 -9 h
+0 g 2608 1693 N -16 9 29 10 17 -8 h
+0 g 2579 1682 N -17 8 30 11 16 -8 h
+0 g 2549 1672 N -16 8 29 10 17 -8 h
+0 g 2520 1661 N -17 8 30 11 16 -8 h
+0 g 2490 1651 N -16 8 29 11 17 -9 h
+0 g 2461 1640 N -17 9 30 10 16 -8 h
+0 g 2431 1630 N -16 8 29 11 17 -9 h
+0 g 2402 1619 N -17 9 30 10 16 -8 h
+0 g 2372 1609 N -16 8 29 11 17 -9 h
+0 g 5279 2636 N -16 8 29 11 17 -9 h
+0 g 5250 2625 N -17 9 30 10 16 -8 h
+0 g 5220 2615 N -16 8 29 11 17 -9 h
+0 g 5191 2604 N -17 9 30 10 16 -8 h
+0 g 5161 2594 N -16 8 29 11 17 -9 h
+0 g 5132 2583 N -17 9 30 10 16 -8 h
+0 g 5102 2572 N -16 8 29 11 17 -8 h
+0 g 5073 2562 N -17 8 30 11 16 -9 h
+0 g 5043 2551 N -16 9 29 10 17 -8 h
+0 g 5014 2541 N -17 8 30 11 16 -9 h
+0 g 4984 2530 N -16 9 29 10 17 -8 h
+0 g 4955 2520 N -17 8 30 11 16 -9 h
+.0002 g 4925 2509 N -16 9 29 9 17 -7 h
+.0007 g 4896 2498 N -17 7 30 9 16 -5 h
+.0009 g 4866 2488 N -16 5 29 11 17 -6 h
+.0009 g 4837 2477 N -17 6 30 11 16 -6 h
+.0009 g 4807 2467 N -16 6 29 10 17 -6 h
+.0009 g 4778 2456 N -17 6 30 11 16 -6 h
+.0012 g 4748 2446 N -16 6 29 9 17 -5 h
+.0016 g 4719 2435 N -17 5 30 9 16 -3 h
+.0019 g 4689 2424 N -16 3 29 11 17 -3 h
+.0019 g 4660 2414 N -17 3 30 11 16 -4 h
+.0019 g 4630 2403 N -16 4 29 10 17 -3 h
+.0019 g 4601 2393 N -17 3 30 11 16 -4 h
+.0021 g 4571 2382 N -16 4 29 9 17 -2 h
+.0024 g 4542 2372 N -17 2 30 10 16 -2 h
+.0026 g 4512 2361 N -16 2 29 10 17 -1 h
+.0026 g 4483 2351 N -17 1 30 11 16 -2 h
+.0026 g 4453 2340 N -16 2 29 11 17 -2 h
+.0026 g 4424 2329 N -17 2 30 10 16 -1 h
+.0359 g 4394 2319 N -16 1 29 -163 17 172 h
+.0924 g 4365 2308 N -17 -172 30 -111 16 294 h
+.1157 g 4335 2298 N -16 -294 29 10 17 294 h
+.1157 g 4306 2287 N -17 -294 30 11 16 294 h
+.1158 g 4276 2277 N -16 -294 29 10 17 294 h
+.1159 g 4247 2266 N -17 -294 30 11 16 294 h
+.1807 g 4217 2255 N -16 -294 29 -328 17 633 h
+.2802 g 4188 2245 N -17 -633 30 -172 16 815 h
+.3151 g 4158 2234 N -16 -815 29 11 17 815 h
+.3152 g 4129 2224 N -17 -815 30 10 16 815 h
+.3154 g 4099 2213 N -16 -815 29 10 17 816 h
+.3155 g 4070 2203 N -17 -816 30 10 16 816 h
+.317 g 4040 2192 N -16 -816 29 3 17 824 h
+.32 g 4011 2181 N -17 -824 30 3 16 832 h
+.3215 g 3981 2171 N -16 -832 29 10 17 832 h
+.3216 g 3952 2160 N -17 -832 30 11 16 832 h
+.3217 g 3922 2150 N -16 -832 29 10 17 832 h
+.3218 g 3893 2139 N -17 -832 30 10 16 833 h
+.2898 g 3863 2129 N -16 -833 29 179 17 664 h
+.2017 g 3834 2118 N -17 -664 30 303 16 372 h
+.1457 g 3804 2107 N -16 -372 29 10 17 373 h
+.1458 g 3775 2097 N -17 -373 30 11 16 372 h
+.1459 g 3746 2086 N -16 -372 29 10 16 373 h
+.146 g 3716 2076 N -16 -373 29 10 17 373 h
+.1223 g 3687 2065 N -17 -373 30 134 16 250 h
+.0644 g 3657 2055 N -16 -250 29 190 17 70 h
+.0301 g 3628 2044 N -17 -70 30 11 16 70 h
+.0301 g 3598 2033 N -16 -70 29 10 17 71 h
+.0301 g 3569 2023 N -17 -71 30 11 16 70 h
+.0302 g 3539 2012 N -16 -70 29 10 17 71 h
+.0256 g 3510 2002 N -17 -71 30 35 16 46 h
+.0162 g 3480 1991 N -16 -46 29 35 17 22 h
+.0114 g 3451 1981 N -17 -22 30 11 16 21 h
+.0114 g 3421 1970 N -16 -21 29 11 17 21 h
+.0114 g 3392 1959 N -17 -21 30 10 16 22 h
+.0114 g 3362 1949 N -16 -22 29 11 17 21 h
+.0101 g 3333 1938 N -17 -21 30 17 16 15 h
+.0075 g 3303 1928 N -16 -15 29 18 17 7 h
+.0061 g 3274 1917 N -17 -7 30 10 16 8 h
+.0061 g 3244 1907 N -16 -8 29 11 17 7 h
+.0061 g 3215 1896 N -17 -7 30 10 16 8 h
+.0061 g 3185 1885 N -16 -8 29 11 17 8 h
+.006 g 3156 1875 N -17 -8 30 11 16 7 h
+.0059 g 3126 1864 N -16 -7 29 11 17 7 h
+.0058 g 3097 1854 N -17 -7 30 10 16 7 h
+.0058 g 3067 1843 N -16 -7 29 11 17 7 h
+.0058 g 3038 1833 N -17 -7 30 11 16 6 h
+.0058 g 3008 1822 N -16 -6 29 10 17 7 h
+.0058 g 2979 1811 N -17 -7 30 11 16 7 h
+.0058 g 2949 1801 N -16 -7 29 10 17 7 h
+.0058 g 2920 1790 N -17 -7 30 11 16 7 h
+.0058 g 2890 1780 N -16 -7 29 10 17 7 h
+.0058 g 2861 1769 N -17 -7 30 11 16 7 h
+.0059 g 2831 1759 N -16 -7 29 10 17 7 h
+.0059 g 2802 1748 N -17 -7 30 11 16 7 h
+.0059 g 2772 1738 N -16 -7 29 11 17 6 h
+.0059 g 2743 1727 N -17 -6 30 10 16 7 h
+.0059 g 2713 1716 N -16 -7 29 11 17 7 h
+.0059 g 2684 1706 N -17 -7 30 10 16 7 h
+.0059 g 2654 1695 N -16 -7 29 11 17 7 h
+.0057 g 2625 1685 N -17 -7 30 12 16 5 h
+.0052 g 2595 1674 N -16 -5 29 11 17 5 h
+.005 g 2566 1664 N -17 -5 30 11 16 4 h
+.005 g 2536 1653 N -16 -4 29 10 17 5 h
+.005 g 2507 1642 N -17 -5 30 11 16 5 h
+.005 g 2477 1632 N -16 -5 29 10 17 5 h
+.0047 g 2448 1621 N -17 -5 30 13 16 3 h
+.004 g 2418 1611 N -16 -3 29 12 17 1 h
+.0036 g 2389 1600 N -17 -1 30 11 16 1 h
+0 g 5296 2627 N -17 8 30 11 16 -8 h
+0 g 5266 2617 N -16 8 29 10 17 -8 h
+0 g 5237 2606 N -17 8 30 11 16 -8 h
+0 g 5207 2596 N -16 8 29 11 17 -9 h
+0 g 5178 2585 N -17 9 30 10 16 -8 h
+0 g 5148 2575 N -16 8 29 11 17 -9 h
+0 g 5119 2564 N -17 9 30 10 16 -8 h
+0 g 5089 2553 N -16 8 29 11 17 -8 h
+0 g 5060 2543 N -17 8 30 10 16 -8 h
+0 g 5030 2532 N -16 8 29 11 17 -8 h
+0 g 5001 2522 N -17 8 30 11 16 -9 h
+0 g 4971 2511 N -16 9 29 10 17 -8 h
+.0009 g 4942 2502 N -17 8 30 7 16 -6 h
+.0028 g 4912 2493 N -16 6 29 7 17 -4 h
+.0037 g 4883 2482 N -17 4 30 11 16 -4 h
+.0037 g 4853 2471 N -16 4 29 10 17 -3 h
+.0038 g 4824 2461 N -17 3 30 11 16 -4 h
+.0038 g 4794 2450 N -16 4 29 10 17 -3 h
+.0047 g 4765 2441 N -17 3 30 7 16 -1 h
+.0065 g 4735 2432 N -16 1 29 7 17 1 h
+.0075 g 4706 2421 N -17 -1 30 11 16 1 h
+.0075 g 4676 2410 N -16 -1 29 10 17 2 h
+.0075 g 4647 2400 N -17 -2 30 11 16 1 h
+.0075 g 4617 2389 N -16 -1 29 10 17 2 h
+.0082 g 4588 2380 N -17 -2 30 8 16 3 h
+.0096 g 4558 2370 N -16 -3 29 8 17 5 h
+.0104 g 4529 2360 N -17 -5 30 10 16 5 h
+.0104 g 4499 2349 N -16 -5 29 11 17 5 h
+.0104 g 4470 2338 N -17 -5 30 11 16 5 h
+.0104 g 4440 2328 N -16 -5 29 10 17 5 h
+.1164 g 4411 2491 N -17 -5 30 -369 16 211 h
+.2826 g 4381 2602 N -16 -211 29 -183 17 283 h
+.3428 g 4352 2592 N -17 -283 30 11 16 282 h
+.343 g 4322 2581 N -16 -282 29 10 17 283 h
+.3431 g 4293 2571 N -17 -283 30 10 16 283 h
+.3433 g 4263 2560 N -16 -283 29 11 17 283 h
+.4909 g 4234 2888 N -17 -283 30 -422 16 377 h
+.7124 g 4204 3060 N -16 -377 29 -194 17 399 h
+.7865 g 4175 3049 N -17 -399 30 10 16 400 h
+.7867 g 4145 3039 N -16 -400 29 10 17 400 h
+.787 g 4116 3029 N -17 -400 30 10 16 400 h
+.7872 g 4086 3019 N -16 -400 29 11 17 399 h
+.7904 g 4057 3016 N -17 -399 30 2 16 400 h
+.7966 g 4027 3013 N -16 -400 29 2 17 401 h
+.7998 g 3998 3003 N -17 -401 30 10 16 401 h
+.8001 g 3968 2992 N -16 -401 29 10 17 402 h
+.8003 g 3939 2982 N -17 -402 30 11 16 401 h
+.8005 g 3909 2972 N -16 -401 29 10 17 401 h
+.7327 g 3880 2793 N -17 -401 30 198 16 382 h
+.5398 g 3850 2490 N -16 -382 29 370 17 315 h
+.4151 g 3821 2480 N -17 -315 30 11 16 314 h
+.4152 g 3791 2469 N -16 -314 29 10 17 315 h
+.4154 g 3762 2459 N -17 -315 30 10 16 315 h
+.4156 g 3733 2449 N -16 -315 29 10 16 315 h
+.358 g 3703 2315 N -16 -315 29 189 17 260 h
+.2036 g 3674 2125 N -17 -260 30 336 16 114 h
+.107 g 3644 2114 N -16 -114 29 11 17 114 h
+.1071 g 3615 2104 N -17 -114 30 10 16 114 h
+.1072 g 3585 2093 N -16 -114 29 11 17 114 h
+.1073 g 3556 2083 N -17 -114 30 10 16 114 h
+.0923 g 3526 2048 N -16 -114 29 65 17 84 h
+.0603 g 3497 2013 N -17 -84 30 74 16 45 h
+.0434 g 3467 2002 N -16 -45 29 11 17 45 h
+.0434 g 3438 1991 N -17 -45 30 10 16 46 h
+.0435 g 3408 1981 N -16 -46 29 11 17 45 h
+.0435 g 3379 1970 N -17 -45 30 10 16 46 h
+.0387 g 3349 1953 N -16 -46 29 29 17 34 h
+.0288 g 3320 1935 N -17 -34 30 30 16 22 h
+.0238 g 3290 1925 N -16 -22 29 10 17 22 h
+.0238 g 3261 1914 N -17 -22 30 11 16 22 h
+.0238 g 3231 1904 N -16 -22 29 11 17 21 h
+.0238 g 3202 1893 N -17 -21 30 10 16 22 h
+.0235 g 3172 1882 N -16 -22 29 12 17 21 h
+.0229 g 3143 1871 N -17 -21 30 12 16 20 h
+.0226 g 3113 1861 N -16 -20 29 10 17 20 h
+.0227 g 3084 1850 N -17 -20 30 11 16 20 h
+.0227 g 3054 1839 N -16 -20 29 10 17 21 h
+.0227 g 3025 1829 N -17 -21 30 11 16 20 h
+.0227 g 2995 1818 N -16 -20 29 10 17 21 h
+.0227 g 2966 1808 N -17 -21 30 11 16 20 h
+.0227 g 2936 1797 N -16 -20 29 10 17 21 h
+.0228 g 2907 1787 N -17 -21 30 11 16 20 h
+.0228 g 2877 1776 N -16 -20 29 10 17 21 h
+.0228 g 2848 1766 N -17 -21 30 11 16 20 h
+.0228 g 2818 1755 N -16 -20 29 10 17 21 h
+.0228 g 2789 1744 N -17 -21 30 11 16 21 h
+.0229 g 2759 1734 N -16 -21 29 10 17 21 h
+.0229 g 2730 1723 N -17 -21 30 11 16 21 h
+.0229 g 2700 1713 N -16 -21 29 11 17 20 h
+.0229 g 2671 1702 N -17 -20 30 10 16 21 h
+.0221 g 2641 1690 N -16 -21 29 14 17 19 h
+.0204 g 2612 1679 N -17 -19 30 14 16 16 h
+.0196 g 2582 1668 N -16 -16 29 10 17 17 h
+.0196 g 2553 1658 N -17 -17 30 11 16 16 h
+.0196 g 2523 1647 N -16 -16 29 10 17 17 h
+.0196 g 2494 1637 N -17 -17 30 11 16 16 h
+.0183 g 2464 1624 N -16 -16 29 15 17 14 h
+.0157 g 2435 1612 N -17 -14 30 16 16 10 h
+.0143 g 2405 1601 N -16 -10 29 11 17 10 h
+0 g 5312 2619 N -16 9 29 10 17 -8 h
+0 g 5283 2609 N -17 8 30 11 16 -9 h
+0 g 5253 2598 N -16 9 29 10 17 -8 h
+0 g 5224 2587 N -17 8 30 11 16 -8 h
+0 g 5194 2577 N -16 8 29 11 17 -9 h
+0 g 5165 2566 N -17 9 30 10 16 -8 h
+0 g 5135 2556 N -16 8 29 11 17 -9 h
+0 g 5106 2545 N -17 9 30 10 16 -8 h
+0 g 5076 2535 N -16 8 29 11 17 -9 h
+0 g 5047 2524 N -17 9 30 10 16 -8 h
+0 g 5017 2513 N -16 8 29 11 17 -8 h
+0 g 4988 2503 N -17 8 30 11 16 -9 h
+.0014 g 4958 2496 N -16 9 29 6 17 -8 h
+.0042 g 4929 2489 N -17 8 30 7 16 -8 h
+.0056 g 4899 2478 N -16 8 29 11 17 -8 h
+.0056 g 4870 2468 N -17 8 30 11 16 -9 h
+.0056 g 4840 2457 N -16 9 29 10 17 -8 h
+.0056 g 4811 2447 N -17 8 30 11 16 -9 h
+.007 g 4781 2440 N -16 9 29 7 17 -9 h
+.0098 g 4752 2433 N -17 9 30 7 16 -9 h
+.0112 g 4722 2422 N -16 9 29 10 17 -8 h
+.0112 g 4693 2412 N -17 8 30 11 16 -9 h
+.0112 g 4663 2401 N -16 9 29 10 17 -8 h
+.0112 g 4634 2391 N -17 8 30 11 16 -9 h
+.0123 g 4604 2383 N -16 9 29 8 17 -9 h
+.0144 g 4575 2375 N -17 9 30 7 16 -8 h
+.0155 g 4545 2365 N -16 8 29 11 17 -9 h
+.0155 g 4516 2354 N -17 9 30 10 16 -8 h
+.0155 g 4486 2343 N -16 8 29 11 17 -8 h
+.0155 g 4457 2333 N -17 8 30 11 16 -9 h
+.161 g 4427 2702 N -16 9 29 -370 17 -8 h
+.3803 g 4398 2885 N -17 8 30 -182 16 -9 h
+.4542 g 4368 2874 N -16 9 29 10 17 -8 h
+.4544 g 4339 2864 N -17 8 30 10 16 -8 h
+.4546 g 4309 2854 N -16 8 29 11 17 -9 h
+.4548 g 4280 2843 N -17 9 30 10 16 -8 h
+.6204 g 4250 3265 N -16 8 29 -422 17 -8 h
+.8643 g 4221 3459 N -17 8 30 -194 16 -8 h
+.9428 g 4191 3449 N -16 8 29 10 17 -8 h
+.943 g 4162 3439 N -17 8 30 10 16 -8 h
+.9432 g 4132 3429 N -16 8 29 11 17 -9 h
+.9435 g 4103 3418 N -17 9 30 10 16 -8 h
+.9469 g 4073 3416 N -16 8 29 2 17 -8 h
+.9533 g 4044 3414 N -17 8 30 2 16 -8 h
+.9567 g 4014 3404 N -16 8 29 10 17 -8 h
+.9569 g 3985 3394 N -17 8 30 11 16 -9 h
+.9571 g 3955 3383 N -16 9 29 10 17 -8 h
+.9574 g 3926 3373 N -17 8 30 10 16 -8 h
+.8858 g 3896 3175 N -16 8 29 198 17 -8 h
+.6763 g 3867 2805 N -17 8 30 371 16 -9 h
+.5387 g 3837 2794 N -16 9 29 10 17 -8 h
+.5389 g 3808 2784 N -17 8 30 10 16 -8 h
+.5391 g 3778 2774 N -16 8 29 11 17 -9 h
+.5393 g 3749 2764 N -17 9 29 10 17 -9 h
+.4713 g 3720 2575 N -17 9 30 188 16 -8 h
+.2785 g 3690 2239 N -16 8 29 337 17 -9 h
+.1539 g 3661 2228 N -17 9 30 10 16 -8 h
+.154 g 3631 2218 N -16 8 29 11 17 -9 h
+.1541 g 3602 2207 N -17 9 30 10 16 -8 h
+.1542 g 3572 2197 N -16 8 29 10 17 -8 h
+.1333 g 3543 2132 N -17 8 30 66 16 -9 h
+.0882 g 3513 2058 N -16 9 29 73 17 -8 h
+.064 g 3484 2047 N -17 8 30 11 16 -8 h
+.064 g 3454 2037 N -16 8 29 11 17 -9 h
+.0641 g 3425 2026 N -17 9 30 10 16 -8 h
+.0641 g 3395 2016 N -16 8 29 11 17 -9 h
+.0571 g 3366 1987 N -17 9 30 28 16 -8 h
+.0427 g 3336 1957 N -16 8 29 30 17 -8 h
+.0353 g 3307 1947 N -17 8 30 11 16 -9 h
+.0353 g 3277 1936 N -16 9 29 10 17 -8 h
+.0354 g 3248 1925 N -17 8 30 11 16 -8 h
+.0354 g 3218 1915 N -16 8 29 10 17 -8 h
+.035 g 3189 1903 N -17 8 30 12 16 -8 h
+.0341 g 3159 1891 N -16 8 29 12 17 -8 h
+.0336 g 3130 1881 N -17 8 30 10 16 -8 h
+.0337 g 3100 1870 N -16 8 29 11 17 -8 h
+.0337 g 3071 1860 N -17 8 30 11 16 -9 h
+.0337 g 3041 1849 N -16 9 29 10 17 -8 h
+.0338 g 3012 1839 N -17 8 30 11 16 -9 h
+.0338 g 2982 1828 N -16 9 29 10 17 -8 h
+.0338 g 2953 1818 N -17 8 30 11 16 -9 h
+.0338 g 2923 1807 N -16 9 29 10 17 -8 h
+.0339 g 2894 1797 N -17 8 30 11 16 -9 h
+.0339 g 2864 1786 N -16 9 29 10 17 -8 h
+.0339 g 2835 1776 N -17 8 30 11 16 -9 h
+.0339 g 2805 1765 N -16 9 29 10 17 -8 h
+.034 g 2776 1755 N -17 8 30 11 16 -9 h
+.034 g 2746 1744 N -16 9 29 10 17 -8 h
+.034 g 2717 1733 N -17 8 30 11 16 -8 h
+.034 g 2687 1723 N -16 8 29 10 17 -8 h
+.0328 g 2658 1709 N -17 8 30 14 16 -8 h
+.0303 g 2628 1695 N -16 8 29 14 17 -8 h
+.0291 g 2599 1685 N -17 8 30 11 16 -9 h
+.0291 g 2569 1674 N -16 9 29 10 17 -8 h
+.0291 g 2540 1664 N -17 8 30 11 16 -9 h
+.0292 g 2510 1653 N -16 9 29 10 17 -8 h
+.0272 g 2481 1638 N -17 8 30 16 16 -9 h
+.0233 g 2451 1622 N -16 9 29 16 17 -9 h
+.0214 g 2422 1611 N -17 9 30 10 16 -8 h
+0 g 5329 2611 N -17 8 30 11 16 -9 h
+0 g 5299 2600 N -16 9 29 10 17 -8 h
+0 g 5270 2590 N -17 8 30 11 16 -9 h
+0 g 5240 2579 N -16 9 29 10 17 -8 h
+0 g 5211 2568 N -17 8 30 11 16 -8 h
+0 g 5181 2558 N -16 8 29 11 17 -9 h
+0 g 5152 2547 N -17 9 30 10 16 -8 h
+0 g 5122 2537 N -16 8 29 11 17 -9 h
+0 g 5093 2526 N -17 9 30 10 16 -8 h
+0 g 5063 2516 N -16 8 29 11 17 -9 h
+0 g 5034 2505 N -17 9 30 10 16 -8 h
+0 g 5004 2494 N -16 8 29 11 17 -8 h
+.0014 g 4975 2488 N -17 8 30 7 16 -9 h
+.0042 g 4945 2481 N -16 9 29 7 17 -9 h
+.0056 g 4916 2470 N -17 9 30 10 16 -8 h
+.0056 g 4886 2459 N -16 8 29 11 17 -8 h
+.0056 g 4857 2449 N -17 8 30 10 16 -8 h
+.0056 g 4827 2438 N -16 8 29 11 17 -8 h
+.007 g 4798 2431 N -17 8 30 7 16 -8 h
+.0098 g 4768 2424 N -16 8 29 7 17 -8 h
+.0112 g 4739 2414 N -17 8 30 11 16 -9 h
+.0112 g 4709 2403 N -16 9 29 10 17 -8 h
+.0112 g 4680 2393 N -17 8 30 11 16 -9 h
+.0112 g 4650 2382 N -16 9 29 10 17 -8 h
+.0123 g 4621 2374 N -17 8 30 8 16 -8 h
+.0144 g 4591 2367 N -16 8 29 8 17 -9 h
+.0155 g 4562 2356 N -17 9 30 10 16 -8 h
+.0155 g 4532 2346 N -16 8 29 11 17 -9 h
+.0155 g 4503 2335 N -17 9 30 10 16 -8 h
+.0155 g 4473 2324 N -16 8 29 11 17 -8 h
+.161 g 4444 2694 N -17 8 30 -370 16 -8 h
+.3803 g 4414 2876 N -16 8 29 -182 17 -8 h
+.4542 g 4385 2866 N -17 8 30 10 16 -8 h
+.4544 g 4355 2856 N -16 8 29 11 17 -9 h
+.4546 g 4326 2845 N -17 9 30 10 16 -8 h
+.4548 g 4296 2835 N -16 8 29 10 17 -8 h
+.6204 g 4267 3257 N -17 8 30 -422 16 -8 h
+.8643 g 4237 3451 N -16 8 29 -194 17 -8 h
+.9428 g 4208 3441 N -17 8 30 11 16 -9 h
+.943 g 4178 3431 N -16 9 29 10 17 -9 h
+.9432 g 4149 3420 N -17 9 30 10 16 -8 h
+.9435 g 4119 3410 N -16 8 29 10 17 -8 h
+.9469 g 4090 3408 N -17 8 30 2 16 -8 h
+.9533 g 4060 3406 N -16 8 29 3 17 -9 h
+.9567 g 4031 3396 N -17 9 30 10 16 -9 h
+.9569 g 4001 3385 N -16 9 29 10 17 -8 h
+.9571 g 3972 3375 N -17 8 30 10 16 -8 h
+.9574 g 3942 3365 N -16 8 29 11 17 -9 h
+.8858 g 3913 3167 N -17 9 30 198 16 -9 h
+.6763 g 3883 2796 N -16 9 29 370 17 -8 h
+.5387 g 3854 2786 N -17 8 30 10 16 -8 h
+.5389 g 3824 2776 N -16 8 29 11 17 -9 h
+.5391 g 3795 2765 N -17 9 30 10 16 -8 h
+.5393 g 3766 2755 N -16 8 29 10 16 -8 h
+.4713 g 3736 2567 N -16 8 29 189 17 -9 h
+.2785 g 3707 2230 N -17 9 30 336 16 -8 h
+.1539 g 3677 2220 N -16 8 29 10 17 -8 h
+.154 g 3648 2209 N -17 8 30 11 16 -8 h
+.1541 g 3618 2199 N -16 8 29 10 17 -8 h
+.1542 g 3589 2189 N -17 8 30 11 16 -9 h
+.1333 g 3559 2123 N -16 9 29 65 17 -8 h
+.0882 g 3530 2050 N -17 8 30 74 16 -9 h
+.064 g 3500 2039 N -16 9 29 10 17 -8 h
+.064 g 3471 2028 N -17 8 30 11 16 -8 h
+.0641 g 3441 2018 N -16 8 29 10 17 -8 h
+.0641 g 3412 2007 N -17 8 30 11 16 -8 h
+.0571 g 3382 1979 N -16 8 29 29 17 -9 h
+.0427 g 3353 1949 N -17 9 30 30 16 -9 h
+.0353 g 3323 1938 N -16 9 29 10 17 -8 h
+.0353 g 3294 1928 N -17 8 30 11 16 -9 h
+.0354 g 3264 1917 N -16 9 29 10 17 -8 h
+.0354 g 3235 1907 N -17 8 30 11 16 -9 h
+.035 g 3205 1895 N -16 9 29 12 17 -9 h
+.0341 g 3176 1883 N -17 9 30 11 16 -8 h
+.0336 g 3146 1873 N -16 8 29 11 17 -9 h
+.0337 g 3117 1862 N -17 9 30 10 16 -8 h
+.0337 g 3087 1851 N -16 8 29 11 17 -8 h
+.0337 g 3058 1841 N -17 8 30 10 16 -8 h
+.0338 g 3028 1830 N -16 8 29 11 17 -8 h
+.0338 g 2999 1820 N -17 8 30 11 16 -9 h
+.0338 g 2969 1809 N -16 9 29 10 17 -8 h
+.0338 g 2940 1799 N -17 8 30 11 16 -9 h
+.0339 g 2910 1788 N -16 9 29 10 17 -8 h
+.0339 g 2881 1778 N -17 8 30 11 16 -9 h
+.0339 g 2851 1767 N -16 9 29 10 17 -8 h
+.0339 g 2822 1757 N -17 8 30 11 16 -9 h
+.034 g 2792 1746 N -16 9 29 10 17 -8 h
+.034 g 2763 1736 N -17 8 30 11 16 -9 h
+.034 g 2733 1725 N -16 9 29 10 17 -8 h
+.034 g 2704 1715 N -17 8 30 11 16 -9 h
+.0328 g 2674 1701 N -16 9 29 14 17 -9 h
+.0303 g 2645 1687 N -17 9 30 14 16 -9 h
+.0291 g 2615 1676 N -16 9 29 10 17 -8 h
+.0291 g 2586 1666 N -17 8 30 11 16 -9 h
+.0291 g 2556 1655 N -16 9 29 10 17 -8 h
+.0292 g 2527 1645 N -17 8 30 11 16 -9 h
+.0272 g 2497 1629 N -16 9 29 15 17 -8 h
+.0233 g 2468 1613 N -17 8 30 16 16 -8 h
+.0214 g 2438 1603 N -16 8 29 11 17 -9 h
+0 g 5345 2602 N -16 9 29 10 17 -8 h
+0 g 5316 2592 N -17 8 30 11 16 -9 h
+0 g 5286 2581 N -16 9 29 10 17 -8 h
+0 g 5257 2571 N -17 8 30 11 16 -9 h
+0 g 5227 2560 N -16 9 29 10 17 -8 h
+0 g 5198 2549 N -17 8 30 11 16 -8 h
+0 g 5168 2539 N -16 8 29 11 17 -9 h
+0 g 5139 2528 N -17 9 30 10 16 -8 h
+0 g 5109 2518 N -16 8 29 11 17 -9 h
+0 g 5080 2507 N -17 9 30 10 16 -8 h
+0 g 5050 2497 N -16 8 29 11 17 -9 h
+0 g 5021 2486 N -17 9 30 10 16 -8 h
+.0013 g 4991 2479 N -16 8 29 8 17 -9 h
+.0039 g 4962 2472 N -17 9 30 7 16 -9 h
+.0051 g 4932 2462 N -16 9 29 11 17 -10 h
+.0051 g 4903 2451 N -17 10 30 11 16 -10 h
+.0052 g 4873 2441 N -16 10 29 10 17 -10 h
+.0052 g 4844 2430 N -17 10 30 11 16 -10 h
+.0064 g 4814 2423 N -16 10 29 7 17 -10 h
+.009 g 4785 2416 N -17 10 30 8 16 -11 h
+.0103 g 4755 2405 N -16 11 29 10 17 -10 h
+.0103 g 4726 2395 N -17 10 30 11 16 -11 h
+.0103 g 4696 2384 N -16 11 29 10 17 -10 h
+.0103 g 4667 2374 N -17 10 30 11 16 -11 h
+.0113 g 4637 2366 N -16 11 29 8 17 -11 h
+.0132 g 4608 2358 N -17 11 30 8 16 -11 h
+.0142 g 4578 2348 N -16 11 29 11 17 -12 h
+.0142 g 4549 2337 N -17 12 30 11 16 -12 h
+.0142 g 4519 2327 N -16 12 29 10 17 -12 h
+.0143 g 4490 2316 N -17 12 30 11 16 -12 h
+.1518 g 4460 2686 N -16 12 29 -328 17 -54 h
+.3611 g 4431 2868 N -17 54 30 -172 16 -64 h
+.433 g 4401 2858 N -16 64 29 10 17 -64 h
+.4332 g 4372 2847 N -17 64 30 11 16 -64 h
+.4334 g 4342 2837 N -16 64 29 10 17 -64 h
+.4336 g 4313 2827 N -17 64 30 10 16 -64 h
+.5969 g 4283 3249 N -16 64 29 -410 17 -76 h
+.838 g 4254 3443 N -17 76 30 -191 16 -79 h
+.916 g 4224 3432 N -16 79 29 10 17 -78 h
+.9162 g 4195 3422 N -17 78 30 10 16 -78 h
+.9164 g 4165 3412 N -16 78 29 11 17 -79 h
+.9167 g 4136 3402 N -17 79 30 10 16 -79 h
+.92 g 4106 3400 N -16 79 29 2 17 -79 h
+.9265 g 4077 3397 N -17 79 30 2 16 -78 h
+.9298 g 4047 3387 N -16 78 29 10 17 -78 h
+.93 g 4018 3377 N -17 78 30 11 16 -79 h
+.9303 g 3988 3367 N -16 79 29 10 17 -79 h
+.9305 g 3959 3356 N -17 79 30 10 16 -78 h
+.8594 g 3929 3158 N -16 78 29 196 17 -76 h
+.6519 g 3900 2788 N -17 76 30 362 16 -68 h
+.5158 g 3870 2778 N -16 68 29 11 17 -69 h
+.516 g 3841 2767 N -17 69 30 10 16 -68 h
+.5162 g 3811 2757 N -16 68 29 10 17 -68 h
+.5164 g 3782 2747 N -17 68 30 11 16 -69 h
+.4498 g 3753 2558 N -16 69 29 181 16 -61 h
+.2633 g 3723 2222 N -16 61 29 311 17 -36 h
+.1435 g 3694 2212 N -17 36 30 10 16 -36 h
+.1436 g 3664 2201 N -16 36 29 11 17 -36 h
+.1436 g 3635 2191 N -17 36 30 10 16 -36 h
+.1437 g 3605 2180 N -16 36 29 11 17 -36 h
+.1241 g 3576 2115 N -17 36 30 58 16 -29 h
+.0817 g 3546 2041 N -16 29 29 66 17 -21 h
+.0591 g 3517 2031 N -17 21 30 11 16 -22 h
+.0591 g 3487 2020 N -16 22 29 10 17 -21 h
+.0592 g 3458 2010 N -17 21 30 11 16 -22 h
+.0592 g 3428 1999 N -16 22 29 10 17 -21 h
+.0527 g 3399 1970 N -17 21 30 26 16 -18 h
+.0393 g 3369 1940 N -16 18 29 27 17 -15 h
+.0325 g 3340 1930 N -17 15 30 11 16 -16 h
+.0325 g 3310 1919 N -16 16 29 11 17 -16 h
+.0326 g 3281 1909 N -17 16 30 10 16 -16 h
+.0326 g 3251 1898 N -16 16 29 11 17 -16 h
+.0322 g 3222 1886 N -17 16 30 11 16 -15 h
+.0314 g 3192 1875 N -16 15 29 12 17 -16 h
+.031 g 3163 1864 N -17 16 30 10 16 -15 h
+.031 g 3133 1854 N -16 15 29 11 17 -16 h
+.031 g 3104 1843 N -17 16 30 10 16 -15 h
+.031 g 3074 1833 N -16 15 29 11 17 -16 h
+.0311 g 3045 1822 N -17 16 30 10 16 -15 h
+.0311 g 3015 1811 N -16 15 29 11 17 -15 h
+.0311 g 2986 1801 N -17 15 30 10 16 -15 h
+.0311 g 2956 1790 N -16 15 29 11 17 -15 h
+.0312 g 2927 1780 N -17 15 30 11 16 -16 h
+.0312 g 2897 1769 N -16 16 29 10 17 -15 h
+.0312 g 2868 1759 N -17 15 30 11 16 -16 h
+.0312 g 2838 1748 N -16 16 29 10 17 -15 h
+.0313 g 2809 1738 N -17 15 30 11 16 -16 h
+.0313 g 2779 1727 N -16 16 29 10 17 -15 h
+.0313 g 2750 1717 N -17 15 30 11 16 -16 h
+.0313 g 2720 1706 N -16 16 29 10 17 -15 h
+.0302 g 2691 1692 N -17 15 30 14 16 -15 h
+.0279 g 2661 1678 N -16 15 29 13 17 -14 h
+.0268 g 2632 1668 N -17 14 30 11 16 -15 h
+.0268 g 2602 1657 N -16 15 29 10 17 -14 h
+.0268 g 2573 1647 N -17 14 30 11 16 -15 h
+.0268 g 2543 1636 N -16 15 29 10 17 -14 h
+.0251 g 2514 1621 N -17 14 30 15 16 -14 h
+.0215 g 2484 1605 N -16 14 29 15 17 -13 h
+.0196 g 2455 1594 N -17 13 30 10 16 -12 h
+0 g 5362 2594 N -17 8 30 11 16 -9 h
+0 g 5332 2583 N -16 9 29 10 17 -8 h
+0 g 5303 2573 N -17 8 30 11 16 -9 h
+0 g 5273 2562 N -16 9 29 10 17 -8 h
+0 g 5244 2552 N -17 8 30 11 16 -9 h
+0 g 5214 2541 N -16 9 29 10 17 -8 h
+0 g 5185 2530 N -17 8 30 11 16 -8 h
+0 g 5155 2520 N -16 8 29 10 17 -8 h
+0 g 5126 2509 N -17 8 30 11 16 -8 h
+0 g 5096 2499 N -16 8 29 11 17 -9 h
+0 g 5067 2488 N -17 9 30 10 16 -8 h
+0 g 5037 2478 N -16 8 29 11 17 -9 h
+.0006 g 5008 2470 N -17 9 30 10 16 -11 h
+.0018 g 4978 2463 N -16 11 29 11 17 -15 h
+.0023 g 4949 2452 N -17 15 30 10 16 -14 h
+.0023 g 4919 2441 N -16 14 29 11 17 -14 h
+.0023 g 4890 2431 N -17 14 30 11 16 -15 h
+.0023 g 4860 2420 N -16 15 29 10 17 -14 h
+.0029 g 4831 2413 N -17 14 30 11 16 -18 h
+.0041 g 4801 2405 N -16 18 29 10 17 -20 h
+.0047 g 4772 2395 N -17 20 30 11 16 -21 h
+.0047 g 4742 2384 N -16 21 29 10 17 -20 h
+.0047 g 4713 2374 N -17 20 30 11 16 -21 h
+.0047 g 4683 2363 N -16 21 29 11 17 -21 h
+.0051 g 4654 2355 N -17 21 30 10 16 -23 h
+.006 g 4624 2347 N -16 23 29 11 17 -26 h
+.0065 g 4595 2336 N -17 26 30 10 16 -25 h
+.0065 g 4565 2325 N -16 25 29 11 17 -25 h
+.0065 g 4536 2315 N -17 25 30 10 16 -25 h
+.0065 g 4506 2304 N -16 25 29 11 17 -25 h
+.0713 g 4477 2632 N -17 25 30 11 16 -364 h
+.171 g 4447 2804 N -16 364 29 10 17 -546 h
+.2059 g 4418 2794 N -17 546 30 11 16 -547 h
+.206 g 4388 2783 N -16 547 29 10 17 -546 h
+.206 g 4359 2773 N -17 546 30 11 16 -547 h
+.2061 g 4329 2763 N -16 547 29 10 17 -547 h
+.2867 g 4300 3173 N -17 547 30 11 16 -968 h
+.4058 g 4270 3364 N -16 968 29 11 17 -1170 h
+.4446 g 4241 3354 N -17 1170 30 10 16 -1170 h
+.4447 g 4211 3344 N -16 1170 29 11 17 -1171 h
+.4448 g 4182 3333 N -17 1171 30 10 16 -1170 h
+.4449 g 4152 3323 N -16 1170 29 11 17 -1171 h
+.4466 g 4123 3321 N -17 1171 30 10 16 -1179 h
+.4498 g 4093 3319 N -16 1179 29 11 17 -1188 h
+.4515 g 4064 3309 N -17 1188 30 11 16 -1189 h
+.4516 g 4034 3298 N -16 1189 29 10 17 -1188 h
+.4517 g 4005 3288 N -17 1188 30 11 16 -1189 h
+.4518 g 3975 3278 N -16 1189 29 10 17 -1189 h
+.4165 g 3946 3082 N -17 1189 30 11 16 -1004 h
+.3137 g 3916 2720 N -16 1004 29 10 17 -652 h
+.2464 g 3887 2709 N -17 652 30 11 16 -652 h
+.2465 g 3857 2699 N -16 652 29 11 17 -653 h
+.2466 g 3828 2689 N -17 653 30 10 16 -653 h
+.2467 g 3798 2678 N -16 653 29 11 17 -653 h
+.2142 g 3769 2497 N -17 653 29 10 17 -482 h
+.124 g 3740 2186 N -17 482 30 11 16 -182 h
+.0665 g 3710 2176 N -16 182 29 10 17 -182 h
+.0665 g 3681 2165 N -17 182 30 11 16 -182 h
+.0666 g 3651 2155 N -16 182 29 11 17 -183 h
+.0666 g 3622 2144 N -17 183 30 10 16 -182 h
+.0574 g 3592 2086 N -16 182 29 11 17 -135 h
+.0376 g 3563 2020 N -17 135 30 10 16 -79 h
+.0271 g 3533 2009 N -16 79 29 11 17 -79 h
+.0271 g 3504 1999 N -17 79 30 10 16 -79 h
+.0271 g 3474 1988 N -16 79 29 11 17 -79 h
+.0272 g 3445 1978 N -17 79 30 11 16 -80 h
+.0242 g 3415 1952 N -16 80 29 10 17 -64 h
+.018 g 3386 1925 N -17 64 30 11 16 -48 h
+.0149 g 3356 1914 N -16 48 29 10 17 -47 h
+.0149 g 3327 1903 N -17 47 30 11 16 -47 h
+.0149 g 3297 1893 N -16 47 29 10 17 -47 h
+.0149 g 3268 1882 N -17 47 30 11 16 -47 h
+.0147 g 3238 1871 N -16 47 29 10 17 -46 h
+.0143 g 3209 1859 N -17 46 30 11 16 -45 h
+.0141 g 3179 1849 N -16 45 29 11 17 -46 h
+.0142 g 3150 1838 N -17 46 30 10 16 -45 h
+.0142 g 3120 1828 N -16 45 29 11 17 -46 h
+.0142 g 3091 1817 N -17 46 30 10 16 -45 h
+.0142 g 3061 1807 N -16 45 29 11 17 -46 h
+.0142 g 3032 1796 N -17 46 30 10 16 -45 h
+.0142 g 3002 1786 N -16 45 29 11 17 -46 h
+.0142 g 2973 1775 N -17 46 30 11 16 -46 h
+.0142 g 2943 1764 N -16 46 29 10 17 -45 h
+.0142 g 2914 1754 N -17 45 30 11 16 -46 h
+.0143 g 2884 1743 N -16 46 29 10 17 -45 h
+.0143 g 2855 1733 N -17 45 30 11 16 -46 h
+.0143 g 2825 1722 N -16 46 29 10 17 -45 h
+.0143 g 2796 1712 N -17 45 30 11 16 -46 h
+.0143 g 2766 1701 N -16 46 29 11 17 -46 h
+.0143 g 2737 1691 N -17 46 30 10 16 -46 h
+.0138 g 2707 1677 N -16 46 29 11 17 -43 h
+.0127 g 2678 1664 N -17 43 30 10 16 -40 h
+.0122 g 2648 1653 N -16 40 29 11 17 -40 h
+.0122 g 2619 1643 N -17 40 30 10 16 -40 h
+.0122 g 2589 1632 N -16 40 29 11 17 -40 h
+.0122 g 2560 1622 N -17 40 30 11 16 -41 h
+.0114 g 2530 1607 N -16 41 29 10 17 -36 h
+.0098 g 2501 1592 N -17 36 30 11 16 -32 h
+.009 g 2471 1582 N -16 32 29 10 17 -32 h
+0 g 5378 2585 N -16 8 29 11 17 -8 h
+0 g 5349 2575 N -17 8 30 10 16 -8 h
+0 g 5319 2564 N -16 8 29 11 17 -8 h
+0 g 5290 2554 N -17 8 30 11 16 -9 h
+0 g 5260 2543 N -16 9 29 10 17 -8 h
+0 g 5231 2533 N -17 8 30 11 16 -9 h
+0 g 5201 2522 N -16 9 29 10 17 -8 h
+0 g 5172 2512 N -17 8 30 11 16 -9 h
+0 g 5142 2501 N -16 9 29 10 17 -8 h
+0 g 5113 2490 N -17 8 30 11 16 -8 h
+0 g 5083 2480 N -16 8 29 11 17 -9 h
+0 g 5054 2469 N -17 9 30 10 16 -8 h
+0 g 5024 2459 N -16 8 29 11 17 -9 h
+0 g 4995 2448 N -17 9 30 10 16 -8 h
+0 g 4965 2438 N -16 8 29 11 17 -9 h
+0 g 4936 2427 N -17 9 30 10 16 -8 h
+0 g 4906 2416 N -16 8 29 11 17 -8 h
+0 g 4877 2406 N -17 8 30 11 16 -9 h
+0 g 4847 2395 N -16 9 29 10 17 -8 h
+0 g 4818 2385 N -17 8 30 11 16 -9 h
+0 g 4788 2374 N -16 9 29 10 17 -8 h
+0 g 4759 2364 N -17 8 30 11 16 -9 h
+0 g 4729 2353 N -16 9 29 10 17 -8 h
+0 g 4700 2342 N -17 8 30 11 16 -8 h
+0 g 4670 2332 N -16 8 29 11 17 -9 h
+0 g 4641 2321 N -17 9 30 10 16 -8 h
+0 g 4611 2311 N -16 8 29 11 17 -9 h
+0 g 4582 2300 N -17 9 30 10 16 -8 h
+0 g 4552 2290 N -16 8 29 11 17 -9 h
+0 g 4523 2279 N -17 9 30 10 16 -8 h
+0 g 4493 2268 N -16 8 29 11 17 -8 h
+0 g 4464 2258 N -17 8 30 11 16 -9 h
+0 g 4434 2247 N -16 9 29 10 17 -8 h
+0 g 4405 2237 N -17 8 30 11 16 -9 h
+0 g 4375 2226 N -16 9 29 10 17 -8 h
+0 g 4346 2216 N -17 8 30 11 16 -9 h
+0 g 4316 2205 N -16 9 29 10 17 -8 h
+0 g 4287 2194 N -17 8 30 11 16 -8 h
+0 g 4257 2184 N -16 8 29 11 17 -9 h
+0 g 4228 2173 N -17 9 30 10 16 -8 h
+0 g 4198 2163 N -16 8 29 11 17 -9 h
+0 g 4169 2152 N -17 9 30 10 16 -8 h
+0 g 4139 2142 N -16 8 29 11 17 -9 h
+0 g 4110 2131 N -17 9 30 10 16 -8 h
+0 g 4080 2120 N -16 8 29 11 17 -8 h
+0 g 4051 2110 N -17 8 30 11 16 -9 h
+0 g 4021 2099 N -16 9 29 10 17 -8 h
+0 g 3992 2089 N -17 8 30 11 16 -9 h
+0 g 3962 2078 N -16 9 29 10 17 -8 h
+0 g 3933 2068 N -17 8 30 11 16 -9 h
+0 g 3903 2057 N -16 9 29 10 17 -8 h
+0 g 3874 2046 N -17 8 30 11 16 -8 h
+0 g 3844 2036 N -16 8 29 11 17 -9 h
+0 g 3815 2025 N -17 9 30 10 16 -8 h
+0 g 3786 2015 N -16 8 29 11 16 -9 h
+0 g 3756 2004 N -16 9 29 10 17 -8 h
+0 g 3727 1994 N -17 8 30 11 16 -9 h
+0 g 3697 1983 N -16 9 29 10 17 -8 h
+0 g 3668 1972 N -17 8 30 11 16 -8 h
+0 g 3638 1962 N -16 8 29 10 17 -8 h
+0 g 3609 1951 N -17 8 30 11 16 -8 h
+0 g 3579 1941 N -16 8 29 11 17 -9 h
+0 g 3550 1930 N -17 9 30 10 16 -8 h
+0 g 3520 1920 N -16 8 29 11 17 -9 h
+0 g 3491 1909 N -17 9 30 10 16 -8 h
+0 g 3461 1898 N -16 8 29 11 17 -8 h
+0 g 3432 1888 N -17 8 30 10 16 -8 h
+0 g 3402 1877 N -16 8 29 11 17 -8 h
+0 g 3373 1867 N -17 8 30 11 16 -9 h
+0 g 3343 1856 N -16 9 29 10 17 -8 h
+0 g 3314 1846 N -17 8 30 11 16 -9 h
+0 g 3284 1835 N -16 9 29 10 17 -8 h
+0 g 3255 1825 N -17 8 30 11 16 -9 h
+0 g 3225 1814 N -16 9 29 10 17 -8 h
+0 g 3196 1803 N -17 8 30 11 16 -8 h
+0 g 3166 1793 N -16 8 29 11 17 -9 h
+0 g 3137 1782 N -17 9 30 10 16 -8 h
+0 g 3107 1772 N -16 8 29 11 17 -9 h
+0 g 3078 1761 N -17 9 30 10 16 -8 h
+0 g 3048 1751 N -16 8 29 11 17 -9 h
+0 g 3019 1740 N -17 9 30 10 16 -8 h
+0 g 2989 1729 N -16 8 29 11 17 -8 h
+0 g 2960 1719 N -17 8 30 11 16 -9 h
+0 g 2930 1708 N -16 9 29 10 17 -8 h
+0 g 2901 1698 N -17 8 30 11 16 -9 h
+0 g 2871 1687 N -16 9 29 10 17 -8 h
+0 g 2842 1677 N -17 8 30 11 16 -9 h
+0 g 2812 1666 N -16 9 29 10 17 -8 h
+0 g 2783 1655 N -17 8 30 11 16 -8 h
+0 g 2753 1645 N -16 8 29 11 17 -9 h
+0 g 2724 1634 N -17 9 30 10 16 -8 h
+0 g 2694 1624 N -16 8 29 11 17 -9 h
+0 g 2665 1613 N -17 9 30 10 16 -8 h
+0 g 2635 1603 N -16 8 29 11 17 -9 h
+0 g 2606 1592 N -17 9 30 10 16 -8 h
+0 g 2576 1581 N -16 8 29 11 17 -8 h
+0 g 2547 1571 N -17 8 30 11 16 -9 h
+0 g 2517 1560 N -16 9 29 10 17 -8 h
+0 g 2488 1550 N -17 8 30 11 16 -9 h
+0 g 5395 2577 N -17 9 30 10 16 -8 h
+0 g 5365 2567 N -16 8 29 11 17 -9 h
+0 g 5336 2556 N -17 9 30 10 16 -8 h
+0 g 5306 2545 N -16 8 29 11 17 -8 h
+0 g 5277 2535 N -17 8 30 11 16 -9 h
+0 g 5247 2524 N -16 9 29 10 17 -8 h
+0 g 5218 2514 N -17 8 30 11 16 -9 h
+0 g 5188 2503 N -16 9 29 10 17 -8 h
+0 g 5159 2493 N -17 8 30 11 16 -9 h
+0 g 5129 2482 N -16 9 29 10 17 -8 h
+0 g 5100 2471 N -17 8 30 11 16 -8 h
+0 g 5070 2461 N -16 8 29 11 17 -9 h
+0 g 5041 2450 N -17 9 30 10 16 -8 h
+0 g 5011 2440 N -16 8 29 11 17 -9 h
+0 g 4982 2429 N -17 9 30 10 16 -8 h
+0 g 4952 2419 N -16 8 29 11 17 -9 h
+0 g 4923 2408 N -17 9 30 10 16 -8 h
+0 g 4893 2397 N -16 8 29 11 17 -8 h
+0 g 4864 2387 N -17 8 30 11 16 -9 h
+0 g 4834 2376 N -16 9 29 10 17 -8 h
+0 g 4805 2366 N -17 8 30 11 16 -9 h
+0 g 4775 2355 N -16 9 29 10 17 -8 h
+0 g 4746 2345 N -17 8 30 11 16 -9 h
+0 g 4716 2334 N -16 9 29 10 17 -8 h
+0 g 4687 2323 N -17 8 30 11 16 -8 h
+0 g 4657 2313 N -16 8 29 11 17 -9 h
+0 g 4628 2302 N -17 9 30 10 16 -8 h
+0 g 4598 2292 N -16 8 29 11 17 -9 h
+0 g 4569 2281 N -17 9 30 10 16 -8 h
+0 g 4539 2271 N -16 8 29 11 17 -9 h
+0 g 4510 2260 N -17 9 30 10 16 -8 h
+0 g 4480 2249 N -16 8 29 11 17 -8 h
+0 g 4451 2239 N -17 8 30 11 16 -9 h
+0 g 4421 2228 N -16 9 29 10 17 -8 h
+0 g 4392 2218 N -17 8 30 11 16 -9 h
+0 g 4362 2207 N -16 9 29 10 17 -8 h
+0 g 4333 2197 N -17 8 30 11 16 -9 h
+0 g 4303 2186 N -16 9 29 10 17 -8 h
+0 g 4274 2175 N -17 8 30 11 16 -8 h
+0 g 4244 2165 N -16 8 29 10 17 -8 h
+0 g 4215 2154 N -17 8 30 11 16 -8 h
+0 g 4185 2144 N -16 8 29 11 17 -9 h
+0 g 4156 2133 N -17 9 30 10 16 -8 h
+0 g 4126 2123 N -16 8 29 11 17 -9 h
+0 g 4097 2112 N -17 9 30 10 16 -8 h
+0 g 4067 2101 N -16 8 29 11 17 -8 h
+0 g 4038 2091 N -17 8 30 10 16 -8 h
+0 g 4008 2080 N -16 8 29 11 17 -8 h
+0 g 3979 2070 N -17 8 30 11 16 -9 h
+0 g 3949 2059 N -16 9 29 10 17 -8 h
+0 g 3920 2049 N -17 8 30 11 16 -9 h
+0 g 3890 2038 N -16 9 29 10 17 -8 h
+0 g 3861 2027 N -17 8 30 11 16 -8 h
+0 g 3831 2017 N -16 8 29 10 17 -8 h
+0 g 3802 2006 N -17 8 29 11 17 -8 h
+0 g 3773 1996 N -17 8 30 11 16 -9 h
+0 g 3743 1985 N -16 9 29 10 17 -8 h
+0 g 3714 1975 N -17 8 30 11 16 -9 h
+0 g 3684 1964 N -16 9 29 10 17 -8 h
+0 g 3655 1954 N -17 8 30 11 16 -9 h
+0 g 3625 1943 N -16 9 29 10 17 -8 h
+0 g 3596 1932 N -17 8 30 11 16 -8 h
+0 g 3566 1922 N -16 8 29 11 17 -9 h
+0 g 3537 1911 N -17 9 30 10 16 -8 h
+0 g 3507 1901 N -16 8 29 11 17 -9 h
+0 g 3478 1890 N -17 9 30 10 16 -8 h
+0 g 3448 1880 N -16 8 29 11 17 -9 h
+0 g 3419 1869 N -17 9 30 10 16 -8 h
+0 g 3389 1858 N -16 8 29 11 17 -8 h
+0 g 3360 1848 N -17 8 30 11 16 -9 h
+0 g 3330 1837 N -16 9 29 10 17 -8 h
+0 g 3301 1827 N -17 8 30 11 16 -9 h
+0 g 3271 1816 N -16 9 29 10 17 -8 h
+0 g 3242 1806 N -17 8 30 11 16 -9 h
+0 g 3212 1795 N -16 9 29 10 17 -8 h
+0 g 3183 1784 N -17 8 30 11 16 -8 h
+0 g 3153 1774 N -16 8 29 11 17 -9 h
+0 g 3124 1763 N -17 9 30 10 16 -8 h
+0 g 3094 1753 N -16 8 29 11 17 -9 h
+0 g 3065 1742 N -17 9 30 10 16 -8 h
+0 g 3035 1732 N -16 8 29 11 17 -9 h
+0 g 3006 1721 N -17 9 30 10 16 -8 h
+0 g 2976 1710 N -16 8 29 11 17 -8 h
+0 g 2947 1700 N -17 8 30 11 16 -9 h
+0 g 2917 1689 N -16 9 29 10 17 -8 h
+0 g 2888 1679 N -17 8 30 11 16 -9 h
+0 g 2858 1668 N -16 9 29 10 17 -8 h
+0 g 2829 1658 N -17 8 30 11 16 -9 h
+0 g 2799 1647 N -16 9 29 10 17 -8 h
+0 g 2770 1636 N -17 8 30 11 16 -8 h
+0 g 2740 1626 N -16 8 29 11 17 -9 h
+0 g 2711 1615 N -17 9 30 10 16 -8 h
+0 g 2681 1605 N -16 8 29 11 17 -9 h
+0 g 2652 1594 N -17 9 30 10 16 -8 h
+0 g 2622 1584 N -16 8 29 11 17 -9 h
+0 g 2593 1573 N -17 9 30 10 16 -8 h
+0 g 2563 1562 N -16 8 29 11 17 -8 h
+0 g 2534 1552 N -17 8 30 11 16 -9 h
+0 g 2504 1541 N -16 9 29 10 17 -8 h
+0 g 5411 2569 N -16 8 29 11 17 -9 h
+0 g 5382 2558 N -17 9 30 10 16 -8 h
+0 g 5352 2548 N -16 8 29 11 17 -9 h
+0 g 5323 2537 N -17 9 30 10 16 -8 h
+0 g 5293 2526 N -16 8 29 11 17 -8 h
+0 g 5264 2516 N -17 8 30 11 16 -9 h
+0 g 5234 2505 N -16 9 29 10 17 -8 h
+0 g 5205 2495 N -17 8 30 11 16 -9 h
+0 g 5175 2484 N -16 9 29 10 17 -8 h
+0 g 5146 2474 N -17 8 30 11 16 -9 h
+0 g 5116 2463 N -16 9 29 10 17 -8 h
+0 g 5087 2452 N -17 8 30 11 16 -8 h
+0 g 5057 2442 N -16 8 29 11 17 -9 h
+0 g 5028 2431 N -17 9 30 10 16 -8 h
+0 g 4998 2421 N -16 8 29 11 17 -9 h
+0 g 4969 2410 N -17 9 30 10 16 -8 h
+0 g 4939 2400 N -16 8 29 11 17 -9 h
+0 g 4910 2389 N -17 9 30 10 16 -8 h
+0 g 4880 2378 N -16 8 29 11 17 -8 h
+0 g 4851 2368 N -17 8 30 11 16 -9 h
+0 g 4821 2357 N -16 9 29 10 17 -8 h
+0 g 4792 2347 N -17 8 30 11 16 -9 h
+0 g 4762 2336 N -16 9 29 10 17 -8 h
+0 g 4733 2326 N -17 8 30 11 16 -9 h
+0 g 4703 2315 N -16 9 29 10 17 -8 h
+0 g 4674 2304 N -17 8 30 11 16 -8 h
+0 g 4644 2294 N -16 8 29 10 17 -8 h
+0 g 4615 2283 N -17 8 30 11 16 -8 h
+0 g 4585 2273 N -16 8 29 11 17 -9 h
+0 g 4556 2262 N -17 9 30 10 16 -8 h
+0 g 4526 2252 N -16 8 29 11 17 -9 h
+0 g 4497 2241 N -17 9 30 10 16 -8 h
+0 g 4467 2230 N -16 8 29 11 17 -8 h
+0 g 4438 2220 N -17 8 30 10 16 -8 h
+0 g 4408 2209 N -16 8 29 11 17 -8 h
+0 g 4379 2199 N -17 8 30 11 16 -9 h
+0 g 4349 2188 N -16 9 29 10 17 -8 h
+0 g 4320 2178 N -17 8 30 11 16 -9 h
+0 g 4290 2167 N -16 9 29 10 17 -8 h
+0 g 4261 2157 N -17 8 30 11 16 -9 h
+0 g 4231 2146 N -16 9 29 10 17 -8 h
+0 g 4202 2135 N -17 8 30 11 16 -8 h
+0 g 4172 2125 N -16 8 29 11 17 -9 h
+0 g 4143 2114 N -17 9 30 10 16 -8 h
+0 g 4113 2104 N -16 8 29 11 17 -9 h
+0 g 4084 2093 N -17 9 30 10 16 -8 h
+0 g 4054 2083 N -16 8 29 11 17 -9 h
+0 g 4025 2072 N -17 9 30 10 16 -8 h
+0 g 3995 2061 N -16 8 29 11 17 -8 h
+0 g 3966 2051 N -17 8 30 11 16 -9 h
+0 g 3936 2040 N -16 9 29 10 17 -8 h
+0 g 3907 2030 N -17 8 30 11 16 -9 h
+0 g 3877 2019 N -16 9 29 10 17 -8 h
+0 g 3848 2009 N -17 8 30 11 16 -9 h
+0 g 3819 1998 N -16 9 29 10 16 -8 h
+0 g 3789 1987 N -16 8 29 11 17 -8 h
+0 g 3760 1977 N -17 8 30 11 16 -9 h
+0 g 3730 1966 N -16 9 29 10 17 -8 h
+0 g 3701 1956 N -17 8 30 11 16 -9 h
+0 g 3671 1945 N -16 9 29 10 17 -8 h
+0 g 3642 1935 N -17 8 30 11 16 -9 h
+0 g 3612 1924 N -16 9 29 10 17 -8 h
+0 g 3583 1913 N -17 8 30 11 16 -8 h
+0 g 3553 1903 N -16 8 29 11 17 -9 h
+0 g 3524 1892 N -17 9 30 10 16 -8 h
+0 g 3494 1882 N -16 8 29 11 17 -9 h
+0 g 3465 1871 N -17 9 30 10 16 -8 h
+0 g 3435 1861 N -16 8 29 11 17 -9 h
+0 g 3406 1850 N -17 9 30 10 16 -8 h
+0 g 3376 1839 N -16 8 29 11 17 -8 h
+0 g 3347 1829 N -17 8 30 11 16 -9 h
+0 g 3317 1818 N -16 9 29 10 17 -8 h
+0 g 3288 1808 N -17 8 30 11 16 -9 h
+0 g 3258 1797 N -16 9 29 10 17 -8 h
+0 g 3229 1787 N -17 8 30 11 16 -9 h
+0 g 3199 1776 N -16 9 29 10 17 -8 h
+0 g 3170 1765 N -17 8 30 11 16 -8 h
+0 g 3140 1755 N -16 8 29 11 17 -9 h
+0 g 3111 1744 N -17 9 30 10 16 -8 h
+0 g 3081 1734 N -16 8 29 11 17 -9 h
+0 g 3052 1723 N -17 9 30 10 16 -8 h
+0 g 3022 1713 N -16 8 29 11 17 -9 h
+0 g 2993 1702 N -17 9 30 10 16 -8 h
+0 g 2963 1691 N -16 8 29 11 17 -8 h
+0 g 2934 1681 N -17 8 30 11 16 -9 h
+0 g 2904 1670 N -16 9 29 10 17 -8 h
+0 g 2875 1660 N -17 8 30 11 16 -9 h
+0 g 2845 1649 N -16 9 29 10 17 -8 h
+0 g 2816 1639 N -17 8 30 11 16 -9 h
+0 g 2786 1628 N -16 9 29 10 17 -8 h
+0 g 2757 1617 N -17 8 30 11 16 -8 h
+0 g 2727 1607 N -16 8 29 10 17 -8 h
+0 g 2698 1596 N -17 8 30 11 16 -8 h
+0 g 2668 1586 N -16 8 29 11 17 -9 h
+0 g 2639 1575 N -17 9 30 10 16 -8 h
+0 g 2609 1565 N -16 8 29 11 17 -9 h
+0 g 2580 1554 N -17 9 30 10 16 -8 h
+0 g 2550 1543 N -16 8 29 11 17 -8 h
+0 g 2521 1533 N -17 8 30 10 16 -8 h
+0 g 5428 2560 N -17 9 30 10 16 -8 h
+0 g 5398 2550 N -16 8 29 11 17 -9 h
+0 g 5369 2539 N -17 9 30 10 16 -8 h
+0 g 5339 2529 N -16 8 29 11 17 -9 h
+0 g 5310 2518 N -17 9 30 10 16 -8 h
+0 g 5280 2507 N -16 8 29 11 17 -8 h
+0 g 5251 2497 N -17 8 30 11 16 -9 h
+0 g 5221 2486 N -16 9 29 10 17 -8 h
+0 g 5192 2476 N -17 8 30 11 16 -9 h
+0 g 5162 2465 N -16 9 29 10 17 -8 h
+0 g 5133 2455 N -17 8 30 11 16 -9 h
+0 g 5103 2444 N -16 9 29 10 17 -8 h
+.0007 g 5074 2433 N -17 8 30 7 16 -4 h
+.0021 g 5044 2423 N -16 4 29 7 17 -1 h
+.0028 g 5015 2412 N -17 1 30 11 16 -1 h
+.0028 g 4985 2402 N -16 1 29 10 17 -1 h
+.0028 g 4956 2391 N -17 1 30 11 16 -1 h
+.0028 g 4926 2381 N -16 1 29 10 17 -1 h
+.0035 g 4897 2370 N -17 1 30 7 16 3 h
+.0049 g 4867 2359 N -16 -3 29 7 17 7 h
+.0056 g 4838 2349 N -17 -7 30 11 16 6 h
+.0056 g 4808 2338 N -16 -6 29 10 17 7 h
+.0056 g 4779 2328 N -17 -7 30 11 16 6 h
+.0056 g 4749 2317 N -16 -6 29 11 17 6 h
+.0061 g 4720 2307 N -17 -6 30 7 16 9 h
+.0072 g 4690 2296 N -16 -9 29 8 17 12 h
+.0077 g 4661 2286 N -17 -12 30 11 16 11 h
+.0077 g 4631 2275 N -16 -11 29 10 17 12 h
+.0078 g 4602 2264 N -17 -12 30 11 16 12 h
+.0078 g 4572 2254 N -16 -12 29 10 17 12 h
+.0805 g 4543 2243 N -17 -12 30 -369 16 392 h
+.1902 g 4513 2233 N -16 -392 29 -183 17 585 h
+.2271 g 4484 2222 N -17 -585 30 11 16 585 h
+.2272 g 4454 2212 N -16 -585 29 10 17 585 h
+.2273 g 4425 2201 N -17 -585 30 10 16 586 h
+.2274 g 4395 2190 N -16 -586 29 11 17 586 h
+.3102 g 4366 2180 N -17 -586 30 -422 16 1018 h
+.4321 g 4336 2169 N -16 -1018 29 -194 17 1223 h
+.4714 g 4307 2159 N -17 -1223 30 10 16 1223 h
+.4715 g 4277 2148 N -16 -1223 29 10 17 1224 h
+.4716 g 4248 2138 N -17 -1224 30 11 16 1223 h
+.4717 g 4218 2127 N -16 -1223 29 10 17 1224 h
+.4734 g 4189 2116 N -17 -1224 30 2 16 1233 h
+.4767 g 4159 2106 N -16 -1233 29 2 17 1241 h
+.4783 g 4130 2095 N -17 -1241 30 10 16 1242 h
+.4784 g 4100 2085 N -16 -1242 29 11 17 1241 h
+.4786 g 4071 2074 N -17 -1241 30 10 16 1242 h
+.4787 g 4041 2064 N -16 -1242 29 10 17 1242 h
+.4429 g 4012 2053 N -17 -1242 30 198 16 1055 h
+.3382 g 3982 2042 N -16 -1055 29 370 17 696 h
+.2693 g 3953 2032 N -17 -696 30 11 16 695 h
+.2694 g 3923 2021 N -16 -695 29 10 17 696 h
+.2695 g 3894 2011 N -17 -696 30 10 16 696 h
+.2696 g 3864 2000 N -16 -696 29 11 17 696 h
+.2356 g 3835 1990 N -17 -696 30 188 16 518 h
+.1392 g 3806 1979 N -16 -518 29 336 16 193 h
+.077 g 3776 1968 N -16 -193 29 11 17 193 h
+.077 g 3747 1958 N -17 -193 30 10 16 193 h
+.0771 g 3717 1947 N -16 -193 29 11 17 193 h
+.0771 g 3688 1937 N -17 -193 30 10 16 193 h
+.0667 g 3658 1926 N -16 -193 29 65 17 139 h
+.0441 g 3629 1916 N -17 -139 30 74 16 75 h
+.032 g 3599 1905 N -16 -75 29 11 17 75 h
+.032 g 3570 1894 N -17 -75 30 10 16 76 h
+.032 g 3540 1884 N -16 -76 29 11 17 75 h
+.0321 g 3511 1873 N -17 -75 30 10 16 76 h
+.0286 g 3481 1863 N -16 -76 29 29 17 57 h
+.0213 g 3452 1852 N -17 -57 30 30 16 38 h
+.0177 g 3422 1842 N -16 -38 29 11 17 37 h
+.0177 g 3393 1831 N -17 -37 30 10 16 38 h
+.0177 g 3363 1820 N -16 -38 29 11 17 38 h
+.0177 g 3334 1810 N -17 -38 30 10 16 38 h
+.0175 g 3304 1799 N -16 -38 29 12 17 37 h
+.017 g 3275 1789 N -17 -37 30 12 16 35 h
+.0168 g 3245 1778 N -16 -35 29 10 17 36 h
+.0168 g 3216 1768 N -17 -36 30 11 16 35 h
+.0168 g 3186 1757 N -16 -35 29 10 17 36 h
+.0169 g 3157 1746 N -17 -36 30 11 16 36 h
+.0169 g 3127 1736 N -16 -36 29 10 17 36 h
+.0169 g 3098 1725 N -17 -36 30 11 16 36 h
+.0169 g 3068 1715 N -16 -36 29 10 17 36 h
+.0169 g 3039 1704 N -17 -36 30 11 16 36 h
+.0169 g 3009 1694 N -16 -36 29 11 17 35 h
+.0169 g 2980 1683 N -17 -35 30 10 16 36 h
+.017 g 2950 1672 N -16 -36 29 11 17 36 h
+.017 g 2921 1662 N -17 -36 30 10 16 36 h
+.017 g 2891 1651 N -16 -36 29 11 17 36 h
+.017 g 2862 1641 N -17 -36 30 10 16 36 h
+.017 g 2832 1630 N -16 -36 29 11 17 36 h
+.017 g 2803 1620 N -17 -36 30 10 16 36 h
+.0164 g 2773 1609 N -16 -36 29 14 17 33 h
+.0152 g 2744 1599 N -17 -33 30 14 16 29 h
+.0145 g 2714 1588 N -16 -29 29 10 17 30 h
+.0146 g 2685 1577 N -17 -30 30 11 16 30 h
+.0146 g 2655 1567 N -16 -30 29 11 17 29 h
+.0146 g 2626 1556 N -17 -29 30 10 16 30 h
+.0136 g 2596 1546 N -16 -30 29 16 17 24 h
+.0117 g 2567 1535 N -17 -24 30 15 16 20 h
+.0107 g 2537 1525 N -16 -20 29 11 17 19 h
+0 g 5444 2552 N -16 8 29 10 17 -8 h
+0 g 5415 2541 N -17 8 30 11 16 -8 h
+0 g 5385 2531 N -16 8 29 11 17 -9 h
+0 g 5356 2520 N -17 9 30 10 16 -8 h
+0 g 5326 2510 N -16 8 29 11 17 -9 h
+0 g 5297 2499 N -17 9 30 10 16 -8 h
+0 g 5267 2488 N -16 8 29 11 17 -8 h
+0 g 5238 2478 N -17 8 30 10 16 -8 h
+0 g 5208 2467 N -16 8 29 11 17 -8 h
+0 g 5179 2457 N -17 8 30 11 16 -9 h
+0 g 5149 2446 N -16 9 29 10 17 -8 h
+0 g 5120 2436 N -17 8 30 11 16 -9 h
+.0014 g 5090 2429 N -16 9 29 7 17 -9 h
+.0042 g 5061 2422 N -17 9 30 7 16 -9 h
+.0056 g 5031 2411 N -16 9 29 10 17 -8 h
+.0056 g 5002 2401 N -17 8 30 11 16 -9 h
+.0056 g 4972 2390 N -16 9 29 10 17 -8 h
+.0056 g 4943 2380 N -17 8 30 11 16 -9 h
+.007 g 4913 2373 N -16 9 29 7 17 -9 h
+.0098 g 4884 2366 N -17 9 30 7 16 -9 h
+.0112 g 4854 2355 N -16 9 29 10 17 -8 h
+.0112 g 4825 2345 N -17 8 30 11 16 -9 h
+.0112 g 4795 2334 N -16 9 29 10 17 -8 h
+.0112 g 4766 2323 N -17 8 30 11 16 -8 h
+.0123 g 4736 2316 N -16 8 29 8 17 -9 h
+.0144 g 4707 2308 N -17 9 30 8 16 -9 h
+.0155 g 4677 2297 N -16 9 29 10 17 -8 h
+.0155 g 4648 2287 N -17 8 30 11 16 -9 h
+.0155 g 4618 2276 N -16 9 29 10 17 -8 h
+.0155 g 4589 2266 N -17 8 30 11 16 -9 h
+.161 g 4559 2635 N -16 9 29 -370 17 -8 h
+.3803 g 4530 2818 N -17 8 30 -182 16 -9 h
+.4542 g 4500 2807 N -16 9 29 10 17 -8 h
+.4544 g 4471 2797 N -17 8 30 10 16 -8 h
+.4546 g 4441 2787 N -16 8 29 11 17 -9 h
+.4548 g 4412 2776 N -17 9 30 10 16 -8 h
+.6204 g 4382 3198 N -16 8 29 -422 17 -8 h
+.8643 g 4353 3392 N -17 8 30 -194 16 -8 h
+.9427 g 4323 3382 N -16 8 29 10 17 -8 h
+.943 g 4294 3372 N -17 8 30 11 16 -9 h
+.9432 g 4264 3361 N -16 9 29 10 17 -8 h
+.9435 g 4235 3351 N -17 8 30 10 16 -8 h
+.9469 g 4205 3349 N -16 8 29 2 17 -8 h
+.9533 g 4176 3347 N -17 8 30 2 16 -8 h
+.9567 g 4146 3337 N -16 8 29 11 17 -9 h
+.9569 g 4117 3326 N -17 9 30 10 16 -8 h
+.9571 g 4087 3316 N -16 8 29 10 17 -8 h
+.9574 g 4058 3306 N -17 8 30 10 16 -8 h
+.8858 g 4028 3108 N -16 8 29 198 17 -8 h
+.6763 g 3999 2738 N -17 8 30 371 16 -9 h
+.5386 g 3969 2727 N -16 9 29 10 17 -8 h
+.5389 g 3940 2717 N -17 8 30 10 16 -8 h
+.5391 g 3910 2707 N -16 8 29 11 17 -9 h
+.5393 g 3881 2696 N -17 9 30 10 16 -8 h
+.4713 g 3851 2508 N -16 8 29 189 17 -9 h
+.2785 g 3822 2172 N -17 9 29 336 17 -9 h
+.1539 g 3793 2161 N -17 9 30 10 16 -8 h
+.154 g 3763 2151 N -16 8 29 11 17 -9 h
+.1541 g 3734 2140 N -17 9 30 10 16 -8 h
+.1542 g 3704 2130 N -16 8 29 11 17 -9 h
+.1333 g 3675 2065 N -17 9 30 65 16 -9 h
+.0882 g 3645 1991 N -16 9 29 74 17 -9 h
+.064 g 3616 1980 N -17 9 30 10 16 -8 h
+.064 g 3586 1970 N -16 8 29 11 17 -9 h
+.0641 g 3557 1959 N -17 9 30 10 16 -8 h
+.0641 g 3527 1949 N -16 8 29 11 17 -9 h
+.0571 g 3498 1920 N -17 9 30 29 16 -9 h
+.0427 g 3468 1890 N -16 9 29 30 17 -9 h
+.0353 g 3439 1879 N -17 9 30 10 16 -8 h
+.0353 g 3409 1869 N -16 8 29 11 17 -9 h
+.0354 g 3380 1858 N -17 9 30 10 16 -8 h
+.0354 g 3350 1848 N -16 8 29 11 17 -9 h
+.035 g 3321 1836 N -17 9 30 11 16 -8 h
+.0341 g 3291 1824 N -16 8 29 12 17 -8 h
+.0336 g 3262 1814 N -17 8 30 11 16 -9 h
+.0337 g 3232 1803 N -16 9 29 10 17 -8 h
+.0337 g 3203 1793 N -17 8 30 11 16 -9 h
+.0337 g 3173 1782 N -16 9 29 10 17 -8 h
+.0338 g 3144 1772 N -17 8 30 11 16 -9 h
+.0338 g 3114 1761 N -16 9 29 10 17 -8 h
+.0338 g 3085 1751 N -17 8 30 11 16 -9 h
+.0338 g 3055 1740 N -16 9 29 10 17 -8 h
+.0339 g 3026 1729 N -17 8 30 11 16 -8 h
+.0339 g 2996 1719 N -16 8 29 10 17 -8 h
+.0339 g 2967 1708 N -17 8 30 11 16 -8 h
+.0339 g 2937 1698 N -16 8 29 11 17 -9 h
+.034 g 2908 1687 N -17 9 30 10 16 -8 h
+.034 g 2878 1677 N -16 8 29 11 17 -9 h
+.034 g 2849 1666 N -17 9 30 10 16 -8 h
+.034 g 2819 1656 N -16 8 29 11 17 -9 h
+.0328 g 2790 1642 N -17 9 30 13 16 -8 h
+.0303 g 2760 1628 N -16 8 29 14 17 -8 h
+.0291 g 2731 1618 N -17 8 30 11 16 -9 h
+.0291 g 2701 1607 N -16 9 29 10 17 -8 h
+.0291 g 2672 1596 N -17 8 30 11 16 -8 h
+.0292 g 2642 1586 N -16 8 29 10 17 -8 h
+.0272 g 2613 1570 N -17 8 30 16 16 -8 h
+.0233 g 2583 1555 N -16 8 29 16 17 -9 h
+.0214 g 2554 1544 N -17 9 30 10 16 -8 h
+0 g 5461 2544 N -17 8 30 11 16 -9 h
+0 g 5431 2533 N -16 9 29 10 17 -8 h
+0 g 5402 2522 N -17 8 30 11 16 -8 h
+0 g 5372 2512 N -16 8 29 11 17 -9 h
+0 g 5343 2501 N -17 9 30 10 16 -8 h
+0 g 5313 2491 N -16 8 29 11 17 -9 h
+0 g 5284 2480 N -17 9 30 10 16 -8 h
+0 g 5254 2470 N -16 8 29 11 17 -9 h
+0 g 5225 2459 N -17 9 30 10 16 -8 h
+0 g 5195 2448 N -16 8 29 11 17 -8 h
+0 g 5166 2438 N -17 8 30 11 16 -9 h
+0 g 5136 2427 N -16 9 29 10 17 -8 h
+.0014 g 5107 2420 N -17 8 30 7 16 -8 h
+.0042 g 5077 2413 N -16 8 29 7 17 -8 h
+.0056 g 5048 2403 N -17 8 30 11 16 -9 h
+.0056 g 5018 2392 N -16 9 29 10 17 -8 h
+.0056 g 4989 2382 N -17 8 30 11 16 -9 h
+.0056 g 4959 2371 N -16 9 29 10 17 -8 h
+.007 g 4930 2364 N -17 8 30 7 16 -8 h
+.0098 g 4900 2357 N -16 8 29 7 17 -8 h
+.0112 g 4871 2347 N -17 8 30 11 16 -9 h
+.0112 g 4841 2336 N -16 9 29 10 17 -8 h
+.0112 g 4812 2326 N -17 8 30 11 16 -9 h
+.0112 g 4782 2315 N -16 9 29 10 17 -8 h
+.0123 g 4753 2307 N -17 8 30 8 16 -8 h
+.0144 g 4723 2299 N -16 8 29 8 17 -8 h
+.0155 g 4694 2289 N -17 8 30 10 16 -8 h
+.0155 g 4664 2278 N -16 8 29 11 17 -8 h
+.0155 g 4635 2268 N -17 8 30 11 16 -9 h
+.0155 g 4605 2257 N -16 9 29 10 17 -8 h
+.161 g 4576 2627 N -17 8 30 -369 16 -9 h
+.3803 g 4546 2809 N -16 9 29 -183 17 -8 h
+.4542 g 4517 2799 N -17 8 30 11 16 -9 h
+.4544 g 4487 2789 N -16 9 29 10 17 -9 h
+.4546 g 4458 2778 N -17 9 30 10 16 -8 h
+.4548 g 4428 2768 N -16 8 29 11 17 -9 h
+.6204 g 4399 3190 N -17 9 30 -422 16 -9 h
+.8643 g 4369 3384 N -16 9 29 -194 17 -9 h
+.9428 g 4340 3374 N -17 9 30 10 16 -9 h
+.943 g 4310 3363 N -16 9 29 10 17 -8 h
+.9432 g 4281 3353 N -17 8 30 10 16 -8 h
+.9435 g 4251 3343 N -16 8 29 11 17 -9 h
+.9469 g 4222 3341 N -17 9 30 2 16 -9 h
+.9533 g 4192 3339 N -16 9 29 2 17 -9 h
+.9567 g 4163 3328 N -17 9 30 10 16 -8 h
+.9569 g 4133 3318 N -16 8 29 10 17 -8 h
+.9571 g 4104 3308 N -17 8 30 11 16 -9 h
+.9574 g 4074 3298 N -16 9 29 10 17 -9 h
+.8858 g 4045 3100 N -17 9 30 198 16 -9 h
+.6763 g 4015 2729 N -16 9 29 370 17 -8 h
+.5387 g 3986 2719 N -17 8 30 11 16 -9 h
+.5389 g 3956 2709 N -16 9 29 10 17 -9 h
+.5391 g 3927 2698 N -17 9 30 10 16 -8 h
+.5393 g 3897 2688 N -16 8 29 10 17 -8 h
+.4713 g 3868 2499 N -17 8 30 189 16 -8 h
+.2785 g 3839 2163 N -16 8 29 336 16 -8 h
+.1539 g 3809 2153 N -16 8 29 11 17 -9 h
+.154 g 3780 2142 N -17 9 30 10 16 -8 h
+.1541 g 3750 2132 N -16 8 29 11 17 -9 h
+.1542 g 3721 2121 N -17 9 30 10 16 -8 h
+.1333 g 3691 2056 N -16 8 29 65 17 -8 h
+.0882 g 3662 1982 N -17 8 30 74 16 -8 h
+.064 g 3632 1972 N -16 8 29 11 17 -9 h
+.064 g 3603 1961 N -17 9 30 10 16 -8 h
+.0641 g 3573 1951 N -16 8 29 11 17 -9 h
+.0641 g 3544 1940 N -17 9 30 10 16 -8 h
+.0571 g 3514 1911 N -16 8 29 29 17 -8 h
+.0427 g 3485 1881 N -17 8 30 30 16 -8 h
+.0353 g 3455 1871 N -16 8 29 10 17 -8 h
+.0353 g 3426 1860 N -17 8 30 11 16 -8 h
+.0354 g 3396 1850 N -16 8 29 11 17 -9 h
+.0354 g 3367 1839 N -17 9 30 10 16 -8 h
+.035 g 3337 1828 N -16 8 29 12 17 -9 h
+.0341 g 3308 1816 N -17 9 30 11 16 -8 h
+.0336 g 3278 1805 N -16 8 29 11 17 -8 h
+.0337 g 3249 1795 N -17 8 30 11 16 -9 h
+.0337 g 3219 1784 N -16 9 29 10 17 -8 h
+.0337 g 3190 1774 N -17 8 30 11 16 -9 h
+.0338 g 3160 1763 N -16 9 29 10 17 -8 h
+.0338 g 3131 1753 N -17 8 30 11 16 -9 h
+.0338 g 3101 1742 N -16 9 29 10 17 -8 h
+.0338 g 3072 1732 N -17 8 30 11 16 -9 h
+.0339 g 3042 1721 N -16 9 29 10 17 -8 h
+.0339 g 3013 1711 N -17 8 30 11 16 -9 h
+.0339 g 2983 1700 N -16 9 29 10 17 -8 h
+.0339 g 2954 1689 N -17 8 30 11 16 -8 h
+.034 g 2924 1679 N -16 8 29 10 17 -8 h
+.034 g 2895 1668 N -17 8 30 11 16 -8 h
+.034 g 2865 1658 N -16 8 29 11 17 -9 h
+.034 g 2836 1647 N -17 9 30 10 16 -8 h
+.0328 g 2806 1634 N -16 8 29 14 17 -9 h
+.0303 g 2777 1620 N -17 9 30 14 16 -9 h
+.0291 g 2747 1609 N -16 9 29 10 17 -8 h
+.0291 g 2718 1599 N -17 8 30 11 16 -9 h
+.0291 g 2688 1588 N -16 9 29 10 17 -8 h
+.0292 g 2659 1578 N -17 8 30 11 16 -9 h
+.0272 g 2629 1562 N -16 9 29 15 17 -8 h
+.0233 g 2600 1546 N -17 8 30 16 16 -8 h
+.0214 g 2570 1536 N -16 8 29 11 17 -9 h
+0 g 5477 2535 N -16 9 29 10 17 -8 h
+0 g 5448 2525 N -17 8 30 11 16 -9 h
+0 g 5418 2514 N -16 9 29 10 17 -8 h
+0 g 5389 2503 N -17 8 30 11 16 -8 h
+0 g 5359 2493 N -16 8 29 11 17 -9 h
+0 g 5330 2482 N -17 9 30 10 16 -8 h
+0 g 5300 2472 N -16 8 29 11 17 -9 h
+0 g 5271 2461 N -17 9 30 10 16 -8 h
+0 g 5241 2451 N -16 8 29 11 17 -9 h
+0 g 5212 2440 N -17 9 30 10 16 -8 h
+0 g 5182 2429 N -16 8 29 11 17 -8 h
+0 g 5153 2419 N -17 8 30 11 16 -9 h
+.0014 g 5123 2412 N -16 9 29 6 17 -8 h
+.0042 g 5094 2405 N -17 8 30 7 16 -8 h
+.0056 g 5064 2394 N -16 8 29 11 17 -8 h
+.0056 g 5035 2384 N -17 8 30 10 16 -8 h
+.0056 g 5005 2373 N -16 8 29 11 17 -8 h
+.0056 g 4976 2363 N -17 8 30 11 16 -9 h
+.007 g 4946 2356 N -16 9 29 7 17 -9 h
+.0098 g 4917 2349 N -17 9 30 7 16 -9 h
+.0112 g 4887 2338 N -16 9 29 10 17 -8 h
+.0112 g 4858 2328 N -17 8 30 11 16 -9 h
+.0112 g 4828 2317 N -16 9 29 10 17 -8 h
+.0112 g 4799 2307 N -17 8 30 11 16 -9 h
+.0123 g 4769 2299 N -16 9 29 8 17 -9 h
+.0144 g 4740 2291 N -17 9 30 7 16 -8 h
+.0155 g 4710 2281 N -16 8 29 11 17 -9 h
+.0155 g 4681 2270 N -17 9 30 10 16 -8 h
+.0155 g 4651 2259 N -16 8 29 11 17 -8 h
+.0155 g 4622 2249 N -17 8 30 11 16 -9 h
+.161 g 4592 2618 N -16 9 29 -370 17 -8 h
+.3803 g 4563 2801 N -17 8 30 -182 16 -9 h
+.4542 g 4533 2790 N -16 9 29 10 17 -8 h
+.4544 g 4504 2780 N -17 8 30 10 16 -8 h
+.4546 g 4474 2770 N -16 8 29 11 17 -9 h
+.4548 g 4445 2759 N -17 9 30 10 16 -8 h
+.6204 g 4415 3181 N -16 8 29 -422 17 -8 h
+.8643 g 4386 3375 N -17 8 30 -194 16 -8 h
+.9428 g 4356 3365 N -16 8 29 10 17 -8 h
+.943 g 4327 3355 N -17 8 30 10 16 -8 h
+.9432 g 4297 3345 N -16 8 29 11 17 -9 h
+.9435 g 4268 3334 N -17 9 30 10 16 -8 h
+.9469 g 4238 3332 N -16 8 29 2 17 -8 h
+.9533 g 4209 3330 N -17 8 30 2 16 -8 h
+.9567 g 4179 3320 N -16 8 29 10 17 -8 h
+.9569 g 4150 3310 N -17 8 30 11 16 -9 h
+.9571 g 4120 3299 N -16 9 29 10 17 -8 h
+.9574 g 4091 3289 N -17 8 30 10 16 -8 h
+.8858 g 4061 3091 N -16 8 29 198 17 -8 h
+.6763 g 4032 2721 N -17 8 30 371 16 -9 h
+.5387 g 4002 2710 N -16 9 29 10 17 -8 h
+.5389 g 3973 2700 N -17 8 30 10 16 -8 h
+.5391 g 3943 2690 N -16 8 29 11 17 -9 h
+.5393 g 3914 2680 N -17 9 30 10 16 -9 h
+.4713 g 3884 2491 N -16 9 29 188 17 -8 h
+.2785 g 3855 2155 N -17 8 30 337 16 -9 h
+.1539 g 3826 2144 N -16 9 29 10 16 -8 h
+.154 g 3796 2134 N -16 8 29 10 17 -8 h
+.1541 g 3767 2123 N -17 8 30 11 16 -8 h
+.1542 g 3737 2113 N -16 8 29 10 17 -8 h
+.1333 g 3708 2048 N -17 8 30 66 16 -9 h
+.0882 g 3678 1974 N -16 9 29 73 17 -8 h
+.064 g 3649 1963 N -17 8 30 11 16 -8 h
+.064 g 3619 1953 N -16 8 29 10 17 -8 h
+.0641 g 3590 1942 N -17 8 30 11 16 -8 h
+.0641 g 3560 1932 N -16 8 29 10 17 -8 h
+.0571 g 3531 1903 N -17 8 30 29 16 -8 h
+.0427 g 3501 1873 N -16 8 29 30 17 -8 h
+.0353 g 3472 1863 N -17 8 30 11 16 -9 h
+.0353 g 3442 1852 N -16 9 29 10 17 -8 h
+.0354 g 3413 1841 N -17 8 30 11 16 -8 h
+.0354 g 3383 1831 N -16 8 29 10 17 -8 h
+.035 g 3354 1819 N -17 8 30 12 16 -8 h
+.0341 g 3324 1808 N -16 8 29 12 17 -9 h
+.0336 g 3295 1797 N -17 9 30 10 16 -8 h
+.0337 g 3265 1786 N -16 8 29 11 17 -8 h
+.0337 g 3236 1776 N -17 8 30 10 16 -8 h
+.0337 g 3206 1765 N -16 8 29 11 17 -8 h
+.0338 g 3177 1755 N -17 8 30 11 16 -9 h
+.0338 g 3147 1744 N -16 9 29 10 17 -8 h
+.0338 g 3118 1734 N -17 8 30 11 16 -9 h
+.0338 g 3088 1723 N -16 9 29 10 17 -8 h
+.0339 g 3059 1713 N -17 8 30 11 16 -9 h
+.0339 g 3029 1702 N -16 9 29 10 17 -8 h
+.0339 g 3000 1692 N -17 8 30 11 16 -9 h
+.0339 g 2970 1681 N -16 9 29 10 17 -8 h
+.034 g 2941 1671 N -17 8 30 11 16 -9 h
+.034 g 2911 1660 N -16 9 29 10 17 -8 h
+.034 g 2882 1649 N -17 8 30 11 16 -8 h
+.034 g 2852 1639 N -16 8 29 10 17 -8 h
+.0328 g 2823 1625 N -17 8 30 14 16 -8 h
+.0303 g 2793 1611 N -16 8 29 14 17 -8 h
+.0291 g 2764 1601 N -17 8 30 11 16 -9 h
+.0291 g 2734 1590 N -16 9 29 10 17 -8 h
+.0291 g 2705 1580 N -17 8 30 11 16 -9 h
+.0292 g 2675 1569 N -16 9 29 10 17 -8 h
+.0272 g 2646 1554 N -17 8 30 16 16 -9 h
+.0233 g 2616 1538 N -16 9 29 16 17 -9 h
+.0214 g 2587 1527 N -17 9 30 10 16 -8 h
+0 g 5494 2527 N -17 8 30 11 16 -9 h
+0 g 5464 2516 N -16 9 29 10 17 -8 h
+0 g 5435 2506 N -17 8 30 11 16 -9 h
+0 g 5405 2495 N -16 9 29 10 17 -8 h
+0 g 5376 2484 N -17 8 30 11 16 -8 h
+0 g 5346 2474 N -16 8 29 11 17 -9 h
+0 g 5317 2463 N -17 9 30 10 16 -8 h
+0 g 5287 2453 N -16 8 29 11 17 -9 h
+0 g 5258 2442 N -17 9 30 10 16 -8 h
+0 g 5228 2432 N -16 8 29 11 17 -9 h
+0 g 5199 2421 N -17 9 30 10 16 -8 h
+0 g 5169 2410 N -16 8 29 11 17 -8 h
+.0008 g 5140 2404 N -17 8 30 10 16 -12 h
+.0025 g 5110 2397 N -16 12 29 10 17 -15 h
+.0033 g 5081 2386 N -17 15 30 10 16 -14 h
+.0033 g 5051 2376 N -16 14 29 11 17 -15 h
+.0033 g 5022 2365 N -17 15 30 11 16 -15 h
+.0033 g 4992 2354 N -16 15 29 10 17 -14 h
+.0041 g 4963 2347 N -17 14 30 10 16 -17 h
+.0057 g 4933 2340 N -16 17 29 10 17 -20 h
+.0065 g 4904 2330 N -17 20 30 11 16 -21 h
+.0065 g 4874 2319 N -16 21 29 10 17 -20 h
+.0065 g 4845 2309 N -17 20 30 11 16 -21 h
+.0065 g 4815 2298 N -16 21 29 10 17 -20 h
+.0072 g 4786 2290 N -17 20 30 10 16 -22 h
+.0084 g 4756 2283 N -16 22 29 10 17 -25 h
+.0091 g 4727 2272 N -17 25 30 11 16 -25 h
+.0091 g 4697 2262 N -16 25 29 11 17 -26 h
+.0091 g 4668 2251 N -17 26 30 10 16 -25 h
+.0091 g 4638 2240 N -16 25 29 11 17 -25 h
+.1004 g 4609 2610 N -17 25 30 -87 16 -308 h
+.2436 g 4579 2792 N -16 308 29 -67 17 -423 h
+.2955 g 4550 2782 N -17 423 30 10 16 -423 h
+.2957 g 4520 2772 N -16 423 29 11 17 -424 h
+.2958 g 4491 2761 N -17 424 30 10 16 -423 h
+.2959 g 4461 2751 N -16 423 29 10 17 -423 h
+.428 g 4432 3173 N -17 423 30 -246 16 -599 h
+.629 g 4402 3367 N -16 599 29 -146 17 -647 h
+.6982 g 4373 3357 N -17 647 30 11 16 -648 h
+.6984 g 4343 3347 N -16 648 29 10 17 -648 h
+.6986 g 4314 3336 N -17 648 30 10 16 -647 h
+.6988 g 4284 3326 N -16 647 29 11 17 -648 h
+.7019 g 4255 3324 N -17 648 30 3 16 -649 h
+.7077 g 4225 3322 N -16 649 29 4 17 -651 h
+.7108 g 4196 3312 N -17 651 30 10 16 -651 h
+.711 g 4166 3301 N -16 651 29 11 17 -651 h
+.7112 g 4137 3291 N -17 651 30 10 16 -651 h
+.7114 g 4107 3281 N -16 651 29 10 17 -651 h
+.6479 g 4078 3083 N -17 651 30 156 16 -609 h
+.4714 g 4048 2712 N -16 609 29 240 17 -478 h
+.3587 g 4019 2702 N -17 478 30 10 16 -478 h
+.3589 g 3989 2692 N -16 478 29 11 17 -479 h
+.3591 g 3960 2681 N -17 479 30 10 16 -478 h
+.3592 g 3930 2671 N -16 478 29 11 17 -479 h
+.309 g 3901 2483 N -17 479 30 95 16 -386 h
+.1757 g 3871 2146 N -16 386 29 119 17 -168 h
+.0927 g 3842 2136 N -17 168 29 10 17 -168 h
+.0928 g 3813 2126 N -17 168 30 11 16 -169 h
+.0929 g 3783 2115 N -16 169 29 10 17 -168 h
+.0929 g 3754 2105 N -17 168 30 11 16 -169 h
+.08 g 3724 2039 N -16 169 29 23 17 -126 h
+.0524 g 3695 1966 N -17 126 30 24 16 -77 h
+.0378 g 3665 1955 N -16 77 29 11 17 -77 h
+.0378 g 3636 1945 N -17 77 30 10 16 -77 h
+.0379 g 3606 1934 N -16 77 29 11 17 -77 h
+.0379 g 3577 1924 N -17 77 30 10 16 -77 h
+.0337 g 3547 1895 N -16 77 29 15 17 -63 h
+.0251 g 3518 1865 N -17 63 30 14 16 -47 h
+.0207 g 3488 1854 N -16 47 29 10 17 -46 h
+.0208 g 3459 1844 N -17 46 30 11 16 -47 h
+.0208 g 3429 1833 N -16 47 29 10 17 -46 h
+.0208 g 3400 1823 N -17 46 30 11 16 -47 h
+.0205 g 3370 1811 N -16 47 29 11 17 -46 h
+.02 g 3341 1799 N -17 46 30 11 16 -45 h
+.0198 g 3311 1789 N -16 45 29 10 17 -45 h
+.0198 g 3282 1778 N -17 45 30 11 16 -45 h
+.0198 g 3252 1768 N -16 45 29 10 17 -45 h
+.0198 g 3223 1757 N -17 45 30 11 16 -45 h
+.0198 g 3193 1746 N -16 45 29 10 17 -44 h
+.0198 g 3164 1736 N -17 44 30 11 16 -45 h
+.0199 g 3134 1725 N -16 45 29 11 17 -45 h
+.0199 g 3105 1715 N -17 45 30 10 16 -45 h
+.0199 g 3075 1704 N -16 45 29 11 17 -45 h
+.0199 g 3046 1694 N -17 45 30 10 16 -45 h
+.0199 g 3016 1683 N -16 45 29 11 17 -45 h
+.0199 g 2987 1673 N -17 45 30 10 16 -45 h
+.0199 g 2957 1662 N -16 45 29 11 17 -45 h
+.02 g 2928 1652 N -17 45 30 10 16 -45 h
+.02 g 2898 1641 N -16 45 29 11 17 -45 h
+.02 g 2869 1631 N -17 45 30 11 16 -46 h
+.0193 g 2839 1617 N -16 46 29 11 17 -43 h
+.0178 g 2810 1603 N -17 43 30 11 16 -40 h
+.0171 g 2780 1592 N -16 40 29 10 17 -39 h
+.0171 g 2751 1582 N -17 39 30 11 16 -40 h
+.0171 g 2721 1571 N -16 40 29 11 17 -40 h
+.0171 g 2692 1561 N -17 40 30 10 16 -40 h
+.016 g 2662 1545 N -16 40 29 12 17 -36 h
+.0137 g 2633 1529 N -17 36 30 11 16 -31 h
+.0125 g 2603 1519 N -16 31 29 11 17 -32 h
+0 g 5510 2518 N -16 9 29 10 17 -8 h
+0 g 5481 2508 N -17 8 30 11 16 -9 h
+0 g 5451 2497 N -16 9 29 10 17 -8 h
+0 g 5422 2487 N -17 8 30 11 16 -9 h
+0 g 5392 2476 N -16 9 29 10 17 -8 h
+0 g 5363 2465 N -17 8 30 11 16 -8 h
+0 g 5333 2455 N -16 8 29 11 17 -9 h
+0 g 5304 2444 N -17 9 30 10 16 -8 h
+0 g 5274 2434 N -16 8 29 11 17 -9 h
+0 g 5245 2423 N -17 9 30 10 16 -8 h
+0 g 5215 2413 N -16 8 29 11 17 -9 h
+0 g 5186 2402 N -17 9 30 10 16 -8 h
+.0001 g 5156 2392 N -16 8 29 11 17 -9 h
+.0004 g 5127 2382 N -17 9 30 10 16 -9 h
+.0005 g 5097 2372 N -16 9 29 11 17 -10 h
+.0005 g 5068 2361 N -17 10 30 11 16 -10 h
+.0005 g 5038 2350 N -16 10 29 10 17 -9 h
+.0005 g 5009 2340 N -17 9 30 11 16 -10 h
+.0006 g 4979 2330 N -16 10 29 10 17 -10 h
+.0008 g 4950 2320 N -17 10 30 11 16 -11 h
+.0009 g 4920 2309 N -16 11 29 10 17 -10 h
+.0009 g 4891 2299 N -17 10 30 11 16 -11 h
+.0009 g 4861 2288 N -16 11 29 11 17 -11 h
+.0009 g 4832 2278 N -17 11 30 10 16 -11 h
+.001 g 4802 2268 N -16 11 29 11 17 -12 h
+.0012 g 4773 2258 N -17 12 30 10 16 -12 h
+.0013 g 4743 2247 N -16 12 29 11 17 -12 h
+.0013 g 4714 2236 N -17 12 30 10 16 -11 h
+.0013 g 4684 2226 N -16 11 29 11 17 -12 h
+.0013 g 4655 2215 N -17 12 30 11 16 -12 h
+.0199 g 4625 2302 N -16 12 29 10 17 -109 h
+.0534 g 4596 2369 N -17 109 30 11 16 -187 h
+.0684 g 4566 2359 N -16 187 29 10 17 -187 h
+.0684 g 4537 2348 N -17 187 30 11 16 -187 h
+.0685 g 4507 2338 N -16 187 29 10 17 -187 h
+.0685 g 4478 2328 N -17 187 30 11 16 -188 h
+.1177 g 4448 2574 N -16 188 29 11 17 -445 h
+.1968 g 4419 2720 N -17 445 30 10 16 -601 h
+.2268 g 4389 2709 N -16 601 29 11 17 -601 h
+.2269 g 4360 2699 N -17 601 30 10 16 -601 h
+.227 g 4330 2689 N -16 601 29 11 17 -602 h
+.2271 g 4301 2678 N -17 602 30 10 16 -601 h
+.2284 g 4271 2675 N -16 601 29 11 17 -609 h
+.2311 g 4242 2671 N -17 609 30 11 16 -616 h
+.2324 g 4212 2661 N -16 616 29 10 17 -616 h
+.2325 g 4183 2650 N -17 616 30 11 16 -616 h
+.2326 g 4153 2640 N -16 616 29 10 17 -616 h
+.2327 g 4124 2630 N -17 616 30 11 16 -617 h
+.205 g 4094 2474 N -16 617 29 10 17 -471 h
+.1333 g 4065 2234 N -17 471 30 11 16 -242 h
+.0894 g 4035 2224 N -16 242 29 11 17 -243 h
+.0895 g 4006 2213 N -17 243 30 10 16 -242 h
+.0895 g 3976 2203 N -16 242 29 11 17 -243 h
+.0896 g 3947 2192 N -17 243 30 10 16 -242 h
+.0733 g 3917 2097 N -16 242 29 11 17 -158 h
+.0364 g 3888 1978 N -17 158 30 10 16 -49 h
+.0158 g 3859 1968 N -16 49 29 11 16 -50 h
+.0158 g 3829 1957 N -16 50 29 11 17 -50 h
+.0158 g 3800 1947 N -17 50 30 10 16 -50 h
+.0158 g 3770 1936 N -16 50 29 11 17 -50 h
+.0134 g 3741 1913 N -17 50 30 10 16 -37 h
+.0084 g 3711 1889 N -16 37 29 11 17 -24 h
+.0058 g 3682 1878 N -17 24 30 10 16 -23 h
+.0058 g 3652 1868 N -16 23 29 11 17 -24 h
+.0058 g 3623 1857 N -17 24 30 11 16 -24 h
+.0058 g 3593 1847 N -16 24 29 10 17 -24 h
+.0051 g 3564 1832 N -17 24 30 11 16 -20 h
+.0038 g 3534 1818 N -16 20 29 10 17 -16 h
+.0031 g 3505 1808 N -17 16 30 11 16 -17 h
+.0031 g 3475 1797 N -16 17 29 10 17 -16 h
+.0031 g 3446 1787 N -17 16 30 11 16 -17 h
+.0031 g 3416 1776 N -16 17 29 10 17 -16 h
+.0031 g 3387 1765 N -17 16 30 11 16 -16 h
+.003 g 3357 1754 N -16 16 29 11 17 -16 h
+.0029 g 3328 1744 N -17 16 30 10 16 -16 h
+.0029 g 3298 1733 N -16 16 29 11 17 -16 h
+.0029 g 3269 1723 N -17 16 30 10 16 -16 h
+.0029 g 3239 1712 N -16 16 29 11 17 -16 h
+.0029 g 3210 1702 N -17 16 30 10 16 -16 h
+.0029 g 3180 1691 N -16 16 29 11 17 -16 h
+.0029 g 3151 1680 N -17 16 30 11 16 -16 h
+.003 g 3121 1670 N -16 16 29 10 17 -16 h
+.003 g 3092 1659 N -17 16 30 11 16 -16 h
+.003 g 3062 1649 N -16 16 29 10 17 -16 h
+.003 g 3033 1638 N -17 16 30 11 16 -16 h
+.003 g 3003 1628 N -16 16 29 10 17 -16 h
+.003 g 2974 1617 N -17 16 30 11 16 -16 h
+.003 g 2944 1607 N -16 16 29 11 17 -17 h
+.003 g 2915 1596 N -17 17 30 10 16 -16 h
+.003 g 2885 1585 N -16 16 29 11 17 -16 h
+.0029 g 2856 1574 N -17 16 30 10 16 -15 h
+.0026 g 2826 1563 N -16 15 29 11 17 -15 h
+.0025 g 2797 1553 N -17 15 30 10 16 -15 h
+.0025 g 2767 1542 N -16 15 29 11 17 -15 h
+.0025 g 2738 1531 N -17 15 30 11 16 -15 h
+.0025 g 2708 1521 N -16 15 29 10 17 -15 h
+.0024 g 2679 1509 N -17 15 30 11 16 -14 h
+.002 g 2649 1498 N -16 14 29 10 17 -13 h
+.0018 g 2620 1487 N -17 13 30 11 16 -13 h
+0 g 5527 2510 N -17 8 30 10 16 -8 h
+0 g 5497 2499 N -16 8 29 11 17 -8 h
+0 g 5468 2489 N -17 8 30 11 16 -9 h
+0 g 5438 2478 N -16 9 29 10 17 -8 h
+0 g 5409 2468 N -17 8 30 11 16 -9 h
+0 g 5379 2457 N -16 9 29 10 17 -8 h
+0 g 5350 2446 N -17 8 30 11 16 -8 h
+0 g 5320 2436 N -16 8 29 10 17 -8 h
+0 g 5291 2425 N -17 8 30 11 16 -8 h
+0 g 5261 2415 N -16 8 29 11 17 -9 h
+0 g 5232 2404 N -17 9 30 10 16 -8 h
+0 g 5202 2394 N -16 8 29 11 17 -9 h
+0 g 5173 2383 N -17 9 30 10 16 -8 h
+0 g 5143 2373 N -16 8 29 11 17 -9 h
+0 g 5114 2362 N -17 9 30 10 16 -8 h
+0 g 5084 2351 N -16 8 29 11 17 -8 h
+0 g 5055 2341 N -17 8 30 11 16 -9 h
+0 g 5025 2330 N -16 9 29 10 17 -8 h
+0 g 4996 2320 N -17 8 30 11 16 -9 h
+0 g 4966 2309 N -16 9 29 10 17 -8 h
+0 g 4937 2299 N -17 8 30 11 16 -9 h
+0 g 4907 2288 N -16 9 29 10 17 -8 h
+0 g 4878 2277 N -17 8 30 11 16 -8 h
+0 g 4848 2267 N -16 8 29 11 17 -9 h
+0 g 4819 2256 N -17 9 30 10 16 -8 h
+0 g 4789 2246 N -16 8 29 11 17 -9 h
+0 g 4760 2235 N -17 9 30 10 16 -8 h
+0 g 4730 2225 N -16 8 29 11 17 -9 h
+0 g 4701 2214 N -17 9 30 10 16 -8 h
+0 g 4671 2203 N -16 8 29 11 17 -8 h
+0 g 4642 2193 N -17 8 30 11 16 -9 h
+0 g 4612 2182 N -16 9 29 10 17 -8 h
+0 g 4583 2172 N -17 8 30 11 16 -9 h
+0 g 4553 2161 N -16 9 29 10 17 -8 h
+0 g 4524 2151 N -17 8 30 11 16 -9 h
+0 g 4494 2140 N -16 9 29 10 17 -8 h
+0 g 4465 2129 N -17 8 30 11 16 -8 h
+0 g 4435 2119 N -16 8 29 11 17 -9 h
+0 g 4406 2108 N -17 9 30 10 16 -8 h
+0 g 4376 2098 N -16 8 29 11 17 -9 h
+0 g 4347 2087 N -17 9 30 10 16 -8 h
+0 g 4317 2077 N -16 8 29 11 17 -9 h
+0 g 4288 2066 N -17 9 30 10 16 -8 h
+0 g 4258 2055 N -16 8 29 11 17 -8 h
+0 g 4229 2045 N -17 8 30 11 16 -9 h
+0 g 4199 2034 N -16 9 29 10 17 -8 h
+0 g 4170 2024 N -17 8 30 11 16 -9 h
+0 g 4140 2013 N -16 9 29 10 17 -8 h
+0 g 4111 2003 N -17 8 30 11 16 -9 h
+0 g 4081 1992 N -16 9 29 10 17 -8 h
+0 g 4052 1981 N -17 8 30 11 16 -8 h
+0 g 4022 1971 N -16 8 29 11 17 -9 h
+0 g 3993 1960 N -17 9 30 10 16 -8 h
+0 g 3963 1950 N -16 8 29 11 17 -9 h
+0 g 3934 1939 N -17 9 30 10 16 -8 h
+0 g 3904 1929 N -16 8 29 11 17 -9 h
+0 g 3875 1918 N -17 9 29 10 17 -8 h
+0 g 3846 1907 N -17 8 30 11 16 -8 h
+0 g 3816 1897 N -16 8 29 10 17 -8 h
+0 g 3787 1886 N -17 8 30 11 16 -8 h
+0 g 3757 1876 N -16 8 29 11 17 -9 h
+0 g 3728 1865 N -17 9 30 10 16 -8 h
+0 g 3698 1855 N -16 8 29 11 17 -9 h
+0 g 3669 1844 N -17 9 30 10 16 -8 h
+0 g 3639 1833 N -16 8 29 11 17 -8 h
+0 g 3610 1823 N -17 8 30 10 16 -8 h
+0 g 3580 1812 N -16 8 29 11 17 -8 h
+0 g 3551 1802 N -17 8 30 11 16 -9 h
+0 g 3521 1791 N -16 9 29 10 17 -8 h
+0 g 3492 1781 N -17 8 30 11 16 -9 h
+0 g 3462 1770 N -16 9 29 10 17 -8 h
+0 g 3433 1760 N -17 8 30 11 16 -9 h
+0 g 3403 1749 N -16 9 29 10 17 -8 h
+0 g 3374 1738 N -17 8 30 11 16 -8 h
+0 g 3344 1728 N -16 8 29 11 17 -9 h
+0 g 3315 1717 N -17 9 30 10 16 -8 h
+0 g 3285 1707 N -16 8 29 11 17 -9 h
+0 g 3256 1696 N -17 9 30 10 16 -8 h
+0 g 3226 1686 N -16 8 29 11 17 -9 h
+0 g 3197 1675 N -17 9 30 10 16 -8 h
+0 g 3167 1664 N -16 8 29 11 17 -8 h
+0 g 3138 1654 N -17 8 30 11 16 -9 h
+0 g 3108 1643 N -16 9 29 10 17 -8 h
+0 g 3079 1633 N -17 8 30 11 16 -9 h
+0 g 3049 1622 N -16 9 29 10 17 -8 h
+0 g 3020 1612 N -17 8 30 11 16 -9 h
+0 g 2990 1601 N -16 9 29 10 17 -8 h
+0 g 2961 1590 N -17 8 30 11 16 -8 h
+0 g 2931 1580 N -16 8 29 11 17 -9 h
+0 g 2902 1569 N -17 9 30 10 16 -8 h
+0 g 2872 1559 N -16 8 29 11 17 -9 h
+0 g 2843 1548 N -17 9 30 10 16 -8 h
+0 g 2813 1538 N -16 8 29 11 17 -9 h
+0 g 2784 1527 N -17 9 30 10 16 -8 h
+0 g 2754 1516 N -16 8 29 11 17 -8 h
+0 g 2725 1506 N -17 8 30 11 16 -9 h
+0 g 2695 1495 N -16 9 29 10 17 -8 h
+0 g 2666 1485 N -17 8 30 11 16 -9 h
+0 g 2636 1474 N -16 9 29 10 17 -8 h
+0 g 5543 2502 N -16 8 29 11 17 -9 h
+0 g 5514 2491 N -17 9 30 10 16 -8 h
+0 g 5484 2480 N -16 8 29 11 17 -8 h
+0 g 5455 2470 N -17 8 30 11 16 -9 h
+0 g 5425 2459 N -16 9 29 10 17 -8 h
+0 g 5396 2449 N -17 8 30 11 16 -9 h
+0 g 5366 2438 N -16 9 29 10 17 -8 h
+0 g 5337 2428 N -17 8 30 11 16 -9 h
+0 g 5307 2417 N -16 9 29 10 17 -8 h
+0 g 5278 2406 N -17 8 30 11 16 -8 h
+0 g 5248 2396 N -16 8 29 11 17 -9 h
+0 g 5219 2385 N -17 9 30 10 16 -8 h
+0 g 5189 2375 N -16 8 29 11 17 -9 h
+0 g 5160 2364 N -17 9 30 10 16 -8 h
+0 g 5130 2354 N -16 8 29 11 17 -9 h
+0 g 5101 2343 N -17 9 30 10 16 -8 h
+0 g 5071 2332 N -16 8 29 11 17 -8 h
+0 g 5042 2322 N -17 8 30 11 16 -9 h
+0 g 5012 2311 N -16 9 29 10 17 -8 h
+0 g 4983 2301 N -17 8 30 11 16 -9 h
+0 g 4953 2290 N -16 9 29 10 17 -8 h
+0 g 4924 2280 N -17 8 30 11 16 -9 h
+0 g 4894 2269 N -16 9 29 10 17 -8 h
+0 g 4865 2258 N -17 8 30 11 16 -8 h
+0 g 4835 2248 N -16 8 29 11 17 -9 h
+0 g 4806 2237 N -17 9 30 10 16 -8 h
+0 g 4776 2227 N -16 8 29 11 17 -9 h
+0 g 4747 2216 N -17 9 30 10 16 -8 h
+0 g 4717 2206 N -16 8 29 11 17 -9 h
+0 g 4688 2195 N -17 9 30 10 16 -8 h
+0 g 4658 2184 N -16 8 29 11 17 -8 h
+0 g 4629 2174 N -17 8 30 11 16 -9 h
+0 g 4599 2163 N -16 9 29 10 17 -8 h
+0 g 4570 2153 N -17 8 30 11 16 -9 h
+0 g 4540 2142 N -16 9 29 10 17 -8 h
+0 g 4511 2132 N -17 8 30 11 16 -9 h
+0 g 4481 2121 N -16 9 29 10 17 -8 h
+0 g 4452 2110 N -17 8 30 11 16 -8 h
+0 g 4422 2100 N -16 8 29 11 17 -9 h
+0 g 4393 2089 N -17 9 30 10 16 -8 h
+0 g 4363 2079 N -16 8 29 11 17 -9 h
+0 g 4334 2068 N -17 9 30 10 16 -8 h
+0 g 4304 2058 N -16 8 29 11 17 -9 h
+0 g 4275 2047 N -17 9 30 10 16 -8 h
+0 g 4245 2036 N -16 8 29 11 17 -8 h
+0 g 4216 2026 N -17 8 30 10 16 -8 h
+0 g 4186 2015 N -16 8 29 11 17 -8 h
+0 g 4157 2005 N -17 8 30 11 16 -9 h
+0 g 4127 1994 N -16 9 29 10 17 -8 h
+0 g 4098 1984 N -17 8 30 11 16 -9 h
+0 g 4068 1973 N -16 9 29 10 17 -8 h
+0 g 4039 1962 N -17 8 30 11 16 -8 h
+0 g 4009 1952 N -16 8 29 10 17 -8 h
+0 g 3980 1941 N -17 8 30 11 16 -8 h
+0 g 3950 1931 N -16 8 29 11 17 -9 h
+0 g 3921 1920 N -17 9 30 10 16 -8 h
+0 g 3892 1910 N -16 8 29 11 16 -9 h
+0 g 3862 1899 N -16 9 29 10 17 -8 h
+0 g 3833 1889 N -17 8 30 11 16 -9 h
+0 g 3803 1878 N -16 9 29 10 17 -8 h
+0 g 3774 1867 N -17 8 30 11 16 -8 h
+0 g 3744 1857 N -16 8 29 11 17 -9 h
+0 g 3715 1846 N -17 9 30 10 16 -8 h
+0 g 3685 1836 N -16 8 29 11 17 -9 h
+0 g 3656 1825 N -17 9 30 10 16 -8 h
+0 g 3626 1815 N -16 8 29 11 17 -9 h
+0 g 3597 1804 N -17 9 30 10 16 -8 h
+0 g 3567 1793 N -16 8 29 11 17 -8 h
+0 g 3538 1783 N -17 8 30 11 16 -9 h
+0 g 3508 1772 N -16 9 29 10 17 -8 h
+0 g 3479 1762 N -17 8 30 11 16 -9 h
+0 g 3449 1751 N -16 9 29 10 17 -8 h
+0 g 3420 1741 N -17 8 30 11 16 -9 h
+0 g 3390 1730 N -16 9 29 10 17 -8 h
+0 g 3361 1719 N -17 8 30 11 16 -8 h
+0 g 3331 1709 N -16 8 29 11 17 -9 h
+0 g 3302 1698 N -17 9 30 10 16 -8 h
+0 g 3272 1688 N -16 8 29 11 17 -9 h
+0 g 3243 1677 N -17 9 30 10 16 -8 h
+0 g 3213 1667 N -16 8 29 11 17 -9 h
+0 g 3184 1656 N -17 9 30 10 16 -8 h
+0 g 3154 1645 N -16 8 29 11 17 -8 h
+0 g 3125 1635 N -17 8 30 11 16 -9 h
+0 g 3095 1624 N -16 9 29 10 17 -8 h
+0 g 3066 1614 N -17 8 30 11 16 -9 h
+0 g 3036 1603 N -16 9 29 10 17 -8 h
+0 g 3007 1593 N -17 8 30 11 16 -9 h
+0 g 2977 1582 N -16 9 29 10 17 -8 h
+0 g 2948 1571 N -17 8 30 11 16 -8 h
+0 g 2918 1561 N -16 8 29 11 17 -9 h
+0 g 2889 1550 N -17 9 30 10 16 -8 h
+0 g 2859 1540 N -16 8 29 11 17 -9 h
+0 g 2830 1529 N -17 9 30 10 16 -8 h
+0 g 2800 1519 N -16 8 29 11 17 -9 h
+0 g 2771 1508 N -17 9 30 10 16 -8 h
+0 g 2741 1497 N -16 8 29 11 17 -8 h
+0 g 2712 1487 N -17 8 30 11 16 -9 h
+0 g 2682 1476 N -16 9 29 10 17 -8 h
+0 g 2653 1466 N -17 8 30 11 16 -9 h
+0 g 5560 2493 N -17 9 30 10 16 -8 h
+0 g 5530 2483 N -16 8 29 11 17 -9 h
+0 g 5501 2472 N -17 9 30 10 16 -8 h
+0 g 5471 2461 N -16 8 29 11 17 -8 h
+0 g 5442 2451 N -17 8 30 11 16 -9 h
+0 g 5412 2440 N -16 9 29 10 17 -8 h
+0 g 5383 2430 N -17 8 30 11 16 -9 h
+0 g 5353 2419 N -16 9 29 10 17 -8 h
+0 g 5324 2409 N -17 8 30 11 16 -9 h
+0 g 5294 2398 N -16 9 29 10 17 -8 h
+0 g 5265 2387 N -17 8 30 11 16 -8 h
+0 g 5235 2377 N -16 8 29 11 17 -9 h
+.0005 g 5206 2366 N -17 9 30 8 16 -6 h
+.0014 g 5176 2356 N -16 6 29 8 17 -4 h
+.0019 g 5147 2345 N -17 4 30 10 16 -3 h
+.0019 g 5117 2335 N -16 3 29 11 17 -4 h
+.0019 g 5088 2324 N -17 4 30 10 16 -3 h
+.0019 g 5058 2313 N -16 3 29 11 17 -3 h
+.0023 g 5029 2303 N -17 3 30 8 16 -1 h
+.0033 g 4999 2292 N -16 1 29 8 17 2 h
+.0037 g 4970 2282 N -17 -2 30 11 16 1 h
+.0037 g 4940 2271 N -16 -1 29 10 17 2 h
+.0038 g 4911 2261 N -17 -2 30 11 16 1 h
+.0038 g 4881 2250 N -16 -1 29 11 17 1 h
+.0041 g 4852 2239 N -17 -1 30 8 16 4 h
+.0048 g 4822 2229 N -16 -4 29 9 17 5 h
+.0052 g 4793 2218 N -17 -5 30 10 16 6 h
+.0052 g 4763 2208 N -16 -6 29 11 17 5 h
+.0052 g 4734 2197 N -17 -5 30 11 16 5 h
+.0052 g 4704 2187 N -16 -5 29 10 17 5 h
+.061 g 4675 2176 N -17 -5 30 -281 16 297 h
+.149 g 4645 2165 N -16 -297 29 -157 17 465 h
+.1812 g 4616 2155 N -17 -465 30 10 16 465 h
+.1813 g 4586 2144 N -16 -465 29 10 17 466 h
+.1814 g 4557 2134 N -17 -466 30 11 16 465 h
+.1815 g 4527 2123 N -16 -465 29 10 17 466 h
+.2588 g 4498 2113 N -17 -466 30 -393 16 869 h
+.3741 g 4468 2102 N -16 -869 29 -188 17 1068 h
+.4121 g 4439 2091 N -17 -1068 30 10 16 1069 h
+.4123 g 4409 2081 N -16 -1069 29 10 17 1069 h
+.4124 g 4380 2070 N -17 -1069 30 10 16 1070 h
+.4125 g 4350 2060 N -16 -1070 29 11 17 1069 h
+.4142 g 4321 2049 N -17 -1069 30 2 16 1078 h
+.4173 g 4291 2039 N -16 -1078 29 2 17 1086 h
+.4189 g 4262 2028 N -17 -1086 30 11 16 1086 h
+.4191 g 4232 2018 N -16 -1086 29 10 17 1086 h
+.4192 g 4203 2007 N -17 -1086 30 10 16 1087 h
+.4193 g 4173 1996 N -16 -1087 29 10 17 1088 h
+.3845 g 4144 1986 N -17 -1088 30 193 16 905 h
+.2846 g 4114 1975 N -16 -905 29 351 17 565 h
+.2195 g 4085 1965 N -17 -565 30 10 16 565 h
+.2196 g 4055 1954 N -16 -565 29 10 17 566 h
+.2197 g 4026 1944 N -17 -566 30 11 16 565 h
+.2198 g 3996 1933 N -16 -565 29 10 17 566 h
+.1892 g 3967 1922 N -17 -566 30 171 16 406 h
+.1069 g 3937 1912 N -16 -406 29 280 17 136 h
+.0553 g 3908 1901 N -17 -136 30 11 16 136 h
+.0553 g 3879 1891 N -16 -136 29 10 16 136 h
+.0554 g 3849 1880 N -16 -136 29 11 17 136 h
+.0554 g 3820 1870 N -17 -136 30 10 16 136 h
+.0475 g 3790 1859 N -16 -136 29 52 17 95 h
+.0308 g 3761 1848 N -17 -95 30 56 16 50 h
+.022 g 3731 1838 N -16 -50 29 11 17 49 h
+.0221 g 3702 1827 N -17 -49 30 10 16 50 h
+.0221 g 3672 1817 N -16 -50 29 11 17 49 h
+.0221 g 3643 1806 N -17 -49 30 11 16 49 h
+.0196 g 3613 1796 N -16 -49 29 23 17 36 h
+.0146 g 3584 1785 N -17 -36 30 24 16 23 h
+.012 g 3554 1774 N -16 -23 29 11 17 23 h
+.012 g 3525 1764 N -17 -23 30 10 16 23 h
+.012 g 3495 1753 N -16 -23 29 11 17 23 h
+.012 g 3466 1743 N -17 -23 30 10 16 23 h
+.0119 g 3436 1732 N -16 -23 29 12 17 22 h
+.0116 g 3407 1722 N -17 -22 30 11 16 21 h
+.0114 g 3377 1711 N -16 -21 29 11 17 21 h
+.0114 g 3348 1700 N -17 -21 30 10 16 22 h
+.0114 g 3318 1690 N -16 -22 29 11 17 21 h
+.0114 g 3289 1679 N -17 -21 30 10 16 22 h
+.0115 g 3259 1669 N -16 -22 29 11 17 21 h
+.0115 g 3230 1658 N -17 -21 30 10 16 22 h
+.0115 g 3200 1648 N -16 -22 29 11 17 21 h
+.0115 g 3171 1637 N -17 -21 30 10 16 22 h
+.0115 g 3141 1626 N -16 -22 29 11 17 22 h
+.0115 g 3112 1616 N -17 -22 30 10 16 22 h
+.0115 g 3082 1605 N -16 -22 29 11 17 22 h
+.0115 g 3053 1595 N -17 -22 30 11 16 21 h
+.0115 g 3023 1584 N -16 -21 29 10 17 22 h
+.0115 g 2994 1574 N -17 -22 30 11 16 21 h
+.0115 g 2964 1563 N -16 -21 29 10 17 22 h
+.0116 g 2935 1552 N -17 -22 30 11 16 22 h
+.0111 g 2905 1542 N -16 -22 29 13 17 19 h
+.0103 g 2876 1531 N -17 -19 30 12 16 18 h
+.0098 g 2846 1521 N -16 -18 29 11 17 17 h
+.0099 g 2817 1510 N -17 -17 30 10 16 18 h
+.0099 g 2787 1500 N -16 -18 29 11 17 17 h
+.0099 g 2758 1489 N -17 -17 30 11 16 17 h
+.0092 g 2728 1478 N -16 -17 29 14 17 14 h
+.0079 g 2699 1468 N -17 -14 30 14 16 10 h
+.0072 g 2669 1457 N -16 -10 29 10 17 11 h
+0 g 5576 2485 N -16 8 29 11 17 -9 h
+0 g 5547 2474 N -17 9 30 10 16 -8 h
+0 g 5517 2464 N -16 8 29 11 17 -9 h
+0 g 5488 2453 N -17 9 30 10 16 -8 h
+0 g 5458 2442 N -16 8 29 11 17 -8 h
+0 g 5429 2432 N -17 8 30 11 16 -9 h
+0 g 5399 2421 N -16 9 29 10 17 -8 h
+0 g 5370 2411 N -17 8 30 11 16 -9 h
+0 g 5340 2400 N -16 9 29 10 17 -8 h
+0 g 5311 2390 N -17 8 30 11 16 -9 h
+0 g 5281 2379 N -16 9 29 10 17 -8 h
+0 g 5252 2368 N -17 8 30 11 16 -8 h
+.0012 g 5222 2360 N -16 8 29 7 17 -7 h
+.0035 g 5193 2352 N -17 7 30 7 16 -6 h
+.0047 g 5163 2342 N -16 6 29 10 17 -6 h
+.0047 g 5134 2331 N -17 6 30 11 16 -6 h
+.0047 g 5104 2321 N -16 6 29 10 17 -6 h
+.0047 g 5075 2310 N -17 6 30 11 16 -6 h
+.0059 g 5045 2302 N -16 6 29 7 17 -5 h
+.0082 g 5016 2294 N -17 5 30 7 16 -4 h
+.0093 g 4986 2283 N -16 4 29 10 17 -3 h
+.0093 g 4957 2273 N -17 3 30 11 16 -4 h
+.0093 g 4927 2262 N -16 4 29 11 17 -4 h
+.0094 g 4898 2251 N -17 4 30 10 16 -3 h
+.0103 g 4868 2243 N -16 3 29 8 17 -3 h
+.012 g 4839 2234 N -17 3 30 8 16 -2 h
+.0129 g 4809 2224 N -16 2 29 10 17 -2 h
+.013 g 4780 2213 N -17 2 30 11 16 -2 h
+.013 g 4750 2202 N -16 2 29 10 17 -1 h
+.013 g 4721 2192 N -17 1 30 11 16 -2 h
+.1415 g 4691 2473 N -16 2 29 -370 17 87 h
+.3392 g 4662 2630 N -17 -87 30 -182 16 112 h
+.4083 g 4632 2620 N -16 -112 29 10 17 112 h
+.4085 g 4603 2610 N -17 -112 30 11 16 111 h
+.4087 g 4573 2599 N -16 -111 29 10 17 112 h
+.4089 g 4544 2589 N -17 -112 30 10 16 112 h
+.569 g 4514 2982 N -16 -112 29 -422 17 141 h
+.8062 g 4485 3170 N -17 -141 30 -194 16 147 h
+.8835 g 4455 3160 N -16 -147 29 11 17 146 h
+.8838 g 4426 3150 N -17 -146 30 10 16 146 h
+.884 g 4396 3140 N -16 -146 29 10 17 146 h
+.8842 g 4367 3129 N -17 -146 30 10 16 147 h
+.8876 g 4337 3127 N -16 -147 29 2 17 147 h
+.894 g 4308 3125 N -17 -147 30 3 16 146 h
+.8973 g 4278 3114 N -16 -146 29 10 17 147 h
+.8975 g 4249 3104 N -17 -147 30 10 16 147 h
+.8978 g 4219 3094 N -16 -147 29 10 17 147 h
+.898 g 4190 3084 N -17 -147 30 11 16 146 h
+.8274 g 4160 2891 N -16 -146 29 197 17 142 h
+.6227 g 4131 2540 N -17 -142 30 371 16 122 h
+.4888 g 4101 2530 N -16 -122 29 10 17 122 h
+.489 g 4072 2520 N -17 -122 30 11 16 121 h
+.4892 g 4042 2509 N -16 -121 29 10 17 122 h
+.4895 g 4013 2499 N -17 -122 30 10 16 122 h
+.4248 g 3983 2328 N -16 -122 29 189 17 104 h
+.2461 g 3954 2048 N -17 -104 30 336 16 48 h
+.1322 g 3924 2037 N -16 -48 29 10 17 49 h
+.1323 g 3895 2027 N -17 -49 29 11 17 48 h
+.1324 g 3866 2016 N -17 -48 30 10 16 49 h
+.1325 g 3836 2006 N -16 -49 29 11 17 48 h
+.1142 g 3807 1954 N -17 -48 30 65 16 35 h
+.0749 g 3777 1898 N -16 -35 29 74 17 17 h
+.054 g 3748 1887 N -17 -17 30 10 16 18 h
+.0541 g 3718 1877 N -16 -18 29 11 17 17 h
+.0541 g 3689 1866 N -17 -17 30 10 16 18 h
+.0542 g 3659 1855 N -16 -18 29 11 17 18 h
+.0482 g 3630 1832 N -17 -18 30 29 16 12 h
+.0359 g 3600 1808 N -16 -12 29 30 17 6 h
+.0296 g 3571 1797 N -17 -6 30 10 16 7 h
+.0297 g 3541 1787 N -16 -7 29 11 17 6 h
+.0297 g 3512 1776 N -17 -6 30 10 16 7 h
+.0297 g 3482 1766 N -16 -7 29 11 17 6 h
+.0294 g 3453 1754 N -17 -6 30 12 16 6 h
+.0286 g 3423 1743 N -16 -6 29 11 17 6 h
+.0282 g 3394 1732 N -17 -6 30 11 16 6 h
+.0283 g 3364 1722 N -16 -6 29 10 17 6 h
+.0283 g 3335 1711 N -17 -6 30 11 16 6 h
+.0283 g 3305 1701 N -16 -6 29 10 17 6 h
+.0283 g 3276 1690 N -17 -6 30 11 16 6 h
+.0284 g 3246 1680 N -16 -6 29 10 17 6 h
+.0284 g 3217 1669 N -17 -6 30 11 16 6 h
+.0284 g 3187 1659 N -16 -6 29 11 17 5 h
+.0284 g 3158 1648 N -17 -5 30 10 16 6 h
+.0284 g 3128 1638 N -16 -6 29 11 17 5 h
+.0285 g 3099 1627 N -17 -5 30 10 16 6 h
+.0285 g 3069 1616 N -16 -6 29 11 17 6 h
+.0285 g 3040 1606 N -17 -6 30 10 16 6 h
+.0285 g 3010 1595 N -16 -6 29 11 17 6 h
+.0286 g 2981 1585 N -17 -6 30 10 16 6 h
+.0286 g 2951 1574 N -16 -6 29 11 17 6 h
+.0275 g 2922 1561 N -17 -6 30 14 16 5 h
+.0254 g 2892 1549 N -16 -5 29 13 17 4 h
+.0244 g 2863 1538 N -17 -4 30 11 16 4 h
+.0244 g 2833 1528 N -16 -4 29 11 17 3 h
+.0244 g 2804 1517 N -17 -3 30 10 16 4 h
+.0245 g 2774 1506 N -16 -4 29 11 17 4 h
+.0228 g 2745 1492 N -17 -4 30 15 16 3 h
+.0195 g 2715 1478 N -16 -3 29 16 17 1 h
+.0179 g 2686 1468 N -17 -1 30 11 16 0 h
+0 g 5593 2476 N -17 9 30 10 16 -8 h
+0 g 5563 2466 N -16 8 29 11 17 -9 h
+0 g 5534 2455 N -17 9 30 10 16 -8 h
+0 g 5504 2445 N -16 8 29 11 17 -9 h
+0 g 5475 2434 N -17 9 30 10 16 -8 h
+0 g 5445 2423 N -16 8 29 11 17 -8 h
+0 g 5416 2413 N -17 8 30 10 16 -8 h
+0 g 5386 2402 N -16 8 29 11 17 -8 h
+0 g 5357 2392 N -17 8 30 11 16 -9 h
+0 g 5327 2381 N -16 9 29 10 17 -8 h
+0 g 5298 2371 N -17 8 30 11 16 -9 h
+0 g 5268 2360 N -16 9 29 10 17 -8 h
+.0014 g 5239 2353 N -17 8 30 7 16 -8 h
+.0042 g 5209 2346 N -16 8 29 7 17 -8 h
+.0056 g 5180 2336 N -17 8 30 11 16 -9 h
+.0056 g 5150 2325 N -16 9 29 10 17 -8 h
+.0056 g 5121 2315 N -17 8 30 11 16 -9 h
+.0056 g 5091 2304 N -16 9 29 10 17 -8 h
+.007 g 5062 2297 N -17 8 30 7 16 -8 h
+.0098 g 5032 2290 N -16 8 29 7 17 -8 h
+.0112 g 5003 2280 N -17 8 30 11 16 -9 h
+.0112 g 4973 2269 N -16 9 29 10 17 -8 h
+.0112 g 4944 2258 N -17 8 30 11 16 -8 h
+.0112 g 4914 2248 N -16 8 29 11 17 -9 h
+.0123 g 4885 2240 N -17 9 30 7 16 -8 h
+.0144 g 4855 2232 N -16 8 29 8 17 -8 h
+.0155 g 4826 2222 N -17 8 30 11 16 -9 h
+.0155 g 4796 2211 N -16 9 29 10 17 -8 h
+.0155 g 4767 2201 N -17 8 30 11 16 -9 h
+.0155 g 4737 2190 N -16 9 29 10 17 -8 h
+.161 g 4708 2560 N -17 8 30 -369 16 -9 h
+.3803 g 4678 2742 N -16 9 29 -183 17 -8 h
+.4542 g 4649 2732 N -17 8 30 11 16 -9 h
+.4544 g 4619 2721 N -16 9 29 10 17 -8 h
+.4546 g 4590 2711 N -17 8 30 10 16 -8 h
+.4548 g 4560 2701 N -16 8 29 11 17 -9 h
+.6204 g 4531 3123 N -17 9 30 -422 16 -9 h
+.8643 g 4501 3317 N -16 9 29 -194 17 -9 h
+.9428 g 4472 3306 N -17 9 30 10 16 -8 h
+.943 g 4442 3296 N -16 8 29 10 17 -8 h
+.9432 g 4413 3286 N -17 8 30 10 16 -8 h
+.9435 g 4383 3276 N -16 8 29 11 17 -9 h
+.9469 g 4354 3274 N -17 9 30 2 16 -9 h
+.9533 g 4324 3271 N -16 9 29 2 17 -8 h
+.9567 g 4295 3261 N -17 8 30 10 16 -8 h
+.9569 g 4265 3251 N -16 8 29 10 17 -8 h
+.9571 g 4236 3241 N -17 8 30 11 16 -9 h
+.9574 g 4206 3230 N -16 9 29 10 17 -8 h
+.8858 g 4177 3033 N -17 8 30 198 16 -9 h
+.6763 g 4147 2662 N -16 9 29 370 17 -8 h
+.5387 g 4118 2652 N -17 8 30 11 16 -9 h
+.5389 g 4088 2641 N -16 9 29 10 17 -8 h
+.5391 g 4059 2631 N -17 8 30 10 16 -8 h
+.5393 g 4029 2621 N -16 8 29 11 17 -9 h
+.4713 g 4000 2432 N -17 9 30 188 16 -8 h
+.2785 g 3970 2096 N -16 8 29 336 17 -8 h
+.1539 g 3941 2086 N -17 8 30 11 16 -9 h
+.154 g 3912 2075 N -16 9 29 10 16 -8 h
+.1541 g 3882 2065 N -16 8 29 11 17 -9 h
+.1542 g 3853 2054 N -17 9 30 10 16 -8 h
+.1333 g 3823 1989 N -16 8 29 65 17 -8 h
+.0882 g 3794 1915 N -17 8 30 74 16 -8 h
+.064 g 3764 1905 N -16 8 29 11 17 -9 h
+.064 g 3735 1894 N -17 9 30 10 16 -8 h
+.0641 g 3705 1884 N -16 8 29 11 17 -9 h
+.0641 g 3676 1873 N -17 9 30 10 16 -8 h
+.0571 g 3646 1844 N -16 8 29 29 17 -8 h
+.0427 g 3617 1814 N -17 8 30 30 16 -8 h
+.0353 g 3587 1804 N -16 8 29 11 17 -9 h
+.0353 g 3558 1793 N -17 9 30 10 16 -8 h
+.0354 g 3528 1783 N -16 8 29 11 17 -9 h
+.0354 g 3499 1772 N -17 9 30 10 16 -8 h
+.035 g 3469 1760 N -16 8 29 12 17 -8 h
+.0341 g 3440 1749 N -17 8 30 12 16 -9 h
+.0336 g 3410 1738 N -16 9 29 10 17 -8 h
+.0337 g 3381 1728 N -17 8 30 11 16 -9 h
+.0337 g 3351 1717 N -16 9 29 10 17 -8 h
+.0337 g 3322 1707 N -17 8 30 11 16 -9 h
+.0338 g 3292 1696 N -16 9 29 10 17 -8 h
+.0338 g 3263 1686 N -17 8 30 11 16 -9 h
+.0338 g 3233 1675 N -16 9 29 10 17 -8 h
+.0338 g 3204 1664 N -17 8 30 11 16 -8 h
+.0339 g 3174 1654 N -16 8 29 10 17 -8 h
+.0339 g 3145 1643 N -17 8 30 11 16 -8 h
+.0339 g 3115 1633 N -16 8 29 11 17 -9 h
+.0339 g 3086 1622 N -17 9 30 10 16 -8 h
+.034 g 3056 1612 N -16 8 29 11 17 -9 h
+.034 g 3027 1601 N -17 9 30 10 16 -8 h
+.034 g 2997 1591 N -16 8 29 11 17 -9 h
+.034 g 2968 1580 N -17 9 30 10 16 -8 h
+.0328 g 2938 1566 N -16 8 29 14 17 -8 h
+.0303 g 2909 1553 N -17 8 30 14 16 -9 h
+.0291 g 2879 1542 N -16 9 29 10 17 -8 h
+.0291 g 2850 1531 N -17 8 30 11 16 -8 h
+.0291 g 2820 1521 N -16 8 29 10 17 -8 h
+.0292 g 2791 1510 N -17 8 30 11 16 -8 h
+.0272 g 2761 1495 N -16 8 29 16 17 -9 h
+.0233 g 2732 1479 N -17 9 30 15 16 -8 h
+.0214 g 2702 1468 N -16 8 29 11 17 -8 h
+0 g 5609 2468 N -16 8 29 10 17 -8 h
+0 g 5580 2457 N -17 8 30 11 16 -8 h
+0 g 5550 2447 N -16 8 29 11 17 -9 h
+0 g 5521 2436 N -17 9 30 10 16 -8 h
+0 g 5491 2426 N -16 8 29 11 17 -9 h
+0 g 5462 2415 N -17 9 30 10 16 -8 h
+0 g 5432 2405 N -16 8 29 11 17 -9 h
+0 g 5403 2394 N -17 9 30 10 16 -8 h
+0 g 5373 2383 N -16 8 29 11 17 -8 h
+0 g 5344 2373 N -17 8 30 11 16 -9 h
+0 g 5314 2362 N -16 9 29 10 17 -8 h
+0 g 5285 2352 N -17 8 30 11 16 -9 h
+.0014 g 5255 2345 N -16 9 29 7 17 -9 h
+.0042 g 5226 2338 N -17 9 30 7 16 -9 h
+.0056 g 5196 2327 N -16 9 29 10 17 -8 h
+.0056 g 5167 2317 N -17 8 30 11 16 -9 h
+.0056 g 5137 2306 N -16 9 29 10 17 -8 h
+.0056 g 5108 2296 N -17 8 30 11 16 -9 h
+.007 g 5078 2289 N -16 9 29 7 17 -9 h
+.0098 g 5049 2282 N -17 9 30 7 16 -9 h
+.0112 g 5019 2271 N -16 9 29 10 17 -8 h
+.0112 g 4990 2261 N -17 8 30 11 16 -9 h
+.0112 g 4960 2250 N -16 9 29 10 17 -8 h
+.0112 g 4931 2239 N -17 8 30 11 16 -8 h
+.0123 g 4901 2232 N -16 8 29 8 17 -9 h
+.0144 g 4872 2224 N -17 9 30 7 16 -8 h
+.0155 g 4842 2213 N -16 8 29 11 17 -8 h
+.0155 g 4813 2203 N -17 8 30 11 16 -9 h
+.0155 g 4783 2192 N -16 9 29 10 17 -8 h
+.0155 g 4754 2182 N -17 8 30 11 16 -9 h
+.161 g 4724 2551 N -16 9 29 -370 17 -8 h
+.3803 g 4695 2734 N -17 8 30 -182 16 -9 h
+.4542 g 4665 2723 N -16 9 29 10 17 -8 h
+.4544 g 4636 2713 N -17 8 30 10 16 -8 h
+.4546 g 4606 2703 N -16 8 29 11 17 -9 h
+.4548 g 4577 2692 N -17 9 30 10 16 -8 h
+.6204 g 4547 3114 N -16 8 29 -422 17 -8 h
+.8643 g 4518 3308 N -17 8 30 -194 16 -8 h
+.9428 g 4488 3298 N -16 8 29 10 17 -8 h
+.943 g 4459 3288 N -17 8 30 11 16 -9 h
+.9432 g 4429 3278 N -16 9 29 10 17 -9 h
+.9435 g 4400 3267 N -17 9 30 10 16 -8 h
+.9469 g 4370 3265 N -16 8 29 2 17 -8 h
+.9533 g 4341 3263 N -17 8 30 2 16 -8 h
+.9567 g 4311 3253 N -16 8 29 11 17 -9 h
+.9569 g 4282 3243 N -17 9 30 10 16 -9 h
+.9571 g 4252 3232 N -16 9 29 10 17 -8 h
+.9574 g 4223 3222 N -17 8 30 10 16 -8 h
+.8858 g 4193 3024 N -16 8 29 198 17 -8 h
+.6763 g 4164 2654 N -17 8 30 371 16 -9 h
+.5387 g 4134 2643 N -16 9 29 10 17 -8 h
+.5389 g 4105 2633 N -17 8 30 10 16 -8 h
+.5391 g 4075 2623 N -16 8 29 11 17 -9 h
+.5393 g 4046 2612 N -17 9 30 10 16 -8 h
+.4713 g 4016 2424 N -16 8 29 189 17 -9 h
+.2785 g 3987 2088 N -17 9 30 336 16 -9 h
+.1539 g 3957 2077 N -16 9 29 10 17 -8 h
+.154 g 3928 2067 N -17 8 30 11 16 -9 h
+.1541 g 3899 2056 N -16 9 29 10 16 -8 h
+.1542 g 3869 2046 N -16 8 29 11 17 -9 h
+.1333 g 3840 1981 N -17 9 30 65 16 -9 h
+.0882 g 3810 1907 N -16 9 29 74 17 -9 h
+.064 g 3781 1896 N -17 9 30 10 16 -8 h
+.064 g 3751 1886 N -16 8 29 11 17 -9 h
+.0641 g 3722 1875 N -17 9 30 10 16 -8 h
+.0641 g 3692 1865 N -16 8 29 11 17 -9 h
+.0571 g 3663 1836 N -17 9 30 29 16 -9 h
+.0427 g 3633 1806 N -16 9 29 29 17 -8 h
+.0353 g 3604 1795 N -17 8 30 11 16 -8 h
+.0353 g 3574 1785 N -16 8 29 11 17 -9 h
+.0354 g 3545 1774 N -17 9 30 10 16 -8 h
+.0354 g 3515 1764 N -16 8 29 11 17 -9 h
+.035 g 3486 1752 N -17 9 30 11 16 -8 h
+.0341 g 3456 1740 N -16 8 29 12 17 -8 h
+.0336 g 3427 1730 N -17 8 30 11 16 -9 h
+.0337 g 3397 1719 N -16 9 29 10 17 -8 h
+.0337 g 3368 1709 N -17 8 30 11 16 -9 h
+.0337 g 3338 1698 N -16 9 29 10 17 -8 h
+.0338 g 3309 1688 N -17 8 30 11 16 -9 h
+.0338 g 3279 1677 N -16 9 29 10 17 -8 h
+.0338 g 3250 1667 N -17 8 30 11 16 -9 h
+.0338 g 3220 1656 N -16 9 29 10 17 -8 h
+.0339 g 3191 1646 N -17 8 30 11 16 -9 h
+.0339 g 3161 1635 N -16 9 29 10 17 -8 h
+.0339 g 3132 1624 N -17 8 30 11 16 -8 h
+.0339 g 3102 1614 N -16 8 29 10 17 -8 h
+.034 g 3073 1603 N -17 8 30 11 16 -8 h
+.034 g 3043 1593 N -16 8 29 11 17 -9 h
+.034 g 3014 1582 N -17 9 30 10 16 -8 h
+.034 g 2984 1572 N -16 8 29 11 17 -9 h
+.0328 g 2955 1558 N -17 9 30 13 16 -8 h
+.0303 g 2925 1544 N -16 8 29 14 17 -8 h
+.0291 g 2896 1534 N -17 8 30 11 16 -9 h
+.0291 g 2866 1523 N -16 9 29 10 17 -8 h
+.0291 g 2837 1513 N -17 8 30 11 16 -9 h
+.0292 g 2807 1502 N -16 9 29 10 17 -8 h
+.0272 g 2778 1486 N -17 8 30 16 16 -8 h
+.0233 g 2748 1471 N -16 8 29 16 17 -9 h
+.0214 g 2719 1460 N -17 9 30 10 16 -8 h
+0 g 5626 2460 N -17 8 30 11 16 -9 h
+0 g 5596 2449 N -16 9 29 10 17 -8 h
+0 g 5567 2438 N -17 8 30 11 16 -8 h
+0 g 5537 2428 N -16 8 29 11 17 -9 h
+0 g 5508 2417 N -17 9 30 10 16 -8 h
+0 g 5478 2407 N -16 8 29 11 17 -9 h
+0 g 5449 2396 N -17 9 30 10 16 -8 h
+0 g 5419 2386 N -16 8 29 11 17 -9 h
+0 g 5390 2375 N -17 9 30 10 16 -8 h
+0 g 5360 2364 N -16 8 29 11 17 -8 h
+0 g 5331 2354 N -17 8 30 11 16 -9 h
+0 g 5301 2343 N -16 9 29 10 17 -8 h
+.0011 g 5272 2336 N -17 8 30 9 16 -10 h
+.0032 g 5242 2329 N -16 10 29 9 17 -12 h
+.0042 g 5213 2319 N -17 12 30 10 16 -12 h
+.0042 g 5183 2308 N -16 12 29 11 17 -12 h
+.0042 g 5154 2298 N -17 12 30 10 16 -12 h
+.0042 g 5124 2287 N -16 12 29 11 17 -12 h
+.0053 g 5095 2280 N -17 12 30 9 16 -14 h
+.0074 g 5065 2273 N -16 14 29 8 17 -15 h
+.0084 g 5036 2263 N -17 15 30 11 16 -16 h
+.0084 g 5006 2252 N -16 16 29 10 17 -15 h
+.0084 g 4977 2242 N -17 15 30 11 16 -16 h
+.0084 g 4947 2231 N -16 16 29 11 17 -16 h
+.0092 g 4918 2223 N -17 16 30 9 16 -17 h
+.0109 g 4888 2216 N -16 17 29 9 17 -19 h
+.0117 g 4859 2205 N -17 19 30 10 16 -18 h
+.0117 g 4829 2194 N -16 18 29 11 17 -18 h
+.0117 g 4800 2184 N -17 18 30 11 16 -19 h
+.0117 g 4770 2173 N -16 19 29 10 17 -18 h
+.1299 g 4741 2543 N -17 18 30 -227 16 -161 h
+.3135 g 4711 2725 N -16 161 29 -138 17 -205 h
+.379 g 4682 2715 N -17 205 30 10 16 -205 h
+.3792 g 4652 2705 N -16 205 29 11 17 -206 h
+.3794 g 4623 2694 N -17 206 30 10 16 -205 h
+.3795 g 4593 2684 N -16 205 29 10 17 -205 h
+.535 g 4564 3106 N -17 205 30 -368 16 -259 h
+.7663 g 4534 3300 N -16 259 29 -183 17 -270 h
+.8425 g 4505 3290 N -17 270 30 11 16 -271 h
+.8427 g 4475 3279 N -16 271 29 10 17 -270 h
+.843 g 4446 3269 N -17 270 30 10 16 -270 h
+.8432 g 4416 3259 N -16 270 29 10 17 -270 h
+.8465 g 4387 3257 N -17 270 30 3 16 -271 h
+.8529 g 4357 3255 N -16 271 29 2 17 -271 h
+.8561 g 4328 3244 N -17 271 30 11 16 -271 h
+.8563 g 4298 3234 N -16 271 29 10 17 -271 h
+.8566 g 4269 3224 N -17 271 30 10 16 -271 h
+.8568 g 4239 3214 N -16 271 29 11 17 -272 h
+.7872 g 4210 3016 N -17 272 30 187 16 -261 h
+.5868 g 4180 2645 N -16 261 29 333 17 -223 h
+.4563 g 4151 2635 N -17 223 30 11 16 -224 h
+.4565 g 4121 2625 N -16 224 29 10 17 -224 h
+.4567 g 4092 2614 N -17 224 30 10 16 -223 h
+.4569 g 4062 2604 N -16 223 29 11 17 -224 h
+.395 g 4033 2415 N -17 224 30 156 16 -191 h
+.2266 g 4003 2079 N -16 191 29 241 17 -96 h
+.1202 g 3974 2069 N -17 96 30 11 16 -97 h
+.1202 g 3944 2058 N -16 97 29 10 17 -96 h
+.1203 g 3915 2048 N -17 96 29 11 17 -97 h
+.1204 g 3886 2037 N -17 97 30 10 16 -96 h
+.1036 g 3856 1972 N -16 96 29 44 17 -75 h
+.0678 g 3827 1898 N -17 75 30 47 16 -48 h
+.0488 g 3797 1888 N -16 48 29 10 17 -48 h
+.0488 g 3768 1877 N -17 48 30 11 16 -48 h
+.0489 g 3738 1867 N -16 48 29 10 17 -48 h
+.0489 g 3709 1856 N -17 48 30 11 16 -48 h
+.0435 g 3679 1827 N -16 48 29 20 17 -39 h
+.0324 g 3650 1798 N -17 39 30 21 16 -31 h
+.0267 g 3620 1787 N -16 31 29 11 17 -31 h
+.0268 g 3591 1776 N -17 31 30 10 16 -30 h
+.0268 g 3561 1766 N -16 30 29 11 17 -31 h
+.0268 g 3532 1755 N -17 31 30 10 16 -30 h
+.0265 g 3502 1744 N -16 30 29 12 17 -31 h
+.0258 g 3473 1732 N -17 31 30 11 16 -30 h
+.0255 g 3443 1721 N -16 30 29 10 17 -29 h
+.0255 g 3414 1711 N -17 29 30 11 16 -30 h
+.0255 g 3384 1700 N -16 30 29 10 17 -29 h
+.0255 g 3355 1690 N -17 29 30 11 16 -30 h
+.0255 g 3325 1679 N -16 30 29 11 17 -30 h
+.0256 g 3296 1669 N -17 30 30 10 16 -30 h
+.0256 g 3266 1658 N -16 30 29 11 17 -30 h
+.0256 g 3237 1648 N -17 30 30 10 16 -30 h
+.0256 g 3207 1637 N -16 30 29 11 17 -30 h
+.0256 g 3178 1627 N -17 30 30 10 16 -30 h
+.0257 g 3148 1616 N -16 30 29 11 17 -30 h
+.0257 g 3119 1606 N -17 30 30 10 16 -30 h
+.0257 g 3089 1595 N -16 30 29 11 17 -30 h
+.0257 g 3060 1584 N -17 30 30 11 16 -30 h
+.0257 g 3030 1574 N -16 30 29 10 17 -30 h
+.0258 g 3001 1563 N -17 30 30 11 16 -30 h
+.0248 g 2971 1550 N -16 30 29 12 17 -29 h
+.0229 g 2942 1536 N -17 29 30 12 16 -27 h
+.022 g 2912 1525 N -16 27 29 11 17 -27 h
+.022 g 2883 1515 N -17 27 30 10 16 -27 h
+.022 g 2853 1504 N -16 27 29 11 17 -27 h
+.022 g 2824 1494 N -17 27 30 10 16 -27 h
+.0206 g 2794 1478 N -16 27 29 14 17 -25 h
+.0176 g 2765 1462 N -17 25 30 13 16 -22 h
+.0161 g 2735 1452 N -16 22 29 10 17 -22 h
+0 g 5642 2451 N -16 9 29 10 17 -8 h
+0 g 5613 2441 N -17 8 30 11 16 -9 h
+0 g 5583 2430 N -16 9 29 10 17 -8 h
+0 g 5554 2419 N -17 8 30 11 16 -8 h
+0 g 5524 2409 N -16 8 29 11 17 -9 h
+0 g 5495 2398 N -17 9 30 10 16 -8 h
+0 g 5465 2388 N -16 8 29 11 17 -9 h
+0 g 5436 2377 N -17 9 30 10 16 -8 h
+0 g 5406 2367 N -16 8 29 11 17 -9 h
+0 g 5377 2356 N -17 9 30 10 16 -8 h
+0 g 5347 2345 N -16 8 29 11 17 -8 h
+0 g 5318 2335 N -17 8 30 11 16 -9 h
+.0004 g 5288 2326 N -16 9 29 10 17 -10 h
+.0011 g 5259 2317 N -17 10 30 11 16 -12 h
+.0014 g 5229 2307 N -16 12 29 10 17 -12 h
+.0014 g 5200 2296 N -17 12 30 11 16 -12 h
+.0014 g 5170 2286 N -16 12 29 10 17 -12 h
+.0014 g 5141 2275 N -17 12 30 11 16 -12 h
+.0018 g 5111 2266 N -16 12 29 11 17 -14 h
+.0025 g 5082 2258 N -17 14 30 10 16 -16 h
+.0028 g 5052 2247 N -16 16 29 11 17 -16 h
+.0028 g 5023 2237 N -17 16 30 10 16 -16 h
+.0028 g 4993 2226 N -16 16 29 11 17 -16 h
+.0028 g 4964 2215 N -17 16 30 10 16 -15 h
+.0031 g 4934 2206 N -16 15 29 11 17 -17 h
+.0036 g 4905 2197 N -17 17 30 10 16 -18 h
+.0039 g 4875 2187 N -16 18 29 11 17 -19 h
+.0039 g 4846 2176 N -17 19 30 11 16 -19 h
+.0039 g 4816 2165 N -16 19 29 10 17 -18 h
+.0039 g 4787 2155 N -17 18 30 11 16 -19 h
+.0494 g 4757 2382 N -16 19 29 10 17 -256 h
+.1233 g 4728 2520 N -17 256 30 11 16 -405 h
+.1519 g 4698 2510 N -16 405 29 10 17 -405 h
+.152 g 4669 2499 N -17 405 30 11 16 -405 h
+.152 g 4639 2489 N -16 405 29 11 17 -406 h
+.1521 g 4610 2479 N -17 406 30 10 16 -406 h
+.2248 g 4580 2847 N -16 406 29 11 17 -785 h
+.3342 g 4551 3030 N -17 785 30 10 16 -978 h
+.3712 g 4521 3019 N -16 978 29 11 17 -978 h
+.3713 g 4492 3009 N -17 978 30 10 16 -978 h
+.3714 g 4462 2999 N -16 978 29 11 17 -979 h
+.3715 g 4433 2989 N -17 979 30 10 16 -979 h
+.3731 g 4403 2986 N -16 979 29 11 17 -987 h
+.3762 g 4374 2984 N -17 987 30 11 16 -996 h
+.3778 g 4344 2973 N -16 996 29 10 17 -995 h
+.3779 g 4315 2963 N -17 995 30 11 16 -996 h
+.3782 g 4285 2953 N -16 996 29 9 17 -995 h
+.3787 g 4256 2942 N -17 995 30 10 16 -994 h
+.345 g 4226 2755 N -16 994 29 11 17 -818 h
+.2494 g 4197 2422 N -17 818 30 10 16 -495 h
+.1877 g 4167 2411 N -16 495 29 11 17 -495 h
+.1878 g 4138 2401 N -17 495 30 10 16 -495 h
+.1879 g 4108 2391 N -16 495 29 11 17 -496 h
+.188 g 4079 2380 N -17 496 30 11 16 -496 h
+.1601 g 4049 2224 N -16 496 29 10 17 -350 h
+.088 g 4020 1983 N -17 350 30 11 16 -120 h
+.112 g 3990 1972 N -16 120 29 -345 17 236 h
+.2158 g 3961 1962 N -17 -236 30 -176 16 422 h
+.2516 g 3932 1951 N -16 -422 29 10 16 423 h
+.2517 g 3902 1941 N -16 -423 29 10 17 423 h
+.2455 g 3873 1897 N -17 -423 30 11 16 456 h
+.2323 g 3843 1850 N -16 -456 29 10 17 493 h
+.2255 g 3814 1840 N -17 -493 30 10 16 493 h
+.2256 g 3784 1829 N -16 -493 29 11 17 493 h
+.2257 g 3755 1819 N -17 -493 30 10 16 493 h
+.2258 g 3725 1808 N -16 -493 29 10 17 494 h
+.224 g 3696 1788 N -17 -494 30 11 16 503 h
+.2202 g 3666 1767 N -16 -503 29 10 17 514 h
+.2183 g 3637 1756 N -17 -514 30 10 16 515 h
+.2184 g 3607 1746 N -16 -515 29 10 17 515 h
+.2185 g 3578 1735 N -17 -515 30 11 16 515 h
+.2186 g 3548 1725 N -16 -515 29 10 17 515 h
+.2186 g 3519 1713 N -17 -515 30 10 16 517 h
+.2185 g 3489 1702 N -16 -517 29 11 17 517 h
+.2184 g 3460 1692 N -17 -517 30 10 16 517 h
+.2186 g 3430 1681 N -16 -517 29 10 17 518 h
+.1828 g 3401 1671 N -17 -518 30 198 16 330 h
+.0782 g 3371 1660 N -16 -330 29 370 17 -29 h
+.0094 g 3342 1649 N -17 29 30 11 16 -29 h
+.0094 g 3312 1639 N -16 29 29 10 17 -29 h
+.0094 g 3283 1628 N -17 29 30 11 16 -29 h
+.0094 g 3253 1618 N -16 29 29 11 17 -30 h
+.0094 g 3224 1607 N -17 30 30 10 16 -29 h
+.0094 g 3194 1597 N -16 29 29 11 17 -30 h
+.0094 g 3165 1586 N -17 30 30 10 16 -29 h
+.0094 g 3135 1576 N -16 29 29 11 17 -30 h
+.0093 g 3106 1565 N -17 30 30 11 16 -30 h
+.0089 g 3076 1554 N -16 30 29 12 17 -31 h
+.0088 g 3047 1544 N -17 31 30 10 16 -31 h
+.0088 g 3017 1533 N -16 31 29 11 17 -31 h
+.0085 g 2988 1521 N -17 31 30 10 16 -29 h
+.0078 g 2958 1509 N -16 29 29 11 17 -28 h
+.0075 g 2929 1498 N -17 28 30 10 16 -27 h
+.0075 g 2899 1488 N -16 27 29 11 17 -28 h
+.0075 g 2870 1477 N -17 28 30 11 16 -28 h
+.0075 g 2840 1467 N -16 28 29 10 17 -28 h
+.007 g 2811 1453 N -17 28 30 11 16 -25 h
+.006 g 2781 1440 N -16 25 29 10 17 -22 h
+.0054 g 2752 1430 N -17 22 30 11 16 -23 h
+0 g 5659 2443 N -17 8 30 11 16 -9 h
+0 g 5629 2432 N -16 9 29 10 17 -8 h
+0 g 5600 2422 N -17 8 30 11 16 -9 h
+0 g 5570 2411 N -16 9 29 10 17 -8 h
+0 g 5541 2400 N -17 8 30 11 16 -8 h
+0 g 5511 2390 N -16 8 29 11 17 -9 h
+0 g 5482 2379 N -17 9 30 10 16 -8 h
+0 g 5452 2369 N -16 8 29 11 17 -9 h
+0 g 5423 2358 N -17 9 30 10 16 -8 h
+0 g 5393 2348 N -16 8 29 11 17 -9 h
+0 g 5364 2337 N -17 9 30 10 16 -8 h
+0 g 5334 2326 N -16 8 29 11 17 -8 h
+0 g 5305 2316 N -17 8 30 10 16 -8 h
+0 g 5275 2305 N -16 8 29 11 17 -8 h
+0 g 5246 2295 N -17 8 30 11 16 -9 h
+0 g 5216 2284 N -16 9 29 10 17 -8 h
+0 g 5187 2274 N -17 8 30 11 16 -9 h
+0 g 5157 2263 N -16 9 29 10 17 -8 h
+0 g 5128 2252 N -17 8 30 11 16 -8 h
+0 g 5098 2242 N -16 8 29 10 17 -8 h
+0 g 5069 2231 N -17 8 30 11 16 -8 h
+0 g 5039 2221 N -16 8 29 11 17 -9 h
+0 g 5010 2210 N -17 9 30 10 16 -8 h
+0 g 4980 2200 N -16 8 29 11 17 -9 h
+0 g 4951 2189 N -17 9 30 10 16 -8 h
+0 g 4921 2179 N -16 8 29 11 17 -9 h
+0 g 4892 2168 N -17 9 30 10 16 -8 h
+0 g 4862 2157 N -16 8 29 11 17 -8 h
+0 g 4833 2147 N -17 8 30 11 16 -9 h
+0 g 4803 2136 N -16 9 29 10 17 -8 h
+0 g 4774 2126 N -17 8 30 11 16 -9 h
+0 g 4744 2115 N -16 9 29 10 17 -8 h
+0 g 4715 2105 N -17 8 30 11 16 -9 h
+0 g 4685 2094 N -16 9 29 10 17 -8 h
+0 g 4656 2083 N -17 8 30 11 16 -8 h
+0 g 4626 2073 N -16 8 29 11 17 -9 h
+.0001 g 4597 2062 N -17 9 30 10 16 -8 h
+.0003 g 4567 2052 N -16 8 29 10 17 -8 h
+.0003 g 4538 2041 N -17 8 30 11 16 -8 h
+.0003 g 4508 2031 N -16 8 29 10 17 -8 h
+.0003 g 4479 2020 N -17 8 30 11 16 -8 h
+.0003 g 4449 2010 N -16 8 29 10 17 -8 h
+.0003 g 4420 1999 N -17 8 30 11 16 -8 h
+.0003 g 4390 1988 N -16 8 29 10 17 -7 h
+.0003 g 4361 1978 N -17 7 30 11 16 -8 h
+.0003 g 4331 1967 N -16 8 29 11 17 -8 h
+.0016 g 4302 1958 N -17 8 30 4 16 -3 h
+.0041 g 4272 1948 N -16 3 29 5 17 2 h
+.0053 g 4243 1937 N -17 -2 30 11 16 2 h
+.0053 g 4213 1927 N -16 -2 29 11 17 1 h
+.0053 g 4184 1916 N -17 -1 30 10 16 2 h
+.0053 g 4154 1906 N -16 -2 29 11 17 1 h
+.0053 g 4125 1895 N -17 -1 30 10 16 2 h
+.0053 g 4095 1884 N -16 -2 29 11 17 2 h
+.0053 g 4066 1874 N -17 -2 30 10 16 2 h
+.0053 g 4036 1863 N -16 -2 29 11 17 2 h
+.2539 g 4007 2208 N -17 -2 30 -933 16 590 h
+.5882 g 3977 2384 N -16 -590 29 -251 17 665 h
+.674 g 3948 2374 N -17 -665 29 11 17 664 h
+.6742 g 3919 2364 N -17 -664 30 10 16 664 h
+.6744 g 3889 2353 N -16 -664 29 10 17 665 h
+.6747 g 3860 2343 N -17 -665 30 10 16 665 h
+.6749 g 3830 2333 N -16 -665 29 11 17 664 h
+.6751 g 3801 2322 N -17 -664 30 10 16 665 h
+.6753 g 3771 2312 N -16 -665 29 10 17 665 h
+.6755 g 3742 2302 N -17 -665 30 10 16 665 h
+.6757 g 3712 2291 N -16 -665 29 11 17 665 h
+.676 g 3683 2281 N -17 -665 30 10 16 665 h
+.6762 g 3653 2271 N -16 -665 29 10 17 665 h
+.6764 g 3624 2261 N -17 -665 30 10 16 665 h
+.6766 g 3594 2250 N -16 -665 29 11 17 665 h
+.6768 g 3565 2240 N -17 -665 30 10 16 665 h
+.677 g 3535 2230 N -16 -665 29 10 17 665 h
+.6773 g 3506 2219 N -17 -665 30 10 16 666 h
+.6775 g 3476 2209 N -16 -666 29 11 17 665 h
+.6777 g 3447 2199 N -17 -665 30 10 16 665 h
+.5921 g 3417 2001 N -16 -665 29 271 17 592 h
+.2559 g 3388 1631 N -17 -592 30 960 16 2 h
+.0054 g 3358 1620 N -16 -2 29 11 17 2 h
+.0054 g 3329 1610 N -17 -2 30 10 16 2 h
+.0054 g 3299 1599 N -16 -2 29 11 17 2 h
+.0054 g 3270 1588 N -17 -2 30 10 16 3 h
+.0054 g 3240 1578 N -16 -3 29 11 17 2 h
+.0054 g 3211 1567 N -17 -2 30 11 16 2 h
+.0054 g 3181 1557 N -16 -2 29 10 17 2 h
+.0054 g 3152 1546 N -17 -2 30 11 16 2 h
+.0042 g 3122 1535 N -16 -2 29 16 17 -3 h
+.0016 g 3093 1523 N -17 3 30 16 16 -7 h
+.0003 g 3063 1513 N -16 7 29 11 17 -8 h
+.0003 g 3034 1502 N -17 8 30 11 16 -8 h
+.0003 g 3004 1492 N -16 8 29 10 17 -8 h
+.0004 g 2975 1481 N -17 8 30 11 16 -8 h
+.0004 g 2945 1471 N -16 8 29 10 17 -8 h
+.0004 g 2916 1460 N -17 8 30 11 16 -8 h
+.0004 g 2886 1449 N -16 8 29 10 17 -7 h
+.0004 g 2857 1439 N -17 7 30 11 16 -8 h
+.0003 g 2827 1428 N -16 8 29 11 17 -8 h
+.0001 g 2798 1418 N -17 8 30 11 16 -9 h
+0 g 2768 1407 N -16 9 29 10 17 -8 h
+0 g 5675 2434 N -16 8 29 11 17 -8 h
+0 g 5646 2424 N -17 8 30 11 16 -9 h
+0 g 5616 2413 N -16 9 29 10 17 -8 h
+0 g 5587 2403 N -17 8 30 11 16 -9 h
+0 g 5557 2392 N -16 9 29 10 17 -8 h
+0 g 5528 2381 N -17 8 30 11 16 -8 h
+0 g 5498 2371 N -16 8 29 10 17 -8 h
+0 g 5469 2360 N -17 8 30 11 16 -8 h
+0 g 5439 2350 N -16 8 29 11 17 -9 h
+0 g 5410 2339 N -17 9 30 10 16 -8 h
+0 g 5380 2329 N -16 8 29 11 17 -9 h
+0 g 5351 2318 N -17 9 30 10 16 -8 h
+0 g 5321 2308 N -16 8 29 11 17 -9 h
+0 g 5292 2297 N -17 9 30 10 16 -8 h
+0 g 5262 2286 N -16 8 29 11 17 -8 h
+0 g 5233 2276 N -17 8 30 11 16 -9 h
+0 g 5203 2265 N -16 9 29 10 17 -8 h
+0 g 5174 2255 N -17 8 30 11 16 -9 h
+0 g 5144 2244 N -16 9 29 10 17 -8 h
+0 g 5115 2234 N -17 8 30 11 16 -9 h
+0 g 5085 2223 N -16 9 29 10 17 -8 h
+0 g 5056 2212 N -17 8 30 11 16 -8 h
+0 g 5026 2202 N -16 8 29 11 17 -9 h
+0 g 4997 2191 N -17 9 30 10 16 -8 h
+0 g 4967 2181 N -16 8 29 11 17 -9 h
+0 g 4938 2170 N -17 9 30 10 16 -8 h
+0 g 4908 2160 N -16 8 29 11 17 -9 h
+0 g 4879 2149 N -17 9 30 10 16 -8 h
+0 g 4849 2138 N -16 8 29 11 17 -8 h
+0 g 4820 2128 N -17 8 30 11 16 -9 h
+0 g 4790 2117 N -16 9 29 10 17 -8 h
+0 g 4761 2107 N -17 8 30 11 16 -9 h
+0 g 4731 2096 N -16 9 29 10 17 -8 h
+0 g 4702 2086 N -17 8 30 11 16 -9 h
+0 g 4672 2075 N -16 9 29 10 17 -8 h
+0 g 4643 2064 N -17 8 30 11 16 -8 h
+.0001 g 4613 2054 N -16 8 29 10 17 -8 h
+.0004 g 4584 2044 N -17 8 30 10 16 -8 h
+.0006 g 4554 2033 N -16 8 29 11 17 -8 h
+.0006 g 4525 2023 N -17 8 30 10 16 -8 h
+.0006 g 4495 2012 N -16 8 29 11 17 -8 h
+.0006 g 4466 2002 N -17 8 30 11 16 -9 h
+.0006 g 4436 1991 N -16 9 29 10 17 -8 h
+.0006 g 4407 1981 N -17 8 30 11 16 -9 h
+.0006 g 4377 1970 N -16 9 29 10 17 -8 h
+.0006 g 4348 1959 N -17 8 30 11 16 -8 h
+.0028 g 4318 1955 N -16 8 29 5 17 -9 h
+.0071 g 4289 1950 N -17 9 30 5 16 -9 h
+.0092 g 4259 1939 N -16 9 29 10 17 -8 h
+.0092 g 4230 1928 N -17 8 30 11 16 -8 h
+.0092 g 4200 1918 N -16 8 29 10 17 -8 h
+.0092 g 4171 1907 N -17 8 30 11 16 -8 h
+.0092 g 4141 1897 N -16 8 29 11 17 -9 h
+.0092 g 4112 1886 N -17 9 30 10 16 -8 h
+.0092 g 4082 1876 N -16 8 29 11 17 -9 h
+.0092 g 4053 1865 N -17 9 30 10 16 -8 h
+.3704 g 4023 2798 N -16 8 29 -933 17 -8 h
+.8314 g 3994 3049 N -17 8 30 -250 16 -9 h
+.9314 g 3965 3038 N -16 9 29 10 16 -8 h
+.9317 g 3935 3028 N -16 8 29 10 17 -8 h
+.9319 g 3906 3018 N -17 8 30 11 16 -9 h
+.9322 g 3876 3008 N -16 9 29 10 17 -9 h
+.9324 g 3847 2997 N -17 9 30 10 16 -8 h
+.9326 g 3817 2987 N -16 8 29 10 17 -8 h
+.9329 g 3788 2977 N -17 8 30 11 16 -9 h
+.9331 g 3758 2967 N -16 9 29 10 17 -9 h
+.9334 g 3729 2956 N -17 9 30 10 16 -8 h
+.9336 g 3699 2946 N -16 8 29 10 17 -8 h
+.9339 g 3670 2936 N -17 8 30 11 16 -9 h
+.9341 g 3640 2926 N -16 9 29 10 17 -9 h
+.9343 g 3611 2915 N -17 9 30 10 16 -8 h
+.9346 g 3581 2905 N -16 8 29 10 17 -8 h
+.9348 g 3552 2895 N -17 8 30 11 16 -9 h
+.9351 g 3522 2885 N -16 9 29 10 17 -9 h
+.9353 g 3493 2874 N -17 9 30 10 16 -8 h
+.9356 g 3463 2864 N -16 8 29 10 17 -8 h
+.8359 g 3434 2593 N -17 8 30 272 16 -9 h
+.3728 g 3404 1633 N -16 9 29 960 17 -9 h
+.0094 g 3375 1622 N -17 9 30 10 16 -8 h
+.0094 g 3345 1612 N -16 8 29 11 17 -9 h
+.0094 g 3316 1601 N -17 9 30 10 16 -8 h
+.0094 g 3286 1591 N -16 8 29 11 17 -9 h
+.0095 g 3257 1580 N -17 9 30 10 16 -8 h
+.0095 g 3227 1569 N -16 8 29 11 17 -8 h
+.0095 g 3198 1559 N -17 8 30 10 16 -8 h
+.0095 g 3168 1548 N -16 8 29 11 17 -8 h
+.0073 g 3139 1532 N -17 8 30 16 16 -8 h
+.0028 g 3109 1516 N -16 8 29 17 17 -9 h
+.0006 g 3080 1505 N -17 9 30 10 16 -8 h
+.0006 g 3050 1494 N -16 8 29 11 17 -8 h
+.0006 g 3021 1484 N -17 8 30 10 16 -8 h
+.0006 g 2991 1473 N -16 8 29 11 17 -8 h
+.0006 g 2962 1463 N -17 8 30 11 16 -9 h
+.0006 g 2932 1452 N -16 9 29 10 17 -8 h
+.0006 g 2903 1442 N -17 8 30 11 16 -9 h
+.0006 g 2873 1431 N -16 9 29 10 17 -8 h
+.0005 g 2844 1420 N -17 8 30 11 16 -8 h
+.0002 g 2814 1409 N -16 8 29 11 17 -8 h
+0 g 2785 1399 N -17 8 30 11 16 -9 h
+0 g 5692 2426 N -17 9 30 10 16 -8 h
+0 g 5662 2415 N -16 8 29 11 17 -8 h
+0 g 5633 2405 N -17 8 30 11 16 -9 h
+0 g 5603 2394 N -16 9 29 10 17 -8 h
+0 g 5574 2384 N -17 8 30 11 16 -9 h
+0 g 5544 2373 N -16 9 29 10 17 -8 h
+0 g 5515 2363 N -17 8 30 11 16 -9 h
+0 g 5485 2352 N -16 9 29 10 17 -8 h
+0 g 5456 2341 N -17 8 30 11 16 -8 h
+0 g 5426 2331 N -16 8 29 11 17 -9 h
+0 g 5397 2320 N -17 9 30 10 16 -8 h
+0 g 5367 2310 N -16 8 29 11 17 -9 h
+.0002 g 5338 2299 N -17 9 30 9 16 -7 h
+.0007 g 5308 2289 N -16 7 29 9 17 -6 h
+.0009 g 5279 2278 N -17 6 30 11 16 -6 h
+.0009 g 5249 2267 N -16 6 29 11 17 -6 h
+.0009 g 5220 2257 N -17 6 30 10 16 -6 h
+.0009 g 5190 2246 N -16 6 29 11 17 -6 h
+.0012 g 5161 2236 N -17 6 30 9 16 -5 h
+.0016 g 5131 2225 N -16 5 29 9 17 -3 h
+.0019 g 5102 2215 N -17 3 30 11 16 -4 h
+.0019 g 5072 2204 N -16 4 29 10 17 -3 h
+.0019 g 5043 2193 N -17 3 30 11 16 -3 h
+.0019 g 5013 2183 N -16 3 29 11 17 -4 h
+.0021 g 4984 2172 N -17 4 30 9 16 -2 h
+.0024 g 4954 2162 N -16 2 29 10 17 -2 h
+.0026 g 4925 2151 N -17 2 30 10 16 -1 h
+.0026 g 4895 2141 N -16 1 29 11 17 -2 h
+.0026 g 4866 2130 N -17 2 30 11 16 -2 h
+.0026 g 4836 2119 N -16 2 29 10 17 -1 h
+.0359 g 4807 2109 N -17 1 30 -163 16 172 h
+.0924 g 4777 2098 N -16 -172 29 -111 17 294 h
+.1157 g 4748 2088 N -17 -294 30 10 16 294 h
+.1157 g 4718 2077 N -16 -294 29 11 17 294 h
+.1158 g 4689 2067 N -17 -294 30 10 16 294 h
+.1159 g 4659 2056 N -16 -294 29 11 17 294 h
+.1807 g 4630 2046 N -17 -294 30 -328 16 632 h
+.2805 g 4600 2036 N -16 -632 29 -172 17 814 h
+.3155 g 4571 2025 N -17 -814 30 10 16 815 h
+.3156 g 4541 2015 N -16 -815 29 11 17 814 h
+.3157 g 4512 2004 N -17 -814 30 10 16 815 h
+.3158 g 4482 1993 N -16 -815 29 10 17 816 h
+.3173 g 4453 1983 N -17 -816 30 3 16 823 h
+.3203 g 4423 1972 N -16 -823 29 3 17 831 h
+.3218 g 4394 1962 N -17 -831 30 10 16 831 h
+.3219 g 4364 1951 N -16 -831 29 11 17 831 h
+.3233 g 4335 1946 N -17 -831 30 9 16 827 h
+.3258 g 4305 1941 N -16 -827 29 10 17 822 h
+.2951 g 4276 1931 N -17 -822 30 177 16 655 h
+.2076 g 4246 1920 N -16 -655 29 301 17 365 h
+.1521 g 4217 1910 N -17 -365 30 10 16 365 h
+.1522 g 4187 1899 N -16 -365 29 11 17 365 h
+.1523 g 4158 1888 N -17 -365 30 10 16 366 h
+.1524 g 4128 1878 N -16 -366 29 10 17 366 h
+.1291 g 4099 1867 N -17 -366 30 133 16 244 h
+.0721 g 4069 1857 N -16 -244 29 186 17 68 h
+.3866 g 4040 2790 N -17 -68 30 -864 16 -1 h
+.8338 g 4010 3040 N -16 1 29 -247 17 -4 h
+.9331 g 3981 3030 N -17 4 30 10 16 -4 h
+.9333 g 3952 3020 N -16 4 29 10 16 -4 h
+.9333 g 3922 3009 N -16 4 29 12 17 -5 h
+.933 g 3893 2999 N -17 5 30 12 16 -7 h
+.933 g 3863 2989 N -16 7 29 10 17 -7 h
+.9332 g 3834 2979 N -17 7 30 10 16 -7 h
+.9335 g 3804 2968 N -16 7 29 10 17 -6 h
+.9337 g 3775 2958 N -17 6 30 11 16 -7 h
+.9339 g 3745 2948 N -16 7 29 10 17 -7 h
+.934 g 3716 2938 N -17 7 30 11 16 -8 h
+.9342 g 3686 2927 N -16 8 29 10 17 -7 h
+.9344 g 3657 2917 N -17 7 30 10 16 -7 h
+.9347 g 3627 2907 N -16 7 29 11 17 -8 h
+.9349 g 3598 2897 N -17 8 30 10 16 -8 h
+.9351 g 3568 2886 N -16 8 29 10 17 -7 h
+.9354 g 3539 2876 N -17 7 30 11 16 -8 h
+.9356 g 3509 2866 N -16 8 29 10 17 -8 h
+.9359 g 3480 2856 N -17 8 30 10 16 -8 h
+.8364 g 3450 2584 N -16 8 29 271 17 -7 h
+.3759 g 3421 1624 N -17 7 30 946 16 7 h
+.0151 g 3391 1614 N -16 -7 29 11 17 6 h
+.0151 g 3362 1603 N -17 -6 30 10 16 7 h
+.0151 g 3332 1593 N -16 -7 29 11 17 6 h
+.0151 g 3303 1582 N -17 -6 30 10 16 7 h
+.0151 g 3273 1572 N -16 -7 29 11 17 6 h
+.0151 g 3244 1561 N -17 -6 30 10 16 7 h
+.0152 g 3214 1551 N -16 -7 29 11 17 6 h
+.0152 g 3185 1540 N -17 -6 30 11 16 6 h
+.013 g 3155 1524 N -16 -6 29 16 17 6 h
+.0087 g 3126 1507 N -17 -6 30 16 16 7 h
+.0065 g 3096 1497 N -16 -7 29 10 17 7 h
+.0065 g 3067 1486 N -17 -7 30 11 16 7 h
+.0063 g 3037 1476 N -16 -7 29 12 17 5 h
+.0058 g 3008 1465 N -17 -5 30 11 16 5 h
+.0056 g 2978 1454 N -16 -5 29 11 17 5 h
+.0056 g 2949 1444 N -17 -5 30 11 16 4 h
+.0056 g 2919 1433 N -16 -4 29 10 17 5 h
+.0056 g 2890 1423 N -17 -5 30 11 16 4 h
+.0051 g 2860 1412 N -16 -4 29 12 17 3 h
+.0041 g 2831 1401 N -17 -3 30 13 16 1 h
+.0036 g 2801 1390 N -16 -1 29 11 17 1 h
+0 g 5708 2418 N -16 8 29 11 17 -9 h
+0 g 5679 2407 N -17 9 30 10 16 -8 h
+0 g 5649 2396 N -16 8 29 11 17 -8 h
+0 g 5620 2386 N -17 8 30 11 16 -9 h
+0 g 5590 2375 N -16 9 29 10 17 -8 h
+0 g 5561 2365 N -17 8 30 11 16 -9 h
+0 g 5531 2354 N -16 9 29 10 17 -8 h
+0 g 5502 2344 N -17 8 30 11 16 -9 h
+0 g 5472 2333 N -16 9 29 10 17 -8 h
+0 g 5443 2322 N -17 8 30 11 16 -8 h
+0 g 5413 2312 N -16 8 29 11 17 -9 h
+0 g 5384 2301 N -17 9 30 10 16 -8 h
+.0009 g 5354 2292 N -16 8 29 7 17 -6 h
+.0028 g 5325 2283 N -17 6 30 7 16 -4 h
+.0037 g 5295 2272 N -16 4 29 10 17 -3 h
+.0037 g 5266 2261 N -17 3 30 11 16 -3 h
+.0038 g 5236 2251 N -16 3 29 11 17 -4 h
+.0038 g 5207 2240 N -17 4 30 10 16 -3 h
+.0047 g 5177 2231 N -16 3 29 7 17 -1 h
+.0065 g 5148 2222 N -17 1 30 7 16 1 h
+.0075 g 5118 2211 N -16 -1 29 11 17 1 h
+.0075 g 5089 2201 N -17 -1 30 10 16 1 h
+.0075 g 5059 2190 N -16 -1 29 11 17 1 h
+.0075 g 5030 2179 N -17 -1 30 10 16 2 h
+.0082 g 5000 2170 N -16 -2 29 8 17 3 h
+.0096 g 4971 2160 N -17 -3 30 8 16 5 h
+.0104 g 4941 2150 N -16 -5 29 10 17 5 h
+.0104 g 4912 2139 N -17 -5 30 11 16 5 h
+.0104 g 4882 2128 N -16 -5 29 11 17 5 h
+.0104 g 4853 2118 N -17 -5 30 10 16 5 h
+.1164 g 4823 2281 N -16 -5 29 -369 17 211 h
+.2826 g 4794 2392 N -17 -211 30 -183 16 283 h
+.3428 g 4764 2382 N -16 -283 29 11 17 282 h
+.343 g 4735 2371 N -17 -282 30 10 16 283 h
+.3431 g 4705 2361 N -16 -283 29 10 17 283 h
+.3433 g 4676 2350 N -17 -283 30 10 16 284 h
+.4909 g 4646 2678 N -16 -284 29 -421 17 377 h
+.7124 g 4617 2850 N -17 -377 30 -195 16 400 h
+.7866 g 4587 2840 N -16 -400 29 11 17 399 h
+.7868 g 4558 2829 N -17 -399 30 10 16 400 h
+.787 g 4528 2819 N -16 -400 29 10 17 400 h
+.7873 g 4499 2809 N -17 -400 30 10 16 400 h
+.7905 g 4469 2806 N -16 -400 29 3 17 400 h
+.7967 g 4440 2803 N -17 -400 30 2 16 401 h
+.7999 g 4410 2793 N -16 -401 29 10 17 401 h
+.8001 g 4381 2782 N -17 -401 30 10 16 402 h
+.8005 g 4351 2773 N -16 -402 29 10 17 401 h
+.8011 g 4322 2763 N -17 -401 30 10 16 401 h
+.7337 g 4292 2586 N -16 -401 29 198 17 380 h
+.5418 g 4263 2285 N -17 -380 30 369 16 312 h
+.4177 g 4233 2275 N -16 -312 29 10 17 312 h
+.4179 g 4204 2264 N -17 -312 30 11 16 312 h
+.4181 g 4174 2254 N -16 -312 29 10 17 312 h
+.4182 g 4145 2244 N -17 -312 30 10 16 312 h
+.3612 g 4115 2111 N -16 -312 29 188 17 257 h
+.2088 g 4086 1925 N -17 -257 30 332 16 111 h
+.4287 g 4056 2789 N -16 -111 29 -761 17 8 h
+.8408 g 4027 3036 N -17 -8 30 -239 16 0 h
+.938 g 3997 3026 N -16 0 29 10 17 0 h
+.9382 g 3968 3016 N -17 0 29 10 17 0 h
+.9374 g 3939 3004 N -17 0 30 15 16 -3 h
+.9356 g 3909 2992 N -16 3 29 14 17 -5 h
+.9347 g 3880 2982 N -17 5 30 10 16 -5 h
+.935 g 3850 2972 N -16 5 29 11 17 -6 h
+.9352 g 3821 2962 N -17 6 30 10 16 -6 h
+.9355 g 3791 2951 N -16 6 29 10 17 -5 h
+.9354 g 3762 2941 N -17 5 30 11 16 -6 h
+.9351 g 3732 2930 N -16 6 29 12 17 -7 h
+.9351 g 3703 2920 N -17 7 30 10 16 -7 h
+.9353 g 3673 2910 N -16 7 29 10 17 -7 h
+.9356 g 3644 2899 N -17 7 30 11 16 -7 h
+.9358 g 3614 2889 N -16 7 29 10 17 -7 h
+.936 g 3585 2879 N -17 7 30 10 16 -7 h
+.9363 g 3555 2868 N -16 7 29 10 17 -6 h
+.9365 g 3526 2858 N -17 6 30 11 16 -7 h
+.9367 g 3496 2848 N -16 7 29 10 17 -7 h
+.8376 g 3467 2577 N -17 7 30 269 16 -5 h
+.3849 g 3437 1631 N -16 5 29 922 17 19 h
+.0315 g 3408 1620 N -17 -19 30 10 16 20 h
+.0315 g 3378 1610 N -16 -20 29 11 17 19 h
+.0315 g 3349 1599 N -17 -19 30 10 16 20 h
+.0316 g 3319 1589 N -16 -20 29 11 17 19 h
+.0316 g 3290 1578 N -17 -19 30 10 16 20 h
+.0316 g 3260 1568 N -16 -20 29 11 17 19 h
+.0316 g 3231 1557 N -17 -19 30 10 16 20 h
+.0317 g 3201 1546 N -16 -20 29 11 17 20 h
+.0296 g 3172 1530 N -17 -20 30 15 16 21 h
+.0255 g 3142 1514 N -16 -21 29 16 17 21 h
+.0235 g 3113 1504 N -17 -21 30 11 16 20 h
+.0235 g 3083 1493 N -16 -20 29 10 17 21 h
+.0226 g 3054 1481 N -17 -21 30 14 16 19 h
+.021 g 3024 1470 N -16 -19 29 14 17 16 h
+.0201 g 2995 1459 N -17 -16 30 10 16 17 h
+.0201 g 2965 1448 N -16 -17 29 11 17 17 h
+.0202 g 2936 1438 N -17 -17 30 11 16 16 h
+.0202 g 2906 1427 N -16 -16 29 10 17 17 h
+.0187 g 2877 1415 N -17 -17 30 16 16 13 h
+.0158 g 2847 1402 N -16 -13 29 16 17 10 h
+.0143 g 2818 1391 N -17 -10 30 11 16 10 h
+0 g 5725 2409 N -17 9 30 10 16 -8 h
+0 g 5695 2399 N -16 8 29 11 17 -9 h
+0 g 5666 2388 N -17 9 30 10 16 -8 h
+0 g 5636 2377 N -16 8 29 11 17 -8 h
+0 g 5607 2367 N -17 8 30 11 16 -9 h
+0 g 5577 2356 N -16 9 29 10 17 -8 h
+0 g 5548 2346 N -17 8 30 11 16 -9 h
+0 g 5518 2335 N -16 9 29 10 17 -8 h
+0 g 5489 2325 N -17 8 30 11 16 -9 h
+0 g 5459 2314 N -16 9 29 10 17 -8 h
+0 g 5430 2303 N -17 8 30 11 16 -8 h
+0 g 5400 2293 N -16 8 29 11 17 -9 h
+.0014 g 5371 2286 N -17 9 30 6 16 -8 h
+.0042 g 5341 2279 N -16 8 29 7 17 -8 h
+.0056 g 5312 2269 N -17 8 30 11 16 -9 h
+.0056 g 5282 2258 N -16 9 29 10 17 -8 h
+.0056 g 5253 2247 N -17 8 30 11 16 -8 h
+.0056 g 5223 2237 N -16 8 29 11 17 -9 h
+.007 g 5194 2230 N -17 9 30 7 16 -9 h
+.0098 g 5164 2223 N -16 9 29 6 17 -8 h
+.0112 g 5135 2212 N -17 8 30 11 16 -8 h
+.0112 g 5105 2202 N -16 8 29 11 17 -9 h
+.0112 g 5076 2191 N -17 9 30 10 16 -8 h
+.0112 g 5046 2181 N -16 8 29 11 17 -9 h
+.0123 g 5017 2173 N -17 9 30 7 16 -8 h
+.0144 g 4987 2165 N -16 8 29 8 17 -8 h
+.0155 g 4958 2155 N -17 8 30 11 16 -9 h
+.0155 g 4928 2144 N -16 9 29 10 17 -8 h
+.0155 g 4899 2133 N -17 8 30 11 16 -8 h
+.0155 g 4869 2123 N -16 8 29 10 17 -8 h
+.161 g 4840 2492 N -17 8 30 -369 16 -8 h
+.3803 g 4810 2675 N -16 8 29 -182 17 -9 h
+.4542 g 4781 2664 N -17 9 30 10 16 -8 h
+.4544 g 4751 2654 N -16 8 29 10 17 -8 h
+.4546 g 4722 2644 N -17 8 30 11 16 -9 h
+.4548 g 4692 2634 N -16 9 29 10 17 -9 h
+.6205 g 4663 3055 N -17 9 30 -422 16 -8 h
+.8643 g 4633 3250 N -16 8 29 -194 17 -9 h
+.9428 g 4604 3239 N -17 9 30 10 16 -8 h
+.943 g 4574 3229 N -16 8 29 10 17 -8 h
+.9433 g 4545 3219 N -17 8 30 11 16 -9 h
+.9435 g 4515 3209 N -16 9 29 10 17 -9 h
+.9469 g 4486 3206 N -17 9 30 2 16 -8 h
+.9534 g 4456 3204 N -16 8 29 2 17 -8 h
+.9567 g 4427 3194 N -17 8 30 10 16 -8 h
+.9569 g 4397 3184 N -16 8 29 11 17 -9 h
+.9573 g 4368 3174 N -17 9 30 10 16 -9 h
+.9577 g 4338 3164 N -16 9 29 10 17 -9 h
+.8864 g 4309 2966 N -17 9 30 197 16 -8 h
+.6775 g 4279 2597 N -16 8 29 369 17 -8 h
+.5403 g 4250 2587 N -17 8 30 11 16 -9 h
+.5405 g 4220 2576 N -16 9 29 10 17 -8 h
+.5407 g 4191 2566 N -17 8 30 10 16 -8 h
+.5409 g 4161 2556 N -16 8 29 11 17 -9 h
+.4734 g 4132 2368 N -17 9 30 187 16 -8 h
+.2826 g 4102 2036 N -16 8 29 332 17 -8 h
+.4547 g 4073 2797 N -17 8 30 -760 16 -9 h
+.8455 g 4043 3036 N -16 9 29 -240 17 -8 h
+.9412 g 4014 3026 N -17 8 30 11 16 -9 h
+.9414 g 3985 3016 N -16 9 29 10 16 -9 h
+.9401 g 3955 3001 N -16 9 29 14 17 -8 h
+.9372 g 3926 2987 N -17 8 30 14 16 -8 h
+.9359 g 3896 2977 N -16 8 29 11 17 -9 h
+.9361 g 3867 2966 N -17 9 30 10 16 -8 h
+.9364 g 3837 2956 N -16 8 29 10 17 -8 h
+.9366 g 3808 2946 N -17 8 30 11 16 -9 h
+.9365 g 3778 2935 N -16 9 29 11 17 -9 h
+.9359 g 3749 2923 N -17 9 30 11 16 -8 h
+.9357 g 3719 2913 N -16 8 29 10 17 -8 h
+.9359 g 3690 2903 N -17 8 30 11 16 -9 h
+.9362 g 3660 2892 N -16 9 29 10 17 -8 h
+.9364 g 3631 2882 N -17 8 30 10 16 -8 h
+.9366 g 3601 2872 N -16 8 29 10 17 -8 h
+.9368 g 3572 2862 N -17 8 30 11 16 -9 h
+.9371 g 3542 2851 N -16 9 29 10 17 -8 h
+.9373 g 3513 2841 N -17 8 30 10 16 -8 h
+.8384 g 3483 2572 N -16 8 29 269 17 -8 h
+.3908 g 3454 1650 N -17 8 30 922 16 -8 h
+.0422 g 3424 1640 N -16 8 29 10 17 -8 h
+.0423 g 3395 1629 N -17 8 30 11 16 -8 h
+.0423 g 3365 1619 N -16 8 29 11 17 -9 h
+.0423 g 3336 1608 N -17 9 30 10 16 -8 h
+.0423 g 3306 1598 N -16 8 29 11 17 -9 h
+.0424 g 3277 1587 N -17 9 30 10 16 -8 h
+.0424 g 3247 1577 N -16 8 29 11 17 -9 h
+.0424 g 3218 1566 N -17 9 30 10 16 -8 h
+.0405 g 3188 1551 N -16 8 29 16 17 -9 h
+.0365 g 3159 1535 N -17 9 30 16 16 -9 h
+.0346 g 3129 1524 N -16 9 29 10 17 -8 h
+.0346 g 3100 1514 N -17 8 30 11 16 -9 h
+.0334 g 3070 1500 N -16 9 29 13 17 -8 h
+.0309 g 3041 1486 N -17 8 30 14 16 -8 h
+.0297 g 3011 1476 N -16 8 29 11 17 -9 h
+.0297 g 2982 1465 N -17 9 30 10 16 -8 h
+.0297 g 2952 1454 N -16 8 29 11 17 -8 h
+.0297 g 2923 1444 N -17 8 30 10 16 -8 h
+.0277 g 2893 1428 N -16 8 29 16 17 -8 h
+.0235 g 2864 1412 N -17 8 30 17 16 -9 h
+.0214 g 2834 1401 N -16 9 29 10 17 -8 h
+0 g 5741 2401 N -16 8 29 11 17 -9 h
+0 g 5712 2390 N -17 9 30 10 16 -8 h
+0 g 5682 2380 N -16 8 29 11 17 -9 h
+0 g 5653 2369 N -17 9 30 10 16 -8 h
+0 g 5623 2358 N -16 8 29 11 17 -8 h
+0 g 5594 2348 N -17 8 30 10 16 -8 h
+0 g 5564 2337 N -16 8 29 11 17 -8 h
+0 g 5535 2327 N -17 8 30 11 16 -9 h
+0 g 5505 2316 N -16 9 29 10 17 -8 h
+0 g 5476 2306 N -17 8 30 11 16 -9 h
+0 g 5446 2295 N -16 9 29 10 17 -8 h
+0 g 5417 2284 N -17 8 30 11 16 -8 h
+.0014 g 5387 2278 N -16 8 29 7 17 -9 h
+.0042 g 5358 2271 N -17 9 30 7 16 -9 h
+.0056 g 5328 2260 N -16 9 29 10 17 -8 h
+.0056 g 5299 2250 N -17 8 30 11 16 -9 h
+.0056 g 5269 2239 N -16 9 29 10 17 -8 h
+.0056 g 5240 2228 N -17 8 30 11 16 -8 h
+.007 g 5210 2221 N -16 8 29 7 17 -8 h
+.0098 g 5181 2215 N -17 8 30 7 16 -9 h
+.0112 g 5151 2204 N -16 9 29 10 17 -8 h
+.0112 g 5122 2193 N -17 8 30 11 16 -8 h
+.0112 g 5092 2183 N -16 8 29 11 17 -9 h
+.0112 g 5063 2172 N -17 9 30 10 16 -8 h
+.0123 g 5033 2165 N -16 8 29 8 17 -9 h
+.0144 g 5004 2157 N -17 9 30 8 16 -9 h
+.0155 g 4974 2146 N -16 9 29 10 17 -8 h
+.0155 g 4945 2136 N -17 8 30 11 16 -9 h
+.0155 g 4915 2125 N -16 9 29 10 17 -8 h
+.0155 g 4886 2115 N -17 8 30 11 16 -9 h
+.161 g 4856 2484 N -16 9 29 -370 17 -8 h
+.3803 g 4827 2666 N -17 8 30 -182 16 -8 h
+.4542 g 4797 2656 N -16 8 29 10 17 -8 h
+.4544 g 4768 2646 N -17 8 30 11 16 -9 h
+.4546 g 4738 2635 N -16 9 29 10 17 -8 h
+.4548 g 4709 2625 N -17 8 30 10 16 -8 h
+.6205 g 4679 3047 N -16 8 29 -422 17 -8 h
+.8643 g 4650 3241 N -17 8 30 -194 16 -8 h
+.9428 g 4620 3231 N -16 8 29 11 17 -9 h
+.943 g 4591 3221 N -17 9 30 10 16 -9 h
+.9433 g 4561 3210 N -16 9 29 10 17 -8 h
+.9435 g 4532 3200 N -17 8 30 10 16 -8 h
+.9469 g 4502 3198 N -16 8 29 2 17 -8 h
+.9534 g 4473 3196 N -17 8 30 2 16 -8 h
+.9567 g 4443 3186 N -16 8 29 11 17 -9 h
+.9569 g 4414 3175 N -17 9 30 10 16 -8 h
+.9573 g 4384 3165 N -16 8 29 10 17 -8 h
+.9577 g 4355 3155 N -17 8 30 10 16 -8 h
+.8863 g 4325 2958 N -16 8 29 198 17 -9 h
+.6774 g 4296 2589 N -17 9 30 369 16 -9 h
+.5402 g 4266 2578 N -16 9 29 10 17 -8 h
+.5404 g 4237 2568 N -17 8 30 11 16 -9 h
+.5407 g 4207 2558 N -16 9 29 10 17 -9 h
+.5409 g 4178 2547 N -17 9 30 10 16 -8 h
+.4733 g 4148 2360 N -16 8 29 188 17 -9 h
+.2825 g 4119 2028 N -17 9 30 332 16 -9 h
+.45 g 4089 2788 N -16 9 29 -737 17 -32 h
+.8358 g 4060 3028 N -17 32 30 -237 16 -35 h
+.9312 g 4030 3017 N -16 35 29 10 17 -34 h
+.9314 g 4001 3007 N -17 34 30 10 16 -34 h
+.9301 g 3972 2993 N -16 34 29 15 16 -35 h
+.9271 g 3942 2979 N -16 35 29 15 17 -36 h
+.9257 g 3913 2968 N -17 36 30 10 16 -35 h
+.9259 g 3883 2958 N -16 35 29 10 17 -35 h
+.9262 g 3854 2948 N -17 35 30 10 16 -35 h
+.9264 g 3824 2937 N -16 35 29 11 17 -35 h
+.9262 g 3795 2926 N -17 35 30 11 16 -35 h
+.9256 g 3765 2915 N -16 35 29 11 17 -35 h
+.9254 g 3736 2905 N -17 35 30 11 16 -36 h
+.9257 g 3706 2894 N -16 36 29 10 17 -35 h
+.9259 g 3677 2884 N -17 35 30 10 16 -35 h
+.9261 g 3647 2874 N -16 35 29 10 17 -35 h
+.9264 g 3618 2864 N -17 35 30 11 16 -36 h
+.9265 g 3588 2853 N -16 36 29 10 17 -35 h
+.9268 g 3559 2843 N -17 35 30 10 16 -35 h
+.927 g 3529 2833 N -16 35 29 11 17 -36 h
+.8284 g 3500 2564 N -17 36 30 267 16 -34 h
+.3858 g 3470 1642 N -16 34 29 897 17 -9 h
+.0419 g 3441 1632 N -17 9 30 11 16 -10 h
+.042 g 3411 1621 N -16 10 29 10 17 -9 h
+.042 g 3382 1610 N -17 9 30 11 16 -9 h
+.042 g 3352 1600 N -16 9 29 10 17 -9 h
+.0421 g 3323 1589 N -17 9 30 11 16 -9 h
+.0421 g 3293 1579 N -16 9 29 10 17 -9 h
+.0421 g 3264 1568 N -17 9 30 11 16 -9 h
+.0422 g 3234 1558 N -16 9 29 10 17 -9 h
+.0403 g 3205 1542 N -17 9 30 16 16 -9 h
+.0365 g 3175 1526 N -16 9 29 15 17 -8 h
+.0345 g 3146 1516 N -17 8 30 11 16 -9 h
+.0346 g 3116 1505 N -16 9 29 10 17 -8 h
+.0334 g 3087 1492 N -17 8 30 14 16 -9 h
+.0309 g 3057 1478 N -16 9 29 14 17 -9 h
+.0296 g 3028 1467 N -17 9 30 10 16 -8 h
+.0297 g 2998 1457 N -16 8 29 11 17 -9 h
+.0297 g 2969 1446 N -17 9 30 10 16 -8 h
+.0297 g 2939 1436 N -16 8 29 11 17 -9 h
+.0276 g 2910 1420 N -17 9 30 16 16 -9 h
+.0235 g 2880 1403 N -16 9 29 16 17 -8 h
+.0214 g 2851 1393 N -17 8 30 10 16 -8 h
+0 g 5758 2392 N -17 8 30 11 16 -8 h
+0 g 5728 2382 N -16 8 29 11 17 -9 h
+0 g 5699 2371 N -17 9 30 10 16 -8 h
+0 g 5669 2361 N -16 8 29 11 17 -9 h
+0 g 5640 2350 N -17 9 30 10 16 -8 h
+0 g 5610 2340 N -16 8 29 11 17 -9 h
+0 g 5581 2329 N -17 9 30 10 16 -8 h
+0 g 5551 2318 N -16 8 29 11 17 -8 h
+0 g 5522 2308 N -17 8 30 11 16 -9 h
+0 g 5492 2297 N -16 9 29 10 17 -8 h
+0 g 5463 2287 N -17 8 30 11 16 -9 h
+0 g 5433 2276 N -16 9 29 10 17 -8 h
+.0013 g 5404 2269 N -17 8 30 8 16 -9 h
+.0039 g 5374 2262 N -16 9 29 7 17 -9 h
+.0051 g 5345 2252 N -17 9 30 11 16 -10 h
+.0051 g 5315 2241 N -16 10 29 10 17 -9 h
+.0052 g 5286 2231 N -17 9 30 11 16 -10 h
+.0052 g 5256 2220 N -16 10 29 11 17 -10 h
+.0064 g 5227 2213 N -17 10 30 7 16 -10 h
+.009 g 5197 2206 N -16 10 29 8 17 -11 h
+.0103 g 5168 2196 N -17 11 30 10 16 -11 h
+.0103 g 5138 2185 N -16 11 29 11 17 -11 h
+.0103 g 5109 2174 N -17 11 30 10 16 -10 h
+.0103 g 5079 2164 N -16 10 29 11 17 -11 h
+.0113 g 5050 2156 N -17 11 30 8 16 -11 h
+.0132 g 5020 2148 N -16 11 29 8 17 -11 h
+.0142 g 4991 2138 N -17 11 30 11 16 -12 h
+.0142 g 4961 2127 N -16 12 29 10 17 -11 h
+.0142 g 4932 2117 N -17 11 30 11 16 -12 h
+.0143 g 4902 2106 N -16 12 29 11 17 -12 h
+.1518 g 4873 2476 N -17 12 30 -329 16 -53 h
+.3611 g 4843 2658 N -16 53 29 -171 17 -64 h
+.433 g 4814 2648 N -17 64 30 10 16 -64 h
+.4332 g 4784 2637 N -16 64 29 11 17 -64 h
+.4334 g 4755 2627 N -17 64 30 10 16 -64 h
+.4336 g 4725 2617 N -16 64 29 10 17 -64 h
+.5969 g 4696 3039 N -17 64 30 -410 16 -76 h
+.838 g 4666 3233 N -16 76 29 -191 17 -79 h
+.916 g 4637 3222 N -17 79 30 10 16 -78 h
+.9162 g 4607 3212 N -16 78 29 10 17 -78 h
+.9164 g 4578 3202 N -17 78 30 10 16 -78 h
+.9167 g 4548 3192 N -16 78 29 11 17 -79 h
+.9201 g 4519 3190 N -17 79 30 2 16 -79 h
+.9265 g 4489 3188 N -16 79 29 2 17 -79 h
+.9298 g 4460 3177 N -17 79 30 10 16 -78 h
+.9301 g 4430 3167 N -16 78 29 11 17 -79 h
+.9303 g 4401 3157 N -17 79 30 10 16 -79 h
+.9307 g 4371 3147 N -16 79 29 10 17 -79 h
+.8596 g 4342 2949 N -17 79 30 196 16 -77 h
+.6524 g 4312 2580 N -16 77 29 362 17 -70 h
+.5165 g 4283 2570 N -17 70 30 11 16 -71 h
+.5167 g 4253 2559 N -16 71 29 10 17 -70 h
+.5169 g 4224 2549 N -17 70 30 10 16 -70 h
+.5171 g 4194 2539 N -16 70 29 10 17 -70 h
+.4508 g 4165 2351 N -17 70 30 181 16 -63 h
+.2652 g 4135 2019 N -16 63 29 312 17 -43 h
+.2891 g 4106 2756 N -17 43 30 10 16 -790 h
+.4796 g 4076 2993 N -16 790 29 11 17 -1038 h
+.5272 g 4047 2983 N -17 1038 30 10 16 -1038 h
+.5273 g 4017 2973 N -16 1038 29 10 17 -1038 h
+.5174 g 3988 2958 N -17 1038 29 59 17 -1082 h
+.4961 g 3959 2943 N -17 1082 30 66 16 -1133 h
+.4848 g 3929 2933 N -16 1133 29 11 17 -1134 h
+.485 g 3900 2923 N -17 1134 30 10 16 -1134 h
+.4851 g 3870 2913 N -16 1134 29 11 17 -1135 h
+.4852 g 3841 2902 N -17 1135 30 10 16 -1134 h
+.4821 g 3811 2891 N -16 1134 29 26 17 -1149 h
+.4757 g 3782 2880 N -17 1149 30 27 16 -1165 h
+.4724 g 3752 2869 N -16 1165 29 11 17 -1165 h
+.4725 g 3723 2859 N -17 1165 30 10 16 -1165 h
+.4727 g 3693 2849 N -16 1165 29 11 17 -1166 h
+.4728 g 3664 2839 N -17 1166 30 11 16 -1167 h
+.4727 g 3634 2828 N -16 1167 29 11 17 -1167 h
+.4725 g 3605 2818 N -17 1167 30 12 16 -1169 h
+.4724 g 3575 2808 N -16 1169 29 10 17 -1169 h
+.4725 g 3546 2797 N -17 1169 30 11 16 -1169 h
+.4234 g 3516 2530 N -16 1169 29 10 17 -912 h
+.2046 g 3487 1633 N -17 912 30 11 16 -26 h
+.035 g 3457 1622 N -16 26 29 10 17 -25 h
+.035 g 3428 1612 N -17 25 30 11 16 -26 h
+.0351 g 3398 1601 N -16 26 29 10 17 -25 h
+.0351 g 3369 1591 N -17 25 30 11 16 -26 h
+.0351 g 3339 1580 N -16 26 29 10 17 -25 h
+.0352 g 3310 1570 N -17 25 30 11 16 -26 h
+.0352 g 3280 1559 N -16 26 29 11 17 -26 h
+.0352 g 3251 1549 N -17 26 30 10 16 -26 h
+.0343 g 3221 1533 N -16 26 29 11 17 -21 h
+.0325 g 3192 1518 N -17 21 30 10 16 -16 h
+.0316 g 3162 1507 N -16 16 29 11 17 -16 h
+.0316 g 3133 1497 N -17 16 30 10 16 -16 h
+.0305 g 3103 1483 N -16 16 29 14 17 -16 h
+.0282 g 3074 1469 N -17 16 30 13 16 -15 h
+.027 g 3044 1459 N -16 15 29 10 17 -15 h
+.027 g 3015 1448 N -17 15 30 11 16 -15 h
+.0271 g 2985 1438 N -16 15 29 11 17 -16 h
+.0271 g 2956 1427 N -17 16 30 10 16 -15 h
+.0252 g 2926 1411 N -16 15 29 15 17 -14 h
+.0215 g 2897 1395 N -17 14 30 15 16 -13 h
+.0196 g 2867 1385 N -16 13 29 10 17 -13 h
+0 g 5774 2384 N -16 9 29 10 17 -8 h
+0 g 5745 2373 N -17 8 30 11 16 -8 h
+0 g 5715 2363 N -16 8 29 11 17 -9 h
+0 g 5686 2352 N -17 9 30 10 16 -8 h
+0 g 5656 2342 N -16 8 29 11 17 -9 h
+0 g 5627 2331 N -17 9 30 10 16 -8 h
+0 g 5597 2321 N -16 8 29 11 17 -9 h
+0 g 5568 2310 N -17 9 30 10 16 -8 h
+0 g 5538 2299 N -16 8 29 11 17 -8 h
+0 g 5509 2289 N -17 8 30 11 16 -9 h
+0 g 5479 2278 N -16 9 29 10 17 -8 h
+0 g 5450 2268 N -17 8 30 11 16 -9 h
+.0006 g 5420 2260 N -16 9 29 10 17 -11 h
+.0018 g 5391 2253 N -17 11 30 11 16 -15 h
+.0023 g 5361 2242 N -16 15 29 10 17 -14 h
+.0023 g 5332 2232 N -17 14 30 11 16 -15 h
+.0023 g 5302 2221 N -16 15 29 11 17 -15 h
+.0023 g 5273 2210 N -17 15 30 10 16 -14 h
+.0029 g 5243 2203 N -16 14 29 11 17 -18 h
+.0041 g 5214 2195 N -17 18 30 10 16 -20 h
+.0047 g 5184 2185 N -16 20 29 11 17 -21 h
+.0047 g 5155 2174 N -17 21 30 10 16 -20 h
+.0047 g 5125 2164 N -16 20 29 11 17 -21 h
+.0047 g 5096 2153 N -17 21 30 11 16 -21 h
+.0051 g 5066 2145 N -16 21 29 10 17 -23 h
+.006 g 5037 2137 N -17 23 30 11 16 -26 h
+.0065 g 5007 2126 N -16 26 29 10 17 -25 h
+.0065 g 4978 2116 N -17 25 30 11 16 -26 h
+.0065 g 4948 2105 N -16 26 29 10 17 -25 h
+.0065 g 4919 2094 N -17 25 30 11 16 -25 h
+.0713 g 4889 2423 N -16 25 29 11 17 -365 h
+.171 g 4860 2594 N -17 365 30 10 16 -546 h
+.2059 g 4830 2584 N -16 546 29 11 17 -547 h
+.206 g 4801 2573 N -17 547 30 10 16 -546 h
+.206 g 4771 2563 N -16 546 29 11 17 -547 h
+.2061 g 4742 2553 N -17 547 30 10 16 -547 h
+.2867 g 4712 2963 N -16 547 29 11 17 -968 h
+.4058 g 4683 3154 N -17 968 30 10 16 -1169 h
+.4446 g 4653 3144 N -16 1169 29 11 17 -1170 h
+.4447 g 4624 3134 N -17 1170 30 11 16 -1171 h
+.4448 g 4594 3124 N -16 1171 29 10 17 -1171 h
+.4449 g 4565 3113 N -17 1171 30 11 16 -1171 h
+.4466 g 4535 3111 N -16 1171 29 10 17 -1179 h
+.4498 g 4506 3109 N -17 1179 30 11 16 -1188 h
+.4515 g 4476 3099 N -16 1188 29 10 17 -1188 h
+.4516 g 4447 3088 N -17 1188 30 11 16 -1188 h
+.4517 g 4417 3078 N -16 1188 29 11 17 -1189 h
+.4518 g 4388 3068 N -17 1189 30 10 16 -1189 h
+.4165 g 4358 2872 N -16 1189 29 11 17 -1004 h
+.3137 g 4329 2510 N -17 1004 30 10 16 -652 h
+.2464 g 4299 2499 N -16 652 29 11 17 -652 h
+.2465 g 4270 2489 N -17 652 30 10 16 -652 h
+.2466 g 4240 2479 N -16 652 29 11 17 -653 h
+.2467 g 4211 2469 N -17 653 30 11 16 -654 h
+.2142 g 4181 2288 N -16 654 29 10 17 -483 h
+.124 g 4152 1976 N -17 483 30 11 16 -182 h
+.0665 g 4122 1966 N -16 182 29 10 17 -182 h
+.0665 g 4093 1955 N -17 182 30 11 16 -182 h
+.0666 g 4063 1945 N -16 182 29 10 17 -182 h
+.0666 g 4034 1935 N -17 182 30 11 16 -183 h
+.0574 g 4005 1876 N -16 183 29 11 16 -135 h
+.0376 g 3975 1810 N -16 135 29 10 17 -79 h
+.0271 g 3946 1799 N -17 79 30 11 16 -79 h
+.0271 g 3916 1789 N -16 79 29 10 17 -79 h
+.0271 g 3887 1778 N -17 79 30 11 16 -79 h
+.0272 g 3857 1768 N -16 79 29 10 17 -79 h
+.0242 g 3828 1742 N -17 79 30 11 16 -64 h
+.018 g 3798 1715 N -16 64 29 11 17 -48 h
+.0149 g 3769 1704 N -17 48 30 10 16 -47 h
+.0149 g 3739 1694 N -16 47 29 11 17 -48 h
+.0149 g 3710 1683 N -17 48 30 10 16 -47 h
+.0149 g 3680 1672 N -16 47 29 11 17 -47 h
+.0147 g 3651 1661 N -17 47 30 10 16 -46 h
+.0143 g 3621 1649 N -16 46 29 11 17 -45 h
+.0141 g 3592 1639 N -17 45 30 11 16 -46 h
+.0142 g 3562 1628 N -16 46 29 10 17 -45 h
+.0142 g 3533 1618 N -17 45 30 11 16 -46 h
+.0142 g 3503 1607 N -16 46 29 10 17 -45 h
+.0142 g 3474 1597 N -17 45 30 11 16 -46 h
+.0142 g 3444 1586 N -16 46 29 10 17 -45 h
+.0142 g 3415 1576 N -17 45 30 11 16 -46 h
+.0142 g 3385 1565 N -16 46 29 11 17 -46 h
+.0142 g 3356 1555 N -17 46 30 10 16 -46 h
+.0142 g 3326 1544 N -16 46 29 11 17 -46 h
+.0143 g 3297 1533 N -17 46 30 10 16 -45 h
+.0143 g 3267 1523 N -16 45 29 11 17 -46 h
+.0143 g 3238 1512 N -17 46 30 10 16 -45 h
+.0143 g 3208 1502 N -16 45 29 11 17 -46 h
+.0143 g 3179 1491 N -17 46 30 11 16 -46 h
+.0143 g 3149 1481 N -16 46 29 10 17 -46 h
+.0138 g 3120 1467 N -17 46 30 11 16 -43 h
+.0127 g 3090 1454 N -16 43 29 10 17 -40 h
+.0122 g 3061 1444 N -17 40 30 11 16 -41 h
+.0122 g 3031 1433 N -16 41 29 10 17 -40 h
+.0122 g 3002 1422 N -17 40 30 11 16 -40 h
+.0122 g 2972 1412 N -16 40 29 11 17 -41 h
+.0114 g 2943 1397 N -17 41 30 10 16 -36 h
+.0098 g 2913 1382 N -16 36 29 11 17 -32 h
+.009 g 2884 1372 N -17 32 30 10 16 -32 h
+0 g 5791 2376 N -17 8 30 11 16 -9 h
+0 g 5761 2365 N -16 9 29 10 17 -8 h
+0 g 5732 2354 N -17 8 30 11 16 -8 h
+0 g 5702 2344 N -16 8 29 11 17 -9 h
+0 g 5673 2333 N -17 9 30 10 16 -8 h
+0 g 5643 2323 N -16 8 29 11 17 -9 h
+0 g 5614 2312 N -17 9 30 10 16 -8 h
+0 g 5584 2302 N -16 8 29 11 17 -9 h
+0 g 5555 2291 N -17 9 30 10 16 -8 h
+0 g 5525 2280 N -16 8 29 11 17 -8 h
+0 g 5496 2270 N -17 8 30 11 16 -9 h
+0 g 5466 2259 N -16 9 29 10 17 -8 h
+0 g 5437 2249 N -17 8 30 11 16 -9 h
+0 g 5407 2238 N -16 9 29 10 17 -8 h
+0 g 5378 2228 N -17 8 30 11 16 -9 h
+0 g 5348 2217 N -16 9 29 10 17 -8 h
+0 g 5319 2206 N -17 8 30 11 16 -8 h
+0 g 5289 2196 N -16 8 29 11 17 -9 h
+0 g 5260 2185 N -17 9 30 10 16 -8 h
+0 g 5230 2175 N -16 8 29 11 17 -9 h
+0 g 5201 2164 N -17 9 30 10 16 -8 h
+0 g 5171 2154 N -16 8 29 11 17 -9 h
+0 g 5142 2143 N -17 9 30 10 16 -8 h
+0 g 5112 2132 N -16 8 29 11 17 -8 h
+0 g 5083 2122 N -17 8 30 10 16 -8 h
+0 g 5053 2111 N -16 8 29 11 17 -8 h
+0 g 5024 2101 N -17 8 30 11 16 -9 h
+0 g 4994 2090 N -16 9 29 10 17 -8 h
+0 g 4965 2080 N -17 8 30 11 16 -9 h
+0 g 4935 2069 N -16 9 29 10 17 -8 h
+0 g 4906 2058 N -17 8 30 11 16 -8 h
+0 g 4876 2048 N -16 8 29 10 17 -8 h
+0 g 4847 2037 N -17 8 30 11 16 -8 h
+0 g 4817 2027 N -16 8 29 11 17 -9 h
+0 g 4788 2016 N -17 9 30 10 16 -8 h
+0 g 4758 2006 N -16 8 29 11 17 -9 h
+0 g 4729 1995 N -17 9 30 10 16 -8 h
+0 g 4699 1985 N -16 8 29 11 17 -9 h
+0 g 4670 1974 N -17 9 30 10 16 -8 h
+0 g 4640 1963 N -16 8 29 11 17 -8 h
+0 g 4611 1953 N -17 8 30 11 16 -9 h
+0 g 4581 1942 N -16 9 29 10 17 -8 h
+0 g 4552 1932 N -17 8 30 11 16 -9 h
+0 g 4522 1921 N -16 9 29 10 17 -8 h
+0 g 4493 1911 N -17 8 30 11 16 -9 h
+0 g 4463 1900 N -16 9 29 10 17 -8 h
+0 g 4434 1889 N -17 8 30 11 16 -8 h
+0 g 4404 1879 N -16 8 29 11 17 -9 h
+0 g 4375 1868 N -17 9 30 10 16 -8 h
+0 g 4345 1858 N -16 8 29 11 17 -9 h
+0 g 4316 1847 N -17 9 30 10 16 -8 h
+0 g 4286 1837 N -16 8 29 11 17 -9 h
+0 g 4257 1826 N -17 9 30 10 16 -8 h
+0 g 4227 1815 N -16 8 29 11 17 -8 h
+0 g 4198 1805 N -17 8 30 11 16 -9 h
+0 g 4168 1794 N -16 9 29 10 17 -8 h
+0 g 4139 1784 N -17 8 30 11 16 -9 h
+0 g 4109 1773 N -16 9 29 10 17 -8 h
+0 g 4080 1763 N -17 8 30 11 16 -9 h
+0 g 4050 1752 N -16 9 29 10 17 -8 h
+0 g 4021 1741 N -17 8 29 11 17 -8 h
+0 g 3992 1731 N -17 8 30 11 16 -9 h
+0 g 3962 1720 N -16 9 29 10 17 -8 h
+0 g 3933 1710 N -17 8 30 11 16 -9 h
+0 g 3903 1699 N -16 9 29 10 17 -8 h
+0 g 3874 1689 N -17 8 30 11 16 -9 h
+0 g 3844 1678 N -16 9 29 10 17 -8 h
+0 g 3815 1667 N -17 8 30 11 16 -8 h
+0 g 3785 1657 N -16 8 29 11 17 -9 h
+0 g 3756 1646 N -17 9 30 10 16 -8 h
+0 g 3726 1636 N -16 8 29 11 17 -9 h
+0 g 3697 1625 N -17 9 30 10 16 -8 h
+0 g 3667 1615 N -16 8 29 11 17 -9 h
+0 g 3638 1604 N -17 9 30 10 16 -8 h
+0 g 3608 1593 N -16 8 29 11 17 -8 h
+0 g 3579 1583 N -17 8 30 11 16 -9 h
+0 g 3549 1572 N -16 9 29 10 17 -8 h
+0 g 3520 1562 N -17 8 30 11 16 -9 h
+0 g 3490 1551 N -16 9 29 10 17 -8 h
+0 g 3461 1541 N -17 8 30 11 16 -9 h
+0 g 3431 1530 N -16 9 29 10 17 -8 h
+0 g 3402 1519 N -17 8 30 11 16 -8 h
+0 g 3372 1509 N -16 8 29 10 17 -8 h
+0 g 3343 1498 N -17 8 30 11 16 -8 h
+0 g 3313 1488 N -16 8 29 11 17 -9 h
+0 g 3284 1477 N -17 9 30 10 16 -8 h
+0 g 3254 1467 N -16 8 29 11 17 -9 h
+0 g 3225 1456 N -17 9 30 10 16 -8 h
+0 g 3195 1445 N -16 8 29 11 17 -8 h
+0 g 3166 1435 N -17 8 30 10 16 -8 h
+0 g 3136 1424 N -16 8 29 11 17 -8 h
+0 g 3107 1414 N -17 8 30 11 16 -9 h
+0 g 3077 1403 N -16 9 29 10 17 -8 h
+0 g 3048 1393 N -17 8 30 11 16 -9 h
+0 g 3018 1382 N -16 9 29 10 17 -8 h
+0 g 2989 1371 N -17 8 30 11 16 -8 h
+0 g 2959 1361 N -16 8 29 10 17 -8 h
+0 g 2930 1350 N -17 8 30 11 16 -8 h
+0 g 2900 1340 N -16 8 29 11 17 -9 h
+0 g 5807 2367 N -16 9 29 10 17 -8 h
+0 g 5778 2357 N -17 8 30 11 16 -9 h
+0 g 5748 2346 N -16 9 29 10 17 -8 h
+0 g 5719 2335 N -17 8 30 11 16 -8 h
+0 g 5689 2325 N -16 8 29 11 17 -9 h
+0 g 5660 2314 N -17 9 30 10 16 -8 h
+0 g 5630 2304 N -16 8 29 11 17 -9 h
+0 g 5601 2293 N -17 9 30 10 16 -8 h
+0 g 5571 2283 N -16 8 29 11 17 -9 h
+0 g 5542 2272 N -17 9 30 10 16 -8 h
+0 g 5512 2261 N -16 8 29 11 17 -8 h
+0 g 5483 2251 N -17 8 30 10 16 -8 h
+0 g 5453 2240 N -16 8 29 11 17 -8 h
+0 g 5424 2230 N -17 8 30 11 16 -9 h
+0 g 5394 2219 N -16 9 29 10 17 -8 h
+0 g 5365 2209 N -17 8 30 11 16 -9 h
+0 g 5335 2198 N -16 9 29 10 17 -8 h
+0 g 5306 2187 N -17 8 30 11 16 -8 h
+0 g 5276 2177 N -16 8 29 10 17 -8 h
+0 g 5247 2166 N -17 8 30 11 16 -8 h
+0 g 5217 2156 N -16 8 29 11 17 -9 h
+0 g 5188 2145 N -17 9 30 10 16 -8 h
+0 g 5158 2135 N -16 8 29 11 17 -9 h
+0 g 5129 2124 N -17 9 30 10 16 -8 h
+0 g 5099 2114 N -16 8 29 11 17 -9 h
+0 g 5070 2103 N -17 9 30 10 16 -8 h
+0 g 5040 2092 N -16 8 29 11 17 -8 h
+0 g 5011 2082 N -17 8 30 11 16 -9 h
+0 g 4981 2071 N -16 9 29 10 17 -8 h
+0 g 4952 2061 N -17 8 30 11 16 -9 h
+0 g 4922 2050 N -16 9 29 10 17 -8 h
+0 g 4893 2040 N -17 8 30 11 16 -9 h
+0 g 4863 2029 N -16 9 29 10 17 -8 h
+0 g 4834 2018 N -17 8 30 11 16 -8 h
+0 g 4804 2008 N -16 8 29 11 17 -9 h
+0 g 4775 1997 N -17 9 30 10 16 -8 h
+0 g 4745 1987 N -16 8 29 11 17 -9 h
+0 g 4716 1976 N -17 9 30 10 16 -8 h
+0 g 4686 1966 N -16 8 29 11 17 -9 h
+0 g 4657 1955 N -17 9 30 10 16 -8 h
+0 g 4627 1944 N -16 8 29 11 17 -8 h
+0 g 4598 1934 N -17 8 30 11 16 -9 h
+0 g 4568 1923 N -16 9 29 10 17 -8 h
+0 g 4539 1913 N -17 8 30 11 16 -9 h
+0 g 4509 1902 N -16 9 29 10 17 -8 h
+0 g 4480 1892 N -17 8 30 11 16 -9 h
+0 g 4450 1881 N -16 9 29 10 17 -8 h
+0 g 4421 1870 N -17 8 30 11 16 -8 h
+0 g 4391 1860 N -16 8 29 11 17 -9 h
+0 g 4362 1849 N -17 9 30 10 16 -8 h
+0 g 4332 1839 N -16 8 29 11 17 -9 h
+0 g 4303 1828 N -17 9 30 10 16 -8 h
+0 g 4273 1818 N -16 8 29 11 17 -9 h
+0 g 4244 1807 N -17 9 30 10 16 -8 h
+0 g 4214 1796 N -16 8 29 11 17 -8 h
+0 g 4185 1786 N -17 8 30 11 16 -9 h
+0 g 4155 1775 N -16 9 29 10 17 -8 h
+0 g 4126 1765 N -17 8 30 11 16 -9 h
+0 g 4096 1754 N -16 9 29 10 17 -8 h
+0 g 4067 1744 N -17 8 30 11 16 -9 h
+0 g 4038 1733 N -16 9 29 10 16 -8 h
+0 g 4008 1722 N -16 8 29 11 17 -8 h
+0 g 3979 1712 N -17 8 30 11 16 -9 h
+0 g 3949 1701 N -16 9 29 10 17 -8 h
+0 g 3920 1691 N -17 8 30 11 16 -9 h
+0 g 3890 1680 N -16 9 29 10 17 -8 h
+0 g 3861 1670 N -17 8 30 11 16 -9 h
+0 g 3831 1659 N -16 9 29 10 17 -8 h
+0 g 3802 1648 N -17 8 30 11 16 -8 h
+0 g 3772 1638 N -16 8 29 10 17 -8 h
+0 g 3743 1627 N -17 8 30 11 16 -8 h
+0 g 3713 1617 N -16 8 29 11 17 -9 h
+0 g 3684 1606 N -17 9 30 10 16 -8 h
+0 g 3654 1596 N -16 8 29 11 17 -9 h
+0 g 3625 1585 N -17 9 30 10 16 -8 h
+0 g 3595 1574 N -16 8 29 11 17 -8 h
+0 g 3566 1564 N -17 8 30 10 16 -8 h
+0 g 3536 1553 N -16 8 29 11 17 -8 h
+0 g 3507 1543 N -17 8 30 11 16 -9 h
+0 g 3477 1532 N -16 9 29 10 17 -8 h
+0 g 3448 1522 N -17 8 30 11 16 -9 h
+0 g 3418 1511 N -16 9 29 10 17 -8 h
+0 g 3389 1501 N -17 8 30 11 16 -9 h
+0 g 3359 1490 N -16 9 29 10 17 -8 h
+0 g 3330 1479 N -17 8 30 11 16 -8 h
+0 g 3300 1469 N -16 8 29 11 17 -9 h
+0 g 3271 1458 N -17 9 30 10 16 -8 h
+0 g 3241 1448 N -16 8 29 11 17 -9 h
+0 g 3212 1437 N -17 9 30 10 16 -8 h
+0 g 3182 1427 N -16 8 29 11 17 -9 h
+0 g 3153 1416 N -17 9 30 10 16 -8 h
+0 g 3123 1405 N -16 8 29 11 17 -8 h
+0 g 3094 1395 N -17 8 30 11 16 -9 h
+0 g 3064 1384 N -16 9 29 10 17 -8 h
+0 g 3035 1374 N -17 8 30 11 16 -9 h
+0 g 3005 1363 N -16 9 29 10 17 -8 h
+0 g 2976 1353 N -17 8 30 11 16 -9 h
+0 g 2946 1342 N -16 9 29 10 17 -8 h
+0 g 2917 1331 N -17 8 30 11 16 -8 h
+0 g 5824 2359 N -17 8 30 11 16 -9 h
+0 g 5794 2348 N -16 9 29 10 17 -8 h
+0 g 5765 2338 N -17 8 30 11 16 -9 h
+0 g 5735 2327 N -16 9 29 10 17 -8 h
+0 g 5706 2316 N -17 8 30 11 16 -8 h
+0 g 5676 2306 N -16 8 29 10 17 -8 h
+0 g 5647 2295 N -17 8 30 11 16 -8 h
+0 g 5617 2285 N -16 8 29 11 17 -9 h
+0 g 5588 2274 N -17 9 30 10 16 -8 h
+0 g 5558 2264 N -16 8 29 11 17 -9 h
+0 g 5529 2253 N -17 9 30 10 16 -8 h
+0 g 5499 2243 N -16 8 29 11 17 -9 h
+0 g 5470 2232 N -17 9 30 10 16 -8 h
+0 g 5440 2221 N -16 8 29 11 17 -8 h
+0 g 5411 2211 N -17 8 30 11 16 -9 h
+0 g 5381 2200 N -16 9 29 10 17 -8 h
+0 g 5352 2190 N -17 8 30 11 16 -9 h
+0 g 5322 2179 N -16 9 29 10 17 -8 h
+0 g 5293 2169 N -17 8 30 11 16 -9 h
+0 g 5263 2158 N -16 9 29 10 17 -8 h
+0 g 5234 2147 N -17 8 30 11 16 -8 h
+0 g 5204 2137 N -16 8 29 11 17 -9 h
+0 g 5175 2126 N -17 9 30 10 16 -8 h
+0 g 5145 2116 N -16 8 29 11 17 -9 h
+0 g 5116 2105 N -17 9 30 10 16 -8 h
+0 g 5086 2095 N -16 8 29 11 17 -9 h
+0 g 5057 2084 N -17 9 30 10 16 -8 h
+0 g 5027 2073 N -16 8 29 11 17 -8 h
+0 g 4998 2063 N -17 8 30 11 16 -9 h
+0 g 4968 2052 N -16 9 29 10 17 -8 h
+0 g 4939 2042 N -17 8 30 11 16 -9 h
+0 g 4909 2031 N -16 9 29 10 17 -8 h
+0 g 4880 2021 N -17 8 30 11 16 -9 h
+0 g 4850 2010 N -16 9 29 10 17 -8 h
+0 g 4821 1999 N -17 8 30 11 16 -8 h
+0 g 4791 1989 N -16 8 29 11 17 -9 h
+0 g 4762 1978 N -17 9 30 10 16 -8 h
+0 g 4732 1968 N -16 8 29 11 17 -9 h
+0 g 4703 1957 N -17 9 30 10 16 -8 h
+0 g 4673 1947 N -16 8 29 11 17 -9 h
+0 g 4644 1936 N -17 9 30 10 16 -8 h
+0 g 4614 1925 N -16 8 29 11 17 -8 h
+0 g 4585 1915 N -17 8 30 11 16 -9 h
+0 g 4555 1904 N -16 9 29 10 17 -8 h
+0 g 4526 1894 N -17 8 30 11 16 -9 h
+0 g 4496 1883 N -16 9 29 10 17 -8 h
+0 g 4467 1873 N -17 8 30 11 16 -9 h
+0 g 4437 1862 N -16 9 29 10 17 -8 h
+0 g 4408 1851 N -17 8 30 11 16 -8 h
+0 g 4378 1841 N -16 8 29 11 17 -9 h
+0 g 4349 1830 N -17 9 30 10 16 -8 h
+0 g 4319 1820 N -16 8 29 11 17 -9 h
+0 g 4290 1809 N -17 9 30 10 16 -8 h
+0 g 4260 1799 N -16 8 29 11 17 -9 h
+0 g 4231 1788 N -17 9 30 10 16 -8 h
+0 g 4201 1777 N -16 8 29 11 17 -8 h
+0 g 4172 1767 N -17 8 30 10 16 -8 h
+0 g 4142 1756 N -16 8 29 11 17 -8 h
+0 g 4113 1746 N -17 8 30 11 16 -9 h
+0 g 4083 1735 N -16 9 29 10 17 -8 h
+0 g 4054 1725 N -17 8 30 11 16 -9 h
+0 g 4025 1714 N -16 9 29 10 16 -8 h
+0 g 3995 1703 N -16 8 29 11 17 -8 h
+0 g 3966 1693 N -17 8 30 10 16 -8 h
+0 g 3936 1682 N -16 8 29 11 17 -8 h
+0 g 3907 1672 N -17 8 30 11 16 -9 h
+0 g 3877 1661 N -16 9 29 10 17 -8 h
+0 g 3848 1651 N -17 8 30 11 16 -9 h
+0 g 3818 1640 N -16 9 29 10 17 -8 h
+0 g 3789 1630 N -17 8 30 11 16 -9 h
+0 g 3759 1619 N -16 9 29 10 17 -8 h
+0 g 3730 1608 N -17 8 30 11 16 -8 h
+0 g 3700 1598 N -16 8 29 11 17 -9 h
+0 g 3671 1587 N -17 9 30 10 16 -8 h
+0 g 3641 1577 N -16 8 29 11 17 -9 h
+0 g 3612 1566 N -17 9 30 10 16 -8 h
+0 g 3582 1556 N -16 8 29 11 17 -9 h
+0 g 3553 1545 N -17 9 30 10 16 -8 h
+0 g 3523 1534 N -16 8 29 11 17 -8 h
+0 g 3494 1524 N -17 8 30 11 16 -9 h
+0 g 3464 1513 N -16 9 29 10 17 -8 h
+0 g 3435 1503 N -17 8 30 11 16 -9 h
+0 g 3405 1492 N -16 9 29 10 17 -8 h
+0 g 3376 1482 N -17 8 30 11 16 -9 h
+0 g 3346 1471 N -16 9 29 10 17 -8 h
+0 g 3317 1460 N -17 8 30 11 16 -8 h
+0 g 3287 1450 N -16 8 29 11 17 -9 h
+0 g 3258 1439 N -17 9 30 10 16 -8 h
+0 g 3228 1429 N -16 8 29 11 17 -9 h
+0 g 3199 1418 N -17 9 30 10 16 -8 h
+0 g 3169 1408 N -16 8 29 11 17 -9 h
+0 g 3140 1397 N -17 9 30 10 16 -8 h
+0 g 3110 1386 N -16 8 29 11 17 -8 h
+0 g 3081 1376 N -17 8 30 11 16 -9 h
+0 g 3051 1365 N -16 9 29 10 17 -8 h
+0 g 3022 1355 N -17 8 30 11 16 -9 h
+0 g 2992 1344 N -16 9 29 10 17 -8 h
+0 g 2963 1334 N -17 8 30 11 16 -9 h
+0 g 2933 1323 N -16 9 29 10 17 -8 h
+0 g 5840 2350 N -16 8 29 11 17 -8 h
+0 g 5811 2340 N -17 8 30 11 16 -9 h
+0 g 5781 2329 N -16 9 29 10 17 -8 h
+0 g 5752 2319 N -17 8 30 11 16 -9 h
+0 g 5722 2308 N -16 9 29 10 17 -8 h
+0 g 5693 2298 N -17 8 30 11 16 -9 h
+0 g 5663 2287 N -16 9 29 10 17 -8 h
+0 g 5634 2276 N -17 8 30 11 16 -8 h
+0 g 5604 2266 N -16 8 29 11 17 -9 h
+0 g 5575 2255 N -17 9 30 10 16 -8 h
+0 g 5545 2245 N -16 8 29 11 17 -9 h
+0 g 5516 2234 N -17 9 30 10 16 -8 h
+.0007 g 5486 2224 N -16 8 29 7 17 -5 h
+.0021 g 5457 2213 N -17 5 30 7 16 -1 h
+.0028 g 5427 2202 N -16 1 29 11 17 -1 h
+.0028 g 5398 2192 N -17 1 30 10 16 -1 h
+.0028 g 5368 2181 N -16 1 29 11 17 -1 h
+.0028 g 5339 2171 N -17 1 30 10 16 -1 h
+.0035 g 5309 2160 N -16 1 29 7 17 3 h
+.0049 g 5280 2150 N -17 -3 30 7 16 6 h
+.0056 g 5250 2139 N -16 -6 29 11 17 6 h
+.0056 g 5221 2128 N -17 -6 30 10 16 7 h
+.0056 g 5191 2118 N -16 -7 29 11 17 6 h
+.0056 g 5162 2107 N -17 -6 30 10 16 7 h
+.0061 g 5132 2097 N -16 -7 29 8 17 9 h
+.0072 g 5103 2086 N -17 -9 30 8 16 12 h
+.0077 g 5073 2076 N -16 -12 29 11 17 11 h
+.0077 g 5044 2065 N -17 -11 30 10 16 12 h
+.0078 g 5014 2054 N -16 -12 29 11 17 12 h
+.0078 g 4985 2044 N -17 -12 30 10 16 12 h
+.0805 g 4955 2033 N -16 -12 29 -369 17 392 h
+.1902 g 4926 2023 N -17 -392 30 -183 16 585 h
+.2271 g 4896 2012 N -16 -585 29 11 17 585 h
+.2272 g 4867 2002 N -17 -585 30 10 16 585 h
+.2273 g 4837 1991 N -16 -585 29 10 17 586 h
+.2274 g 4808 1980 N -17 -586 30 11 16 586 h
+.3102 g 4778 1970 N -16 -586 29 -422 17 1018 h
+.4321 g 4749 1959 N -17 -1018 30 -194 16 1223 h
+.4714 g 4719 1949 N -16 -1223 29 10 17 1223 h
+.4715 g 4690 1938 N -17 -1223 30 10 16 1224 h
+.4716 g 4660 1928 N -16 -1224 29 10 17 1224 h
+.4717 g 4631 1917 N -17 -1224 30 11 16 1224 h
+.4734 g 4601 1906 N -16 -1224 29 2 17 1233 h
+.4767 g 4572 1896 N -17 -1233 30 2 16 1241 h
+.4783 g 4542 1885 N -16 -1241 29 10 17 1242 h
+.4784 g 4513 1875 N -17 -1242 30 10 16 1242 h
+.4786 g 4483 1864 N -16 -1242 29 11 17 1242 h
+.4787 g 4454 1854 N -17 -1242 30 10 16 1242 h
+.4429 g 4424 1843 N -16 -1242 29 198 17 1055 h
+.3382 g 4395 1832 N -17 -1055 30 370 16 696 h
+.2693 g 4365 1822 N -16 -696 29 11 17 695 h
+.2694 g 4336 1811 N -17 -695 30 10 16 696 h
+.2695 g 4306 1801 N -16 -696 29 10 17 696 h
+.2696 g 4277 1790 N -17 -696 30 11 16 696 h
+.2356 g 4247 1780 N -16 -696 29 188 17 518 h
+.1392 g 4218 1769 N -17 -518 30 336 16 193 h
+.077 g 4188 1759 N -16 -193 29 11 17 192 h
+.077 g 4159 1748 N -17 -192 30 10 16 193 h
+.0771 g 4129 1737 N -16 -193 29 11 17 193 h
+.0771 g 4100 1727 N -17 -193 30 10 16 193 h
+.0667 g 4070 1716 N -16 -193 29 65 17 139 h
+.0441 g 4041 1706 N -17 -139 29 74 17 75 h
+.032 g 4012 1695 N -17 -75 30 11 16 75 h
+.032 g 3982 1685 N -16 -75 29 10 17 75 h
+.032 g 3953 1674 N -17 -75 30 11 16 75 h
+.0321 g 3923 1663 N -16 -75 29 10 17 76 h
+.0286 g 3894 1653 N -17 -76 30 29 16 57 h
+.0213 g 3864 1642 N -16 -57 29 30 17 38 h
+.0177 g 3835 1632 N -17 -38 30 11 16 37 h
+.0177 g 3805 1621 N -16 -37 29 10 17 38 h
+.0177 g 3776 1611 N -17 -38 30 11 16 37 h
+.0177 g 3746 1600 N -16 -37 29 10 17 38 h
+.0175 g 3717 1589 N -17 -38 30 12 16 37 h
+.017 g 3687 1579 N -16 -37 29 12 17 35 h
+.0168 g 3658 1568 N -17 -35 30 10 16 36 h
+.0168 g 3628 1558 N -16 -36 29 11 17 35 h
+.0169 g 3599 1547 N -17 -35 30 10 16 36 h
+.0169 g 3569 1537 N -16 -36 29 11 17 35 h
+.0169 g 3540 1526 N -17 -35 30 10 16 36 h
+.0169 g 3510 1515 N -16 -36 29 11 17 36 h
+.0169 g 3481 1505 N -17 -36 30 10 16 36 h
+.0169 g 3451 1494 N -16 -36 29 11 17 36 h
+.0169 g 3422 1484 N -17 -36 30 10 16 36 h
+.0169 g 3392 1473 N -16 -36 29 11 17 36 h
+.017 g 3363 1463 N -17 -36 30 11 16 35 h
+.017 g 3333 1452 N -16 -35 29 10 17 36 h
+.017 g 3304 1441 N -17 -36 30 11 16 36 h
+.017 g 3274 1431 N -16 -36 29 10 17 36 h
+.017 g 3245 1420 N -17 -36 30 11 16 36 h
+.017 g 3215 1410 N -16 -36 29 10 17 36 h
+.0164 g 3186 1399 N -17 -36 30 14 16 33 h
+.0152 g 3156 1389 N -16 -33 29 14 17 29 h
+.0145 g 3127 1378 N -17 -29 30 10 16 30 h
+.0146 g 3097 1367 N -16 -30 29 11 17 30 h
+.0146 g 3068 1357 N -17 -30 30 10 16 30 h
+.0146 g 3038 1346 N -16 -30 29 11 17 30 h
+.0136 g 3009 1336 N -17 -30 30 16 16 24 h
+.0117 g 2979 1325 N -16 -24 29 15 17 20 h
+.0107 g 2950 1315 N -17 -20 30 11 16 19 h
+0 g 5857 2342 N -17 9 30 10 16 -8 h
+0 g 5827 2331 N -16 8 29 11 17 -8 h
+0 g 5798 2321 N -17 8 30 11 16 -9 h
+0 g 5768 2310 N -16 9 29 10 17 -8 h
+0 g 5739 2300 N -17 8 30 11 16 -9 h
+0 g 5709 2289 N -16 9 29 10 17 -8 h
+0 g 5680 2279 N -17 8 30 11 16 -9 h
+0 g 5650 2268 N -16 9 29 10 17 -8 h
+0 g 5621 2257 N -17 8 30 11 16 -8 h
+0 g 5591 2247 N -16 8 29 11 17 -9 h
+0 g 5562 2236 N -17 9 30 10 16 -8 h
+0 g 5532 2226 N -16 8 29 11 17 -9 h
+.0014 g 5503 2219 N -17 9 30 7 16 -9 h
+.0042 g 5473 2212 N -16 9 29 6 17 -8 h
+.0056 g 5444 2201 N -17 8 30 11 16 -8 h
+.0056 g 5414 2191 N -16 8 29 11 17 -9 h
+.0056 g 5385 2180 N -17 9 30 10 16 -8 h
+.0056 g 5355 2170 N -16 8 29 11 17 -9 h
+.007 g 5326 2163 N -17 9 30 7 16 -9 h
+.0098 g 5296 2156 N -16 9 29 7 17 -9 h
+.0112 g 5267 2145 N -17 9 30 10 16 -8 h
+.0112 g 5237 2135 N -16 8 29 11 17 -9 h
+.0112 g 5208 2124 N -17 9 30 10 16 -8 h
+.0112 g 5178 2114 N -16 8 29 11 17 -9 h
+.0123 g 5149 2106 N -17 9 30 8 16 -9 h
+.0144 g 5119 2098 N -16 9 29 7 17 -8 h
+.0155 g 5090 2087 N -17 8 30 11 16 -8 h
+.0155 g 5060 2077 N -16 8 29 11 17 -9 h
+.0155 g 5031 2066 N -17 9 30 10 16 -8 h
+.0155 g 5001 2056 N -16 8 29 11 17 -9 h
+.161 g 4972 2425 N -17 9 30 -370 16 -8 h
+.3803 g 4942 2608 N -16 8 29 -182 17 -9 h
+.4542 g 4913 2597 N -17 9 30 10 16 -8 h
+.4544 g 4883 2587 N -16 8 29 10 17 -8 h
+.4546 g 4854 2577 N -17 8 30 11 16 -9 h
+.4548 g 4824 2566 N -16 9 29 10 17 -8 h
+.6204 g 4795 2988 N -17 8 30 -422 16 -8 h
+.8643 g 4765 3182 N -16 8 29 -194 17 -8 h
+.9427 g 4736 3172 N -17 8 30 10 16 -8 h
+.943 g 4706 3162 N -16 8 29 11 17 -9 h
+.9432 g 4677 3152 N -17 9 30 10 16 -9 h
+.9435 g 4647 3141 N -16 9 29 10 17 -8 h
+.9469 g 4618 3139 N -17 8 30 2 16 -8 h
+.9533 g 4588 3137 N -16 8 29 2 17 -8 h
+.9567 g 4559 3127 N -17 8 30 11 16 -9 h
+.9569 g 4529 3117 N -16 9 29 10 17 -9 h
+.9571 g 4500 3106 N -17 9 30 10 16 -8 h
+.9574 g 4470 3096 N -16 8 29 10 17 -8 h
+.8858 g 4441 2898 N -17 8 30 198 16 -8 h
+.6763 g 4411 2528 N -16 8 29 371 17 -9 h
+.5386 g 4382 2517 N -17 9 30 10 16 -8 h
+.5389 g 4352 2507 N -16 8 29 10 17 -8 h
+.5391 g 4323 2497 N -17 8 30 11 16 -9 h
+.5393 g 4293 2486 N -16 9 29 10 17 -8 h
+.4713 g 4264 2298 N -17 8 30 188 16 -8 h
+.2785 g 4234 1962 N -16 8 29 337 17 -9 h
+.1539 g 4205 1951 N -17 9 30 10 16 -8 h
+.154 g 4175 1941 N -16 8 29 11 17 -9 h
+.1541 g 4146 1930 N -17 9 30 10 16 -8 h
+.1542 g 4116 1920 N -16 8 29 10 17 -8 h
+.1333 g 4087 1855 N -17 8 30 66 16 -9 h
+.0882 g 4058 1781 N -16 9 29 74 16 -9 h
+.064 g 4028 1770 N -16 9 29 10 17 -8 h
+.064 g 3999 1760 N -17 8 30 11 16 -9 h
+.0641 g 3969 1749 N -16 9 29 10 17 -8 h
+.0641 g 3940 1739 N -17 8 30 11 16 -9 h
+.0571 g 3910 1710 N -16 9 29 29 17 -9 h
+.0427 g 3881 1680 N -17 9 30 29 16 -8 h
+.0353 g 3851 1669 N -16 8 29 11 17 -8 h
+.0353 g 3822 1659 N -17 8 30 11 16 -9 h
+.0354 g 3792 1648 N -16 9 29 10 17 -8 h
+.0354 g 3763 1638 N -17 8 30 11 16 -9 h
+.035 g 3733 1626 N -16 9 29 11 17 -8 h
+.0341 g 3704 1614 N -17 8 30 12 16 -8 h
+.0336 g 3674 1604 N -16 8 29 11 17 -9 h
+.0337 g 3645 1593 N -17 9 30 10 16 -8 h
+.0337 g 3615 1583 N -16 8 29 11 17 -9 h
+.0337 g 3586 1572 N -17 9 30 10 16 -8 h
+.0338 g 3556 1562 N -16 8 29 11 17 -9 h
+.0338 g 3527 1551 N -17 9 30 10 16 -8 h
+.0338 g 3497 1541 N -16 8 29 11 17 -9 h
+.0338 g 3468 1530 N -17 9 30 10 16 -8 h
+.0339 g 3438 1520 N -16 8 29 11 17 -9 h
+.0339 g 3409 1509 N -17 9 30 10 16 -8 h
+.0339 g 3379 1498 N -16 8 29 11 17 -8 h
+.0339 g 3350 1488 N -17 8 30 10 16 -8 h
+.034 g 3320 1477 N -16 8 29 11 17 -8 h
+.034 g 3291 1467 N -17 8 30 11 16 -9 h
+.034 g 3261 1456 N -16 9 29 10 17 -8 h
+.034 g 3232 1446 N -17 8 30 11 16 -9 h
+.0328 g 3202 1432 N -16 9 29 13 17 -8 h
+.0303 g 3173 1418 N -17 8 30 14 16 -8 h
+.0291 g 3143 1408 N -16 8 29 11 17 -9 h
+.0291 g 3114 1397 N -17 9 30 10 16 -8 h
+.0291 g 3084 1387 N -16 8 29 11 17 -9 h
+.0292 g 3055 1376 N -17 9 30 10 16 -8 h
+.0272 g 3025 1360 N -16 8 29 16 17 -8 h
+.0233 g 2996 1345 N -17 8 30 16 16 -9 h
+.0214 g 2966 1334 N -16 9 29 10 17 -8 h
+0 g 5873 2334 N -16 8 29 11 17 -9 h
+0 g 5844 2323 N -17 9 30 10 16 -8 h
+0 g 5814 2312 N -16 8 29 11 17 -8 h
+0 g 5785 2302 N -17 8 30 11 16 -9 h
+0 g 5755 2291 N -16 9 29 10 17 -8 h
+0 g 5726 2281 N -17 8 30 11 16 -9 h
+0 g 5696 2270 N -16 9 29 10 17 -8 h
+0 g 5667 2260 N -17 8 30 11 16 -9 h
+0 g 5637 2249 N -16 9 29 10 17 -8 h
+0 g 5608 2238 N -17 8 30 11 16 -8 h
+0 g 5578 2228 N -16 8 29 11 17 -9 h
+0 g 5549 2217 N -17 9 30 10 16 -8 h
+.0014 g 5519 2210 N -16 8 29 7 17 -8 h
+.0042 g 5490 2204 N -17 8 30 7 16 -9 h
+.0056 g 5460 2193 N -16 9 29 10 17 -8 h
+.0056 g 5431 2182 N -17 8 30 11 16 -8 h
+.0056 g 5401 2172 N -16 8 29 11 17 -9 h
+.0056 g 5372 2161 N -17 9 30 10 16 -8 h
+.007 g 5342 2154 N -16 8 29 7 17 -8 h
+.0098 g 5313 2147 N -17 8 30 7 16 -8 h
+.0112 g 5283 2137 N -16 8 29 11 17 -9 h
+.0112 g 5254 2126 N -17 9 30 10 16 -8 h
+.0112 g 5224 2116 N -16 8 29 11 17 -9 h
+.0112 g 5195 2105 N -17 9 30 10 16 -8 h
+.0123 g 5165 2097 N -16 8 29 8 17 -8 h
+.0144 g 5136 2090 N -17 8 30 8 16 -9 h
+.0155 g 5106 2079 N -16 9 29 10 17 -8 h
+.0155 g 5077 2068 N -17 8 30 11 16 -8 h
+.0155 g 5047 2058 N -16 8 29 10 17 -8 h
+.0155 g 5018 2047 N -17 8 30 11 16 -8 h
+.161 g 4988 2417 N -16 8 29 -370 17 -8 h
+.3803 g 4959 2599 N -17 8 30 -182 16 -8 h
+.4542 g 4929 2589 N -16 8 29 10 17 -8 h
+.4544 g 4900 2579 N -17 8 30 11 16 -9 h
+.4546 g 4870 2568 N -16 9 29 10 17 -8 h
+.4548 g 4841 2558 N -17 8 30 10 16 -8 h
+.6204 g 4811 2980 N -16 8 29 -421 17 -9 h
+.8643 g 4782 3174 N -17 9 30 -195 16 -8 h
+.9428 g 4752 3164 N -16 8 29 11 17 -9 h
+.943 g 4723 3153 N -17 9 30 10 16 -8 h
+.9432 g 4693 3143 N -16 8 29 10 17 -8 h
+.9435 g 4664 3133 N -17 8 30 10 16 -8 h
+.9469 g 4634 3131 N -16 8 29 3 17 -9 h
+.9533 g 4605 3129 N -17 9 30 2 16 -9 h
+.9567 g 4575 3118 N -16 9 29 10 17 -8 h
+.9569 g 4546 3108 N -17 8 30 10 16 -8 h
+.9571 g 4516 3098 N -16 8 29 10 17 -8 h
+.9574 g 4487 3088 N -17 8 30 11 16 -9 h
+.8858 g 4457 2890 N -16 9 29 198 17 -9 h
+.6763 g 4428 2519 N -17 9 30 370 16 -8 h
+.5387 g 4398 2509 N -16 8 29 10 17 -8 h
+.5389 g 4369 2499 N -17 8 30 11 16 -9 h
+.5391 g 4339 2488 N -16 9 29 10 17 -8 h
+.5393 g 4310 2478 N -17 8 30 10 16 -8 h
+.4713 g 4280 2290 N -16 8 29 189 17 -9 h
+.2785 g 4251 1953 N -17 9 30 336 16 -8 h
+.1539 g 4221 1943 N -16 8 29 11 17 -9 h
+.154 g 4192 1932 N -17 9 30 10 16 -8 h
+.1541 g 4162 1922 N -16 8 29 10 17 -8 h
+.1542 g 4133 1912 N -17 8 30 11 16 -9 h
+.1333 g 4103 1846 N -16 9 29 65 17 -8 h
+.0882 g 4074 1772 N -17 8 29 74 17 -8 h
+.064 g 4045 1762 N -17 8 30 10 16 -8 h
+.064 g 4015 1751 N -16 8 29 11 17 -8 h
+.0641 g 3986 1741 N -17 8 30 11 16 -9 h
+.0641 g 3956 1730 N -16 9 29 10 17 -8 h
+.0571 g 3927 1701 N -17 8 30 29 16 -8 h
+.0427 g 3897 1672 N -16 8 29 30 17 -9 h
+.0353 g 3868 1661 N -17 9 30 10 16 -8 h
+.0353 g 3838 1650 N -16 8 29 11 17 -8 h
+.0354 g 3809 1640 N -17 8 30 10 16 -8 h
+.0354 g 3779 1629 N -16 8 29 11 17 -8 h
+.035 g 3750 1618 N -17 8 30 12 16 -9 h
+.0341 g 3720 1606 N -16 9 29 11 17 -8 h
+.0336 g 3691 1595 N -17 8 30 11 16 -8 h
+.0337 g 3661 1585 N -16 8 29 10 17 -8 h
+.0337 g 3632 1574 N -17 8 30 11 16 -8 h
+.0337 g 3602 1564 N -16 8 29 11 17 -9 h
+.0338 g 3573 1553 N -17 9 30 10 16 -8 h
+.0338 g 3543 1543 N -16 8 29 11 17 -9 h
+.0338 g 3514 1532 N -17 9 30 10 16 -8 h
+.0338 g 3484 1522 N -16 8 29 11 17 -9 h
+.0339 g 3455 1511 N -17 9 30 10 16 -8 h
+.0339 g 3425 1501 N -16 8 29 11 17 -9 h
+.0339 g 3396 1490 N -17 9 30 10 16 -8 h
+.0339 g 3366 1480 N -16 8 29 11 17 -9 h
+.034 g 3337 1469 N -17 9 30 10 16 -8 h
+.034 g 3307 1458 N -16 8 29 11 17 -8 h
+.034 g 3278 1448 N -17 8 30 10 16 -8 h
+.034 g 3248 1437 N -16 8 29 11 17 -8 h
+.0328 g 3219 1424 N -17 8 30 14 16 -9 h
+.0303 g 3189 1410 N -16 9 29 14 17 -9 h
+.0291 g 3160 1399 N -17 9 30 10 16 -8 h
+.0291 g 3130 1389 N -16 8 29 11 17 -9 h
+.0291 g 3101 1378 N -17 9 30 10 16 -8 h
+.0292 g 3071 1368 N -16 8 29 11 17 -9 h
+.0272 g 3042 1352 N -17 9 30 15 16 -8 h
+.0233 g 3012 1336 N -16 8 29 16 17 -8 h
+.0214 g 2983 1326 N -17 8 30 11 16 -9 h
+0 g 5890 2325 N -17 9 30 10 16 -8 h
+0 g 5860 2315 N -16 8 29 11 17 -9 h
+0 g 5831 2304 N -17 9 30 10 16 -8 h
+0 g 5801 2293 N -16 8 29 11 17 -8 h
+0 g 5772 2283 N -17 8 30 10 16 -8 h
+0 g 5742 2272 N -16 8 29 11 17 -8 h
+0 g 5713 2262 N -17 8 30 11 16 -9 h
+0 g 5683 2251 N -16 9 29 10 17 -8 h
+0 g 5654 2241 N -17 8 30 11 16 -9 h
+0 g 5624 2230 N -16 9 29 10 17 -8 h
+0 g 5595 2219 N -17 8 30 11 16 -8 h
+0 g 5565 2209 N -16 8 29 10 17 -8 h
+.0014 g 5536 2202 N -17 8 30 7 16 -8 h
+.0042 g 5506 2195 N -16 8 29 7 17 -8 h
+.0056 g 5477 2185 N -17 8 30 11 16 -9 h
+.0056 g 5447 2174 N -16 9 29 10 17 -8 h
+.0056 g 5418 2163 N -17 8 30 11 16 -8 h
+.0056 g 5388 2153 N -16 8 29 11 17 -9 h
+.007 g 5359 2146 N -17 9 30 6 16 -8 h
+.0098 g 5329 2139 N -16 8 29 7 17 -8 h
+.0112 g 5300 2128 N -17 8 30 11 16 -8 h
+.0112 g 5270 2118 N -16 8 29 11 17 -9 h
+.0112 g 5241 2107 N -17 9 30 10 16 -8 h
+.0112 g 5211 2097 N -16 8 29 11 17 -9 h
+.0123 g 5182 2089 N -17 9 30 7 16 -8 h
+.0144 g 5152 2081 N -16 8 29 8 17 -8 h
+.0155 g 5123 2071 N -17 8 30 11 16 -9 h
+.0155 g 5093 2060 N -16 9 29 10 17 -8 h
+.0155 g 5064 2050 N -17 8 30 11 16 -9 h
+.0155 g 5034 2039 N -16 9 29 10 17 -8 h
+.161 g 5005 2409 N -17 8 30 -369 16 -9 h
+.3803 g 4975 2591 N -16 9 29 -182 17 -9 h
+.4542 g 4946 2581 N -17 9 30 10 16 -9 h
+.4544 g 4916 2570 N -16 9 29 10 17 -8 h
+.4546 g 4887 2560 N -17 8 30 11 16 -9 h
+.4548 g 4857 2550 N -16 9 29 10 17 -9 h
+.6204 g 4828 2971 N -17 9 30 -422 16 -8 h
+.8643 g 4798 3166 N -16 8 29 -194 17 -9 h
+.9428 g 4769 3155 N -17 9 30 10 16 -8 h
+.943 g 4739 3145 N -16 8 29 10 17 -8 h
+.9432 g 4710 3135 N -17 8 30 11 16 -9 h
+.9435 g 4680 3125 N -16 9 29 10 17 -9 h
+.9469 g 4651 3122 N -17 9 30 2 16 -8 h
+.9533 g 4621 3120 N -16 8 29 2 17 -8 h
+.9567 g 4592 3110 N -17 8 30 10 16 -8 h
+.9569 g 4562 3100 N -16 8 29 11 17 -9 h
+.9572 g 4533 3090 N -17 9 30 10 16 -9 h
+.9574 g 4503 3079 N -16 9 29 10 17 -8 h
+.8858 g 4474 2881 N -17 8 30 198 16 -8 h
+.6764 g 4444 2511 N -16 8 29 370 17 -8 h
+.5388 g 4415 2501 N -17 8 30 11 16 -9 h
+.539 g 4385 2490 N -16 9 29 10 17 -8 h
+.5392 g 4356 2480 N -17 8 30 10 16 -8 h
+.5394 g 4326 2470 N -16 8 29 10 17 -8 h
+.4714 g 4297 2281 N -17 8 30 189 16 -8 h
+.2788 g 4267 1945 N -16 8 29 335 17 -7 h
+.2023 g 4238 1934 N -17 7 30 -240 16 244 h
+.2799 g 4208 1924 N -16 -244 29 -143 17 397 h
+.3094 g 4179 1914 N -17 -397 30 10 16 397 h
+.3096 g 4149 1903 N -16 -397 29 10 17 398 h
+.2956 g 4120 1838 N -17 -398 30 30 16 433 h
+.2655 g 4091 1764 N -16 -433 29 30 16 477 h
+.2496 g 4061 1754 N -16 -477 29 11 17 476 h
+.2498 g 4032 1743 N -17 -476 30 10 16 477 h
+.2499 g 4002 1732 N -16 -477 29 10 17 478 h
+.25 g 3973 1722 N -17 -478 30 11 16 477 h
+.2456 g 3943 1693 N -16 -477 29 15 17 491 h
+.2363 g 3914 1663 N -17 -491 30 16 16 505 h
+.2317 g 3884 1653 N -16 -505 29 11 17 504 h
+.2318 g 3855 1642 N -17 -504 30 10 16 505 h
+.2319 g 3825 1632 N -16 -505 29 10 17 505 h
+.232 g 3796 1621 N -17 -505 30 11 16 505 h
+.2318 g 3766 1609 N -16 -505 29 10 17 507 h
+.2313 g 3737 1598 N -17 -507 30 11 16 507 h
+.2312 g 3707 1587 N -16 -507 29 10 17 508 h
+.2313 g 3678 1577 N -17 -508 30 11 16 507 h
+.1968 g 3648 1566 N -16 -507 29 190 17 328 h
+.0983 g 3619 1555 N -17 -328 30 345 16 -6 h
+.0344 g 3589 1545 N -16 6 29 11 17 -7 h
+.0344 g 3560 1534 N -17 7 30 10 16 -6 h
+.0344 g 3530 1524 N -16 6 29 11 17 -7 h
+.0345 g 3501 1513 N -17 7 30 10 16 -6 h
+.0345 g 3471 1503 N -16 6 29 11 17 -7 h
+.0345 g 3442 1492 N -17 7 30 11 16 -7 h
+.0345 g 3412 1482 N -16 7 29 10 17 -7 h
+.0346 g 3383 1471 N -17 7 30 11 16 -7 h
+.0345 g 3353 1461 N -16 7 29 11 17 -8 h
+.0342 g 3324 1450 N -17 8 30 11 16 -8 h
+.0341 g 3294 1440 N -16 8 29 11 17 -9 h
+.0341 g 3265 1429 N -17 9 30 10 16 -8 h
+.0329 g 3235 1415 N -16 8 29 14 17 -8 h
+.0304 g 3206 1401 N -17 8 30 14 16 -8 h
+.0291 g 3176 1391 N -16 8 29 10 17 -8 h
+.0292 g 3147 1380 N -17 8 30 11 16 -8 h
+.0292 g 3117 1370 N -16 8 29 11 17 -9 h
+.0292 g 3088 1359 N -17 9 30 10 16 -8 h
+.0273 g 3058 1344 N -16 8 29 16 17 -9 h
+.0233 g 3029 1328 N -17 9 30 16 16 -9 h
+.0214 g 2999 1317 N -16 9 29 10 17 -8 h
+0 g 5906 2317 N -16 8 29 11 17 -9 h
+0 g 5877 2306 N -17 9 30 10 16 -8 h
+0 g 5847 2296 N -16 8 29 11 17 -9 h
+0 g 5818 2285 N -17 9 30 10 16 -8 h
+0 g 5788 2275 N -16 8 29 11 17 -9 h
+0 g 5759 2264 N -17 9 30 10 16 -8 h
+0 g 5729 2253 N -16 8 29 11 17 -8 h
+0 g 5700 2243 N -17 8 30 11 16 -9 h
+0 g 5670 2232 N -16 9 29 10 17 -8 h
+0 g 5641 2222 N -17 8 30 11 16 -9 h
+0 g 5611 2211 N -16 9 29 10 17 -8 h
+0 g 5582 2201 N -17 8 30 11 16 -9 h
+.0008 g 5552 2194 N -16 9 29 10 17 -12 h
+.0025 g 5523 2187 N -17 12 30 10 16 -15 h
+.0033 g 5493 2176 N -16 15 29 10 17 -14 h
+.0033 g 5464 2166 N -17 14 30 11 16 -15 h
+.0033 g 5434 2155 N -16 15 29 10 17 -14 h
+.0033 g 5405 2144 N -17 14 30 11 16 -14 h
+.0041 g 5375 2138 N -16 14 29 10 17 -18 h
+.0057 g 5346 2131 N -17 18 30 10 16 -21 h
+.0065 g 5316 2120 N -16 21 29 11 17 -21 h
+.0065 g 5287 2109 N -17 21 30 10 16 -20 h
+.0065 g 5257 2099 N -16 20 29 11 17 -21 h
+.0065 g 5228 2088 N -17 21 30 10 16 -20 h
+.0072 g 5198 2081 N -16 20 29 10 17 -23 h
+.0084 g 5169 2073 N -17 23 30 10 16 -25 h
+.0091 g 5139 2062 N -16 25 29 11 17 -25 h
+.0091 g 5110 2052 N -17 25 30 11 16 -26 h
+.0091 g 5080 2041 N -16 26 29 10 17 -25 h
+.0091 g 5051 2031 N -17 25 30 11 16 -26 h
+.1004 g 5021 2400 N -16 26 29 -87 17 -308 h
+.2436 g 4992 2582 N -17 308 30 -67 16 -423 h
+.2955 g 4962 2572 N -16 423 29 10 17 -423 h
+.2957 g 4933 2562 N -17 423 30 11 16 -424 h
+.2958 g 4903 2551 N -16 424 29 10 17 -423 h
+.2959 g 4874 2541 N -17 423 30 10 16 -423 h
+.428 g 4844 2963 N -16 423 29 -246 17 -599 h
+.629 g 4815 3157 N -17 599 30 -146 16 -647 h
+.6982 g 4785 3147 N -16 647 29 10 17 -647 h
+.6984 g 4756 3137 N -17 647 30 11 16 -648 h
+.6987 g 4726 3126 N -16 648 29 10 17 -647 h
+.6989 g 4697 3116 N -17 647 30 10 16 -647 h
+.7019 g 4667 3114 N -16 647 29 4 17 -649 h
+.7078 g 4638 3112 N -17 649 30 4 16 -651 h
+.7108 g 4608 3102 N -16 651 29 10 17 -651 h
+.711 g 4579 3091 N -17 651 30 10 16 -650 h
+.7115 g 4549 3081 N -16 650 29 9 17 -649 h
+.7122 g 4520 3071 N -17 649 30 9 16 -648 h
+.6492 g 4490 2873 N -16 648 29 155 17 -605 h
+.4736 g 4461 2503 N -17 605 30 237 16 -472 h
+.3615 g 4431 2492 N -16 472 29 11 17 -472 h
+.3616 g 4402 2482 N -17 472 30 10 16 -472 h
+.3618 g 4372 2472 N -16 472 29 10 17 -472 h
+.3619 g 4343 2462 N -17 472 30 11 16 -473 h
+.312 g 4313 2273 N -16 473 29 94 17 -378 h
+.1797 g 4284 1938 N -17 378 30 116 16 -159 h
+.319 g 4254 2178 N -16 159 29 -897 17 498 h
+.6198 g 4225 2321 N -17 -498 30 -249 16 604 h
+.6989 g 4195 2311 N -16 -604 29 11 17 603 h
+.6991 g 4166 2301 N -17 -603 30 10 16 603 h
+.6955 g 4136 2271 N -16 -603 29 11 17 622 h
+.6879 g 4107 2241 N -17 -622 30 11 16 641 h
+.6842 g 4078 2230 N -16 -641 29 10 16 642 h
+.6844 g 4048 2220 N -16 -642 29 10 17 642 h
+.6846 g 4019 2210 N -17 -642 30 10 16 642 h
+.6848 g 3989 2199 N -16 -642 29 11 17 642 h
+.6839 g 3960 2184 N -17 -642 30 10 16 647 h
+.682 g 3930 2168 N -16 -647 29 11 17 652 h
+.6811 g 3901 2157 N -17 -652 30 10 16 653 h
+.6813 g 3871 2147 N -16 -653 29 10 17 653 h
+.6815 g 3842 2137 N -17 -653 30 10 16 653 h
+.6818 g 3812 2126 N -16 -653 29 11 17 653 h
+.6819 g 3783 2116 N -17 -653 30 10 16 653 h
+.682 g 3753 2105 N -16 -653 29 10 17 654 h
+.6821 g 3724 2095 N -17 -654 30 10 16 654 h
+.6824 g 3694 2084 N -16 -654 29 11 17 654 h
+.5981 g 3665 1894 N -17 -654 30 270 16 574 h
+.2694 g 3635 1549 N -16 -574 29 954 17 -35 h
+.0251 g 3606 1538 N -17 35 30 10 16 -34 h
+.0251 g 3576 1528 N -16 34 29 11 17 -35 h
+.0251 g 3547 1517 N -17 35 30 10 16 -34 h
+.0251 g 3517 1507 N -16 34 29 11 17 -35 h
+.0252 g 3488 1496 N -17 35 30 10 16 -34 h
+.0252 g 3458 1485 N -16 34 29 11 17 -34 h
+.0252 g 3429 1475 N -17 34 30 11 16 -35 h
+.0252 g 3399 1464 N -16 35 29 10 17 -34 h
+.024 g 3370 1453 N -17 34 30 16 16 -39 h
+.0215 g 3340 1442 N -16 39 29 17 17 -45 h
+.0203 g 3311 1431 N -17 45 30 10 16 -44 h
+.0203 g 3281 1421 N -16 44 29 11 17 -45 h
+.0196 g 3252 1407 N -17 45 30 11 16 -42 h
+.0181 g 3222 1393 N -16 42 29 11 17 -39 h
+.0174 g 3193 1383 N -17 39 30 11 16 -40 h
+.0174 g 3163 1372 N -16 40 29 10 17 -39 h
+.0174 g 3134 1361 N -17 39 30 11 16 -39 h
+.0175 g 3104 1351 N -16 39 29 10 17 -39 h
+.0162 g 3075 1335 N -17 39 30 12 16 -35 h
+.0138 g 3045 1319 N -16 35 29 12 17 -31 h
+.0125 g 3016 1309 N -17 31 30 11 16 -32 h
+0 g 5923 2308 N -17 8 30 11 16 -8 h
+0 g 5893 2298 N -16 8 29 11 17 -9 h
+0 g 5864 2287 N -17 9 30 10 16 -8 h
+0 g 5834 2277 N -16 8 29 11 17 -9 h
+0 g 5805 2266 N -17 9 30 10 16 -8 h
+0 g 5775 2256 N -16 8 29 11 17 -9 h
+0 g 5746 2245 N -17 9 30 10 16 -8 h
+0 g 5716 2234 N -16 8 29 11 17 -8 h
+0 g 5687 2224 N -17 8 30 11 16 -9 h
+0 g 5657 2213 N -16 9 29 10 17 -8 h
+0 g 5628 2203 N -17 8 30 11 16 -9 h
+0 g 5598 2192 N -16 9 29 10 17 -8 h
+.0001 g 5569 2182 N -17 8 30 11 16 -9 h
+.0004 g 5539 2172 N -16 9 29 10 17 -9 h
+.0005 g 5510 2162 N -17 9 30 11 16 -10 h
+.0005 g 5480 2151 N -16 10 29 11 17 -10 h
+.0005 g 5451 2141 N -17 10 30 10 16 -10 h
+.0005 g 5421 2130 N -16 10 29 11 17 -10 h
+.0006 g 5392 2120 N -17 10 30 10 16 -10 h
+.0008 g 5362 2110 N -16 10 29 11 17 -11 h
+.0009 g 5333 2099 N -17 11 30 10 16 -10 h
+.0009 g 5303 2089 N -16 10 29 11 17 -11 h
+.0009 g 5274 2078 N -17 11 30 11 16 -11 h
+.0009 g 5244 2068 N -16 11 29 10 17 -11 h
+.001 g 5215 2058 N -17 11 30 11 16 -12 h
+.0012 g 5185 2048 N -16 12 29 10 17 -12 h
+.0013 g 5156 2037 N -17 12 30 11 16 -12 h
+.0013 g 5126 2026 N -16 12 29 10 17 -11 h
+.0013 g 5097 2016 N -17 11 30 11 16 -12 h
+.0013 g 5067 2005 N -16 12 29 11 17 -12 h
+.0199 g 5038 2092 N -17 12 30 10 16 -109 h
+.0534 g 5008 2159 N -16 109 29 11 17 -187 h
+.0684 g 4979 2149 N -17 187 30 10 16 -187 h
+.0684 g 4949 2138 N -16 187 29 11 17 -187 h
+.0685 g 4920 2128 N -17 187 30 10 16 -187 h
+.0685 g 4890 2118 N -16 187 29 11 17 -188 h
+.1178 g 4861 2364 N -17 188 30 10 16 -444 h
+.1971 g 4831 2510 N -16 444 29 10 17 -600 h
+.2271 g 4802 2500 N -17 600 30 11 16 -601 h
+.2272 g 4772 2489 N -16 601 29 10 17 -600 h
+.2273 g 4743 2479 N -17 600 30 11 16 -601 h
+.2274 g 4713 2469 N -16 601 29 11 17 -602 h
+.2288 g 4684 2465 N -17 602 30 10 16 -608 h
+.2314 g 4654 2461 N -16 608 29 11 17 -615 h
+.2328 g 4625 2451 N -17 615 30 10 16 -615 h
+.2329 g 4595 2441 N -16 615 29 11 17 -616 h
+.2343 g 4566 2432 N -17 616 30 5 16 -612 h
+.237 g 4536 2423 N -16 612 29 5 17 -608 h
+.2108 g 4507 2268 N -17 608 30 10 16 -463 h
+.1399 g 4477 2031 N -16 463 29 11 17 -237 h
+.0966 g 4448 2020 N -17 237 30 10 16 -236 h
+.0967 g 4418 2010 N -16 236 29 11 17 -237 h
+.0967 g 4389 2000 N -17 237 30 11 16 -238 h
+.0968 g 4359 1989 N -16 238 29 10 17 -237 h
+.0809 g 4330 1895 N -17 237 30 11 16 -154 h
+.0447 g 4300 1779 N -16 154 29 10 17 -48 h
+.3788 g 4271 2676 N -17 48 30 -933 16 -12 h
+.8326 g 4241 2925 N -16 12 29 -250 17 -11 h
+.9323 g 4212 2914 N -17 11 30 10 16 -10 h
+.9325 g 4182 2904 N -16 10 29 10 17 -10 h
+.9326 g 4153 2893 N -17 10 30 11 16 -10 h
+.9326 g 4123 2882 N -16 10 29 10 17 -9 h
+.9327 g 4094 2872 N -17 9 29 10 17 -9 h
+.9329 g 4065 2862 N -17 9 30 10 16 -9 h
+.9332 g 4035 2852 N -16 9 29 11 17 -10 h
+.9334 g 4006 2841 N -17 10 30 10 16 -9 h
+.9336 g 3976 2831 N -16 9 29 10 17 -9 h
+.9338 g 3947 2820 N -17 9 30 10 16 -8 h
+.934 g 3917 2810 N -16 8 29 11 17 -9 h
+.9343 g 3888 2800 N -17 9 30 10 16 -9 h
+.9345 g 3858 2790 N -16 9 29 10 17 -9 h
+.9347 g 3829 2779 N -17 9 30 10 16 -8 h
+.935 g 3799 2769 N -16 8 29 11 17 -9 h
+.9352 g 3770 2759 N -17 9 30 10 16 -9 h
+.9355 g 3740 2749 N -16 9 29 10 17 -9 h
+.9357 g 3711 2738 N -17 9 30 10 16 -8 h
+.8361 g 3681 2468 N -16 8 29 272 17 -10 h
+.3744 g 3652 1514 N -17 10 30 960 16 -16 h
+.0123 g 3622 1504 N -16 16 29 10 17 -16 h
+.0123 g 3593 1493 N -17 16 30 11 16 -16 h
+.0123 g 3563 1483 N -16 16 29 10 17 -16 h
+.0123 g 3534 1472 N -17 16 30 11 16 -16 h
+.0123 g 3504 1462 N -16 16 29 10 17 -16 h
+.0123 g 3475 1451 N -17 16 30 11 16 -16 h
+.0123 g 3445 1440 N -16 16 29 10 17 -15 h
+.0123 g 3416 1430 N -17 15 30 11 16 -16 h
+.0102 g 3386 1414 N -16 16 29 16 17 -16 h
+.0058 g 3357 1397 N -17 16 30 17 16 -16 h
+.0036 g 3327 1387 N -16 16 29 10 17 -16 h
+.0036 g 3298 1376 N -17 16 30 11 16 -16 h
+.0035 g 3268 1365 N -16 16 29 10 17 -15 h
+.0032 g 3239 1354 N -17 15 30 11 16 -15 h
+.0031 g 3209 1343 N -16 15 29 11 17 -15 h
+.0031 g 3180 1333 N -17 15 30 10 16 -15 h
+.0031 g 3150 1322 N -16 15 29 11 17 -15 h
+.0031 g 3121 1312 N -17 15 30 10 16 -15 h
+.0028 g 3091 1300 N -16 15 29 11 17 -14 h
+.0022 g 3062 1288 N -17 14 30 11 16 -13 h
+.0018 g 3032 1277 N -16 13 29 11 17 -13 h
+0 g 5939 2300 N -16 9 29 10 17 -8 h
+0 g 5910 2289 N -17 8 30 11 16 -8 h
+0 g 5880 2279 N -16 8 29 11 17 -9 h
+0 g 5851 2268 N -17 9 30 10 16 -8 h
+0 g 5821 2258 N -16 8 29 11 17 -9 h
+0 g 5792 2247 N -17 9 30 10 16 -8 h
+0 g 5762 2237 N -16 8 29 11 17 -9 h
+0 g 5733 2226 N -17 9 30 10 16 -8 h
+0 g 5703 2215 N -16 8 29 11 17 -8 h
+0 g 5674 2205 N -17 8 30 11 16 -9 h
+0 g 5644 2194 N -16 9 29 10 17 -8 h
+0 g 5615 2184 N -17 8 30 11 16 -9 h
+0 g 5585 2173 N -16 9 29 10 17 -8 h
+0 g 5556 2163 N -17 8 30 11 16 -9 h
+0 g 5526 2152 N -16 9 29 10 17 -8 h
+0 g 5497 2141 N -17 8 30 11 16 -8 h
+0 g 5467 2131 N -16 8 29 11 17 -9 h
+0 g 5438 2120 N -17 9 30 10 16 -8 h
+0 g 5408 2110 N -16 8 29 11 17 -9 h
+0 g 5379 2099 N -17 9 30 10 16 -8 h
+0 g 5349 2089 N -16 8 29 11 17 -9 h
+0 g 5320 2078 N -17 9 30 10 16 -8 h
+0 g 5290 2067 N -16 8 29 11 17 -8 h
+0 g 5261 2057 N -17 8 30 11 16 -9 h
+0 g 5231 2046 N -16 9 29 10 17 -8 h
+0 g 5202 2036 N -17 8 30 11 16 -9 h
+0 g 5172 2025 N -16 9 29 10 17 -8 h
+0 g 5143 2015 N -17 8 30 11 16 -9 h
+0 g 5113 2004 N -16 9 29 10 17 -8 h
+0 g 5084 1993 N -17 8 30 11 16 -8 h
+0 g 5054 1983 N -16 8 29 10 17 -8 h
+0 g 5025 1972 N -17 8 30 11 16 -8 h
+0 g 4995 1962 N -16 8 29 11 17 -9 h
+0 g 4966 1951 N -17 9 30 10 16 -8 h
+0 g 4936 1941 N -16 8 29 11 17 -9 h
+0 g 4907 1930 N -17 9 30 10 16 -8 h
+.0001 g 4877 1920 N -16 8 29 11 17 -9 h
+.0004 g 4848 1910 N -17 9 30 10 16 -9 h
+.0006 g 4818 1899 N -16 9 29 10 17 -8 h
+.0006 g 4789 1889 N -17 8 30 11 16 -9 h
+.0006 g 4759 1878 N -16 9 29 10 17 -8 h
+.0006 g 4730 1867 N -17 8 30 11 16 -8 h
+.0006 g 4700 1857 N -16 8 29 11 17 -9 h
+.0006 g 4671 1846 N -17 9 30 10 16 -8 h
+.0006 g 4641 1836 N -16 8 29 11 17 -9 h
+.0006 g 4612 1825 N -17 9 30 10 16 -8 h
+.0028 g 4582 1820 N -16 8 29 5 17 -8 h
+.0071 g 4553 1815 N -17 8 30 5 16 -8 h
+.0092 g 4523 1805 N -16 8 29 11 17 -9 h
+.0092 g 4494 1794 N -17 9 30 10 16 -8 h
+.0092 g 4464 1784 N -16 8 29 11 17 -9 h
+.0092 g 4435 1773 N -17 9 30 10 16 -8 h
+.0092 g 4405 1762 N -16 8 29 11 17 -8 h
+.0092 g 4376 1752 N -17 8 30 11 16 -9 h
+.0092 g 4346 1741 N -16 9 29 10 17 -8 h
+.0092 g 4317 1731 N -17 8 30 11 16 -9 h
+.3704 g 4287 2664 N -16 9 29 -933 17 -9 h
+.8314 g 4258 2914 N -17 9 30 -251 16 -8 h
+.9314 g 4228 2904 N -16 8 29 10 17 -8 h
+.9317 g 4199 2894 N -17 8 30 11 16 -9 h
+.9319 g 4169 2883 N -16 9 29 10 17 -8 h
+.9322 g 4140 2873 N -17 8 30 10 16 -8 h
+.9324 g 4111 2863 N -16 8 29 10 16 -8 h
+.9326 g 4081 2853 N -16 8 29 11 17 -9 h
+.9329 g 4052 2842 N -17 9 30 10 16 -8 h
+.9331 g 4022 2832 N -16 8 29 10 17 -8 h
+.9334 g 3993 2822 N -17 8 30 10 16 -8 h
+.9336 g 3963 2812 N -16 8 29 11 17 -9 h
+.9339 g 3934 2801 N -17 9 30 10 16 -8 h
+.9341 g 3904 2791 N -16 8 29 10 17 -8 h
+.9343 g 3875 2781 N -17 8 30 10 16 -8 h
+.9346 g 3845 2771 N -16 8 29 11 17 -9 h
+.9348 g 3816 2760 N -17 9 30 10 16 -8 h
+.9351 g 3786 2750 N -16 8 29 10 17 -8 h
+.9353 g 3757 2740 N -17 8 30 10 16 -8 h
+.9356 g 3727 2730 N -16 8 29 11 17 -9 h
+.8359 g 3698 2458 N -17 9 30 271 16 -8 h
+.3728 g 3668 1498 N -16 8 29 960 17 -8 h
+.0094 g 3639 1488 N -17 8 30 10 16 -8 h
+.0094 g 3609 1477 N -16 8 29 11 17 -8 h
+.0094 g 3580 1467 N -17 8 30 11 16 -9 h
+.0094 g 3550 1456 N -16 9 29 10 17 -8 h
+.0095 g 3521 1446 N -17 8 30 11 16 -9 h
+.0095 g 3491 1435 N -16 9 29 10 17 -8 h
+.0095 g 3462 1425 N -17 8 30 11 16 -9 h
+.0095 g 3432 1414 N -16 9 29 10 17 -8 h
+.0073 g 3403 1398 N -17 8 30 17 16 -9 h
+.0028 g 3373 1381 N -16 9 29 16 17 -8 h
+.0006 g 3344 1371 N -17 8 30 11 16 -9 h
+.0006 g 3314 1360 N -16 9 29 10 17 -8 h
+.0006 g 3285 1350 N -17 8 30 11 16 -9 h
+.0006 g 3255 1339 N -16 9 29 10 17 -8 h
+.0006 g 3226 1328 N -17 8 30 11 16 -8 h
+.0006 g 3196 1318 N -16 8 29 11 17 -9 h
+.0006 g 3167 1307 N -17 9 30 10 16 -8 h
+.0006 g 3137 1297 N -16 8 29 11 17 -9 h
+.0005 g 3108 1286 N -17 9 30 11 16 -9 h
+.0002 g 3078 1275 N -16 9 29 11 17 -9 h
+0 g 3049 1264 N -17 9 30 10 16 -8 h
+0 g 5956 2292 N -17 8 30 11 16 -9 h
+0 g 5926 2281 N -16 9 29 10 17 -8 h
+0 g 5897 2270 N -17 8 30 11 16 -8 h
+0 g 5867 2260 N -16 8 29 11 17 -9 h
+0 g 5838 2249 N -17 9 30 10 16 -8 h
+0 g 5808 2239 N -16 8 29 11 17 -9 h
+0 g 5779 2228 N -17 9 30 10 16 -8 h
+0 g 5749 2218 N -16 8 29 11 17 -9 h
+0 g 5720 2207 N -17 9 30 10 16 -8 h
+0 g 5690 2196 N -16 8 29 11 17 -8 h
+0 g 5661 2186 N -17 8 30 11 16 -9 h
+0 g 5631 2175 N -16 9 29 10 17 -8 h
+0 g 5602 2165 N -17 8 30 11 16 -9 h
+0 g 5572 2154 N -16 9 29 10 17 -8 h
+0 g 5543 2144 N -17 8 30 11 16 -9 h
+0 g 5513 2133 N -16 9 29 10 17 -8 h
+0 g 5484 2122 N -17 8 30 11 16 -8 h
+0 g 5454 2112 N -16 8 29 10 17 -8 h
+0 g 5425 2101 N -17 8 30 11 16 -8 h
+0 g 5395 2091 N -16 8 29 11 17 -9 h
+0 g 5366 2080 N -17 9 30 10 16 -8 h
+0 g 5336 2070 N -16 8 29 11 17 -9 h
+0 g 5307 2059 N -17 9 30 10 16 -8 h
+0 g 5277 2048 N -16 8 29 11 17 -8 h
+0 g 5248 2038 N -17 8 30 10 16 -8 h
+0 g 5218 2027 N -16 8 29 11 17 -8 h
+0 g 5189 2017 N -17 8 30 11 16 -9 h
+0 g 5159 2006 N -16 9 29 10 17 -8 h
+0 g 5130 1996 N -17 8 30 11 16 -9 h
+0 g 5100 1985 N -16 9 29 10 17 -8 h
+0 g 5071 1975 N -17 8 30 11 16 -9 h
+0 g 5041 1964 N -16 9 29 10 17 -8 h
+0 g 5012 1953 N -17 8 30 11 16 -8 h
+0 g 4982 1943 N -16 8 29 11 17 -9 h
+0 g 4953 1932 N -17 9 30 10 16 -8 h
+0 g 4923 1922 N -16 8 29 11 17 -9 h
+.0001 g 4894 1911 N -17 9 30 10 16 -8 h
+.0004 g 4864 1901 N -16 8 29 10 17 -8 h
+.0006 g 4835 1891 N -17 8 30 11 16 -9 h
+.0006 g 4805 1880 N -16 9 29 10 17 -8 h
+.0006 g 4776 1870 N -17 8 30 11 16 -9 h
+.0006 g 4746 1859 N -16 9 29 10 17 -8 h
+.0006 g 4717 1848 N -17 8 30 11 16 -8 h
+.0006 g 4687 1838 N -16 8 29 11 17 -9 h
+.0006 g 4658 1827 N -17 9 30 10 16 -8 h
+.0006 g 4628 1817 N -16 8 29 11 17 -9 h
+.0028 g 4599 1812 N -17 9 30 5 16 -9 h
+.0071 g 4569 1807 N -16 9 29 5 17 -9 h
+.0092 g 4540 1796 N -17 9 30 10 16 -8 h
+.0092 g 4510 1786 N -16 8 29 11 17 -9 h
+.0092 g 4481 1775 N -17 9 30 10 16 -8 h
+.0092 g 4451 1765 N -16 8 29 11 17 -9 h
+.0092 g 4422 1754 N -17 9 30 10 16 -8 h
+.0092 g 4392 1743 N -16 8 29 11 17 -8 h
+.0092 g 4363 1733 N -17 8 30 10 16 -8 h
+.0092 g 4333 1722 N -16 8 29 11 17 -8 h
+.3704 g 4304 2655 N -17 8 30 -933 16 -8 h
+.8314 g 4274 2906 N -16 8 29 -250 17 -9 h
+.9314 g 4245 2896 N -17 9 30 10 16 -9 h
+.9317 g 4215 2885 N -16 9 29 10 17 -8 h
+.9319 g 4186 2875 N -17 8 30 10 16 -8 h
+.9322 g 4156 2865 N -16 8 29 11 17 -9 h
+.9324 g 4127 2855 N -17 9 30 10 16 -9 h
+.9326 g 4098 2844 N -16 9 29 10 16 -8 h
+.9329 g 4068 2834 N -16 8 29 10 17 -8 h
+.9331 g 4039 2824 N -17 8 30 11 16 -9 h
+.9334 g 4009 2814 N -16 9 29 10 17 -9 h
+.9336 g 3980 2803 N -17 9 30 10 16 -8 h
+.9339 g 3950 2793 N -16 8 29 10 17 -8 h
+.9341 g 3921 2783 N -17 8 30 11 16 -9 h
+.9343 g 3891 2773 N -16 9 29 10 17 -9 h
+.9346 g 3862 2762 N -17 9 30 10 16 -8 h
+.9348 g 3832 2752 N -16 8 29 10 17 -8 h
+.9351 g 3803 2742 N -17 8 30 11 16 -9 h
+.9353 g 3773 2732 N -16 9 29 10 17 -9 h
+.9356 g 3744 2721 N -17 9 30 10 16 -8 h
+.8359 g 3714 2450 N -16 8 29 271 17 -8 h
+.3728 g 3685 1490 N -17 8 30 960 16 -8 h
+.0094 g 3655 1480 N -16 8 29 11 17 -9 h
+.0094 g 3626 1469 N -17 9 30 10 16 -8 h
+.0094 g 3596 1458 N -16 8 29 11 17 -8 h
+.0094 g 3567 1448 N -17 8 30 11 16 -9 h
+.0095 g 3537 1437 N -16 9 29 10 17 -8 h
+.0095 g 3508 1427 N -17 8 30 11 16 -9 h
+.0095 g 3478 1416 N -16 9 29 10 17 -8 h
+.0095 g 3449 1406 N -17 8 30 11 16 -9 h
+.0073 g 3419 1389 N -16 9 29 16 17 -8 h
+.0028 g 3390 1373 N -17 8 30 17 16 -9 h
+.0006 g 3360 1362 N -16 9 29 10 17 -8 h
+.0006 g 3331 1352 N -17 8 30 11 16 -9 h
+.0006 g 3301 1341 N -16 9 29 10 17 -8 h
+.0006 g 3272 1331 N -17 8 30 11 16 -9 h
+.0006 g 3242 1320 N -16 9 29 10 17 -8 h
+.0006 g 3213 1309 N -17 8 30 11 16 -8 h
+.0006 g 3183 1299 N -16 8 29 11 17 -9 h
+.0006 g 3154 1288 N -17 9 30 10 16 -8 h
+.0005 g 3124 1277 N -16 8 29 11 17 -8 h
+.0002 g 3095 1266 N -17 8 30 11 16 -8 h
+0 g 3065 1256 N -16 8 29 11 17 -9 h
+0 g 5972 2283 N -16 9 29 10 17 -8 h
+0 g 5943 2273 N -17 8 30 11 16 -9 h
+0 g 5913 2262 N -16 9 29 10 17 -8 h
+0 g 5884 2251 N -17 8 30 11 16 -8 h
+0 g 5854 2241 N -16 8 29 10 17 -8 h
+0 g 5825 2230 N -17 8 30 11 16 -8 h
+0 g 5795 2220 N -16 8 29 11 17 -9 h
+0 g 5766 2209 N -17 9 30 10 16 -8 h
+0 g 5736 2199 N -16 8 29 11 17 -9 h
+0 g 5707 2188 N -17 9 30 10 16 -8 h
+0 g 5677 2177 N -16 8 29 11 17 -8 h
+0 g 5648 2167 N -17 8 30 10 16 -8 h
+.0005 g 5618 2156 N -16 8 29 9 17 -6 h
+.0014 g 5589 2146 N -17 6 30 8 16 -4 h
+.0019 g 5559 2135 N -16 4 29 10 17 -3 h
+.0019 g 5530 2125 N -17 3 30 11 16 -4 h
+.0019 g 5500 2114 N -16 4 29 10 17 -3 h
+.0019 g 5471 2104 N -17 3 30 11 16 -4 h
+.0023 g 5441 2093 N -16 4 29 8 17 -1 h
+.0033 g 5412 2082 N -17 1 30 8 16 2 h
+.0037 g 5382 2072 N -16 -2 29 11 17 1 h
+.0037 g 5353 2061 N -17 -1 30 10 16 2 h
+.0038 g 5323 2051 N -16 -2 29 11 17 1 h
+.0038 g 5294 2040 N -17 -1 30 10 16 2 h
+.0041 g 5264 2030 N -16 -2 29 9 17 3 h
+.0048 g 5235 2019 N -17 -3 30 9 16 5 h
+.0052 g 5205 2008 N -16 -5 29 10 17 6 h
+.0052 g 5176 1998 N -17 -6 30 11 16 5 h
+.0052 g 5146 1987 N -16 -5 29 11 17 5 h
+.0052 g 5117 1977 N -17 -5 30 10 16 5 h
+.061 g 5087 1966 N -16 -5 29 -281 17 297 h
+.149 g 5058 1956 N -17 -297 30 -157 16 464 h
+.1812 g 5028 1945 N -16 -464 29 10 17 465 h
+.1813 g 4999 1934 N -17 -465 30 10 16 466 h
+.1814 g 4969 1924 N -16 -466 29 11 17 465 h
+.1815 g 4940 1913 N -17 -465 30 10 16 466 h
+.2589 g 4910 1903 N -16 -466 29 -394 17 870 h
+.3743 g 4881 1893 N -17 -870 30 -187 16 1067 h
+.4125 g 4851 1882 N -16 -1067 29 10 17 1068 h
+.4126 g 4822 1872 N -17 -1068 30 10 16 1068 h
+.4127 g 4792 1861 N -16 -1068 29 10 17 1069 h
+.4128 g 4763 1851 N -17 -1069 30 11 16 1068 h
+.4145 g 4733 1840 N -16 -1068 29 2 17 1077 h
+.4176 g 4704 1829 N -17 -1077 30 2 16 1086 h
+.4193 g 4674 1819 N -16 -1086 29 10 17 1086 h
+.4194 g 4645 1808 N -17 -1086 30 11 16 1086 h
+.4206 g 4615 1803 N -16 -1086 29 10 17 1081 h
+.4231 g 4586 1798 N -17 -1081 30 9 16 1077 h
+.3895 g 4556 1788 N -16 -1077 29 193 17 894 h
+.29 g 4527 1777 N -17 -894 30 349 16 556 h
+.2253 g 4497 1767 N -16 -556 29 10 17 556 h
+.2254 g 4468 1756 N -17 -556 30 10 16 557 h
+.2255 g 4438 1746 N -16 -557 29 11 17 556 h
+.2256 g 4409 1735 N -17 -556 30 10 16 557 h
+.1952 g 4379 1725 N -16 -557 29 169 17 398 h
+.114 g 4350 1714 N -17 -398 30 277 16 132 h
+.4004 g 4320 2647 N -16 -132 29 -809 17 8 h
+.8362 g 4291 2897 N -17 -8 30 -243 16 1 h
+.9347 g 4261 2887 N -16 -1 29 11 17 0 h
+.935 g 4232 2877 N -17 0 30 10 16 0 h
+.9347 g 4202 2867 N -16 0 29 13 17 -3 h
+.9339 g 4173 2856 N -17 3 30 13 16 -5 h
+.9336 g 4143 2846 N -16 5 29 10 17 -5 h
+.9338 g 4114 2836 N -17 5 29 10 17 -5 h
+.9341 g 4085 2826 N -17 5 30 11 16 -6 h
+.9343 g 4055 2815 N -16 6 29 10 17 -5 h
+.9344 g 4026 2805 N -17 5 30 11 16 -6 h
+.9344 g 3996 2795 N -16 6 29 11 17 -7 h
+.9345 g 3967 2785 N -17 7 30 10 16 -7 h
+.9347 g 3937 2774 N -16 7 29 10 17 -6 h
+.935 g 3908 2764 N -17 6 30 11 16 -7 h
+.9352 g 3878 2754 N -16 7 29 10 17 -7 h
+.9354 g 3849 2744 N -17 7 30 10 16 -7 h
+.9357 g 3819 2733 N -16 7 29 11 17 -7 h
+.9359 g 3790 2723 N -17 7 30 10 16 -7 h
+.9361 g 3760 2713 N -16 7 29 10 17 -7 h
+.8368 g 3731 2442 N -17 7 30 270 16 -6 h
+.3789 g 3701 1482 N -16 6 29 934 17 20 h
+.0205 g 3672 1471 N -17 -20 30 10 16 21 h
+.0206 g 3642 1461 N -16 -21 29 11 17 20 h
+.0206 g 3613 1450 N -17 -20 30 10 16 21 h
+.0206 g 3583 1439 N -16 -21 29 11 17 21 h
+.0206 g 3554 1429 N -17 -21 30 10 16 21 h
+.0206 g 3524 1418 N -16 -21 29 11 17 21 h
+.0206 g 3495 1408 N -17 -21 30 10 16 21 h
+.0207 g 3465 1397 N -16 -21 29 11 17 21 h
+.0185 g 3436 1381 N -17 -21 30 16 16 21 h
+.0143 g 3406 1364 N -16 -21 29 16 17 22 h
+.0121 g 3377 1354 N -17 -22 30 10 16 22 h
+.0121 g 3347 1343 N -16 -22 29 11 17 22 h
+.0117 g 3318 1333 N -17 -22 30 13 16 19 h
+.0109 g 3288 1322 N -16 -19 29 13 17 17 h
+.0104 g 3259 1312 N -17 -17 30 10 16 17 h
+.0104 g 3229 1301 N -16 -17 29 11 17 17 h
+.0105 g 3200 1290 N -17 -17 30 10 16 18 h
+.0105 g 3170 1280 N -16 -18 29 11 17 17 h
+.0097 g 3141 1269 N -17 -17 30 14 16 14 h
+.008 g 3111 1258 N -16 -14 29 15 17 10 h
+.0072 g 3082 1247 N -17 -10 30 10 16 11 h
+0 g 5989 2275 N -17 8 30 11 16 -9 h
+0 g 5959 2264 N -16 9 29 10 17 -8 h
+0 g 5930 2254 N -17 8 30 11 16 -9 h
+0 g 5900 2243 N -16 9 29 10 17 -8 h
+0 g 5871 2233 N -17 8 30 11 16 -9 h
+0 g 5841 2222 N -16 9 29 10 17 -8 h
+0 g 5812 2211 N -17 8 30 11 16 -8 h
+0 g 5782 2201 N -16 8 29 11 17 -9 h
+0 g 5753 2190 N -17 9 30 10 16 -8 h
+0 g 5723 2180 N -16 8 29 11 17 -9 h
+0 g 5694 2169 N -17 9 30 10 16 -8 h
+0 g 5664 2159 N -16 8 29 11 17 -9 h
+.0012 g 5635 2150 N -17 9 30 7 16 -7 h
+.0035 g 5605 2142 N -16 7 29 7 17 -6 h
+.0047 g 5576 2132 N -17 6 30 10 16 -6 h
+.0047 g 5546 2121 N -16 6 29 11 17 -6 h
+.0047 g 5517 2111 N -17 6 30 10 16 -6 h
+.0047 g 5487 2100 N -16 6 29 11 17 -6 h
+.0059 g 5458 2092 N -17 6 30 7 16 -5 h
+.0082 g 5428 2084 N -16 5 29 7 17 -4 h
+.0093 g 5399 2073 N -17 4 30 10 16 -3 h
+.0093 g 5369 2063 N -16 3 29 11 17 -4 h
+.0093 g 5340 2052 N -17 4 30 11 16 -4 h
+.0094 g 5310 2042 N -16 4 29 10 17 -4 h
+.0103 g 5281 2033 N -17 4 30 8 16 -3 h
+.012 g 5251 2024 N -16 3 29 8 17 -2 h
+.0129 g 5222 2014 N -17 2 30 10 16 -2 h
+.013 g 5192 2003 N -16 2 29 11 17 -2 h
+.013 g 5163 1992 N -17 2 30 10 16 -1 h
+.013 g 5133 1982 N -16 1 29 11 17 -2 h
+.1415 g 5104 2263 N -17 2 30 -370 16 87 h
+.3392 g 5074 2420 N -16 -87 29 -182 17 112 h
+.4083 g 5045 2410 N -17 -112 30 10 16 112 h
+.4085 g 5015 2400 N -16 -112 29 11 17 111 h
+.4087 g 4986 2389 N -17 -111 30 10 16 112 h
+.4089 g 4956 2379 N -16 -112 29 10 17 112 h
+.569 g 4927 2773 N -17 -112 30 -422 16 140 h
+.8063 g 4897 2960 N -16 -140 29 -194 17 147 h
+.8836 g 4868 2950 N -17 -147 30 10 16 147 h
+.8838 g 4838 2940 N -16 -147 29 11 17 146 h
+.884 g 4809 2930 N -17 -146 30 10 16 146 h
+.8843 g 4779 2919 N -16 -146 29 10 17 147 h
+.8876 g 4750 2917 N -17 -147 30 2 16 147 h
+.894 g 4720 2915 N -16 -147 29 2 17 147 h
+.8973 g 4691 2905 N -17 -147 30 11 16 146 h
+.8975 g 4661 2894 N -16 -146 29 10 17 147 h
+.8979 g 4632 2884 N -17 -147 30 10 16 147 h
+.8984 g 4602 2875 N -16 -147 29 10 17 146 h
+.8281 g 4573 2682 N -17 -146 30 198 16 141 h
+.6241 g 4543 2333 N -16 -141 29 369 17 121 h
+.4907 g 4514 2323 N -17 -121 30 10 16 121 h
+.4909 g 4484 2313 N -16 -121 29 11 17 120 h
+.4911 g 4455 2302 N -17 -120 30 10 16 121 h
+.4913 g 4425 2292 N -16 -121 29 10 17 121 h
+.4272 g 4396 2123 N -17 -121 30 188 16 102 h
+.2505 g 4366 1846 N -16 -102 29 332 17 47 h
+.4378 g 4337 2655 N -17 -47 30 -737 16 -25 h
+.8335 g 4307 2898 N -16 25 29 -237 17 -31 h
+.9296 g 4278 2887 N -17 31 30 10 16 -30 h
+.9298 g 4248 2877 N -16 30 29 10 17 -30 h
+.9287 g 4219 2864 N -17 30 30 15 16 -32 h
+.9262 g 4189 2851 N -16 32 29 15 17 -34 h
+.9251 g 4160 2841 N -17 34 30 10 16 -34 h
+.9253 g 4131 2831 N -16 34 29 10 16 -34 h
+.9256 g 4101 2820 N -16 34 29 10 17 -33 h
+.9258 g 4072 2810 N -17 33 30 11 16 -34 h
+.9257 g 4042 2799 N -16 34 29 11 17 -34 h
+.9252 g 4013 2788 N -17 34 30 11 16 -34 h
+.9251 g 3983 2778 N -16 34 29 11 17 -35 h
+.9253 g 3954 2768 N -17 35 30 10 16 -35 h
+.9256 g 3924 2757 N -16 35 29 10 17 -34 h
+.9258 g 3895 2747 N -17 34 30 10 16 -34 h
+.9261 g 3865 2737 N -16 34 29 11 17 -35 h
+.9263 g 3836 2726 N -17 35 30 10 16 -34 h
+.9265 g 3806 2716 N -16 34 29 10 17 -34 h
+.9267 g 3777 2706 N -17 34 30 11 16 -35 h
+.828 g 3747 2436 N -16 35 29 267 17 -32 h
+.3829 g 3718 1502 N -17 32 30 897 16 5 h
+.0367 g 3688 1492 N -16 -5 29 11 17 4 h
+.0367 g 3659 1481 N -17 -4 30 10 16 5 h
+.0367 g 3629 1471 N -16 -5 29 11 17 4 h
+.0367 g 3600 1460 N -17 -4 30 10 16 5 h
+.0368 g 3570 1450 N -16 -5 29 11 17 4 h
+.0368 g 3541 1439 N -17 -4 30 10 16 5 h
+.0368 g 3511 1429 N -16 -5 29 11 17 4 h
+.0369 g 3482 1418 N -17 -4 30 10 16 5 h
+.0349 g 3452 1402 N -16 -5 29 16 17 5 h
+.031 g 3423 1386 N -17 -5 30 15 16 6 h
+.0291 g 3393 1376 N -16 -6 29 11 17 5 h
+.0291 g 3364 1365 N -17 -5 30 10 16 6 h
+.0281 g 3334 1352 N -16 -6 29 14 17 5 h
+.026 g 3305 1339 N -17 -5 30 14 16 4 h
+.0249 g 3275 1329 N -16 -4 29 10 17 4 h
+.025 g 3246 1318 N -17 -4 30 11 16 4 h
+.025 g 3216 1308 N -16 -4 29 10 17 4 h
+.025 g 3187 1297 N -17 -4 30 11 16 4 h
+.0232 g 3157 1283 N -16 -4 29 16 17 2 h
+.0197 g 3128 1268 N -17 -2 30 16 16 1 h
+.0179 g 3098 1258 N -16 -1 29 10 17 1 h
+0 g 6005 2266 N -16 8 29 11 17 -8 h
+0 g 5976 2256 N -17 8 30 11 16 -9 h
+0 g 5946 2245 N -16 9 29 10 17 -8 h
+0 g 5917 2235 N -17 8 30 11 16 -9 h
+0 g 5887 2224 N -16 9 29 10 17 -8 h
+0 g 5858 2214 N -17 8 30 11 16 -9 h
+0 g 5828 2203 N -16 9 29 10 17 -8 h
+0 g 5799 2192 N -17 8 30 11 16 -8 h
+0 g 5769 2182 N -16 8 29 11 17 -9 h
+0 g 5740 2171 N -17 9 30 10 16 -8 h
+0 g 5710 2161 N -16 8 29 11 17 -9 h
+0 g 5681 2150 N -17 9 30 10 16 -8 h
+.0014 g 5651 2143 N -16 8 29 7 17 -8 h
+.0042 g 5622 2136 N -17 8 30 7 16 -8 h
+.0056 g 5592 2126 N -16 8 29 11 17 -9 h
+.0056 g 5563 2115 N -17 9 30 10 16 -8 h
+.0056 g 5533 2105 N -16 8 29 11 17 -9 h
+.0056 g 5504 2094 N -17 9 30 10 16 -8 h
+.007 g 5474 2087 N -16 8 29 7 17 -8 h
+.0098 g 5445 2080 N -17 8 30 7 16 -8 h
+.0112 g 5415 2070 N -16 8 29 11 17 -9 h
+.0112 g 5386 2059 N -17 9 30 10 16 -8 h
+.0112 g 5356 2048 N -16 8 29 11 17 -8 h
+.0112 g 5327 2038 N -17 8 30 10 16 -8 h
+.0123 g 5297 2030 N -16 8 29 8 17 -8 h
+.0144 g 5268 2022 N -17 8 30 8 16 -8 h
+.0155 g 5238 2012 N -16 8 29 11 17 -9 h
+.0155 g 5209 2001 N -17 9 30 10 16 -8 h
+.0155 g 5179 1991 N -16 8 29 11 17 -9 h
+.0155 g 5150 1980 N -17 9 30 10 16 -8 h
+.161 g 5120 2350 N -16 8 29 -369 17 -9 h
+.3803 g 5091 2532 N -17 9 30 -183 16 -8 h
+.4542 g 5061 2522 N -16 8 29 11 17 -9 h
+.4544 g 5032 2511 N -17 9 30 10 16 -8 h
+.4546 g 5002 2501 N -16 8 29 10 17 -8 h
+.4548 g 4973 2491 N -17 8 30 11 16 -9 h
+.6204 g 4943 2913 N -16 9 29 -422 17 -9 h
+.8643 g 4914 3107 N -17 9 30 -194 16 -9 h
+.9428 g 4884 3097 N -16 9 29 10 17 -9 h
+.943 g 4855 3086 N -17 9 30 10 16 -8 h
+.9432 g 4825 3076 N -16 8 29 10 17 -8 h
+.9435 g 4796 3066 N -17 8 30 11 16 -9 h
+.9469 g 4766 3064 N -16 9 29 2 17 -9 h
+.9533 g 4737 3062 N -17 9 30 2 16 -9 h
+.9567 g 4707 3051 N -16 9 29 10 17 -8 h
+.9569 g 4678 3041 N -17 8 30 10 16 -8 h
+.9572 g 4648 3031 N -16 8 29 11 17 -9 h
+.9575 g 4619 3021 N -17 9 30 10 16 -9 h
+.8861 g 4589 2823 N -16 9 29 198 17 -9 h
+.6769 g 4560 2454 N -17 9 30 370 16 -10 h
+.5394 g 4530 2444 N -16 10 29 11 17 -11 h
+.5396 g 4501 2433 N -17 11 30 10 16 -10 h
+.5398 g 4471 2423 N -16 10 29 10 17 -10 h
+.54 g 4442 2413 N -17 10 30 11 16 -11 h
+.4722 g 4412 2225 N -16 11 29 188 17 -11 h
+.2804 g 4383 1893 N -17 11 30 336 16 -15 h
+.2996 g 4353 2630 N -16 15 29 11 17 -763 h
+.4901 g 4324 2867 N -17 763 30 10 16 -1010 h
+.5376 g 4294 2857 N -16 1010 29 11 17 -1011 h
+.5378 g 4265 2847 N -17 1011 30 10 16 -1011 h
+.5267 g 4235 2832 N -16 1011 29 65 17 -1061 h
+.5025 g 4206 2817 N -17 1061 30 74 16 -1120 h
+.4897 g 4176 2807 N -16 1120 29 11 17 -1121 h
+.4899 g 4147 2797 N -17 1121 29 10 17 -1121 h
+.49 g 4118 2787 N -17 1121 30 11 16 -1122 h
+.4901 g 4088 2776 N -16 1122 29 10 17 -1121 h
+.4865 g 4059 2765 N -17 1121 30 29 16 -1139 h
+.479 g 4029 2754 N -16 1139 29 30 17 -1158 h
+.4752 g 4000 2743 N -17 1158 30 11 16 -1158 h
+.4754 g 3970 2733 N -16 1158 29 10 17 -1158 h
+.4755 g 3941 2723 N -17 1158 30 11 16 -1159 h
+.4756 g 3911 2713 N -16 1159 29 10 17 -1159 h
+.4755 g 3882 2702 N -17 1159 30 12 16 -1160 h
+.4752 g 3852 2692 N -16 1160 29 12 17 -1162 h
+.4751 g 3823 2682 N -17 1162 30 10 16 -1162 h
+.4752 g 3793 2671 N -16 1162 29 11 17 -1162 h
+.4261 g 3764 2404 N -17 1162 30 10 16 -905 h
+.2073 g 3734 1507 N -16 905 29 11 17 -19 h
+.0377 g 3705 1496 N -17 19 30 10 16 -18 h
+.0377 g 3675 1486 N -16 18 29 11 17 -19 h
+.0378 g 3646 1475 N -17 19 30 10 16 -18 h
+.0378 g 3616 1465 N -16 18 29 11 17 -19 h
+.0378 g 3587 1454 N -17 19 30 10 16 -18 h
+.0378 g 3557 1444 N -16 18 29 11 17 -19 h
+.0379 g 3528 1433 N -17 19 30 10 16 -18 h
+.0379 g 3498 1423 N -16 18 29 11 17 -19 h
+.037 g 3469 1407 N -17 19 30 11 16 -14 h
+.0352 g 3439 1392 N -16 14 29 10 17 -9 h
+.0343 g 3410 1381 N -17 9 30 11 16 -9 h
+.0343 g 3380 1371 N -16 9 29 10 17 -9 h
+.0331 g 3351 1357 N -17 9 30 14 16 -9 h
+.0306 g 3321 1343 N -16 9 29 14 17 -9 h
+.0294 g 3292 1333 N -17 9 30 10 16 -9 h
+.0294 g 3262 1322 N -16 9 29 11 17 -9 h
+.0294 g 3233 1312 N -17 9 30 10 16 -9 h
+.0294 g 3203 1301 N -16 9 29 11 17 -9 h
+.0274 g 3174 1285 N -17 9 30 16 16 -9 h
+.0234 g 3144 1269 N -16 9 29 15 17 -8 h
+.0214 g 3115 1259 N -17 8 30 11 16 -9 h
+0 g 6022 2258 N -17 9 30 10 16 -8 h
+0 g 5992 2247 N -16 8 29 11 17 -8 h
+0 g 5963 2237 N -17 8 30 11 16 -9 h
+0 g 5933 2226 N -16 9 29 10 17 -8 h
+0 g 5904 2216 N -17 8 30 11 16 -9 h
+0 g 5874 2205 N -16 9 29 10 17 -8 h
+0 g 5845 2195 N -17 8 30 11 16 -9 h
+0 g 5815 2184 N -16 9 29 10 17 -8 h
+0 g 5786 2173 N -17 8 30 11 16 -8 h
+0 g 5756 2163 N -16 8 29 11 17 -9 h
+0 g 5727 2152 N -17 9 30 10 16 -8 h
+0 g 5697 2142 N -16 8 29 11 17 -9 h
+.0014 g 5668 2135 N -17 9 30 7 16 -9 h
+.0042 g 5638 2128 N -16 9 29 6 17 -8 h
+.0056 g 5609 2117 N -17 8 30 11 16 -8 h
+.0056 g 5579 2107 N -16 8 29 11 17 -9 h
+.0056 g 5550 2096 N -17 9 30 10 16 -8 h
+.0056 g 5520 2086 N -16 8 29 11 17 -9 h
+.007 g 5491 2079 N -17 9 30 7 16 -9 h
+.0098 g 5461 2072 N -16 9 29 7 17 -9 h
+.0112 g 5432 2061 N -17 9 30 10 16 -8 h
+.0112 g 5402 2051 N -16 8 29 11 17 -9 h
+.0112 g 5373 2040 N -17 9 30 10 16 -8 h
+.0112 g 5343 2030 N -16 8 29 11 17 -9 h
+.0123 g 5314 2022 N -17 9 30 8 16 -9 h
+.0144 g 5284 2014 N -16 9 29 7 17 -8 h
+.0155 g 5255 2003 N -17 8 30 11 16 -8 h
+.0155 g 5225 1993 N -16 8 29 11 17 -9 h
+.0155 g 5196 1982 N -17 9 30 10 16 -8 h
+.0155 g 5166 1972 N -16 8 29 11 17 -9 h
+.161 g 5137 2341 N -17 9 30 -370 16 -8 h
+.3803 g 5107 2524 N -16 8 29 -182 17 -9 h
+.4542 g 5078 2513 N -17 9 30 10 16 -8 h
+.4544 g 5048 2503 N -16 8 29 10 17 -8 h
+.4546 g 5019 2493 N -17 8 30 11 16 -9 h
+.4548 g 4989 2482 N -16 9 29 10 17 -8 h
+.6204 g 4960 2904 N -17 8 30 -422 16 -8 h
+.8643 g 4930 3098 N -16 8 29 -194 17 -8 h
+.9428 g 4901 3088 N -17 8 30 10 16 -8 h
+.943 g 4871 3078 N -16 8 29 11 17 -9 h
+.9432 g 4842 3068 N -17 9 30 10 16 -9 h
+.9435 g 4812 3057 N -16 9 29 10 17 -8 h
+.9469 g 4783 3055 N -17 8 30 2 16 -8 h
+.9533 g 4753 3053 N -16 8 29 2 17 -8 h
+.9567 g 4724 3043 N -17 8 30 11 16 -9 h
+.9569 g 4694 3033 N -16 9 29 10 17 -9 h
+.9571 g 4665 3022 N -17 9 30 10 16 -8 h
+.9574 g 4635 3012 N -16 8 29 10 17 -8 h
+.8858 g 4606 2814 N -17 8 30 198 16 -8 h
+.6763 g 4576 2444 N -16 8 29 371 17 -9 h
+.5387 g 4547 2433 N -17 9 30 10 16 -8 h
+.5389 g 4517 2423 N -16 8 29 10 17 -8 h
+.5391 g 4488 2413 N -17 8 30 11 16 -9 h
+.5393 g 4458 2402 N -16 9 29 10 17 -8 h
+.4713 g 4429 2214 N -17 8 30 188 16 -8 h
+.2785 g 4399 1878 N -16 8 29 337 17 -9 h
+.1539 g 4370 1867 N -17 9 30 10 16 -8 h
+.154 g 4340 1857 N -16 8 29 11 17 -9 h
+.1541 g 4311 1846 N -17 9 30 10 16 -8 h
+.1542 g 4281 1836 N -16 8 29 10 17 -8 h
+.1333 g 4252 1771 N -17 8 30 66 16 -9 h
+.0882 g 4222 1697 N -16 9 29 74 17 -9 h
+.064 g 4193 1686 N -17 9 30 10 16 -8 h
+.064 g 4164 1676 N -16 8 29 11 16 -9 h
+.0641 g 4134 1665 N -16 9 29 10 17 -8 h
+.0641 g 4105 1655 N -17 8 30 11 16 -9 h
+.0571 g 4075 1626 N -16 9 29 29 17 -9 h
+.0427 g 4046 1596 N -17 9 30 29 16 -8 h
+.0353 g 4016 1585 N -16 8 29 11 17 -8 h
+.0353 g 3987 1575 N -17 8 30 10 16 -8 h
+.0354 g 3957 1564 N -16 8 29 11 17 -8 h
+.0354 g 3928 1554 N -17 8 30 11 16 -9 h
+.035 g 3898 1542 N -16 9 29 11 17 -8 h
+.0341 g 3869 1530 N -17 8 30 12 16 -8 h
+.0336 g 3839 1520 N -16 8 29 11 17 -9 h
+.0337 g 3810 1509 N -17 9 30 10 16 -8 h
+.0337 g 3780 1499 N -16 8 29 11 17 -9 h
+.0337 g 3751 1488 N -17 9 30 10 16 -8 h
+.0338 g 3721 1478 N -16 8 29 11 17 -9 h
+.0338 g 3692 1467 N -17 9 30 10 16 -8 h
+.0338 g 3662 1457 N -16 8 29 11 17 -9 h
+.0338 g 3633 1446 N -17 9 30 10 16 -8 h
+.0339 g 3603 1436 N -16 8 29 11 17 -9 h
+.0339 g 3574 1425 N -17 9 30 10 16 -8 h
+.0339 g 3544 1415 N -16 8 29 11 17 -9 h
+.0339 g 3515 1404 N -17 9 30 10 16 -8 h
+.034 g 3485 1393 N -16 8 29 11 17 -8 h
+.034 g 3456 1383 N -17 8 30 10 16 -8 h
+.034 g 3426 1372 N -16 8 29 11 17 -8 h
+.034 g 3397 1362 N -17 8 30 11 16 -9 h
+.0328 g 3367 1348 N -16 9 29 13 17 -8 h
+.0303 g 3338 1334 N -17 8 30 14 16 -8 h
+.0291 g 3308 1324 N -16 8 29 11 17 -9 h
+.0291 g 3279 1313 N -17 9 30 10 16 -8 h
+.0291 g 3249 1303 N -16 8 29 11 17 -9 h
+.0292 g 3220 1292 N -17 9 30 10 16 -8 h
+.0272 g 3190 1276 N -16 8 29 16 17 -8 h
+.0233 g 3161 1261 N -17 8 30 16 16 -9 h
+.0214 g 3131 1250 N -16 9 29 10 17 -8 h
+0 g 6038 2250 N -16 8 29 11 17 -9 h
+0 g 6009 2239 N -17 9 30 10 16 -8 h
+0 g 5979 2228 N -16 8 29 11 17 -8 h
+0 g 5950 2218 N -17 8 30 11 16 -9 h
+0 g 5920 2207 N -16 9 29 10 17 -8 h
+0 g 5891 2197 N -17 8 30 11 16 -9 h
+0 g 5861 2186 N -16 9 29 10 17 -8 h
+0 g 5832 2176 N -17 8 30 11 16 -9 h
+0 g 5802 2165 N -16 9 29 10 17 -8 h
+0 g 5773 2154 N -17 8 30 11 16 -8 h
+0 g 5743 2144 N -16 8 29 10 17 -8 h
+0 g 5714 2133 N -17 8 30 11 16 -8 h
+.0011 g 5684 2126 N -16 8 29 9 17 -10 h
+.0032 g 5655 2120 N -17 10 30 9 16 -13 h
+.0042 g 5625 2109 N -16 13 29 10 17 -12 h
+.0042 g 5596 2098 N -17 12 30 11 16 -12 h
+.0042 g 5566 2088 N -16 12 29 10 17 -12 h
+.0042 g 5537 2077 N -17 12 30 11 16 -12 h
+.0053 g 5507 2070 N -16 12 29 9 17 -14 h
+.0074 g 5478 2063 N -17 14 30 8 16 -15 h
+.0084 g 5448 2053 N -16 15 29 11 17 -16 h
+.0084 g 5419 2042 N -17 16 30 10 16 -15 h
+.0084 g 5389 2032 N -16 15 29 11 17 -16 h
+.0084 g 5360 2021 N -17 16 30 10 16 -15 h
+.0092 g 5330 2013 N -16 15 29 10 17 -17 h
+.0109 g 5301 2006 N -17 17 30 9 16 -19 h
+.0117 g 5271 1995 N -16 19 29 10 17 -18 h
+.0117 g 5242 1984 N -17 18 30 11 16 -18 h
+.0117 g 5212 1974 N -16 18 29 10 17 -18 h
+.0117 g 5183 1963 N -17 18 30 11 16 -18 h
+.1299 g 5153 2333 N -16 18 29 -227 17 -161 h
+.3135 g 5124 2515 N -17 161 30 -138 16 -205 h
+.379 g 5094 2505 N -16 205 29 10 17 -205 h
+.3792 g 5065 2495 N -17 205 30 10 16 -205 h
+.3794 g 5035 2484 N -16 205 29 11 17 -205 h
+.3795 g 5006 2474 N -17 205 30 10 16 -205 h
+.535 g 4976 2896 N -16 205 29 -369 17 -258 h
+.7663 g 4947 3090 N -17 258 30 -182 16 -270 h
+.8425 g 4917 3080 N -16 270 29 11 17 -271 h
+.8427 g 4888 3069 N -17 271 30 10 16 -270 h
+.843 g 4858 3059 N -16 270 29 10 17 -270 h
+.8432 g 4829 3049 N -17 270 30 10 16 -270 h
+.8465 g 4799 3047 N -16 270 29 3 17 -271 h
+.8529 g 4770 3045 N -17 271 30 2 16 -271 h
+.8561 g 4740 3034 N -16 271 29 11 17 -271 h
+.8563 g 4711 3024 N -17 271 30 10 16 -271 h
+.8566 g 4681 3014 N -16 271 29 10 17 -271 h
+.8568 g 4652 3004 N -17 271 30 10 16 -271 h
+.7872 g 4622 2806 N -16 271 29 188 17 -261 h
+.5868 g 4593 2435 N -17 261 30 333 16 -223 h
+.4563 g 4563 2425 N -16 223 29 11 17 -224 h
+.4565 g 4534 2415 N -17 224 30 10 16 -224 h
+.4567 g 4504 2404 N -16 224 29 10 17 -223 h
+.4569 g 4475 2394 N -17 223 30 11 16 -224 h
+.395 g 4445 2206 N -16 224 29 156 17 -192 h
+.2266 g 4416 1869 N -17 192 30 241 16 -96 h
+.1202 g 4386 1859 N -16 96 29 11 17 -97 h
+.1202 g 4357 1848 N -17 97 30 10 16 -96 h
+.1203 g 4327 1838 N -16 96 29 11 17 -97 h
+.1204 g 4298 1828 N -17 97 30 10 16 -97 h
+.1036 g 4268 1762 N -16 97 29 44 17 -75 h
+.0678 g 4239 1688 N -17 75 30 47 16 -48 h
+.0488 g 4209 1678 N -16 48 29 10 17 -48 h
+.0488 g 4180 1667 N -17 48 30 11 16 -48 h
+.0489 g 4151 1657 N -16 48 29 10 16 -48 h
+.0489 g 4121 1646 N -16 48 29 11 17 -48 h
+.0435 g 4092 1617 N -17 48 30 20 16 -39 h
+.0324 g 4062 1588 N -16 39 29 21 17 -31 h
+.0267 g 4033 1577 N -17 31 30 11 16 -31 h
+.0268 g 4003 1567 N -16 31 29 10 17 -31 h
+.0268 g 3974 1556 N -17 31 30 11 16 -31 h
+.0268 g 3944 1545 N -16 31 29 10 17 -30 h
+.0265 g 3915 1534 N -17 30 30 12 16 -31 h
+.0258 g 3885 1522 N -16 31 29 11 17 -30 h
+.0255 g 3856 1511 N -17 30 30 10 16 -29 h
+.0255 g 3826 1501 N -16 29 29 11 17 -30 h
+.0255 g 3797 1490 N -17 30 30 10 16 -29 h
+.0255 g 3767 1480 N -16 29 29 11 17 -30 h
+.0255 g 3738 1469 N -17 30 30 11 16 -30 h
+.0256 g 3708 1459 N -16 30 29 10 17 -30 h
+.0256 g 3679 1448 N -17 30 30 11 16 -30 h
+.0256 g 3649 1438 N -16 30 29 10 17 -30 h
+.0256 g 3620 1427 N -17 30 30 11 16 -30 h
+.0256 g 3590 1417 N -16 30 29 10 17 -30 h
+.0257 g 3561 1406 N -17 30 30 11 16 -30 h
+.0257 g 3531 1396 N -16 30 29 10 17 -30 h
+.0257 g 3502 1385 N -17 30 30 11 16 -30 h
+.0257 g 3472 1375 N -16 30 29 10 17 -30 h
+.0257 g 3443 1364 N -17 30 30 11 16 -30 h
+.0258 g 3413 1353 N -16 30 29 11 17 -30 h
+.0248 g 3384 1340 N -17 30 30 12 16 -29 h
+.0229 g 3354 1326 N -16 29 29 12 17 -27 h
+.022 g 3325 1315 N -17 27 30 11 16 -27 h
+.022 g 3295 1305 N -16 27 29 10 17 -27 h
+.022 g 3266 1294 N -17 27 30 11 16 -27 h
+.022 g 3236 1284 N -16 27 29 10 17 -27 h
+.0206 g 3207 1268 N -17 27 30 14 16 -25 h
+.0176 g 3177 1252 N -16 25 29 13 17 -22 h
+.0161 g 3148 1242 N -17 22 30 10 16 -22 h
+0 g 6055 2241 N -17 9 30 10 16 -8 h
+0 g 6025 2231 N -16 8 29 11 17 -9 h
+0 g 5996 2220 N -17 9 30 10 16 -8 h
+0 g 5966 2209 N -16 8 29 11 17 -8 h
+0 g 5937 2199 N -17 8 30 10 16 -8 h
+0 g 5907 2188 N -16 8 29 11 17 -8 h
+0 g 5878 2178 N -17 8 30 11 16 -9 h
+0 g 5848 2167 N -16 9 29 10 17 -8 h
+0 g 5819 2157 N -17 8 30 11 16 -9 h
+0 g 5789 2146 N -16 9 29 10 17 -8 h
+0 g 5760 2136 N -17 8 30 11 16 -9 h
+0 g 5730 2125 N -16 9 29 10 17 -8 h
+.0004 g 5701 2116 N -17 8 30 11 16 -10 h
+.0011 g 5671 2107 N -16 10 29 11 17 -12 h
+.0014 g 5642 2097 N -17 12 30 10 16 -12 h
+.0014 g 5612 2086 N -16 12 29 11 17 -12 h
+.0014 g 5583 2076 N -17 12 30 10 16 -12 h
+.0014 g 5553 2065 N -16 12 29 11 17 -12 h
+.0018 g 5524 2056 N -17 12 30 10 16 -13 h
+.0025 g 5494 2048 N -16 13 29 11 17 -16 h
+.0028 g 5465 2037 N -17 16 30 11 16 -16 h
+.0028 g 5435 2027 N -16 16 29 10 17 -16 h
+.0028 g 5406 2016 N -17 16 30 11 16 -16 h
+.0028 g 5376 2006 N -16 16 29 10 17 -16 h
+.0031 g 5347 1996 N -17 16 30 11 16 -17 h
+.0036 g 5317 1987 N -16 17 29 10 17 -18 h
+.0039 g 5288 1977 N -17 18 30 11 16 -19 h
+.0039 g 5258 1966 N -16 19 29 11 17 -19 h
+.0039 g 5229 1956 N -17 19 30 10 16 -19 h
+.0039 g 5199 1945 N -16 19 29 11 17 -19 h
+.0494 g 5170 2172 N -17 19 30 10 16 -256 h
+.1233 g 5140 2310 N -16 256 29 11 17 -405 h
+.1519 g 5111 2300 N -17 405 30 10 16 -405 h
+.152 g 5081 2290 N -16 405 29 11 17 -406 h
+.152 g 5052 2279 N -17 406 30 11 16 -406 h
+.1521 g 5022 2269 N -16 406 29 10 17 -406 h
+.2247 g 4993 2638 N -17 406 30 11 16 -786 h
+.3342 g 4963 2820 N -16 786 29 10 17 -978 h
+.3711 g 4934 2809 N -17 978 30 11 16 -978 h
+.3712 g 4904 2799 N -16 978 29 10 17 -978 h
+.3714 g 4875 2789 N -17 978 30 11 16 -979 h
+.3715 g 4845 2779 N -16 979 29 11 17 -980 h
+.3731 g 4816 2776 N -17 980 30 10 16 -987 h
+.3762 g 4786 2774 N -16 987 29 11 17 -996 h
+.3778 g 4757 2763 N -17 996 30 10 16 -995 h
+.3779 g 4727 2753 N -16 995 29 11 17 -996 h
+.378 g 4698 2743 N -17 996 30 10 16 -996 h
+.3781 g 4668 2733 N -16 996 29 11 17 -997 h
+.3443 g 4639 2545 N -17 997 30 11 16 -820 h
+.2487 g 4609 2212 N -16 820 29 10 17 -497 h
+.187 g 4580 2201 N -17 497 30 11 16 -497 h
+.1871 g 4550 2191 N -16 497 29 10 17 -497 h
+.1872 g 4521 2181 N -17 497 30 11 16 -498 h
+.1873 g 4491 2170 N -16 498 29 10 17 -497 h
+.1594 g 4462 2014 N -17 497 30 11 16 -352 h
+.0873 g 4432 1773 N -16 352 29 10 17 -121 h
+.0432 g 4403 1762 N -17 121 30 11 16 -121 h
+.0432 g 4373 1752 N -16 121 29 11 17 -122 h
+.0433 g 4344 1741 N -17 122 30 10 16 -121 h
+.0433 g 4314 1731 N -16 121 29 11 17 -122 h
+.037 g 4285 1687 N -17 122 30 10 16 -88 h
+.0237 g 4255 1640 N -16 88 29 11 17 -52 h
+.0168 g 4226 1630 N -17 52 30 10 16 -52 h
+.0168 g 4196 1619 N -16 52 29 11 17 -52 h
+.0168 g 4167 1609 N -17 52 29 11 17 -53 h
+.0169 g 4138 1598 N -17 53 30 10 16 -52 h
+.0149 g 4108 1578 N -16 52 29 11 17 -43 h
+.011 g 4079 1557 N -17 43 30 10 16 -32 h
+.0091 g 4049 1546 N -16 32 29 11 17 -32 h
+.0091 g 4020 1536 N -17 32 30 10 16 -32 h
+.0091 g 3990 1525 N -16 32 29 11 17 -32 h
+.0091 g 3961 1515 N -17 32 30 11 16 -33 h
+.009 g 3931 1503 N -16 33 29 10 17 -31 h
+.0088 g 3902 1492 N -17 31 30 11 16 -31 h
+.0086 g 3872 1482 N -16 31 29 10 17 -31 h
+.0086 g 3843 1471 N -17 31 30 11 16 -31 h
+.0087 g 3813 1461 N -16 31 29 10 17 -31 h
+.0087 g 3784 1450 N -17 31 30 11 16 -31 h
+.0087 g 3754 1439 N -16 31 29 11 17 -31 h
+.0087 g 3725 1429 N -17 31 30 10 16 -31 h
+.0087 g 3695 1418 N -16 31 29 11 17 -31 h
+.0087 g 3666 1408 N -17 31 30 10 16 -31 h
+.0087 g 3636 1397 N -16 31 29 11 17 -31 h
+.0087 g 3607 1387 N -17 31 30 10 16 -31 h
+.0087 g 3577 1376 N -16 31 29 11 17 -31 h
+.0087 g 3548 1366 N -17 31 30 11 16 -32 h
+.0087 g 3518 1355 N -16 32 29 10 17 -31 h
+.0087 g 3489 1345 N -17 31 30 11 16 -32 h
+.0087 g 3459 1334 N -16 32 29 10 17 -31 h
+.0087 g 3430 1323 N -17 31 30 11 16 -31 h
+.0084 g 3400 1311 N -16 31 29 10 17 -29 h
+.0078 g 3371 1299 N -17 29 30 11 16 -28 h
+.0074 g 3341 1288 N -16 28 29 11 17 -28 h
+.0075 g 3312 1278 N -17 28 30 10 16 -28 h
+.0075 g 3282 1267 N -16 28 29 11 17 -28 h
+.0075 g 3253 1257 N -17 28 30 10 16 -28 h
+.007 g 3223 1243 N -16 28 29 11 17 -25 h
+.0059 g 3194 1230 N -17 25 30 10 16 -22 h
+.0054 g 3164 1220 N -16 22 29 11 17 -23 h
+0 g 6071 2233 N -16 8 29 11 17 -9 h
+0 g 6042 2222 N -17 9 30 10 16 -8 h
+0 g 6012 2212 N -16 8 29 11 17 -9 h
+0 g 5983 2201 N -17 9 30 10 16 -8 h
+0 g 5953 2191 N -16 8 29 11 17 -9 h
+0 g 5924 2180 N -17 9 30 10 16 -8 h
+0 g 5894 2169 N -16 8 29 11 17 -8 h
+0 g 5865 2159 N -17 8 30 11 16 -9 h
+0 g 5835 2148 N -16 9 29 10 17 -8 h
+0 g 5806 2138 N -17 8 30 11 16 -9 h
+0 g 5776 2127 N -16 9 29 10 17 -8 h
+0 g 5747 2117 N -17 8 30 11 16 -9 h
+0 g 5717 2106 N -16 9 29 10 17 -8 h
+0 g 5688 2095 N -17 8 30 11 16 -8 h
+0 g 5658 2085 N -16 8 29 11 17 -9 h
+0 g 5629 2074 N -17 9 30 10 16 -8 h
+0 g 5599 2064 N -16 8 29 11 17 -9 h
+0 g 5570 2053 N -17 9 30 10 16 -8 h
+0 g 5540 2043 N -16 8 29 11 17 -9 h
+0 g 5511 2032 N -17 9 30 10 16 -8 h
+0 g 5481 2021 N -16 8 29 11 17 -8 h
+0 g 5452 2011 N -17 8 30 11 16 -9 h
+0 g 5422 2000 N -16 9 29 10 17 -8 h
+0 g 5393 1990 N -17 8 30 11 16 -9 h
+0 g 5363 1979 N -16 9 29 10 17 -8 h
+0 g 5334 1969 N -17 8 30 11 16 -9 h
+0 g 5304 1958 N -16 9 29 10 17 -8 h
+0 g 5275 1947 N -17 8 30 11 16 -8 h
+0 g 5245 1937 N -16 8 29 11 17 -9 h
+0 g 5216 1926 N -17 9 30 10 16 -8 h
+0 g 5186 1916 N -16 8 29 11 17 -9 h
+0 g 5157 1905 N -17 9 30 10 16 -8 h
+0 g 5127 1895 N -16 8 29 11 17 -9 h
+0 g 5098 1884 N -17 9 30 10 16 -8 h
+0 g 5068 1873 N -16 8 29 11 17 -8 h
+0 g 5039 1863 N -17 8 30 11 16 -9 h
+0 g 5009 1852 N -16 9 29 10 17 -8 h
+0 g 4980 1842 N -17 8 30 11 16 -9 h
+0 g 4950 1831 N -16 9 29 10 17 -8 h
+0 g 4921 1821 N -17 8 30 11 16 -9 h
+0 g 4891 1810 N -16 9 29 10 17 -8 h
+0 g 4862 1799 N -17 8 30 11 16 -8 h
+0 g 4832 1789 N -16 8 29 10 17 -8 h
+0 g 4803 1778 N -17 8 30 11 16 -8 h
+0 g 4773 1768 N -16 8 29 11 17 -9 h
+0 g 4744 1757 N -17 9 30 10 16 -8 h
+0 g 4714 1747 N -16 8 29 11 17 -9 h
+0 g 4685 1736 N -17 9 30 10 16 -8 h
+0 g 4655 1725 N -16 8 29 11 17 -8 h
+0 g 4626 1715 N -17 8 30 10 16 -8 h
+0 g 4596 1704 N -16 8 29 11 17 -8 h
+0 g 4567 1694 N -17 8 30 11 16 -9 h
+0 g 4537 1683 N -16 9 29 10 17 -8 h
+0 g 4508 1673 N -17 8 30 11 16 -9 h
+0 g 4478 1662 N -16 9 29 10 17 -8 h
+0 g 4449 1652 N -17 8 30 11 16 -9 h
+0 g 4419 1641 N -16 9 29 10 17 -8 h
+0 g 4390 1630 N -17 8 30 11 16 -8 h
+0 g 4360 1620 N -16 8 29 11 17 -9 h
+0 g 4331 1609 N -17 9 30 10 16 -8 h
+0 g 4301 1599 N -16 8 29 11 17 -9 h
+0 g 4272 1588 N -17 9 30 10 16 -8 h
+0 g 4242 1578 N -16 8 29 11 17 -9 h
+0 g 4213 1567 N -17 9 30 10 16 -8 h
+0 g 4184 1556 N -16 8 29 11 16 -8 h
+0 g 4154 1546 N -16 8 29 11 17 -9 h
+0 g 4125 1535 N -17 9 30 10 16 -8 h
+0 g 4095 1525 N -16 8 29 11 17 -9 h
+0 g 4066 1514 N -17 9 30 10 16 -8 h
+0 g 4036 1504 N -16 8 29 11 17 -9 h
+0 g 4007 1493 N -17 9 30 10 16 -8 h
+0 g 3977 1482 N -16 8 29 11 17 -8 h
+0 g 3948 1472 N -17 8 30 11 16 -9 h
+0 g 3918 1461 N -16 9 29 10 17 -8 h
+0 g 3889 1451 N -17 8 30 11 16 -9 h
+0 g 3859 1440 N -16 9 29 10 17 -8 h
+0 g 3830 1430 N -17 8 30 11 16 -9 h
+0 g 3800 1419 N -16 9 29 10 17 -8 h
+0 g 3771 1408 N -17 8 30 11 16 -8 h
+0 g 3741 1398 N -16 8 29 11 17 -9 h
+0 g 3712 1387 N -17 9 30 10 16 -8 h
+0 g 3682 1377 N -16 8 29 11 17 -9 h
+0 g 3653 1366 N -17 9 30 10 16 -8 h
+0 g 3623 1356 N -16 8 29 11 17 -9 h
+0 g 3594 1345 N -17 9 30 10 16 -8 h
+0 g 3564 1334 N -16 8 29 11 17 -8 h
+0 g 3535 1324 N -17 8 30 11 16 -9 h
+0 g 3505 1313 N -16 9 29 10 17 -8 h
+0 g 3476 1303 N -17 8 30 11 16 -9 h
+0 g 3446 1292 N -16 9 29 10 17 -8 h
+0 g 3417 1282 N -17 8 30 11 16 -9 h
+0 g 3387 1271 N -16 9 29 10 17 -8 h
+0 g 3358 1260 N -17 8 30 11 16 -8 h
+0 g 3328 1250 N -16 8 29 11 17 -9 h
+0 g 3299 1239 N -17 9 30 10 16 -8 h
+0 g 3269 1229 N -16 8 29 11 17 -9 h
+0 g 3240 1218 N -17 9 30 10 16 -8 h
+0 g 3210 1208 N -16 8 29 11 17 -9 h
+0 g 3181 1197 N -17 9 30 10 16 -8 h
+0 g 6088 2224 N -17 8 30 11 16 -8 h
+0 g 6058 2214 N -16 8 29 11 17 -9 h
+0 g 6029 2203 N -17 9 30 10 16 -8 h
+0 g 5999 2193 N -16 8 29 11 17 -9 h
+0 g 5970 2182 N -17 9 30 10 16 -8 h
+0 g 5940 2172 N -16 8 29 11 17 -9 h
+0 g 5911 2161 N -17 9 30 10 16 -8 h
+0 g 5881 2150 N -16 8 29 11 17 -8 h
+0 g 5852 2140 N -17 8 30 11 16 -9 h
+0 g 5822 2129 N -16 9 29 10 17 -8 h
+0 g 5793 2119 N -17 8 30 11 16 -9 h
+0 g 5763 2108 N -16 9 29 10 17 -8 h
+0 g 5734 2098 N -17 8 30 11 16 -9 h
+0 g 5704 2087 N -16 9 29 10 17 -8 h
+0 g 5675 2076 N -17 8 30 11 16 -8 h
+0 g 5645 2066 N -16 8 29 11 17 -9 h
+0 g 5616 2055 N -17 9 30 10 16 -8 h
+0 g 5586 2045 N -16 8 29 11 17 -9 h
+0 g 5557 2034 N -17 9 30 10 16 -8 h
+0 g 5527 2024 N -16 8 29 11 17 -9 h
+0 g 5498 2013 N -17 9 30 10 16 -8 h
+0 g 5468 2002 N -16 8 29 11 17 -8 h
+0 g 5439 1992 N -17 8 30 11 16 -9 h
+0 g 5409 1981 N -16 9 29 10 17 -8 h
+0 g 5380 1971 N -17 8 30 11 16 -9 h
+0 g 5350 1960 N -16 9 29 10 17 -8 h
+0 g 5321 1950 N -17 8 30 11 16 -9 h
+0 g 5291 1939 N -16 9 29 10 17 -8 h
+0 g 5262 1928 N -17 8 30 11 16 -8 h
+0 g 5232 1918 N -16 8 29 10 17 -8 h
+0 g 5203 1907 N -17 8 30 11 16 -8 h
+0 g 5173 1897 N -16 8 29 11 17 -9 h
+0 g 5144 1886 N -17 9 30 10 16 -8 h
+0 g 5114 1876 N -16 8 29 11 17 -9 h
+0 g 5085 1865 N -17 9 30 10 16 -8 h
+0 g 5055 1854 N -16 8 29 11 17 -8 h
+0 g 5026 1844 N -17 8 30 10 16 -8 h
+0 g 4996 1833 N -16 8 29 11 17 -8 h
+0 g 4967 1823 N -17 8 30 11 16 -9 h
+0 g 4937 1812 N -16 9 29 10 17 -8 h
+0 g 4908 1802 N -17 8 30 11 16 -9 h
+0 g 4878 1791 N -16 9 29 10 17 -8 h
+0 g 4849 1781 N -17 8 30 11 16 -9 h
+0 g 4819 1770 N -16 9 29 10 17 -8 h
+0 g 4790 1759 N -17 8 30 11 16 -8 h
+0 g 4760 1749 N -16 8 29 11 17 -9 h
+0 g 4731 1738 N -17 9 30 10 16 -8 h
+0 g 4701 1728 N -16 8 29 11 17 -9 h
+0 g 4672 1717 N -17 9 30 10 16 -8 h
+0 g 4642 1707 N -16 8 29 11 17 -9 h
+0 g 4613 1696 N -17 9 30 10 16 -8 h
+0 g 4583 1685 N -16 8 29 11 17 -8 h
+0 g 4554 1675 N -17 8 30 11 16 -9 h
+0 g 4524 1664 N -16 9 29 10 17 -8 h
+0 g 4495 1654 N -17 8 30 11 16 -9 h
+0 g 4465 1643 N -16 9 29 10 17 -8 h
+0 g 4436 1633 N -17 8 30 11 16 -9 h
+0 g 4406 1622 N -16 9 29 10 17 -8 h
+0 g 4377 1611 N -17 8 30 11 16 -8 h
+0 g 4347 1601 N -16 8 29 11 17 -9 h
+0 g 4318 1590 N -17 9 30 10 16 -8 h
+0 g 4288 1580 N -16 8 29 11 17 -9 h
+0 g 4259 1569 N -17 9 30 10 16 -8 h
+0 g 4229 1559 N -16 8 29 11 17 -9 h
+0 g 4200 1548 N -17 9 30 10 16 -8 h
+0 g 4171 1537 N -16 8 29 11 16 -8 h
+0 g 4141 1527 N -16 8 29 11 17 -9 h
+0 g 4112 1516 N -17 9 30 10 16 -8 h
+0 g 4082 1506 N -16 8 29 11 17 -9 h
+0 g 4053 1495 N -17 9 30 10 16 -8 h
+0 g 4023 1485 N -16 8 29 11 17 -9 h
+0 g 3994 1474 N -17 9 30 10 16 -8 h
+0 g 3964 1463 N -16 8 29 11 17 -8 h
+0 g 3935 1453 N -17 8 30 11 16 -9 h
+0 g 3905 1442 N -16 9 29 10 17 -8 h
+0 g 3876 1432 N -17 8 30 11 16 -9 h
+0 g 3846 1421 N -16 9 29 10 17 -8 h
+0 g 3817 1411 N -17 8 30 11 16 -9 h
+0 g 3787 1400 N -16 9 29 10 17 -8 h
+0 g 3758 1389 N -17 8 30 11 16 -8 h
+0 g 3728 1379 N -16 8 29 11 17 -9 h
+0 g 3699 1368 N -17 9 30 10 16 -8 h
+0 g 3669 1358 N -16 8 29 11 17 -9 h
+0 g 3640 1347 N -17 9 30 10 16 -8 h
+0 g 3610 1337 N -16 8 29 11 17 -9 h
+0 g 3581 1326 N -17 9 30 10 16 -8 h
+0 g 3551 1315 N -16 8 29 11 17 -8 h
+0 g 3522 1305 N -17 8 30 10 16 -8 h
+0 g 3492 1294 N -16 8 29 11 17 -8 h
+0 g 3463 1284 N -17 8 30 11 16 -9 h
+0 g 3433 1273 N -16 9 29 10 17 -8 h
+0 g 3404 1263 N -17 8 30 11 16 -9 h
+0 g 3374 1252 N -16 9 29 10 17 -8 h
+0 g 3345 1241 N -17 8 30 11 16 -8 h
+0 g 3315 1231 N -16 8 29 10 17 -8 h
+0 g 3286 1220 N -17 8 30 11 16 -8 h
+0 g 3256 1210 N -16 8 29 11 17 -9 h
+0 g 3227 1199 N -17 9 30 10 16 -8 h
+0 g 3197 1189 N -16 8 29 11 17 -9 h
+0 g 6104 2216 N -16 9 29 10 17 -8 h
+0 g 6075 2205 N -17 8 30 11 16 -8 h
+0 g 6045 2195 N -16 8 29 11 17 -9 h
+0 g 6016 2184 N -17 9 30 10 16 -8 h
+0 g 5986 2174 N -16 8 29 11 17 -9 h
+0 g 5957 2163 N -17 9 30 10 16 -8 h
+0 g 5927 2153 N -16 8 29 11 17 -9 h
+0 g 5898 2142 N -17 9 30 10 16 -8 h
+0 g 5868 2131 N -16 8 29 11 17 -8 h
+0 g 5839 2121 N -17 8 30 11 16 -9 h
+0 g 5809 2110 N -16 9 29 10 17 -8 h
+0 g 5780 2100 N -17 8 30 11 16 -9 h
+.0002 g 5750 2089 N -16 9 29 9 17 -7 h
+.0007 g 5721 2079 N -17 7 30 9 16 -6 h
+.0009 g 5691 2068 N -16 6 29 11 17 -6 h
+.0009 g 5662 2057 N -17 6 30 10 16 -5 h
+.0009 g 5632 2047 N -16 5 29 11 17 -6 h
+.0009 g 5603 2036 N -17 6 30 11 16 -6 h
+.0012 g 5573 2026 N -16 6 29 9 17 -5 h
+.0016 g 5544 2015 N -17 5 30 9 16 -3 h
+.0019 g 5514 2005 N -16 3 29 11 17 -4 h
+.0019 g 5485 1994 N -17 4 30 10 16 -3 h
+.0019 g 5455 1983 N -16 3 29 11 17 -3 h
+.0019 g 5426 1973 N -17 3 30 11 16 -4 h
+.0021 g 5396 1962 N -16 4 29 9 17 -2 h
+.0024 g 5367 1952 N -17 2 30 10 16 -2 h
+.0026 g 5337 1941 N -16 2 29 10 17 -1 h
+.0026 g 5308 1931 N -17 1 30 11 16 -2 h
+.0026 g 5278 1920 N -16 2 29 10 17 -1 h
+.0026 g 5249 1910 N -17 1 30 11 16 -2 h
+.0359 g 5219 1899 N -16 2 29 -163 17 172 h
+.0924 g 5190 1888 N -17 -172 30 -111 16 294 h
+.1157 g 5160 1878 N -16 -294 29 10 17 294 h
+.1157 g 5131 1867 N -17 -294 30 11 16 294 h
+.1158 g 5101 1857 N -16 -294 29 10 17 294 h
+.1159 g 5072 1846 N -17 -294 30 10 16 295 h
+.1807 g 5042 1836 N -16 -295 29 -327 17 632 h
+.2802 g 5013 1825 N -17 -632 30 -172 16 815 h
+.3151 g 4983 1814 N -16 -815 29 10 17 816 h
+.3153 g 4954 1804 N -17 -816 30 11 16 815 h
+.3154 g 4924 1793 N -16 -815 29 10 17 816 h
+.3155 g 4895 1783 N -17 -816 30 10 16 816 h
+.317 g 4865 1772 N -16 -816 29 3 17 824 h
+.32 g 4836 1762 N -17 -824 30 3 16 831 h
+.3215 g 4806 1751 N -16 -831 29 10 17 832 h
+.3216 g 4777 1740 N -17 -832 30 11 16 832 h
+.3217 g 4747 1730 N -16 -832 29 10 17 832 h
+.3218 g 4718 1719 N -17 -832 30 10 16 833 h
+.2898 g 4688 1709 N -16 -833 29 179 17 664 h
+.2017 g 4659 1698 N -17 -664 30 303 16 372 h
+.1457 g 4629 1688 N -16 -372 29 10 17 372 h
+.1458 g 4600 1677 N -17 -372 30 10 16 373 h
+.1459 g 4570 1666 N -16 -373 29 11 17 373 h
+.146 g 4541 1656 N -17 -373 30 10 16 373 h
+.1223 g 4511 1645 N -16 -373 29 134 17 250 h
+.0644 g 4482 1635 N -17 -250 30 190 16 70 h
+.0301 g 4452 1624 N -16 -70 29 11 17 70 h
+.0301 g 4423 1614 N -17 -70 30 10 16 70 h
+.0301 g 4393 1603 N -16 -70 29 11 17 70 h
+.0302 g 4364 1592 N -17 -70 30 10 16 71 h
+.0256 g 4334 1582 N -16 -71 29 34 17 47 h
+.0162 g 4305 1571 N -17 -47 30 36 16 22 h
+.0114 g 4275 1561 N -16 -22 29 11 17 21 h
+.0114 g 4246 1550 N -17 -21 30 10 16 22 h
+.0114 g 4216 1540 N -16 -22 29 11 17 21 h
+.0114 g 4187 1529 N -17 -21 29 10 17 22 h
+.0101 g 4158 1518 N -17 -22 30 18 16 15 h
+.0075 g 4128 1508 N -16 -15 29 18 17 7 h
+.0061 g 4099 1497 N -17 -7 30 10 16 8 h
+.0061 g 4069 1487 N -16 -8 29 11 17 7 h
+.0061 g 4040 1476 N -17 -7 30 10 16 8 h
+.0061 g 4010 1466 N -16 -8 29 11 17 7 h
+.006 g 3981 1455 N -17 -7 30 11 16 7 h
+.0059 g 3951 1444 N -16 -7 29 11 17 7 h
+.0058 g 3922 1434 N -17 -7 30 10 16 7 h
+.0058 g 3892 1423 N -16 -7 29 11 17 7 h
+.0058 g 3863 1413 N -17 -7 30 10 16 7 h
+.0058 g 3833 1402 N -16 -7 29 11 17 7 h
+.0058 g 3804 1392 N -17 -7 30 11 16 6 h
+.0058 g 3774 1381 N -16 -6 29 10 17 7 h
+.0058 g 3745 1370 N -17 -7 30 11 16 7 h
+.0058 g 3715 1360 N -16 -7 29 10 17 7 h
+.0059 g 3686 1349 N -17 -7 30 11 16 7 h
+.0059 g 3656 1339 N -16 -7 29 10 17 7 h
+.0059 g 3627 1328 N -17 -7 30 11 16 7 h
+.0059 g 3597 1318 N -16 -7 29 10 17 7 h
+.0059 g 3568 1307 N -17 -7 30 11 16 7 h
+.0059 g 3538 1297 N -16 -7 29 11 17 6 h
+.0059 g 3509 1286 N -17 -6 30 10 16 7 h
+.0059 g 3479 1275 N -16 -7 29 11 17 7 h
+.0057 g 3450 1265 N -17 -7 30 11 16 6 h
+.0052 g 3420 1254 N -16 -6 29 12 17 5 h
+.005 g 3391 1244 N -17 -5 30 11 16 4 h
+.005 g 3361 1233 N -16 -4 29 10 17 5 h
+.005 g 3332 1223 N -17 -5 30 11 16 4 h
+.005 g 3302 1212 N -16 -4 29 10 17 5 h
+.0047 g 3273 1201 N -17 -5 30 13 16 3 h
+.004 g 3243 1191 N -16 -3 29 12 17 1 h
+.0036 g 3214 1180 N -17 -1 30 11 16 1 h
+0 g 6121 2208 N -17 8 30 11 16 -9 h
+0 g 6091 2197 N -16 9 29 10 17 -8 h
+0 g 6062 2186 N -17 8 30 11 16 -8 h
+0 g 6032 2176 N -16 8 29 10 17 -8 h
+0 g 6003 2165 N -17 8 30 11 16 -8 h
+0 g 5973 2155 N -16 8 29 11 17 -9 h
+0 g 5944 2144 N -17 9 30 10 16 -8 h
+0 g 5914 2134 N -16 8 29 11 17 -9 h
+0 g 5885 2123 N -17 9 30 10 16 -8 h
+0 g 5855 2112 N -16 8 29 11 17 -8 h
+0 g 5826 2102 N -17 8 30 10 16 -8 h
+0 g 5796 2091 N -16 8 29 11 17 -8 h
+.0009 g 5767 2082 N -17 8 30 7 16 -6 h
+.0028 g 5737 2073 N -16 6 29 7 17 -4 h
+.0037 g 5708 2062 N -17 4 30 10 16 -3 h
+.0037 g 5678 2052 N -16 3 29 11 17 -4 h
+.0038 g 5649 2041 N -17 4 30 11 16 -4 h
+.0038 g 5619 2030 N -16 4 29 10 17 -3 h
+.0047 g 5590 2021 N -17 3 30 7 16 -1 h
+.0065 g 5560 2012 N -16 1 29 7 17 1 h
+.0075 g 5531 2001 N -17 -1 30 11 16 1 h
+.0075 g 5501 1991 N -16 -1 29 10 17 1 h
+.0075 g 5472 1980 N -17 -1 30 11 16 1 h
+.0075 g 5442 1969 N -16 -1 29 10 17 2 h
+.0082 g 5413 1960 N -17 -2 30 8 16 3 h
+.0096 g 5383 1950 N -16 -3 29 8 17 5 h
+.0104 g 5354 1940 N -17 -5 30 10 16 5 h
+.0104 g 5324 1929 N -16 -5 29 11 17 5 h
+.0104 g 5295 1919 N -17 -5 30 10 16 5 h
+.0104 g 5265 1908 N -16 -5 29 11 17 5 h
+.1164 g 5236 2071 N -17 -5 30 -370 16 212 h
+.2826 g 5206 2182 N -16 -212 29 -182 17 283 h
+.3428 g 5177 2172 N -17 -283 30 10 16 283 h
+.343 g 5147 2161 N -16 -283 29 11 17 283 h
+.3431 g 5118 2151 N -17 -283 30 10 16 283 h
+.3433 g 5088 2141 N -16 -283 29 10 17 283 h
+.4909 g 5059 2468 N -17 -283 30 -421 16 377 h
+.7124 g 5029 2640 N -16 -377 29 -195 17 400 h
+.7865 g 5000 2630 N -17 -400 30 11 16 399 h
+.7867 g 4970 2619 N -16 -399 29 10 17 400 h
+.787 g 4941 2609 N -17 -400 30 10 16 400 h
+.7872 g 4911 2599 N -16 -400 29 10 17 400 h
+.7904 g 4882 2596 N -17 -400 30 2 16 401 h
+.7966 g 4852 2593 N -16 -401 29 3 17 401 h
+.7998 g 4823 2583 N -17 -401 30 10 16 401 h
+.8001 g 4793 2572 N -16 -401 29 10 17 402 h
+.8003 g 4764 2562 N -17 -402 30 10 16 402 h
+.8005 g 4734 2552 N -16 -402 29 11 17 401 h
+.7327 g 4705 2373 N -17 -401 30 198 16 382 h
+.5398 g 4675 2070 N -16 -382 29 370 17 315 h
+.4151 g 4646 2060 N -17 -315 30 10 16 315 h
+.4152 g 4616 2050 N -16 -315 29 11 17 314 h
+.4154 g 4587 2039 N -17 -314 30 10 16 315 h
+.4156 g 4557 2029 N -16 -315 29 10 17 315 h
+.358 g 4528 1895 N -17 -315 30 189 16 260 h
+.2036 g 4498 1705 N -16 -260 29 336 17 114 h
+.107 g 4469 1694 N -17 -114 30 11 16 114 h
+.1071 g 4439 1684 N -16 -114 29 10 17 114 h
+.1072 g 4410 1673 N -17 -114 30 10 16 115 h
+.1073 g 4380 1663 N -16 -115 29 11 17 114 h
+.0923 g 4351 1629 N -17 -114 30 65 16 83 h
+.0603 g 4321 1593 N -16 -83 29 74 17 45 h
+.0434 g 4292 1582 N -17 -45 30 10 16 46 h
+.0434 g 4262 1572 N -16 -46 29 11 17 45 h
+.0435 g 4233 1561 N -17 -45 30 10 16 46 h
+.0435 g 4204 1551 N -16 -46 29 11 16 45 h
+.0387 g 4174 1533 N -16 -45 29 29 17 34 h
+.0288 g 4145 1515 N -17 -34 30 30 16 22 h
+.0238 g 4115 1505 N -16 -22 29 10 17 22 h
+.0238 g 4086 1494 N -17 -22 30 11 16 22 h
+.0238 g 4056 1484 N -16 -22 29 10 17 22 h
+.0238 g 4027 1473 N -17 -22 30 11 16 22 h
+.0235 g 3997 1462 N -16 -22 29 12 17 21 h
+.0229 g 3968 1451 N -17 -21 30 11 16 21 h
+.0226 g 3938 1441 N -16 -21 29 11 17 20 h
+.0227 g 3909 1430 N -17 -20 30 10 16 21 h
+.0227 g 3879 1420 N -16 -21 29 11 17 20 h
+.0227 g 3850 1409 N -17 -20 30 11 16 20 h
+.0227 g 3820 1398 N -16 -20 29 10 17 21 h
+.0227 g 3791 1388 N -17 -21 30 11 16 20 h
+.0227 g 3761 1377 N -16 -20 29 10 17 21 h
+.0228 g 3732 1367 N -17 -21 30 11 16 20 h
+.0228 g 3702 1356 N -16 -20 29 10 17 21 h
+.0228 g 3673 1346 N -17 -21 30 11 16 20 h
+.0228 g 3643 1335 N -16 -20 29 10 17 21 h
+.0228 g 3614 1325 N -17 -21 30 11 16 20 h
+.0229 g 3584 1314 N -16 -20 29 10 17 21 h
+.0229 g 3555 1303 N -17 -21 30 11 16 21 h
+.0229 g 3525 1293 N -16 -21 29 10 17 21 h
+.0229 g 3496 1282 N -17 -21 30 11 16 21 h
+.0221 g 3466 1271 N -16 -21 29 14 17 18 h
+.0204 g 3437 1259 N -17 -18 30 14 16 16 h
+.0196 g 3407 1248 N -16 -16 29 10 17 17 h
+.0196 g 3378 1238 N -17 -17 30 11 16 16 h
+.0196 g 3348 1227 N -16 -16 29 10 17 17 h
+.0196 g 3319 1217 N -17 -17 30 11 16 16 h
+.0183 g 3289 1204 N -16 -16 29 15 17 14 h
+.0157 g 3260 1192 N -17 -14 30 16 16 10 h
+.0143 g 3230 1181 N -16 -10 29 11 17 10 h
+0 g 6137 2199 N -16 9 29 10 17 -8 h
+0 g 6108 2189 N -17 8 30 11 16 -9 h
+0 g 6078 2178 N -16 9 29 10 17 -8 h
+0 g 6049 2168 N -17 8 30 11 16 -9 h
+0 g 6019 2157 N -16 9 29 10 17 -8 h
+0 g 5990 2146 N -17 8 30 11 16 -8 h
+0 g 5960 2136 N -16 8 29 11 17 -9 h
+0 g 5931 2125 N -17 9 30 10 16 -8 h
+0 g 5901 2115 N -16 8 29 11 17 -9 h
+0 g 5872 2104 N -17 9 30 10 16 -8 h
+0 g 5842 2094 N -16 8 29 11 17 -9 h
+0 g 5813 2083 N -17 9 30 10 16 -8 h
+.0014 g 5783 2076 N -16 8 29 7 17 -8 h
+.0042 g 5754 2069 N -17 8 30 7 16 -8 h
+.0056 g 5724 2059 N -16 8 29 11 17 -9 h
+.0056 g 5695 2048 N -17 9 30 10 16 -8 h
+.0056 g 5665 2037 N -16 8 29 11 17 -8 h
+.0056 g 5636 2027 N -17 8 30 11 16 -9 h
+.007 g 5606 2020 N -16 9 29 6 17 -8 h
+.0098 g 5577 2013 N -17 8 30 7 16 -8 h
+.0112 g 5547 2002 N -16 8 29 11 17 -8 h
+.0112 g 5518 1992 N -17 8 30 11 16 -9 h
+.0112 g 5488 1981 N -16 9 29 10 17 -8 h
+.0112 g 5459 1971 N -17 8 30 11 16 -9 h
+.0123 g 5429 1963 N -16 9 29 7 17 -8 h
+.0144 g 5400 1955 N -17 8 30 8 16 -8 h
+.0155 g 5370 1945 N -16 8 29 11 17 -9 h
+.0155 g 5341 1934 N -17 9 30 10 16 -8 h
+.0155 g 5311 1924 N -16 8 29 11 17 -9 h
+.0155 g 5282 1913 N -17 9 30 10 16 -8 h
+.161 g 5252 2283 N -16 8 29 -369 17 -9 h
+.3803 g 5223 2465 N -17 9 30 -182 16 -9 h
+.4542 g 5193 2455 N -16 9 29 10 17 -9 h
+.4544 g 5164 2444 N -17 9 30 10 16 -8 h
+.4546 g 5134 2434 N -16 8 29 10 17 -8 h
+.4548 g 5105 2424 N -17 8 30 11 16 -9 h
+.6204 g 5075 2845 N -16 9 29 -422 17 -8 h
+.8643 g 5046 3040 N -17 8 30 -194 16 -9 h
+.9428 g 5016 3029 N -16 9 29 10 17 -8 h
+.943 g 4987 3019 N -17 8 30 10 16 -8 h
+.9432 g 4957 3009 N -16 8 29 11 17 -9 h
+.9435 g 4928 2999 N -17 9 30 10 16 -9 h
+.9469 g 4898 2997 N -16 9 29 2 17 -9 h
+.9533 g 4869 2994 N -17 9 30 2 16 -8 h
+.9567 g 4839 2984 N -16 8 29 10 17 -8 h
+.9569 g 4810 2974 N -17 8 30 11 16 -9 h
+.9571 g 4780 2964 N -16 9 29 10 17 -9 h
+.9574 g 4751 2953 N -17 9 30 10 16 -8 h
+.8858 g 4721 2755 N -16 8 29 198 17 -8 h
+.6763 g 4692 2385 N -17 8 30 371 16 -9 h
+.5387 g 4662 2375 N -16 9 29 10 17 -9 h
+.5389 g 4633 2364 N -17 9 30 10 16 -8 h
+.5391 g 4603 2354 N -16 8 29 10 17 -8 h
+.5393 g 4574 2344 N -17 8 30 11 16 -9 h
+.4713 g 4544 2155 N -16 9 29 188 17 -8 h
+.2785 g 4515 1819 N -17 8 30 336 16 -8 h
+.1539 g 4485 1808 N -16 8 29 11 17 -8 h
+.154 g 4456 1798 N -17 8 30 10 16 -8 h
+.1541 g 4426 1788 N -16 8 29 11 17 -9 h
+.1542 g 4397 1777 N -17 9 30 10 16 -8 h
+.1333 g 4367 1712 N -16 8 29 65 17 -8 h
+.0882 g 4338 1638 N -17 8 30 74 16 -8 h
+.064 g 4308 1628 N -16 8 29 11 17 -9 h
+.064 g 4279 1617 N -17 9 30 10 16 -8 h
+.0641 g 4249 1607 N -16 8 29 11 17 -9 h
+.0641 g 4220 1596 N -17 9 29 10 17 -8 h
+.0571 g 4191 1567 N -17 8 30 29 16 -8 h
+.0427 g 4161 1537 N -16 8 29 30 17 -8 h
+.0353 g 4132 1527 N -17 8 30 11 16 -9 h
+.0353 g 4102 1516 N -16 9 29 10 17 -8 h
+.0354 g 4073 1506 N -17 8 30 11 16 -9 h
+.0354 g 4043 1495 N -16 9 29 10 17 -8 h
+.035 g 4014 1483 N -17 8 30 12 16 -8 h
+.0341 g 3984 1472 N -16 8 29 12 17 -9 h
+.0336 g 3955 1461 N -17 9 30 10 16 -8 h
+.0337 g 3925 1451 N -16 8 29 11 17 -9 h
+.0337 g 3896 1440 N -17 9 30 10 16 -8 h
+.0337 g 3866 1429 N -16 8 29 11 17 -8 h
+.0338 g 3837 1419 N -17 8 30 10 16 -8 h
+.0338 g 3807 1408 N -16 8 29 11 17 -8 h
+.0338 g 3778 1398 N -17 8 30 11 16 -9 h
+.0338 g 3748 1387 N -16 9 29 10 17 -8 h
+.0339 g 3719 1377 N -17 8 30 11 16 -9 h
+.0339 g 3689 1366 N -16 9 29 10 17 -8 h
+.0339 g 3660 1356 N -17 8 30 11 16 -9 h
+.0339 g 3630 1345 N -16 9 29 10 17 -8 h
+.034 g 3601 1335 N -17 8 30 11 16 -9 h
+.034 g 3571 1324 N -16 9 29 10 17 -8 h
+.034 g 3542 1314 N -17 8 30 11 16 -9 h
+.034 g 3512 1303 N -16 9 29 10 17 -8 h
+.0328 g 3483 1289 N -17 8 30 14 16 -8 h
+.0303 g 3453 1275 N -16 8 29 14 17 -8 h
+.0291 g 3424 1265 N -17 8 30 11 16 -9 h
+.0291 g 3394 1254 N -16 9 29 10 17 -8 h
+.0291 g 3365 1244 N -17 8 30 11 16 -9 h
+.0292 g 3335 1233 N -16 9 29 10 17 -8 h
+.0272 g 3306 1218 N -17 8 30 16 16 -9 h
+.0233 g 3276 1202 N -16 9 29 15 17 -8 h
+.0214 g 3247 1191 N -17 8 30 11 16 -8 h
+0 g 6154 2191 N -17 8 30 11 16 -9 h
+0 g 6124 2180 N -16 9 29 10 17 -8 h
+0 g 6095 2170 N -17 8 30 11 16 -9 h
+0 g 6065 2159 N -16 9 29 10 17 -8 h
+0 g 6036 2149 N -17 8 30 11 16 -9 h
+0 g 6006 2138 N -16 9 29 10 17 -8 h
+0 g 5977 2127 N -17 8 30 11 16 -8 h
+0 g 5947 2117 N -16 8 29 11 17 -9 h
+0 g 5918 2106 N -17 9 30 10 16 -8 h
+0 g 5888 2096 N -16 8 29 11 17 -9 h
+0 g 5859 2085 N -17 9 30 10 16 -8 h
+0 g 5829 2075 N -16 8 29 11 17 -9 h
+.0014 g 5800 2068 N -17 9 30 7 16 -9 h
+.0042 g 5770 2061 N -16 9 29 7 17 -9 h
+.0056 g 5741 2050 N -17 9 30 10 16 -8 h
+.0056 g 5711 2040 N -16 8 29 11 17 -9 h
+.0056 g 5682 2029 N -17 9 30 10 16 -8 h
+.0056 g 5652 2018 N -16 8 29 11 17 -8 h
+.007 g 5623 2012 N -17 8 30 7 16 -9 h
+.0098 g 5593 2005 N -16 9 29 7 17 -9 h
+.0112 g 5564 1994 N -17 9 30 10 16 -8 h
+.0112 g 5534 1983 N -16 8 29 11 17 -8 h
+.0112 g 5505 1973 N -17 8 30 10 16 -8 h
+.0112 g 5475 1962 N -16 8 29 11 17 -8 h
+.0123 g 5446 1955 N -17 8 30 8 16 -9 h
+.0144 g 5416 1947 N -16 9 29 8 17 -9 h
+.0155 g 5387 1936 N -17 9 30 10 16 -8 h
+.0155 g 5357 1926 N -16 8 29 11 17 -9 h
+.0155 g 5328 1915 N -17 9 30 10 16 -8 h
+.0155 g 5298 1905 N -16 8 29 11 17 -9 h
+.161 g 5269 2274 N -17 9 30 -370 16 -8 h
+.3803 g 5239 2456 N -16 8 29 -182 17 -8 h
+.4542 g 5210 2446 N -17 8 30 10 16 -8 h
+.4544 g 5180 2436 N -16 8 29 11 17 -9 h
+.4546 g 5151 2426 N -17 9 30 10 16 -9 h
+.4548 g 5121 2415 N -16 9 29 10 17 -8 h
+.6204 g 5092 2837 N -17 8 30 -422 16 -8 h
+.8643 g 5062 3031 N -16 8 29 -194 17 -8 h
+.9428 g 5033 3021 N -17 8 30 10 16 -8 h
+.943 g 5003 3011 N -16 8 29 11 17 -9 h
+.9432 g 4974 3000 N -17 9 30 10 16 -8 h
+.9435 g 4944 2990 N -16 8 29 10 17 -8 h
+.9469 g 4915 2988 N -17 8 30 2 16 -8 h
+.9533 g 4885 2986 N -16 8 29 2 17 -8 h
+.9567 g 4856 2976 N -17 8 30 11 16 -9 h
+.9569 g 4826 2965 N -16 9 29 10 17 -8 h
+.9571 g 4797 2955 N -17 8 30 10 16 -8 h
+.9574 g 4767 2945 N -16 8 29 10 17 -8 h
+.8858 g 4738 2747 N -17 8 30 198 16 -8 h
+.6763 g 4708 2376 N -16 8 29 371 17 -8 h
+.5387 g 4679 2366 N -17 8 30 10 16 -8 h
+.5389 g 4649 2356 N -16 8 29 11 17 -9 h
+.5391 g 4620 2346 N -17 9 30 10 16 -9 h
+.5393 g 4590 2335 N -16 9 29 10 17 -8 h
+.4713 g 4561 2147 N -17 8 30 189 16 -9 h
+.2785 g 4531 1811 N -16 9 29 336 17 -9 h
+.1539 g 4502 1800 N -17 9 30 10 16 -8 h
+.154 g 4472 1790 N -16 8 29 11 17 -9 h
+.1541 g 4443 1779 N -17 9 30 10 16 -8 h
+.1542 g 4413 1769 N -16 8 29 11 17 -9 h
+.1333 g 4384 1704 N -17 9 30 65 16 -9 h
+.0882 g 4354 1630 N -16 9 29 74 17 -9 h
+.064 g 4325 1619 N -17 9 30 10 16 -8 h
+.064 g 4295 1609 N -16 8 29 11 17 -9 h
+.0641 g 4266 1598 N -17 9 30 10 16 -8 h
+.0641 g 4237 1588 N -16 8 29 11 16 -9 h
+.0571 g 4207 1559 N -16 9 29 29 17 -9 h
+.0427 g 4178 1529 N -17 9 30 30 16 -9 h
+.0353 g 4148 1518 N -16 9 29 10 17 -8 h
+.0353 g 4119 1508 N -17 8 30 11 16 -9 h
+.0354 g 4089 1497 N -16 9 29 10 17 -8 h
+.0354 g 4060 1487 N -17 8 30 11 16 -9 h
+.035 g 4030 1475 N -16 9 29 11 17 -8 h
+.0341 g 4001 1463 N -17 8 30 12 16 -8 h
+.0336 g 3971 1453 N -16 8 29 11 17 -9 h
+.0337 g 3942 1442 N -17 9 30 10 16 -8 h
+.0337 g 3912 1432 N -16 8 29 11 17 -9 h
+.0337 g 3883 1421 N -17 9 30 10 16 -8 h
+.0338 g 3853 1411 N -16 8 29 11 17 -9 h
+.0338 g 3824 1400 N -17 9 30 10 16 -8 h
+.0338 g 3794 1389 N -16 8 29 11 17 -8 h
+.0338 g 3765 1379 N -17 8 30 10 16 -8 h
+.0339 g 3735 1368 N -16 8 29 11 17 -8 h
+.0339 g 3706 1358 N -17 8 30 11 16 -9 h
+.0339 g 3676 1347 N -16 9 29 10 17 -8 h
+.0339 g 3647 1337 N -17 8 30 11 16 -9 h
+.034 g 3617 1326 N -16 9 29 10 17 -8 h
+.034 g 3588 1316 N -17 8 30 11 16 -9 h
+.034 g 3558 1305 N -16 9 29 10 17 -8 h
+.034 g 3529 1295 N -17 8 30 11 16 -9 h
+.0328 g 3499 1281 N -16 9 29 14 17 -9 h
+.0303 g 3470 1267 N -17 9 30 13 16 -8 h
+.0291 g 3440 1256 N -16 8 29 11 17 -8 h
+.0291 g 3411 1246 N -17 8 30 10 16 -8 h
+.0291 g 3381 1235 N -16 8 29 11 17 -8 h
+.0292 g 3352 1225 N -17 8 30 11 16 -9 h
+.0272 g 3322 1209 N -16 9 29 15 17 -8 h
+.0233 g 3293 1194 N -17 8 30 16 16 -9 h
+.0214 g 3263 1183 N -16 9 29 10 17 -8 h
+0 g 6170 2182 N -16 8 29 11 17 -8 h
+0 g 6141 2172 N -17 8 30 11 16 -9 h
+0 g 6111 2161 N -16 9 29 10 17 -8 h
+0 g 6082 2151 N -17 8 30 11 16 -9 h
+0 g 6052 2140 N -16 9 29 10 17 -8 h
+0 g 6023 2130 N -17 8 30 11 16 -9 h
+0 g 5993 2119 N -16 9 29 10 17 -8 h
+0 g 5964 2108 N -17 8 30 11 16 -8 h
+0 g 5934 2098 N -16 8 29 11 17 -9 h
+0 g 5905 2087 N -17 9 30 10 16 -8 h
+0 g 5875 2077 N -16 8 29 11 17 -9 h
+0 g 5846 2066 N -17 9 30 10 16 -8 h
+.0013 g 5816 2059 N -16 8 29 8 17 -9 h
+.0039 g 5787 2052 N -17 9 30 7 16 -9 h
+.0051 g 5757 2042 N -16 9 29 11 17 -10 h
+.0051 g 5728 2031 N -17 10 30 10 16 -9 h
+.0052 g 5698 2021 N -16 9 29 11 17 -10 h
+.0052 g 5669 2010 N -17 10 30 11 16 -10 h
+.0064 g 5639 2003 N -16 10 29 7 17 -10 h
+.009 g 5610 1996 N -17 10 30 8 16 -11 h
+.0103 g 5580 1986 N -16 11 29 10 17 -11 h
+.0103 g 5551 1975 N -17 11 30 11 16 -11 h
+.0103 g 5521 1965 N -16 11 29 10 17 -11 h
+.0103 g 5492 1954 N -17 11 30 11 16 -11 h
+.0113 g 5462 1946 N -16 11 29 8 17 -11 h
+.0132 g 5433 1938 N -17 11 30 8 16 -11 h
+.0142 g 5403 1928 N -16 11 29 11 17 -12 h
+.0142 g 5374 1917 N -17 12 30 10 16 -11 h
+.0142 g 5344 1907 N -16 11 29 11 17 -12 h
+.0143 g 5315 1896 N -17 12 30 11 16 -12 h
+.1518 g 5285 2266 N -16 12 29 -329 17 -53 h
+.3611 g 5256 2448 N -17 53 30 -171 16 -64 h
+.433 g 5226 2438 N -16 64 29 10 17 -64 h
+.4332 g 5197 2427 N -17 64 30 11 16 -64 h
+.4334 g 5167 2417 N -16 64 29 10 17 -64 h
+.4336 g 5138 2407 N -17 64 30 10 16 -64 h
+.5969 g 5108 2829 N -16 64 29 -410 17 -76 h
+.838 g 5079 3023 N -17 76 30 -191 16 -79 h
+.916 g 5049 3013 N -16 79 29 10 17 -79 h
+.9162 g 5020 3002 N -17 79 30 10 16 -78 h
+.9164 g 4990 2992 N -16 78 29 10 17 -78 h
+.9167 g 4961 2982 N -17 78 30 11 16 -79 h
+.92 g 4931 2980 N -16 79 29 2 17 -79 h
+.9265 g 4902 2978 N -17 79 30 2 16 -79 h
+.9298 g 4872 2967 N -16 79 29 10 17 -78 h
+.93 g 4843 2957 N -17 78 30 11 16 -79 h
+.9303 g 4813 2947 N -16 79 29 10 17 -79 h
+.9305 g 4784 2937 N -17 79 30 10 16 -79 h
+.8594 g 4754 2739 N -16 79 29 196 17 -77 h
+.6519 g 4725 2368 N -17 77 30 362 16 -68 h
+.5158 g 4695 2358 N -16 68 29 10 17 -68 h
+.516 g 4666 2347 N -17 68 30 11 16 -68 h
+.5162 g 4636 2337 N -16 68 29 10 17 -68 h
+.5164 g 4607 2327 N -17 68 30 10 16 -68 h
+.4498 g 4577 2138 N -16 68 29 181 17 -60 h
+.2633 g 4548 1802 N -17 60 30 312 16 -36 h
+.1435 g 4518 1792 N -16 36 29 10 17 -36 h
+.1436 g 4489 1781 N -17 36 30 10 16 -35 h
+.1436 g 4459 1771 N -16 35 29 11 17 -36 h
+.1437 g 4430 1760 N -17 36 30 10 16 -35 h
+.1241 g 4400 1695 N -16 35 29 59 17 -29 h
+.0817 g 4371 1621 N -17 29 30 66 16 -21 h
+.0591 g 4341 1611 N -16 21 29 10 17 -21 h
+.0591 g 4312 1600 N -17 21 30 11 16 -21 h
+.0592 g 4282 1590 N -16 21 29 10 17 -21 h
+.0592 g 4253 1579 N -17 21 30 11 16 -21 h
+.0527 g 4224 1550 N -16 21 29 26 16 -18 h
+.0393 g 4194 1520 N -16 18 29 27 17 -15 h
+.0325 g 4165 1510 N -17 15 30 11 16 -16 h
+.0325 g 4135 1499 N -16 16 29 10 17 -15 h
+.0326 g 4106 1489 N -17 15 30 11 16 -16 h
+.0326 g 4076 1478 N -16 16 29 10 17 -15 h
+.0322 g 4047 1467 N -17 15 30 12 16 -16 h
+.0314 g 4017 1455 N -16 16 29 12 17 -16 h
+.031 g 3988 1444 N -17 16 30 10 16 -15 h
+.031 g 3958 1434 N -16 15 29 11 17 -16 h
+.031 g 3929 1423 N -17 16 30 10 16 -15 h
+.031 g 3899 1413 N -16 15 29 11 17 -16 h
+.0311 g 3870 1402 N -17 16 30 10 16 -15 h
+.0311 g 3840 1392 N -16 15 29 11 17 -16 h
+.0311 g 3811 1381 N -17 16 30 10 16 -15 h
+.0311 g 3781 1371 N -16 15 29 11 17 -16 h
+.0312 g 3752 1360 N -17 16 30 10 16 -15 h
+.0312 g 3722 1349 N -16 15 29 11 17 -15 h
+.0312 g 3693 1339 N -17 15 30 11 16 -16 h
+.0312 g 3663 1328 N -16 16 29 10 17 -15 h
+.0313 g 3634 1318 N -17 15 30 11 16 -16 h
+.0313 g 3604 1307 N -16 16 29 10 17 -15 h
+.0313 g 3575 1297 N -17 15 30 11 16 -16 h
+.0313 g 3545 1286 N -16 16 29 10 17 -15 h
+.0302 g 3516 1272 N -17 15 30 14 16 -15 h
+.0279 g 3486 1259 N -16 15 29 13 17 -15 h
+.0268 g 3457 1248 N -17 15 30 10 16 -14 h
+.0268 g 3427 1238 N -16 14 29 11 17 -15 h
+.0268 g 3398 1227 N -17 15 30 10 16 -14 h
+.0268 g 3368 1216 N -16 14 29 11 17 -14 h
+.0251 g 3339 1201 N -17 14 30 15 16 -14 h
+.0215 g 3309 1185 N -16 14 29 15 17 -13 h
+.0196 g 3280 1175 N -17 13 30 10 16 -13 h
+0 g 6187 2174 N -17 9 30 10 16 -8 h
+0 g 6157 2163 N -16 8 29 11 17 -8 h
+0 g 6128 2153 N -17 8 30 11 16 -9 h
+0 g 6098 2142 N -16 9 29 10 17 -8 h
+0 g 6069 2132 N -17 8 30 11 16 -9 h
+0 g 6039 2121 N -16 9 29 10 17 -8 h
+0 g 6010 2111 N -17 8 30 11 16 -9 h
+0 g 5980 2100 N -16 9 29 10 17 -8 h
+0 g 5951 2089 N -17 8 30 11 16 -8 h
+0 g 5921 2079 N -16 8 29 10 17 -8 h
+0 g 5892 2068 N -17 8 30 11 16 -8 h
+0 g 5862 2058 N -16 8 29 11 17 -9 h
+.0006 g 5833 2050 N -17 9 30 10 16 -11 h
+.0018 g 5803 2043 N -16 11 29 11 17 -15 h
+.0023 g 5774 2032 N -17 15 30 10 16 -14 h
+.0023 g 5744 2022 N -16 14 29 11 17 -15 h
+.0023 g 5715 2011 N -17 15 30 10 16 -14 h
+.0023 g 5685 2000 N -16 14 29 11 17 -14 h
+.0029 g 5656 1993 N -17 14 30 11 16 -18 h
+.0041 g 5626 1985 N -16 18 29 10 17 -20 h
+.0047 g 5597 1975 N -17 20 30 11 16 -21 h
+.0047 g 5567 1964 N -16 21 29 10 17 -20 h
+.0047 g 5538 1954 N -17 20 30 11 16 -21 h
+.0047 g 5508 1943 N -16 21 29 10 17 -20 h
+.0051 g 5479 1935 N -17 20 30 11 16 -23 h
+.006 g 5449 1927 N -16 23 29 11 17 -26 h
+.0065 g 5420 1916 N -17 26 30 10 16 -25 h
+.0065 g 5390 1906 N -16 25 29 11 17 -26 h
+.0065 g 5361 1895 N -17 26 30 10 16 -25 h
+.0065 g 5331 1884 N -16 25 29 11 17 -25 h
+.0713 g 5302 2213 N -17 25 30 10 16 -364 h
+.171 g 5272 2384 N -16 364 29 11 17 -546 h
+.2059 g 5243 2374 N -17 546 30 11 16 -547 h
+.206 g 5213 2363 N -16 547 29 10 17 -546 h
+.206 g 5184 2353 N -17 546 30 11 16 -547 h
+.2061 g 5154 2343 N -16 547 29 10 17 -547 h
+.2867 g 5125 2753 N -17 547 30 11 16 -968 h
+.4058 g 5095 2944 N -16 968 29 10 17 -1169 h
+.4446 g 5066 2934 N -17 1169 30 11 16 -1170 h
+.4447 g 5036 2924 N -16 1170 29 11 17 -1171 h
+.4448 g 5007 2914 N -17 1171 30 10 16 -1171 h
+.4449 g 4977 2903 N -16 1171 29 11 17 -1171 h
+.4466 g 4948 2901 N -17 1171 30 10 16 -1179 h
+.4498 g 4918 2899 N -16 1179 29 11 17 -1188 h
+.4515 g 4889 2889 N -17 1188 30 10 16 -1188 h
+.4516 g 4859 2878 N -16 1188 29 11 17 -1188 h
+.4517 g 4830 2868 N -17 1188 30 11 16 -1189 h
+.4518 g 4800 2858 N -16 1189 29 10 17 -1189 h
+.4165 g 4771 2662 N -17 1189 30 11 16 -1004 h
+.3137 g 4741 2300 N -16 1004 29 10 17 -652 h
+.2464 g 4712 2290 N -17 652 30 11 16 -653 h
+.2465 g 4682 2279 N -16 653 29 10 17 -652 h
+.2466 g 4653 2269 N -17 652 30 11 16 -653 h
+.2467 g 4623 2259 N -16 653 29 11 17 -654 h
+.2142 g 4594 2078 N -17 654 30 10 16 -483 h
+.124 g 4564 1766 N -16 483 29 11 17 -182 h
+.0665 g 4535 1756 N -17 182 30 10 16 -182 h
+.0665 g 4505 1746 N -16 182 29 11 17 -183 h
+.0666 g 4476 1735 N -17 183 30 10 16 -182 h
+.0666 g 4446 1725 N -16 182 29 11 17 -183 h
+.0574 g 4417 1666 N -17 183 30 11 16 -135 h
+.0376 g 4387 1600 N -16 135 29 10 17 -79 h
+.0271 g 4358 1590 N -17 79 30 11 16 -80 h
+.0271 g 4328 1579 N -16 80 29 10 17 -79 h
+.0271 g 4299 1569 N -17 79 30 11 16 -80 h
+.0272 g 4269 1558 N -16 80 29 10 17 -79 h
+.0242 g 4240 1532 N -17 79 29 11 17 -64 h
+.018 g 4211 1505 N -17 64 30 10 16 -47 h
+.0149 g 4181 1494 N -16 47 29 11 17 -47 h
+.0149 g 4152 1484 N -17 47 30 11 16 -48 h
+.0149 g 4122 1473 N -16 48 29 10 17 -47 h
+.0149 g 4093 1463 N -17 47 30 11 16 -48 h
+.0147 g 4063 1451 N -16 48 29 10 17 -46 h
+.0143 g 4034 1439 N -17 46 30 11 16 -45 h
+.0141 g 4004 1429 N -16 45 29 10 17 -45 h
+.0142 g 3975 1418 N -17 45 30 11 16 -45 h
+.0142 g 3945 1408 N -16 45 29 11 17 -46 h
+.0142 g 3916 1397 N -17 46 30 10 16 -45 h
+.0142 g 3886 1387 N -16 45 29 11 17 -46 h
+.0142 g 3857 1376 N -17 46 30 10 16 -45 h
+.0142 g 3827 1366 N -16 45 29 11 17 -46 h
+.0142 g 3798 1355 N -17 46 30 10 16 -45 h
+.0142 g 3768 1345 N -16 45 29 11 17 -46 h
+.0142 g 3739 1334 N -17 46 30 11 16 -46 h
+.0143 g 3709 1323 N -16 46 29 10 17 -45 h
+.0143 g 3680 1313 N -17 45 30 11 16 -46 h
+.0143 g 3650 1302 N -16 46 29 10 17 -45 h
+.0143 g 3621 1292 N -17 45 30 11 16 -46 h
+.0143 g 3591 1281 N -16 46 29 10 17 -45 h
+.0143 g 3562 1271 N -17 45 30 11 16 -46 h
+.0138 g 3532 1257 N -16 46 29 11 17 -43 h
+.0127 g 3503 1244 N -17 43 30 10 16 -40 h
+.0122 g 3473 1234 N -16 40 29 11 17 -41 h
+.0122 g 3444 1223 N -17 41 30 10 16 -40 h
+.0122 g 3414 1213 N -16 40 29 11 17 -41 h
+.0122 g 3385 1202 N -17 41 30 10 16 -40 h
+.0114 g 3355 1187 N -16 40 29 11 17 -36 h
+.0098 g 3326 1172 N -17 36 30 11 16 -32 h
+.009 g 3296 1162 N -16 32 29 10 17 -32 h
+0 g 6203 2166 N -16 8 29 11 17 -9 h
+0 g 6174 2155 N -17 9 30 10 16 -8 h
+0 g 6144 2144 N -16 8 29 11 17 -8 h
+0 g 6115 2134 N -17 8 30 10 16 -8 h
+0 g 6085 2123 N -16 8 29 11 17 -8 h
+0 g 6056 2113 N -17 8 30 11 16 -9 h
+0 g 6026 2102 N -16 9 29 10 17 -8 h
+0 g 5997 2092 N -17 8 30 11 16 -9 h
+0 g 5967 2081 N -16 9 29 10 17 -8 h
+0 g 5938 2071 N -17 8 30 11 16 -9 h
+0 g 5908 2060 N -16 9 29 10 17 -8 h
+0 g 5879 2049 N -17 8 30 11 16 -8 h
+0 g 5849 2039 N -16 8 29 11 17 -9 h
+0 g 5820 2028 N -17 9 30 10 16 -8 h
+0 g 5790 2018 N -16 8 29 11 17 -9 h
+0 g 5761 2007 N -17 9 30 10 16 -8 h
+0 g 5731 1997 N -16 8 29 11 17 -9 h
+0 g 5702 1986 N -17 9 30 10 16 -8 h
+0 g 5672 1975 N -16 8 29 11 17 -8 h
+0 g 5643 1965 N -17 8 30 11 16 -9 h
+0 g 5613 1954 N -16 9 29 10 17 -8 h
+0 g 5584 1944 N -17 8 30 11 16 -9 h
+0 g 5554 1933 N -16 9 29 10 17 -8 h
+0 g 5525 1923 N -17 8 30 11 16 -9 h
+0 g 5495 1912 N -16 9 29 10 17 -8 h
+0 g 5466 1901 N -17 8 30 11 16 -8 h
+0 g 5436 1891 N -16 8 29 11 17 -9 h
+0 g 5407 1880 N -17 9 30 10 16 -8 h
+0 g 5377 1870 N -16 8 29 11 17 -9 h
+0 g 5348 1859 N -17 9 30 10 16 -8 h
+0 g 5318 1849 N -16 8 29 11 17 -9 h
+0 g 5289 1838 N -17 9 30 10 16 -8 h
+0 g 5259 1827 N -16 8 29 11 17 -8 h
+0 g 5230 1817 N -17 8 30 11 16 -9 h
+0 g 5200 1806 N -16 9 29 10 17 -8 h
+0 g 5171 1796 N -17 8 30 11 16 -9 h
+0 g 5141 1785 N -16 9 29 10 17 -8 h
+0 g 5112 1775 N -17 8 30 11 16 -9 h
+0 g 5082 1764 N -16 9 29 10 17 -8 h
+0 g 5053 1753 N -17 8 30 11 16 -8 h
+0 g 5023 1743 N -16 8 29 11 17 -9 h
+0 g 4994 1732 N -17 9 30 10 16 -8 h
+0 g 4964 1722 N -16 8 29 11 17 -9 h
+0 g 4935 1711 N -17 9 30 10 16 -8 h
+0 g 4905 1701 N -16 8 29 11 17 -9 h
+0 g 4876 1690 N -17 9 30 10 16 -8 h
+0 g 4846 1679 N -16 8 29 11 17 -8 h
+0 g 4817 1669 N -17 8 30 11 16 -9 h
+0 g 4787 1658 N -16 9 29 10 17 -8 h
+0 g 4758 1648 N -17 8 30 11 16 -9 h
+0 g 4728 1637 N -16 9 29 10 17 -8 h
+0 g 4699 1627 N -17 8 30 11 16 -9 h
+0 g 4669 1616 N -16 9 29 10 17 -8 h
+0 g 4640 1605 N -17 8 30 11 16 -8 h
+0 g 4610 1595 N -16 8 29 10 17 -8 h
+0 g 4581 1584 N -17 8 30 11 16 -8 h
+0 g 4551 1574 N -16 8 29 11 17 -9 h
+0 g 4522 1563 N -17 9 30 10 16 -8 h
+0 g 4492 1553 N -16 8 29 11 17 -9 h
+0 g 4463 1542 N -17 9 30 10 16 -8 h
+0 g 4433 1531 N -16 8 29 11 17 -8 h
+0 g 4404 1521 N -17 8 30 10 16 -8 h
+0 g 4374 1510 N -16 8 29 11 17 -8 h
+0 g 4345 1500 N -17 8 30 11 16 -9 h
+0 g 4315 1489 N -16 9 29 10 17 -8 h
+0 g 4286 1479 N -17 8 30 11 16 -9 h
+0 g 4257 1468 N -16 9 29 10 16 -8 h
+0 g 4227 1458 N -16 8 29 11 17 -9 h
+0 g 4198 1447 N -17 9 30 10 16 -8 h
+0 g 4168 1436 N -16 8 29 11 17 -8 h
+0 g 4139 1426 N -17 8 30 11 16 -9 h
+0 g 4109 1415 N -16 9 29 10 17 -8 h
+0 g 4080 1405 N -17 8 30 11 16 -9 h
+0 g 4050 1394 N -16 9 29 10 17 -8 h
+0 g 4021 1384 N -17 8 30 11 16 -9 h
+0 g 3991 1373 N -16 9 29 10 17 -8 h
+0 g 3962 1362 N -17 8 30 11 16 -8 h
+0 g 3932 1352 N -16 8 29 11 17 -9 h
+0 g 3903 1341 N -17 9 30 10 16 -8 h
+0 g 3873 1331 N -16 8 29 11 17 -9 h
+0 g 3844 1320 N -17 9 30 10 16 -8 h
+0 g 3814 1310 N -16 8 29 11 17 -9 h
+0 g 3785 1299 N -17 9 30 10 16 -8 h
+0 g 3755 1288 N -16 8 29 11 17 -8 h
+0 g 3726 1278 N -17 8 30 11 16 -9 h
+0 g 3696 1267 N -16 9 29 10 17 -8 h
+0 g 3667 1257 N -17 8 30 11 16 -9 h
+0 g 3637 1246 N -16 9 29 10 17 -8 h
+0 g 3608 1236 N -17 8 30 11 16 -9 h
+0 g 3578 1225 N -16 9 29 10 17 -8 h
+0 g 3549 1214 N -17 8 30 11 16 -8 h
+0 g 3519 1204 N -16 8 29 11 17 -9 h
+0 g 3490 1193 N -17 9 30 10 16 -8 h
+0 g 3460 1183 N -16 8 29 11 17 -9 h
+0 g 3431 1172 N -17 9 30 10 16 -8 h
+0 g 3401 1162 N -16 8 29 11 17 -9 h
+0 g 3372 1151 N -17 9 30 10 16 -8 h
+0 g 3342 1140 N -16 8 29 11 17 -8 h
+0 g 3313 1130 N -17 8 30 11 16 -9 h
+0 g 6220 2157 N -17 9 30 10 16 -8 h
+0 g 6190 2147 N -16 8 29 11 17 -9 h
+0 g 6161 2136 N -17 9 30 10 16 -8 h
+0 g 6131 2126 N -16 8 29 11 17 -9 h
+0 g 6102 2115 N -17 9 30 10 16 -8 h
+0 g 6072 2104 N -16 8 29 11 17 -8 h
+0 g 6043 2094 N -17 8 30 11 16 -9 h
+0 g 6013 2083 N -16 9 29 10 17 -8 h
+0 g 5984 2073 N -17 8 30 11 16 -9 h
+0 g 5954 2062 N -16 9 29 10 17 -8 h
+0 g 5925 2052 N -17 8 30 11 16 -9 h
+0 g 5895 2041 N -16 9 29 10 17 -8 h
+0 g 5866 2030 N -17 8 30 11 16 -8 h
+0 g 5836 2020 N -16 8 29 11 17 -9 h
+0 g 5807 2009 N -17 9 30 10 16 -8 h
+0 g 5777 1999 N -16 8 29 11 17 -9 h
+0 g 5748 1988 N -17 9 30 10 16 -8 h
+0 g 5718 1978 N -16 8 29 11 17 -9 h
+0 g 5689 1967 N -17 9 30 10 16 -8 h
+0 g 5659 1956 N -16 8 29 11 17 -8 h
+0 g 5630 1946 N -17 8 30 11 16 -9 h
+0 g 5600 1935 N -16 9 29 10 17 -8 h
+0 g 5571 1925 N -17 8 30 11 16 -9 h
+0 g 5541 1914 N -16 9 29 10 17 -8 h
+0 g 5512 1904 N -17 8 30 11 16 -9 h
+0 g 5482 1893 N -16 9 29 10 17 -8 h
+0 g 5453 1882 N -17 8 30 11 16 -8 h
+0 g 5423 1872 N -16 8 29 11 17 -9 h
+0 g 5394 1861 N -17 9 30 10 16 -8 h
+0 g 5364 1851 N -16 8 29 11 17 -9 h
+0 g 5335 1840 N -17 9 30 10 16 -8 h
+0 g 5305 1830 N -16 8 29 11 17 -9 h
+0 g 5276 1819 N -17 9 30 10 16 -8 h
+0 g 5246 1808 N -16 8 29 11 17 -8 h
+0 g 5217 1798 N -17 8 30 11 16 -9 h
+0 g 5187 1787 N -16 9 29 10 17 -8 h
+0 g 5158 1777 N -17 8 30 11 16 -9 h
+0 g 5128 1766 N -16 9 29 10 17 -8 h
+0 g 5099 1756 N -17 8 30 11 16 -9 h
+0 g 5069 1745 N -16 9 29 10 17 -8 h
+0 g 5040 1734 N -17 8 30 11 16 -8 h
+0 g 5010 1724 N -16 8 29 10 17 -8 h
+0 g 4981 1713 N -17 8 30 11 16 -8 h
+0 g 4951 1703 N -16 8 29 11 17 -9 h
+0 g 4922 1692 N -17 9 30 10 16 -8 h
+0 g 4892 1682 N -16 8 29 11 17 -9 h
+0 g 4863 1671 N -17 9 30 10 16 -8 h
+0 g 4833 1660 N -16 8 29 11 17 -8 h
+0 g 4804 1650 N -17 8 30 10 16 -8 h
+0 g 4774 1639 N -16 8 29 11 17 -8 h
+0 g 4745 1629 N -17 8 30 11 16 -9 h
+0 g 4715 1618 N -16 9 29 10 17 -8 h
+0 g 4686 1608 N -17 8 30 11 16 -9 h
+0 g 4656 1597 N -16 9 29 10 17 -8 h
+0 g 4627 1587 N -17 8 30 11 16 -9 h
+0 g 4597 1576 N -16 9 29 10 17 -8 h
+0 g 4568 1565 N -17 8 30 11 16 -8 h
+0 g 4538 1555 N -16 8 29 11 17 -9 h
+0 g 4509 1544 N -17 9 30 10 16 -8 h
+0 g 4479 1534 N -16 8 29 11 17 -9 h
+0 g 4450 1523 N -17 9 30 10 16 -8 h
+0 g 4420 1513 N -16 8 29 11 17 -9 h
+0 g 4391 1502 N -17 9 30 10 16 -8 h
+0 g 4361 1491 N -16 8 29 11 17 -8 h
+0 g 4332 1481 N -17 8 30 11 16 -9 h
+0 g 4302 1470 N -16 9 29 10 17 -8 h
+0 g 4273 1460 N -17 8 30 11 16 -9 h
+0 g 4244 1449 N -16 9 29 10 16 -8 h
+0 g 4214 1439 N -16 8 29 11 17 -9 h
+0 g 4185 1428 N -17 9 30 10 16 -8 h
+0 g 4155 1417 N -16 8 29 11 17 -8 h
+0 g 4126 1407 N -17 8 30 11 16 -9 h
+0 g 4096 1396 N -16 9 29 10 17 -8 h
+0 g 4067 1386 N -17 8 30 11 16 -9 h
+0 g 4037 1375 N -16 9 29 10 17 -8 h
+0 g 4008 1365 N -17 8 30 11 16 -9 h
+0 g 3978 1354 N -16 9 29 10 17 -8 h
+0 g 3949 1343 N -17 8 30 11 16 -8 h
+0 g 3919 1333 N -16 8 29 11 17 -9 h
+0 g 3890 1322 N -17 9 30 10 16 -8 h
+0 g 3860 1312 N -16 8 29 11 17 -9 h
+0 g 3831 1301 N -17 9 30 10 16 -8 h
+0 g 3801 1291 N -16 8 29 11 17 -9 h
+0 g 3772 1280 N -17 9 30 10 16 -8 h
+0 g 3742 1269 N -16 8 29 11 17 -8 h
+0 g 3713 1259 N -17 8 30 11 16 -9 h
+0 g 3683 1248 N -16 9 29 10 17 -8 h
+0 g 3654 1238 N -17 8 30 11 16 -9 h
+0 g 3624 1227 N -16 9 29 10 17 -8 h
+0 g 3595 1217 N -17 8 30 11 16 -9 h
+0 g 3565 1206 N -16 9 29 10 17 -8 h
+0 g 3536 1195 N -17 8 30 11 16 -8 h
+0 g 3506 1185 N -16 8 29 11 17 -9 h
+0 g 3477 1174 N -17 9 30 10 16 -8 h
+0 g 3447 1164 N -16 8 29 11 17 -9 h
+0 g 3418 1153 N -17 9 30 10 16 -8 h
+0 g 3388 1143 N -16 8 29 11 17 -9 h
+0 g 3359 1132 N -17 9 30 10 16 -8 h
+0 g 3329 1121 N -16 8 29 11 17 -8 h
+%pm3d_map_end
+% Begin plot #1
+1.000 UP
+1.000 UL
+LT0
+% End plot #1
+1.000 UL
+LTb
+6312 1509 M
+3363 452 L
+888 1712 M
+3363 452 L
+stroke
+LCb setrgbcolor
+1389 818 M
+[ [(Helvetica) 140.0 0.0 true true 0 (time \(ms\))]
+] -46.7 MCshow
+LTb
+LCb setrgbcolor
+5456 666 M
+[ [(Helvetica) 140.0 0.0 true true 0 (freq \(MHz\))]
+] -46.7 MCshow
+LTb
+LCb setrgbcolor
+1530 3332 M
+[ [(Helvetica) 140.0 0.0 true true 0 (PSD \(dBW/Hz\))]
+] -46.7 MCshow
+LTb
+stroke gsave	%% draw gray scale smooth box
+maxcolors 0 gt {/imax maxcolors def} {/imax 1024 def} ifelse
+6329 2213 translate 266 1648 scale 0 setlinewidth
+/ystep 1 imax div def /y0 0 def /ii 0 def
+{ y0 g 0 y0 N 1 0 V 0 ystep V -1 0 f
+/y0 y0 ystep add def /ii ii 1 add def
+ii imax ge {exit} if } loop
+grestore 0 setgray
+1.000 UL
+LTb
+6329 2213 N
+266 0 V
+0 1648 V
+-266 0 V
+0 -1648 V
+Z stroke
+1.000 UL
+LTb
+1.000 UL
+LTb
+6595 2213 M
+-63 0 V
+stroke
+6679 2213 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-150)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 2213 M
+63 0 V
+203 235 R
+-63 0 V
+stroke
+6679 2448 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-148)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 2448 M
+63 0 V
+203 235 R
+-63 0 V
+stroke
+6679 2683 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-146)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 2683 M
+63 0 V
+203 236 R
+-63 0 V
+stroke
+6679 2919 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-144)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 2919 M
+63 0 V
+203 235 R
+-63 0 V
+stroke
+6679 3154 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-142)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 3154 M
+63 0 V
+203 236 R
+-63 0 V
+stroke
+6679 3390 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-140)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 3390 M
+63 0 V
+203 235 R
+-63 0 V
+stroke
+6679 3625 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-138)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 3625 M
+63 0 V
+203 236 R
+-63 0 V
+stroke
+6679 3861 M
+[ [(Helvetica) 140.0 0.0 true true 0 (-136)]
+] -46.7 MLshow
+1.000 UL
+LTb
+6329 3861 M
+63 0 V
+1.000 UP
+stroke
+grestore % colour palette end
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
+%%Pages: 1
diff -Naur ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.pdf ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.pdf
--- ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.pdf	2014-06-17 10:33:13.659997768 -0700
@@ -0,0 +1,254 @@
+%PDF-1.4
+%
+6 0 obj <<
+/Length 82        
+/Filter /FlateDecode
+>>
+stream
+x3T0 BC=#0iUR !=#s3cs 2U?pC3c0j}\c|@$htI V&
+endstream
+endobj
+5 0 obj <<
+/Type /Page
+/Contents 6 0 R
+/Resources 4 0 R
+/MediaBox [0 0 283.465 537.87]
+/Parent 7 0 R
+>> endobj
+3 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./spectrum-channel-phy-interface.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 8 0 R
+/BBox [0 0 1024 1943]
+/Resources <<
+/Font << /F1 9 0 R/F2+0 10 0 R>>
+/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>>
+/Length 1670
+/Filter [/ASCII85Decode/FlateDecode]
+>>
+stream
+Gau0E9lJcU&A9%PJ(S7p!pY5R5M2PYUJ27.lIrfq4jXsSZ]HS:@a[6N^,u3\feR3>QpqX4+hW)l2`lDn>Ve_65NY.JeqD6`jJUlP@@Sl4&Q[*_ZM9(M\i;j@8]<"/s1EaRgpc%mdut;l>INYX8P>9pbXhWI%4N^Yen"dRHb$X;V^!];RuU/W@QH7hjE"k]D%R>,Y[8b7J='2cXPHcnZ6EA&BYeCN__Qk1[L3-TQ5R',77>$KK/TQ`BNQ=MB4\&U=cfOGT2sgT4Kd5LOU/b2UKM8N%@,J4/Cq8Oq2b5"k1X(a34/Jl=3^SN]=H`ulT_knf;ndpqh?[$+cEht$2Ei]oXIl@jN!7q'0Nn<YA_#>kOlgM_[BBn$?JmU7BUh*ku(F`4XN&J9En)UI(Igdi5_X*,gUR;aR&i-C>4%lQsH<b'=O_o=7G,bj-NO`Zp%c*J"md$,hVb5&BD[U3Maru@bD"@Fh,0_8j5H(NK8"tMH&0q6f,&c74N4%,J^0hL,^VPL]mFAaR`n1$F"D%erVgAEKQE`Ol/B7Lnb.j),a>LIG.]UD?2Mfb,a[5X]?7'29WS3\%>M#--W!UOAQ04#?==_&?o.`%KRs>&BAb3`ceh$+-QQ)mbVlbRoRp#=P;`r$#QD!=Q8n)iDEncS="_p/oZ)>Q(B"YGPO+6k53E/?6,rldRBF[j]""'<8uiSm,P%iCa,.9*E@C9G'2P?A+c++OPpU_?(.u;9K=7?Qm0jf6EJ'X3<](3pVPi.`i48(k.YCQjG&X:+(9s':l4Hje`q5+e`;1k\Z]nOY1`.X#pC&$F`5BEh>LF,/NG%U]-R!QIDnT0#?]u6`C)J:$ofts\;WF]>AV??qVgOorD:BQ;O%XmQ@gYDW1Y'?-cHOIHY+@t15=cc&D/B&6_=KU:'&Os4=ZOW'\kK3>ZkZt_V$)o:N)#M8h#Xj&QYjK;OF*gLF-%D7.^8*q/ta9Hc#LI@"l`ZRK[sr1pOV7Hb@Mt4>9QJo3)sH\@"da,6@pGB''*o]N*ug>6D#&-n%fk&0s'X1;JnJ5IKV=Ed.t`3r\rrhGWUJUp'q4[#$Qcqf$4XF[=]EP4a-$%QhQr<Y$uWMJ.]A+Q`l@G+%K##&4dO%H86EoLWT#^AO?/4&DkhM1s)S@\KMBim>X/K//_u!tCVFSnFdV?7<sT(D\iR+V%5J&1#DW(P:0>oBTMl8='K(cC?&'_N1T+KZeG</h#RA@.JjDFl`(79u,f5)3W&=GR?a84O<;EinX\paae[-(D]a*.u6YQ,6@pGAqh?,_Fk+@L!s-BH8q-9<Yq!GL]Pfcn.!ij^V#rm/a+S8r2<2aUZ#WO$"sqlm1':h7Mh1Krn/0DbiXaOR(JZ,#BZZM?Oit%Z)kti6VL&mM-\T(_u\).n,`.)0_jDFhWNqnBpXr7m;m&U->0k^>i@;&bMe1ig88Yc<V$[RYPgJi%B1mu[9V9UdVVO!=-HqGOj,9Nqek]]MllisR`c>n(,f+#6u+E7:0<,W*CWCBp('2Rm(n_8K+FAk2>7u&pmV@-;=d+6/]b%El*aU(>;tC+(NR4RmS_S&FiW$51%7LQV-@An<UTk*+XqGgY&kqC8ti$jl>LeFHH;QBA"/FaI0g]t,MH6clGN)boDOPag=8Ptb8mk=ECQB;Bf@&Hg1QoN^d?-,aoAY_BQ!~>
+endstream
+endobj
+8 0 obj
+<<
+/Author (anonymous)
+/CreationDate (D:20131219165624-01'00')
+/Creator (ReportLab PDF Library - www.reportlab.com)
+/Keywords ()
+/Producer (ReportLab PDF Library - www.reportlab.com)
+/Subject (unspecified)
+/Title (untitled)
+>>
+endobj
+9 0 obj
+<<
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding
+/Name /F1
+/Subtype /Type1
+/Type /Font
+>>
+endobj
+10 0 obj
+<<
+/BaseFont /AAAAAA+LiberationSans
+/FirstChar 0
+/FontDescriptor 11 0 R
+/LastChar 127
+/Name /F2+0
+/Subtype /TrueType
+/ToUnicode 12 0 R
+/Type /Font
+/Widths [ 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 365.2344 277.832 277.832 354.9805 556.1523 556.1523 889.1602 666.9922 190.918 333.0078 333.0078 389.1602 583.9844 277.832 333.0078 277.832 277.832 556.1523 556.1523 556.1523 556.1523 556.1523 556.1523 556.1523 556.1523 556.1523 556.1523 277.832 277.832 583.9844 583.9844 583.9844 556.1523 1015.137 666.9922 666.9922 722.168 722.168 666.9922 610.8398 777.832 722.168 277.832 500 666.9922 556.1523 833.0078 722.168 777.832 666.9922 777.832 722.168 666.9922 610.8398 722.168 666.9922 943.8477 666.9922 666.9922 610.8398 277.832 277.832 277.832 469.2383 556.1523 333.0078 556.1523 556.1523 500 556.1523 556.1523 277.832 556.1523 556.1523 222.168 222.168 500 222.168 833.0078 556.1523 556.1523 556.1523 556.1523 333.0078 500 277.832 556.1523 500 722.168 500 500 500 333.9844 259.7656 333.9844 583.9844 365.2344]
+>>
+endobj
+11 0 obj
+<<
+/Ascent 728.0273
+/CapHeight 687.9883
+/Descent -210.4492
+/Flags 4
+/FontBBox [ -203.125 -303.2227 1050.293 910.1562]
+/FontFile2 13 0 R
+/FontName /AAAAAA+LiberationSans
+/ItalicAngle 0
+/StemV 87
+/Type /FontDescriptor
+>>
+endobj
+12 0 obj
+<<
+/Filter [/FlateDecode]
+/Length 711
+>>
+stream
+xujPṟBÖ}Or@o}GSA-eZ(@?iwOOCl_]ͦcwؽm<w/0m}{vO˷ñ>d>oN/yws>|쟻quwr5O_u7w,_ݶlX4nsԧj5۾kݺ;WiM٢bމ^/{gkqjaZي6`:ى.vWk5}eߢw{=~dp.B/B/B/B/B/B/B/B+J¯+J¯+J¯+J¯+J¯+J¯+J¯+JoFoFoFoFoFoFoFoF;N;N;N;N;N;N;N;NAAAAAAAA'I'I'I'I'I'I'I'I_E_E_E_E_E_E_E_EeB\&ff9ԾiDy`C{vw{Q
+endstream
+endobj
+13 0 obj
+<<
+/Filter [/FlateDecode]
+/Length 24615
+/Length1 35428
+>>
+stream
+x	|Tս8~;sLf2Yg2YH&d\6!B-		)aJEPp[%("Zh복JU>Z_RyU!;>s9ݿg	 .Wݴ7yB!N*3B=׽G[Y{5?DH;P˗vBۣ@_|C_ri0jKgK?ZtC?//h޵f~V+BBSuC׳!^o/i
+!	C|yE,X0h@;cA%*σ^D؇Zoc!L@y!@Fg8
+
+DAZ:	Yّ"'C(%$LrA(4e,E(I( GbTJQQ
+үfJTQE!Tfzt根CԈP3ZZP+jCbԎ;;N%ڨoR
+]n1w%D:~Kt?KYc:_}=MDc>IK7gw(S @G] w}i>
+ܽ݇5dڎo< m߉Eۣ,Aot:ГhT~]]|/ESxbLamTH>4-CK}
+=dMBrukKSΙ}[PmMuUr|zYiIqQaAdOHOKc&AjDA9eW{j:]\'ayRZtJA縋fթ4sR-Rok:Wy\gm^MSiu_Vҳ4dt4v7\ձ+\YbwRT.d-Mjij|$L %UHбaIZҮy-UnwkNvݸSTJqUZ@G\'ύ?cD:1][R({Tgn(~lOUZ?87q>q\֒U%k(zGGk<ѥg,󸌞ѓ11èuŏo7v̯[2j\+?qǻMmjDAAqvwFFhf|d^K$B_D:;Y͹[zR~A8V婦8޷t|d>F
+q\e3j6JJ[5ΧSз@92jT2/#ttUݰ~=՝W\9!o-rMK4>)K;)z=Vd`U.hQ^6nF?ָky_:Y*^I*z{<3JZ%=.RzZ2FʼDs+#Ɩym-Q@";.xZ#PW'jh3s:3R+UgNw@<lMtU/c[:;U&{S,2nuGlL]сCjhQM@0F)be<j,zVm=
+PpU-)ȢhBnZ=aOEx}n5*x=n1M3y,BL%ZѓdyQO]רgAt5 wobcQ=7ɦlIwR=Z^5RGjOcˋpe֓UJ)fe\,zO3>Uz\J-( Rʄ2@2de\LVEjWϖǑbqTPx*NVŌk<gk=3Yy#*Vv4j=6KL+&穑$ ՜p9金	ItbVצ<`r&wvS
+窸JR뿕\_x^~,)5V*Vp#>@˥׋O)fX%¯D^LhFEEx(vC"+2qPUbS<[E"UďD#]-<S*拄6\#RMݫCtLQ^,#Xē7đy;{ćE!5#!\e
+ΤUH\)rqv~EWE|^_9RL$Q1-~ ~*c	HEXF{,
+Vx_yYAL &(y{;,iooWwpp۽^KKv(WM$T{/s% )ؠ`o!_|M7Hh F*`=p͍sT\?Rڴ{.gBKjQzjꀊUAV.**=y<>]IDa?wLx=3Mx-\)|&R?Hd+ywlP*Z*	ғ
+pL $&جժh1r3'DlwSZ.F$N	ɜdٝɨ:k:`:f"A\֙t&%5G~G Klh094ID~qca?OAܖ a -w[lYvƷ~?[״ʖ5-N7
+`R
+UTxŪ_ѨՀO^*ؕ%4Xڭ:"5 OJJ'iRDmqI IܤkQ+ې۟$1F'Ğ"3](S4?Iu
+>w|'z<5Ӎ3R43$Iv6-hq"q ks<罁@{Q2˔Jz;Lwd.:~R;R (8L>R_ЬxU6p5	;LzU=YoCG:t}{9x[^_U&O(
+u[WL+X(gp7-YָeA6cӰ޽W'e]B6\p6\<K<UJzi\]om{8?z!&Ko.vE/ѧ)Ա&fPZnvf;s0:l(<yFlW6Ar6;/e_S/:eȀ3gYe=rt,g'6siÙӼ/q9dw{JVTMS WBEfT
+%a@ >mS<)zZDs^^`̙r*̻Zv<ܼCM빯,933ٱWس*yg9+";^ޜݵ녞̞&dv?W|}o|w浴wqX127%e޲l;+ؾc;+6A^TP+X庽 Sas־,lIw-l@%n	Ml~Ibh4Yq8dFbQ8YN"eWs3:mff78d4;AtB8QLŘPaC(ú˪qauM5&jQKs	`H&y=ЀAJQ);L)MxxxzMUg$"2:	PM
+lz_eP$pt&־Z~nMA`]D{̴]uf\Pq_SoyVÇήCyZ9Z]=(ffy{`m)06KU/w'SjiӽEeۊf̽HǛEt6ZKbݲeƘ]fv3l4[-r:[+`0M!݌*Q5B͸c
+i/ڒrzYz°Pojۿ%{[ޖK^X-[~޷/MlPūu{tGVXHaaꇁC1&S_hAkD||1]TP9Dl߀d?@gO@
+S&Ð'(nh\?oW[ĭLa>bqab^5X#
+gutبsQÇ< x=;o'Noi30hVx9xZK-NZO	SrzǡwShcpm=;B۽2x){iQ{WF9YU)P+JE껩οDef4)\41TϺmx~xwp}l3a Š9"WtH4]4#1c1Xi!c1cpҧgbd1~"GT307!!x
+`hMnm邅3]3v BEpX1v. SQAm=Wmx.2.
+;A>E!4F;@h]BW?S'*%Qx|K(6Cʤa-#ʷXk«ۋkA #^+kyyCaZzp&֛vF^ƀVj&t4P5[3G5q3=xmG?fHU@5$0a!9]{^Q_T;o{eڜmCse?|;sf=w~	*+
+˧?UT<QiGh$%
+k&? C"VcI~.1GT*P,` ڽ@cGo72m'`S07jaz(,1УavMQ#^inuI<px5 gd dXwcKQYaܞBBfXl^eb&subՐ$xaquZ
+qyw(dQgTSݶZQZ1˯>#z|eMnn~[[i"9izkK-ZճpDP^tR<wa<\vv4ȴ҄2&zn>r])tv8:q3éRL-,d59g'JߒN4q8ݳ.[m\MkiU</Oʻ:9]d.ejo:Jnŧ^ê
+S`
+zD8gpKv4T*~OZ5kϑꞍe5vi]@Jh휦g®XTxfs:
+GmEKvlZo]S|UFN,kgzOH2aQ.㷍xb޾~Nc4+5W'Z*C?D5=F0/PNARe a-aJW~o
+Q(m=Q<;z6ZmBbkKSb&>ԔS>Jߒ^uݺ:҄cFn.⦬Y8[Ҁ3p*ޛ~*&UnPy\ƣecIMN[vk.FX(nݴi!ʸnvh>Y(0>Q$0`eS7WdN'*$5Gv+s]m^`vZP,snQĎxiާv֚Ejl<MsgmLH/gÏEVDe0vܪU+DH#¸ƔRTwAӚ94iqqqq=lkVHڱ4<i#5Fz.L]RuIvc9mmfPGG]A`SnJ7ިlI'kYجHllݳk7T^z8O<oֆƜu][Jj&k^`Z}=t8wrk풓 O|~ЙT!yѼ}ؿb;u$m]9M^Ut=MQ-
+eJb.YkQ'!4ҩx&6u`X`My<qK\Lߋ#osj<}X3P%_ѭRQfr4wO5wpD<+ś2jb`0*MQ5WmFƖ&ِ<G-YC	mHcd*hR%%qQ@ѢTF"T-aפzԠsj]TȋMB[I[|G²Y[-w]u˂	"'j]ܵ.U5haa+q{I;g-,47
+ZO %Z&tZ?c쬬٫1Gr3d~M0C.)y4d)~4x9n_ܑ86onŽc 
+-Ak9kH2nՖRZƿƕL]DKص86Z֯sPbH{T0~9Һ)pëcnFɁv̵;__?o{w|66IV׾Ȫk?iu+kfexjVT,(~_z~@|+Wo~Ĝ2_ӦMݦ\2\(5u1\wqs:
+ʡ~X'No?&+/\C#V%25441DN7Q(G y%0}Kbb7_8:\GP,RWOmlim/`0@ӻT4p>XWIt<ۢ`Zw9䤑[<!9ljMrkO6\v{(|_[#4|РFU˸.:E:2!6:dwkyGmڙ=mgJ1	萉0:x0Sނ7p@cfKՠW8@YJ%M.hyp00AQmx05HY.y{]xس˃pzҦۤՑR,CxLy(=_j8˖1&A&5hmTo?23SՙIUDz
+uӸReU̝?7'pFŜӨΪrK_,O1'Ԯj^ZzEClqеSLg[oExkhێa|}iԄX	r6t5\]uq0u kxr\#H&$jj8P"`jxSȾ{Ť҂Rno	$j3|ͯ{=NV?egB܆Xc5rG\| X.)oOgWrSk!D)QN$DK_oB_ͦ~A77fDiLўGC)FQNT%|hGY_X䙪(
+6ijrʹZ+.Nqv3C+UzM'ͳcPV69oZWwUG,fozʹ98o=좼zc\ Rt^,>3/19Ҟ{l3RaU\7s~bys/u`{!}~sjfO884݅TtMm'?kjdnƤ۲޲Bza#khk%T;Tx
+y&4p	j>&.$ͤ6B4VLl4Uկ*X
+Y|)OD>ⱊ8|p.&.5vaNT>&_LNpgl۱dﴏٯy wX-:Cf̣&=vUJr%t	a"H҈;]v`#pj.~[9<m~eORE4Ճ8#7##]pή)u4Tkm4-Qa;N933Jf>31'r82QO'R EIlC*JV<ck$$dwIf<w}ͨyCHt7&	PDHs_1FgF*ݕ+v9z0|f4\rokuu[td2h*7hJ3g˛'~PdzBݯo6#}WQWٜ/Ö/JKĻs@&PceØ_Oĝî80A\,.d4f2a<ԑ!р%l7.T(wʊF~H0˛H
+!^SW7?pvsm^t_֪/n9+g̙d!ؓymw-ɢAy_Ny*9Q\L,l:3F7zeFnH6O#~DMP^N%K.OOբ&/\/˛k?ҵ{6S^~dd"Lע/`!%8NSkb[Q#<u ;vmÑ+yHw4s>w~¶c-W~.6J`cB@C֛ؑu|` un18CI! Qf2Z\	<=|/g''xd_(hlq9Uyn/yaf4bbI-m&33[czcp>uiHͺ}:,S8Yv8?wGĶ:k`0WH:2-^Z<Z-y@x:WM,vW"԰-vD$.鸺{[F^R>s.?М^[_l?Q׼yva~twD47%%㤅3әtD_&.zDm,@	!5rY)1
+iC9pG՗ؠAoJLeє)L1\Fi6tL	ٳuq[^-Z&QSMa_DF'؂q~'72ߠdWxŏN̑iSaRv
+5>)0FV({ȆY]!VLw~LIE&x3ǈ q9N0098V	FwaӠqغrtzXYFzk<'sI|<[WwPCrs 
+	xgtcء_0.+fV8TOz˚18[!AZ#҂VS) 8fGԖ2o/^PLܴ	QjE͟8w~?4O|Dh?aOG4#'qᢀt8Ԏ@HT!* )(ˊO?]?z_f8[y0H96Dc+/QBf3i4j N7sh>2KDyB
+]Ljj|T{#s!mA\> \>gMwN4@V}+7|q7Na%=N|]>)2Ld7|\'nH=H|C*"=~	/|dkqE򂏔coDzG5q=Z˫>x"#>#A'/F	rV'ؾsLqoK$t$RA@k
+D8/ݪ}rgbdkm{S*nTF73-Ȼq"r؞rFQE*a^pzݑ6ӐD&cL]!|pwJg0MF^;V*@.͸&si9~GAIq'Z#Yf4NYa%)݂xi(exCF.T612=}J3lK
+0I,FUFA#DEF(*lvvvEBաF	FAZ 02H2MhC~7,Ri L@t3Tn0R:4ywkB0<7+e.\krͺ=_ut-{<kQĥ`*`Ep:+b -Vf2G2qҢҀAgt(Â77nn4Tړ/~e?4'xo[3yeԺznM/z`äo>^U'^;9#֐8EcI!Ի58Gd'Vu[X#εvXZy2]V!Ul|d\Q"#u4$*\xޝRq'»`ǓGWM|o+_&޻/B
+ؼc*~+Y+ay
+,TAS.e@[l췐8KMkmM8`k<|<#kdiщx*)Y..[4&(X!o<$_j"`tC2+gݶّ(ydiM#k_yaV/E]ct@9E濘P\FY,򼀨Շ-h?³PCp|;lH aTo1IˈgR1FME$dSitܤ2ɮ1qqNqdӉb;n8Yo-bĽR7hInSp Sug^kfFE0p+Tn_58(L^LGfhYD_ wy͡
+`w!̅3nк^7ךL"g}j8VwBg!`	2\ĸ,3F6A6Zh߆r2Q'[{heA)@>2'`k5@YԏaU"L#E֖#hf#;Qhhn_V}EEו:u}9ߘ8xc
+?^՗~_wӽ%G:XY3m;72}}AvW0cۼ3/HM18ݮK[Yu`qV@Cag<p^a@+;=VENv|%D[ō^+c8"R["׉"OD٩VZW<,vqX|v?PB@+>`0ԍ"-e+(WE$fO<BM"b%"\?8K"wEv\s"t Ev2\T#>aDnċ"Y+B~hEN0&ZqK.%β;EsA\
+4$Іel+TGBHsTL<^5Ξ(guq!4m=4eῲφ/ x5Ѩo噔NG.W6^Y6Bl427d3_1cfbVfrs/sR"U/xD[TDׁ+xlm3ѲIǳYsDUcŇ-޷`}k?h?kkŎFɶkV~{7Zu[\3~Hul]F,}OOdJm>&@i"0NE6  JPlCi ї1Dg2RR00`C>u밋*p$c'W񟦑Y"KNsL6Rbls4`!=Ԯ$(, ?|vb}L	vE\WN'3#-"K(/n/Pۘ&،a\a(fgMII.57'JƵ{ɽ9(ge]!#n2"hbaUu!RHQMz/үQ	z"WT't:Ǻ/uX%e%&1	>IdJLI26g}j;1dPrs>AhtG|p}|0Ns}|'|';B.>4݈O4H#Pl`cxpƠ1ugzpkJ5RDRUI=wWH!$K~'HdtFz%&K\N$<-T%EZ!:%RCJHnHDQzX JN	'	-Cҳ$Oܖ	$#j$J?+L3K0 V*͒$)A13	~+;_9	J@"J	KP/t	$HJ	(ߟl`%`~)(D	>WF KpSeH/N\	KߕJ"	(8pRNToW/,JǤ҇uI(ҫԍT'ɐ}\>d}$Vk7fa@*S[[6N	;淶g7Z-kr,	tDR7g
+Hj'v=!|tX@=(Fzϳ-ˤ"E!4k-?>Bb/?
+/Ʉ)Yj+Wz DW?![WJJkۨzܒ[_]P1AV_QTVPYSbc>yx/wsPAZGf!=BEkg2Oa@*]M P&`Qp
+x
+*U@U*V9T8t0:A$ H"mp\uЯ.6M:0;tuFt0Tj+QSwJt.A/t7ӼVzfst>kOuYi*H[nޠ}
+x7mV|7td
+Ѝ
+_8F:IUF'AZ9-*qIZV-YRZb¼L#q|\!8 gA5䫙6ʦPItJGbԅWx8rx^@s^Q܁^n6Vw#Y69n7cæwan8	koƙ&--@&!FCf$_ ս3Ŭ](jN/-7Cc\B-<VH<yKC5 jJ4ةi|TW;56ܛhlI2iW5h8ӆoj~/j	viYӭ3ٴw)544)iO;5^4Шez-Uv_5 54׌kAkK-AH_ȧ4ohȈfL) NҀug`:l.͐	/ide\jigcR5UFfF]rA}J68W?S*vj4ik
+FXb4~Fԓ̈́H$@W̭S7c
+}D	D34P47\aI"`߅~CgpL,"1/>an=]#ɝB$%Aa.LDE.$#Ve#^)8NNL5"z[cQ::.yUN(&
+E5i9\}Wbp^3wIj	%tq8 g ;Oo<\>>6 6)`Bv˹Zy*sABЏ=~I04B5~ ]uуBѓB<
+z b;Qؓ i?e܀9|_sL~`"
+{A)p|B;^Mn?5Q
+
+ekSz>ᧉnsj#äPU*v|cRU鴤YխR4#Ğr	sl${	LLRe.̀*n %P5%p"?wzz0tXI`!*	`mpb3
+*	6
+[~M f3RJ
+n>p7)D o
+ON(@</
+#R.,"'@ X0Xi+>&CN?mĎ4.UpZۅ%	Y|J.6U+>Hordll4ȱM-f=!囪`NCErAT^PV2)(l\.!'N𚀇JR fg>*(_N_)GNH `Uk̾M[e:]OY-,:hyoye!:Wl1%vA0'Ɨ&"2w^n4)m0N<SQYr{T:	U>3۩lq'/'+;d8=b@~6~㘼ƝgD(Xlp*|I'o,}TXo4v7V4[NKK}Iq刵VY=B6[6 *UPu$O=od(:bgEOpE!Ttc3/|*{ӽclf3aLly|dP?`yy;^҅ek{yYe$}JezKTՋ=ۚem;'	seKJra_<B|Ѽ2eCZ:^w*A(܍xUkB%xM5VSVR,RFdbx` '8Wp ;fc8Qe`dfm;%=3yҙM*u1x 3N1;=_O謮]]^ffS&~z{\r5洯h=Cu?!ʃg3а<o6:4&9Y93Qm,dVׇ.3f.
+N%{oۓ3}r[`_ˁ蹣vP0MMM=pxwv6iqz[_\:gtѽ=U`9X*r˒oX;m}yky/6R඼<\uT3JmWWVs90nWm
+T63#Jk Q|0Atq^4&)dt|GgC#09-eRDJ~SvgT6B,.l[Dx%#4+jҤ8WԆuǖEA	(}m>nKKlu_+''X"$fQN0I8q1d05cj5Qy$S7Cߠ;6EL!#Bw5X=u81w^um;ǻ=97r_MzJrr!	|wgYˑ_l}Y[)M*<uDc4Nabz5<`ɉĹ[$KT4y"l⇉':h
+GHJ3ClGzg"94"r"h/ip`c?c~4Us1F`(޹ Y?;lT$B|^=Ug1O$j%\#TޫR%=sz\=E}9)w43^+)fyn++餐t3dAt8{*ў>qw"'kI[걾vDU	!^kMVjպjjkk\-̭PkdaF.6 snÝTkpQÔQpn|&VѿlAu7nYysWyWM:5z>#k=瘜}SX}dyYUaeoh~!S=z5whz.ڿ́G%c˲|]D{)K 7Z*ؒZ1p,z 9E%wxs#[s	itJK+N^p!ֆ1r^٬5lJ==MYl1e<bŮى/nکSV4;Q|PkP?'|{fqZ!{َC%fRuk[8"pʾh[l19deR!榔\e7p6FUTPuʦ9'ESdKd[:uw=חҫo*:iul1&hCPm.l6[s	~N]hخ'685N~y\! 75A	Y'Ɲ$K[(U[K/181[?F_9g7Ν	q';r\PwPƝ_wS( clKN>	vA堢usޛ7vw)UKX,ndEZfRNgDZl	T]zn&99sVo{(eBEW-6	^b[<$rʎ>vc#"l堆Tm DCAZcvH{PK=G/ltd^mZ5pk\.֡Hr/Cqe.!93$N0")9%Q|<?f1PPvlv"/974u&<u
+>x7\?o߹PgPZ9ԜCpL N@+<o㡟᱁Oq/(:I#%6as+"hRͼэwgpAH塾Aѫ(ظ(&Rʨ|5~OOz?AkDwԼή+Ա?^]-/Va_9o,ǋʡer/6,/) >-Z{iuyZ=fH'l(|c;ˁP_|e9\r|l9[o֖CY7uh7'X7_iu.̃gcf `p2#fc<!4%IXĆU{$4'xNjs;=kG12ֿ׿>>p2T-C֠`j(Y0DVv{GX|%-ohf8'|A#MP>~F
+a"*GXA#ǑH[}P"}P&Ǎ F(qJr4-v"S>}<I%>@ds
+-Zҧ'KTj6˖؄1wx{aw퀱?+r(5d~/n]fiY:G,z6$
+PN̥{wfsաveq,-Ysrr?*w}:\ϷoJCi7JMܯ1SR@.[t<0FӤs-Gl}/ s@A|<@8mhE[+REdW-*n3qK`כ
+Ūo'P.r<lL-]֧x$h"S`2`ALLGCf0;Kddq	zЧ,9dKDM#E9if3Za>rbw-3۽o,[YQ$/ZwL]Sݳĥg?|#
+ڎ~{
+6eS| -]]^{#N-e2ŵ"׭Gwn4wY?/@r-cPSCXjRPf6g+BJ{CܼC~Aywpk{? 36p[Ҷ8w5Q>V-.t8gAfy}Ij/oۛr):\sD.rQgsIsoq*GWlv>jljl'rNϽA/ ;ƽ~%^|{Be%Yb/E_t̘urWY0jNfwY:W2d8ְeY	[/gZ4SF~Nz_E4
+8ȶ{KËvy{tgN1x)G-ZRKSqj(2Z`(0F
+EgVF0_V!|ATIT?^
+ҜEVfrr_ -mᢪEu4o+'NV5i2DoIݓ:m
+peAj9BNVv塠Cɣc\rUP	&$A:'FKx*6(pkRɲ(@Nr^'u鰘BW13fZIQ	|Ago:
+ZNLS*xr}[/h7nw_gl(k.~4^]^׼+{ΕnkJKAmZұ|cϤ,
+!#de)N_.LDxBtaV]FjZ{a0__yذ-h,~PQsh^O6H0jp3iʹ< M#aXE'Փ.cWQ60o~SOM<^0~?|Ϟl^Q*<<I_2AH\)/ aaZ~\vN81rZz瘲5Vp O@'iH:@[rj"2;@_6ĽeG=Mu
+_HH^Gz˽PIf___ @0˼Y]qur;8DOKtuFbq[v[0oIQ.ɀerrѢ5Y-pz]XfYeu!Ϭ[V8ghţV[qMVoMWn#PHqjh |LQ)P+U/wē;gfb*E_Iߦ$myr Y
+t l}ڻw߱ǿݲ3woz=ʐQ=Q*jG$nNL%{pSTwm5u55kl]e?l~Ȧ{c,(z?Zq-K,x*;`FmDqU6dSd@#f<	<X(d7a
+4ml<X6]^U,rY\ח]P|﹮`*\WpAapp*%i]3zy.>|M)sGda24P!d!pN2 ^bJ)cF=-SB| gȘy̑n	H2\S}YaFOvrs/ܔ]C29lb
+69_Ƽȟ@x90;2s㤸S\`4#2W'7ɸ"nMJ.ƙb v8'Eeᚌ#2&<t1hhoyPO3IGsEb]*CZ_hhv+%.sY2\g3ZT|Jkd`ɱ^GЅb:eqfs^abRp.)v8S*;7z#W;سn
+%/oDMilFJ%y<?a[䷁#_m	Lr?$}O֟0gt&N7-s?yKg!^3#+/̕H!SMfd.摧2eڿO%p^/.=|]{Pwha?z	]*v&xdt5>My'0%X$T	RH
+5<-ph|! t{0`*'pF,Lq5S`J6ȴ?4UJ#F4U#\b&4{#ƣ׌`f3Jøb
+#& <j<Mi&טN(դf&|w;X\r鼝%/1YyRQ47#_X+|UF5[r7h9Q):d5r,0kM2=P1d5Rl.ua֌pj{xȌ>2[y{6XnRZFh2PeXx6L5NNS΃	q Oa&oL~o5dWR/D8,0`%fUQ7߱s]vx)r,FK`2MdXܑZRv Jד_RhyA"! BZ5!&i%JR:^tZzO&ݔ+ͿI@Q__+HbԚ(7$"҇>%_J8&AF	K KV	_nHNIaK1	3DT.{㭦4!(Mdhq\QM:Fp+:IT¼"+u	.JxyT$PQ@%tW8F%/I_",֑79IĐi) Rwu;l?tiJ0{tQkmD A50sP~æYLyV_Mt̥s.B^G5;w'_Z.hjC9x3H_r/?T;{YcV:t\!»kSN)EUNq,%2 '> /@LP.	3dG}c!@
+SGQB</8C:YdV xE oUp!WuhI	jo].(Knֺ}{H.qn?|':?7-;43ɝzE-ZN?m]x=I55L~h$H"6'6$^NHKIQ6eTUn6/+F1]OU+B*]IRRe0Ⅱmq2*O>T9ؗzhYwtլf=8ۻflǷvOXp\:e=360ʽE  k.iinjwنWOL~ X5o?
+Ҝ5ĆS7d\\`o,e&r8^qj8sNC8}f+YhzpPM誺)'8%mH@`Z_*q4)(;۰~c0iQlnhLS>XK?6G@-^f.F5WA?)5(i3.anxldȔ~ ninUz`ډS|w|Tۓt
+c,?dyӏPDhHt̿n6r0]0gp|^"FDlȗ "r:s9+řHd\i|fB*4T<bf7ovx^|e=wq[?oaOS-[Swo}F뺗=.C\r3Q{Wa.44^t$au.	YY\#ҏQSiAł"SJgY㢩tEL{u	ӴIgj&D;wn7]eg5Lkj<n-9Pjl`eah9eOڒ厅:\$gMLsS2zI_z.-'Y'.W<s$*bo;uAD?ԌGM@ǧZn;կkkp#	=G8Ύ5QB+hqIk%M{NVWB\#q"n-q-*YB#L{5Ew$-kΣ}kP'}&r0(VJ$^1K`n?2{1qs-sP%?^Ǯ߄i8?KSS?H<<?ӏ$4jؓy5Sz'?DށdA9_ט4Mjnj˴}!	ou!݈ޡI³	J|,FASbOM~-%9eMYv:-3m<}cFaf~,)1x񙔝Z7FT9`M"TTnw_{Tl)+VZ^HWXuo*-ЈгHCLGlX}K6U|*602
+
+kP"F*EQaz+Ua=J>Ra2zP6|&<r`
+s**ApM(UXn*Gܫ*l@ܟTX@^>MC|
+
+jnt^.ԉ6iWJɯ@(=ZILzԃP1jQ79fĎ0}K1XBzԀV.J\`0F}h+񋠎{ssV:`kLv;j,8G};Ŏe467ptEX_k{x[kVGdmbФHzHS8Zֵ)8VN	e5;w``1=F=>\]	W3Foa#G.ZRyťFdTbh7U+bzV,)6;H|Z1yV(GY}5[c9hgE(@zuvEc>h.^U=1GkOVĆ0lZ	r$-]m4hlRD+o;^mɹ/QHa9Czʢw[cp"ofhiKN+&A~1яlzܹUFEq[d[lPLL;	"Ō6RtlWo=!_97F*.T ];؝[ň2}&">a&4bDKqU!QSm%LTXゼ}ƻF|8mF/{u3WLĩ9BLyXwDF#}a*훶bXDX{HξpxLvnjhmkƈS\YxOAܨ2zg7]F,oo*Ȯ'I@8CgB\[|xb6O4L<<18F_>	OI&J@+W8OEJ ]r}\e'7-???=+xPAl[X<k-gj4szO;Oa`!'kNNǆ؅1x䵚WacpɱȱwM_<C 2H.>7&J;?a| nxg#r{'ayb,Z#F	j'0_̄Oz5k	-$a
+ׯ=ڬ!eq\'VN9M!8 y?qr`"`+KmNs܌5Q4ט61fs1/ͺ7a"m0F*{Yt1]h^+׍iu׼͵OߏۗZ3b_t ~
+bÆEcە* (}_ pGI0AƢ!EDd#QHhzG .V
+FB\b
+hGIhF"
+endstream
+endobj
+4 0 obj <<
+/XObject << /Im3 3 0 R >>
+/ProcSet [ /PDF ]
+>> endobj
+7 0 obj <<
+/Type /Pages
+/Count 1
+/Kids [5 0 R]
+>> endobj
+14 0 obj <<
+/Type /Catalog
+/Pages 7 0 R
+>> endobj
+15 0 obj <<
+/Producer (pdfTeX-1.40.10)
+/Creator (TeX)
+/CreationDate (D:20131219165624+01'00')
+/ModDate (D:20131219165624+01'00')
+/Trapped /False
+/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0)
+>> endobj
+xref
+0 16
+0000000001 65535 f 
+0000000002 00000 f 
+0000000000 00000 f 
+0000000287 00000 n 
+0000029641 00000 n 
+0000000176 00000 n 
+0000000015 00000 n 
+0000029706 00000 n 
+0000002302 00000 n 
+0000002544 00000 n 
+0000002651 00000 n 
+0000003913 00000 n 
+0000004148 00000 n 
+0000004934 00000 n 
+0000029763 00000 n 
+0000029813 00000 n 
+trailer
+<< /Size 16
+/Root 14 0 R
+/Info 15 0 R
+/ID [<876B2CFA29B0D91ACD8A74E7B7C88D21> <876B2CFA29B0D91ACD8A74E7B7C88D21>] >>
+startxref
+30079
+%%EOF
diff -Naur ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.png ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.png
--- ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.png	2014-06-17 10:33:13.660997760 -0700
@@ -0,0 +1,34 @@
+PNG
+
+   IHDR          cIDATxF&Pj1!TA42M1k0yx	Q['c2     #   @"   $"   @"   $"   @"   $"   @"   $"   @"   $"   @"   $"   @"   $qa8RCĭ~vg          91ᨸ;MP~P?D"^7   $"   @"   $1潩.C!ycF           ^3.罩TCǌ   @"   $"   @"=0f>[:lޛyKC!1#       >h##egl!C!ts }6.oP?}R?D"gEg
+ PU~!B~8]; j}a^$"ꇈ`R0~h٬~+Rc~~P?D"NW?7 ZSd|13~~P?D"NW?c #\)fd1O'CI|`<{O~.Wo!XF~P?D~& .on﷿r|7NS?]Q?D"Sww:sU?P?D"gtq_[O>}˗/e<6F~~P?D"NQ?kN noᮣ`!B~8]2 \.~Vw}w}-JC!ss 0??×/_B!B~8WL) \g\?/|˗/7OC!,x?k߭S42C!Bq:k nk/duV<C}ݹJ~~P?D"[?SoKw&~P?D"NZ?W' tb}GIq&C!s psE,|oC!s9c@w1~*o|#ݎxI^HDEo[QfS'kq~EAϢII\M*uU
+ =Oopm8Vy#ok$TW楢~nG0UI,W GqV|:,O	,pU_/59T*;'s5A&ZŮRZ~rߠIp*X*];nUw2mf"kx/R0O6S?D&*ʷ*arQ p: n,}keeXoc%e~1ln[l~~xa~\ pZvERwbV*[C!B0qxIrǀ>x%h٬b(w%OY^іqNꇍ\3b>ԌMIxI' 7&T*k~mb}k֖'n>{+{ /%wyR?tU[$usBeϬ^V&MV=Toy-<rOݷ&>W*ϻ$+?ݭP j0@C+/% ۿV6nߚnXoSc۷ۆ=g>\7 @r   $"   @"   $"   @"   $"   @"   $"   @"   $" RJ&pbC!s pғfJ)7,YCyr @^FZ3Q?D"xD댿ooToʉCIrR?o___u~0m[߭[ɭc9s$ӶOCHmk n'oӟ~}w}믿^.?O0}ߺ	~w=gVOoO+7ꧡ5{]K~~믿?n&O>]Ocp};NQ	ӄiBF4t p=j^Z~?˗S| oi_?V>|OOo1OOoOCg
+ Wwo?}?:_Knk)Nοۿt;~R?Q?GR?mި k|||~ nu*'^=_2 n*ӄ9iBtH4t 0O_|\.	pպ	Gיp>}	ucOWO[+ꧡrp}ך~/_/k? sۺAkc00<yC!a# Crݔ?\/}~ԭ!iH~P?DAܜ2 ߀Sne=WӐ!B~x;_ (_Ӗcކظ.ELJπ!B~8oL/ \ހk_߃3{V<i1]9ӄiNu pq:]ݏ}5$\Fg@F4~~z~R?2 \~?LSW|祯~~R?S?]Q? glwZY3n^i\|Nus>~:9;o\ nNwN9K8u/o/ԍS7r_NN P9{tZOz~-=ӿӽ3ӝS7=-8ué߂S7=-8ué߂S7N   ?ܺ	!B~P?m>C!BRF        {!C!B~l޲Wv>Wv>Wv>Wv>ޮ  D   HD   Dz <̯}/a׾0kKs%9ڛ3       ؗ/_Z7S?D"ꧭ E!B~P?4g       o<C!B~: 朓휫9d;j9ιsNs朓/  HD   D   HD   D   HD   D0      $"   @"   $" 4{P?D"-   h =s
+ަyX; x~u>ܺ	2             1w vkdy}'RkOҒvt:x6hC=iK  X{@ukUm]?CΫ3.{}!Wy5{OCfٸ6VX\mm'&߆n;"!5V^dk59neȴ%Z3Sg'{^jq'IEU^7k.5i {kw&R&;sb9丗Ͷ|6]RiO_gfL66՗mڼ%JZύ."J)<sv}w_(nyϵꥯe~__Emi4N/O[ л]6ZWV7k>mCל(5	PJ)ũ yߍ-s[ve$dVE6?-}P@Еm_ԢU=OƊ!0z۬˽mK;T/'L~u{}J;hyK~ݘQi5cToib3Kn|s;ЖWWo3mio맔b}xm-            GZӖ       g0/Mg؝ И~P?D"O[  @"   $"   @"   $"   @"   $"   @"
+    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	          Gp_)_0udjo{o;^#ͨV " ):^.|"x_|I6s ~S;nq8ء]z,/\\ry20/Rvt   &%|eZRoƤ7?ac  9	 ?}zqYw\6bK:u.x5C!B% .M߽G gڻwOo>bM| @sF 5~ě|#{ /w+K&	  <A~:O/ѥzaӖ)@*d@'ަ)@!]c]7ۦ=C    j   >ĀS :e.)":1[@|ZD"uz=   ؍w  vF   ?#   o D<CC!B~                             D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D>Z7JY5u7N;|y3*gn  # Mz+;[#[6'ێ<מfܭ|QF~P?m8._-^8]zV:ĉI[U.Or&G I 8Dũ;D?x>?ތIo~d  еM"Wǝ-ww? E&ɽ|[n 	w^|!R<TyF  ^@73g}d>ݑ=C[߰rݟc "=>ђ~򤣷/è"-g?<i;Sۦx  @!   1   $tN hlmΜ'f o`ڐǀvʧ-%B~33  O   `g!   .   !M        D   @"   $"   @"@csCiK   D   HD   D   HD   D   HD   D0      $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   D   Hк  A   @"   $"   @"@cMCiK   D   HD   D   HD   D   HD   D0      $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   D   Hк  A   @"   $"   @"])ny!Mw>PCiK  駟Z7~}u `
+  $"   @"   $"   @" W	ġڤ=ڌ-k ?駟>!EhyE^swxHǀz SA9Ƶ:~똎75i-_\yG_|Mt~}>PqP?WMY "L.N1\'w>n[p-QxG,j˙+ڸ|,·lU_a|Oo^xɫp@q{"Q  75W7zz}٥JO ,D6|zk>
+qw-op0 dTJq*xyHo7 ܋V]\ߟ3߰29gK~C/JK__23o#!B7@yH)Aϟ?@m- pz 	  @            -`OD    1   3'C!B~                             D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	   G 2&Wh줔=[,~[rks{WWy 1 Ӥw>ԉ<ϏKo֒]ŷ " @
+k':{1%mk{Y0?'&OK']ٶytw~ " w+}ŎKڷԻky%sؿ&Zla%L6o'P! _^>-ѷ4c.ƖYkᣧt	Y?]ר@  o>]uUj	 <1Nܕ'Vl2Ծn;٥%xf
+X"-# o<ޙ̌+|S*09Ndk7nIDm_\ߵҿb`7'=OMm 0 fϓ:{?8jC!B0O[F   
+>s#	   C8 K;Q*DĀn	 espP?L   `7   ؁Y   	|  7   G   D   HD h̷~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b  Ȗ.9C|b+&   2lͯ|xz獛_yJ   е[1W%_-|rI#e	 l~P?DW߯u]&5+ƣ>Z7  ƽ=[ҘJp"  iLz<  mO6{ǥz   n/\6'L1*טClݟm8)@ l}L9x3Cٝ|*]c    _1ؑf  \xcԘ+mD"*3ij5jӖ{  Xv0 f  j 7#  p?p   $"   @"   $"   @"  1           ]\~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"  Ћߕ4^YݾN)//ٲUeuҐ   pz[:_Y    _~W.Y~[mͨă:k/|0"   Z^/''/~s}wַ1aҼyY{w'" 4C!B3]*x{p
+/㔡^Nf  W&7^\_[[7< :k+LLye}\|v=;#   ˬ?o;?n/m<^/|~u8/p46"'poO  61myL*=0;6>G]?PDB  *]#  @]	  |e4Æ-sʃ-\G  Wng
+wyy	  LU'͈ Ԉ oF  >1 m   o D<CC!B~                             D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D>Z7   R3+o\k7:# M>C!B<3Y;pw\˷6   a~]\>UZ$HL<>|K^q	   -;%57".N  UO,v'ot͟c   8	>]'߯Mp.n 8[c/ɶ~aOtO  A&3s*xSn~5?CHx!B~P?=x"Ӑ&E`? g  V  L#BV?h2 W&E:pp^  S(x3   $  P#  t7   G   D<  1           ]Q?D"-                        )0n  p#           X)u81C!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                    s{
+   dsTm  &R^w]sVVv{!w };uY[sܷhŕ~[9~|}Z{u   ҹ}'Wq[vj>   @G^ޞkn&>gv&z"ꇈsw]ϣ0  @/^/vNC{tS↓%kضʁv)@En C!By<ڼW;#   Z{=s   w         t}6  /7 9x)@  Ñ_]{F|0  IտaseϷ]=ƚ~P?D"gҏ7^}ϋb|ŽM8oގ!   Щk>t=~ܭ_0   zg<02gT	 kAOn}U`  .L?!nGlmz3z6,bf=sOcn"B~P?DL D   H  $b           ;G	C!B~                         2C6   h   \R~AXk   ]63Uq   $" 4p"Ӗ                         l߸  =(MW   *}}n   ,  )@o"CD~L9   PG	   taW   z1	   Ex)  /   %   $R*     $"   @"   $" 4{P?D"-                        )0n  p#           X)u81C!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                     h  ୌ8CpwRJo^-5ϫL v3[|'>w<'W=^  *+kW'+JǷUeLpqb3'&L']ٶytw~   fާw{yzr>?ޑwaW:9z%L6o'O   4$ݸyWrEzd.ƖYkgu9Y?]ר
+@c2C;#n48dp%'~uy5Ӗǀ xqV%Oﹾ;٥%xf
+Xn  vxZdZX3z^j%yTlI\m_\߸P@tKcP?D"zz{zkXm8;  66=0pq"' ;~	X[{v/  V  - )~t5;$  0?  X& % 1 |ӺٙkK!b^SD<  #                     "0  H   $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   D   Hк  A   @"   $"   @"@cMCiK   D   HD   D   HD   D   HD   D0      $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   D   Hк  A   @"   $"   @"@cMCiK   D  (#[V58   лR07]g_޸׭d	   ]uon;x}>0Y2'4R   pJaoo]q|md  `qrl[ҘJp"  iLz<|nP?D"ϑ̧_  M2a;%|ˆ=}
+  0v)@ y"{>>Pp И?D"e\Op0ߟ  ĵ  C  `7yp$     =V	       \^  H @"   $"   @"@c$C!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                         2C6   1           RZ7S?D"-                        )0n  p  ^$|Uev:LΗl٪pniH   \f=-GׯD{xo;:'   ,kvq,v]8&0>PГ#η>Qu^atE hgC!"O,v{ɓߓYۻK3&?L73knyH   ɥTlU`~ݧъ   I׳'VVc;  D&N&?q2>.>;P  \fl|aw{0hzCy17~P?D<o~˗"  /gH[JL ^hsyrAԺ!g KC   ;  vc?  =\)!B~j5j-    	  !  x-]{              E`     HD   D   HD hC!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                         2C6   1           RZ7S?D"-          h  ^DuJ~|ɖ*˯얆  e֣}tjO0Ľ\   зwŕu@COO8jhF%Y{  `bz<=~뻽޷Ōkl81"ꇈɥTlU`~r2   2߽־b
+yl1  LԩX[ad"+}  \fl|aw{0hzCy1~P?D<o~˗"  /gH[JL ^hsyrAԺ!  KC  `g3  i[B'	  nnA  `OC    +   $⛀  1H#B~P?D   HD   D   HD   D   HD   D   H7 @"F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b         HrLo;ڀ͠@c6<D~P?ϹoN$$]<-n.#   G_C|:W.U>	=:_y㒵Wgg  @Kdm==/KƇӿ?/  h-]ᘽ  -N©OhkC pzz{m]yS3  pI}̜4*#_P7p"޶|rP?D"s=H4 /×/;o B#@  ?I   v=31P?D"!X2  fHC  w܊!  ؟   WC  ZЕoZ7   8    x+  $b           >~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   fz   Ȣpk0=Ы   M_<ď׹|7`m͵,/B9Oo	  wo]9W+r:   :2sOm|$  ܽ=	|L--|.M|'
+S?D"j<G9`  ^oս|}_xӇ.K
+/'K֎mSC!yy^wF   z.   ã-7	         l  `_F   `^_ѵ]  s8]|}dP  Po]F?vqok=?!_ hWqjC!b~&y~c7!    Z:zmP/|ܭ_"   ЩF- @젧n7>Ԫ{o&`  ܧ;(菭m8^Ro&%;۰GrOcn"B~P?DL D   H  $b           ;C!B~                         2C6   h   \R~AXk   ]63Uq   $" 4p"Ӗ                         l߸  =(MW   ]ah   Xv/  )@"B~P?D맔r"F   8#   Ѕa9   @/]1   "   @Ā   藮<  )B  a           5D"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                     |n  VOx!;)\׌7`/ކaUD^&  n}-q~m{wlO/e  x뵫ד^c[٪2&p[dًVIgޓl[kg`~;?WtE   v3S;nzO[ZR;0T+p&j巓WbZ{t'   {_^nɼ+r[ZWvcK֬ѳ׬k?1AC!nܝWC؀
+ےEU}G<ic@l8xɒ\䉝Ғ~v<3r@   Yv-2-~YOO=_rx<}*~~.oei([:d1C`D"O=vE  pz626N^$   X[{v/     Z     HD   D   HD h7f~P?D"O[   $"   @"   $"   @"  rn~|n  ή]aZ7  x	]S =  ݘτf  `O.C  `b tc@3TJ!Bq~aҘSmy
+ *   x-])@                / D   @"   $"   @"@coG"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu  |n p=B  6駟Z7ϭ t=    ИDP?m	        >Iu/})}]z؅  㧑]}~́>vҵ]l.n_&nsvjP78D_?ʤ9̻x^,&^:vk;|co؁^ܪ7ym⡮m@íaOv[9CW^c}̷Zk|z~k5e=S?WMY %W2fwXl3֥W?\FIh4QM.|ҀJҘlnzE]ӻZ{ZEiXU3>?~VVnQy~L|%/fC?ۗZ;[`8_ކ ИKĩg{Ȇ%[vՙa5S9Vp/kP~~tn7kږ%=]} yP@}\\o7ꡏ^ ܷ/Ը2P.0OoTL,s@NηLgږ%kxhEgcqTѳ4oCW;O5*cmY}G
+ΣsƣUd܁
+Xރ.z|2	!Be1XV?1 I3/"O[F              qFcn!ț8
+79V/Nğ` D           y
+C!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F       h  zTJd6ML}/ކaUD^&9# M"*s\Xoծێḇ=9sŖ-m"O[F  c/`O-_x<^>Yr2&0%m<i|LF &Mzll[kg`~;?W  w+}ŎZ~ۻʵ^ВzGv޹_k3٤~J+4r⻦oO  `bn_֏{ua7dZ=Ox}fگQGޞ  Î>_ w[h	M L=zC{~ݥGwKK<4v  0xmdfX3z~V/_wR'՗%]kƝO5e],#}l%B[[kzn[y~rEO[wa#>ON̹x  zaYO   `b)   I И9sD"*91?&<W-t33  O   `g!   .   !M        D   @"   $"   @"@csCiK   D   HD   D   HD   D   HD   D0      $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   D   Hк  A   @"   $"   @"@cMCiK   D   HD   D   HD   D   HD   D0      $"   @"   $" 4VJiNL~P?D   HD   D   HD   D   HD   82eKkP#؊	   +#[zk?5獛_yJ 3R?D"ϑn6^}#LɁ&g Ӗ   pJaoo]q|md  `qrl[ҘJp"  iLz<"C!B~ڵ;}^W?m  $3^R7lOcg`;_c>BD"'w~{  /g{>>Ppѿ)@ ]{虡    /}  C  `7s `O.C  `b tK   ^E	  k_֘P?D"a-                        E`     HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"G  b1I/C}RO/ٲUeuҐ   pz[:_Yee	   }yGگ]\yq?],	T?d󭶏fT|>o]   V-v{ɓߓYۻK}[̘0i<Ϭƻ   2]*x{p
+/ݷ!   |e{}yc@ SdD'.Wg
+8;# 	D"oY?~de6|0F{	1" p֍ga
+ r&d1 1И+"D"[꧔r@8r0 3Wg  0Nȁ  nn	  _+@  `b tK   ^E	  kCW|  $          1ߒH!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ  8   HD   D   HD hҺ	!B~P?m	                        Hu    D   HD   DJ)"Ӗ                         aZ #Mf_YݾN)ӎ|ɖ*˯얆>Z7  n떎WV{=m\    _~W.Y~[mͨă:k/|0"   Z^/''/~s}wַ1aҼyY{w'" 4#D!B3]*x{p
+/㔡	   _^k؝\_[[7< :k+LLye}\|vws0#   ˬ?o;?n/m<^/|~u8/3C!B	~[1 x9F2Tz`
+ BCͻF   ^Bd ؙ?L   vc?  =  -mP)C}JcNU)@ \G @W  t+  @"   $"   @"   $"   @"  1           ]~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   $"   @"   $"   @"   $"   @"   $Rah   F           RJ&pbC!B%   @"   $Ѻ  g}d̖>ڀ͠  A=㛵pw\˷6   a~]\>UZ$HL<>|K^q	   -;%57".N  UO,v'ot͟cn P?D"O$[v͟x׆&~r0 d}o
+?ڰ'N  A&3s*xSn~5?CHx  і)@A#B~x~[[az2 xI   ^B$   ;	  n&l:!vH   v3yL$!  ;n    On      &`  HD   D<#C!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                         2C6   1           RZ7S?D"-                        )0n  p#      W   dsTS?^w*m<O~P?Dg|y܉ޤ,/mk/Q   wu9[W4k{?:  Lfz>{-;o5I   #w/loO5_7mK3p0  =-e<q #   b|wdmӇ._O|_yNWNwc*څ["CDh^   k]t  }	          kpC!B~   ==   8Þ?>w   tןߘ/}w6i7  @^~gzy}ϕx88P?܆~(  No6|#^a!   zz|ý&t~u wevPp(&mqa<@cMm"ꇈܧ;+OwWu{ ؀-;X        IoC!B%   @"   $"   @"   $"   @"   $"   @"em   b           +n'~P?D"O[   K`y<   ]tV   HD   D   HD   D   Hd  zPJ   HD   D   HD h,W^#C!B~     e׮VK   ;#   ]W   xy#   Ѕa\?   @/]1ॊ3 @Ā   ;   M   ИG\~P?D"O[   $"   @"   $"   @"   $"   @"   $⛀  #           X)u81C!B~                         2C6   1           RZ7S?D"-                        )0n  p#           X)u81C!B~                         2C6   1      G  or=lI)o^-5ϫL`8x!BV?מu6Nvrwqm-٥[˫m?m  ^e^O:+_MVlU-\\ϓf̷Zld`Ҥǆʶ=v槫sEW  `7>#k_ϻԻky%s_J'G$&Z38	  Ɨw2Jn\oՅؒ5k-|noSY~nQ  `+Ǘkk{\N^l|mɢ窾_]}&` `7O[1>=7սsC\9]ܗ.   Yv-2-~YOO=_rʒ<}*~~.oei([:d1eD"O=vE AO[ws#>O΄  q0  $"   @"@cE!B~P?m	                        Hu    ^?A?>Z7  xg׮  x	])@%B~O)2?i  qN'!.	  na0:'   {v    On	  !  x-]ǀ @"E( <   @"   $"   @"@c&C!B~                         2C6   1           RZ7S?D"-                        )0n  p#                                                                                                                                                   7*P     IENDB`
\ No newline at end of file
diff -Naur ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.seqdiag ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.seqdiag
--- ns-3.19/src/spectrum/doc/spectrum-channel-phy-interface.seqdiag	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/src/spectrum/doc/spectrum-channel-phy-interface.seqdiag	2014-06-17 10:33:13.660997760 -0700
@@ -0,0 +1,43 @@
+
+diagram {
+
+	SimProgramOrHelper ASpectrumPhy BSpectrumPhy CSpectrumPhy SpectrumChannel;
+
+	=== initialization: B and C are added to the set of receivers ===
+
+	SimProgramOrHelper ->> SpectrumChannel [label="AddRx (BSpectrumPhy)"];
+	SimProgramOrHelper ->> SpectrumChannel [label="AddRx (CSpectrumPhy)"];
+
+	=== A transmits; both B and C receive === 
+
+	ASpectrumPhy ->> SpectrumChannel [label="StartTx (SpectrumSignalParameters)"]
+
+	BSpectrumPhy <<- SpectrumChannel [label="GetMobility ()"]
+	BSpectrumPhy <<- SpectrumChannel [label="GetRxSpectrumModel ()"]
+	BSpectrumPhy <<- SpectrumChannel [label="GetRxAntenna ()"]
+	SpectrumChannel -> SpectrumChannel [label="evaluate propagation between A and B"]
+	BSpectrumPhy  <<- SpectrumChannel[label="StartRx (SpectrumSignalParameters)"]
+
+	CSpectrumPhy  <<- SpectrumChannel[label="GetMobility ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxSpectrumModel ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxSpectrumModel ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxAntenna ()"]
+	SpectrumChannel ->> SpectrumChannel [label="evaluate propagation between A and C"]
+	CSpectrumPhy  <<- SpectrumChannel[label="StartRx (SpectrumSignalParameters)"]
+
+	=== B transmits; only C receives  (A is not in the set of receivers) === 
+		
+	BSpectrumPhy ->> SpectrumChannel [label="StartTx (SpectrumSignalParameters)"]	
+
+	CSpectrumPhy  <<- SpectrumChannel[label="GetMobility ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxSpectrumModel ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxSpectrumModel ()"]
+	CSpectrumPhy  <<- SpectrumChannel[label="GetRxAntenna ()"]
+	SpectrumChannel ->> SpectrumChannel [label="evaluate propagation between B and C"]
+	CSpectrumPhy  <<- SpectrumChannel[label="StartRx (SpectrumSignalParameters)"]
+
+	
+}
+
+
+
diff -Naur ns-3.19/src/spectrum/doc/spectrum.rst ns-3.20/src/spectrum/doc/spectrum.rst
--- ns-3.19/src/spectrum/doc/spectrum.rst	2014-06-17 10:34:00.301637719 -0700
+++ ns-3.20/src/spectrum/doc/spectrum.rst	2014-06-17 10:33:13.660997760 -0700
@@ -1,14 +1,440 @@
+
+.. _sec-spectrum-module:
+
+Spectrum Module
+---------------
+
 .. include:: replace.txt
+.. highlight:: cpp
+
+.. heading hierarchy:
+   ------------- Chapter
+   ************* Section (#.#)
+   ============= Subsection (#.#.#)
+   ############# Paragraph (no number)
+
+
+
+
+
+The Spectrum module aims at providing support for modeling the frequency-dependent 
+aspects of communications in |ns3|. 
+The model was first introduced in
+[Baldo2009]_, and has been enhanced and refined over the years. 
+
+
+
+.. _fig-spectrum-analyzer-example:
+ 
+.. figure:: figures/spectrum-analyzer-example.*
+   :align: center
+
+   Spectrogram produced by a spectrum analyzer in a scenario
+   involving wifi signals interfered by a microwave oven, as simulated
+   by the example ``adhoc-aloha-ideal-phy-with-microwave-oven``.
+
+
+Model Description
+*****************
+
+The module provides:
+
+* a set of classes for modeling signals and 
+
+* a Channel/PHY interface based on a power spectral density
+  signal representation that is technology-independent
+
+* two technology-independent Channel implementations based on the Channel/PHY interface
+
+* a set of basic PHY model implementations based on the Channel/PHY interface
+
+The source code for the spectrum module is located at ``src/spectrum``.
+
+
+Design
+======
+
+
+Signal model
+############
+
+The signal model is implemented by the
+``SpectrumSignalParameters`` class. This class provides the following
+information for a signal being transmitted/received by PHY devices:
+
+* a reference to the transmitting PHY device
+
+* a reference to the antenna model used by the transmitting PHY device
+  to transmit this signal
+
+* the duration of the signal
+
+* its Power Spectral Density (PSD) of the signal, which is assumed to be constant for
+  the duration of the signal. 
+
+The PSD is represented as a set of discrete scalar values each
+corresponding to a certain subband in frequency. The set of frequency subbands
+to which the PSD refers to is defined by an instance of the
+``SpectrumModel`` class. The PSD itself is implemented as an instance
+of the ``SpectrumValue`` class which contains a reference to the
+associated ``SpectrumModel`` class instance. The ``SpectrumValue``
+class provides several arithmetic operators to allow to perform calculations
+with PSD instances. Additionally, the ``SpectrumConverter`` class
+provides means for the conversion of ``SpectrumValue`` instances from
+one ``SpectrumModel`` to another.
+
+For a more formal mathematical description of the signal model just
+described, the reader is referred to [Baldo2009]_.
+
+The ``SpectrumSignalParameters`` class is meant to include only
+information that is valid for all signals; as such, it is not meant to
+be modified to add technology-specific information (such as type of
+modulation and coding schemes used, info on preambles and reference
+signals, etc). Instead, such information shall be put in a new class
+that inherits from ``SpectrumSignalParameters`` and extends it with
+any technology-specific information that is needed. This design
+is intended to model the fact that in the real world we have signals
+of different technologies being simultaneously transmitted and
+received over the air.  
+
+
+
+Channel/PHY interface
+#####################
+
+The spectrum Channel/PHY interface is defined by the base classes ``SpectrumChannel``
+and ``SpectrumPhy``. Their interaction simulates the transmission and
+reception of signals over the medium. The way this interaction works is depicted in :ref:`fig-spectrum-channel-phy-interface`:
+
+
+.. _fig-spectrum-channel-phy-interface:
+ 
+.. figure:: figures/spectrum-channel-phy-interface.*
+   :align: center
+
+   Sequence diagram showing the interaction between SpectrumPhy and SpectrumChannel
+
+
+
+Spectrum Channel implementations
+################################
+
+The module provides two ``SpectrumChannel`` implementations:
+``SingleModelSpectrumChannel`` and ``MultiModelSpectrumChannel``. They
+both provide this functionality:
+
+ * Propagation loss modeling, in two forms:
+
+   - you can plug models based on ``PropagationLossModel`` on these
+     channels. Only linear models (where the loss value does not
+     depend on the transmission power) can be used. 
+     These models are single-frequency in the sense that the loss value is
+     applied equally to all components of the power spectral density.
+
+   - you can plug models based on ``SpectrumPropagationLossModel`` on these
+     channels. These models can have frequency-dependent loss, i.e.,
+     a separate loss value is calculated and applied to each component
+     of the power spectral density.
+
+ * Propagation delay modeling, by plugging a model based on
+   ``PropagationDelayModel``. The delay is independent of frequency and
+   applied to the signal as a whole. Delay modeling is implemented by
+   scheduling the ``StartRx`` event with a delay respect to the
+   ``StartTx`` event.
+
+``SingleModelSpectrumChannel`` and ``MultiModelSpectrumChannel`` are
+quite similar, the main difference is that
+``MultiModelSpectrumChannel`` allows to use different 
+``SpectrumModel`` instances with the same channel instance, by
+automatically taking care of the conversion of PSDs among the
+different models.
+
+
+
+.. _sec-example-model-implementations:
+
+Example model implementations
+#############################
+
+
+The spectrum module provides some basic implementation of several components that
+are mainly intended as a proof-of-concept and as an example for
+building custom models with the spectrum module. Here is a brief list
+of the available implementations:
+
+ * ``SpectrumModel300Khz300GhzLog`` and
+   ``SpectrumModelIsm2400MhzRes1Mhz`` are two example ``SpectrumModel`` implementations
+
+ * ``HalfDuplexIdealPhy``: a basic PHY model using a gaussian
+   interference model (implemented in ``SpectrumInterference``)
+   together with an error model based on Shannon capacity (described
+   in [Baldo2009]_ and implemented in ``SpectrumErrorModel``. This PHY
+   uses the ``GenericPhy`` interface. Its addditional custom signal
+   parameters are defined in ``HalfDuplexIdealPhySignalParameters``.
+
+ * ``WifiSpectrumValueHelper`` is an helper object that makes it easy
+   to create ``SpectrumValues`` representing PSDs and RF filters for
+   the wifi technology.
+
+ * ``AlohaNoackNetDevice``: a minimal NetDevice that allows to send
+   packets over ``HalfDuplexIdealPhy`` (or other PHY model based on
+   the  ``GenericPhy`` interface). 
+
+ * ``SpectrumAnalyzer``, ``WaveformGenerator`` and ``MicrowaveOven`` are examples of PHY
+   models other than communication devices - the names should be
+   self-explaining. 
+
+
+
+
+
+  
+
+
+References
+==========
+
+.. [Baldo2009] N. Baldo and M. Miozzo, "Spectrum-aware Channel and PHY layer modeling for ns3", 
+   Proceedings of ICST NSTools 2009, Pisa, Italy
+
+
+
+
+Usage
+*****
+
+The main use case of the spectrum model is for developers who want to
+develop a new model for the PHY layer of some wireless technology to
+be used within ns-3. 
+Here are some notes on how the spectrum module is expected to be used.
+
+ * ``SpectrumPhy`` and ``SpectrumChannel`` are abstract base classes. Real
+   code will use classes that inherit from these classes. 
+
+ * If you are implementing a new model for some wireless
+   technology of your interest, and want to use the spectrum module,
+   you'll typically create your own module and make it depend on the
+   spectrum module. Then you typically have to implement:
+
+    - a child class of ``SpectrumModel`` which defines the (sets of) frequency
+      subbands used by the considered wireless technology. **Note**:
+      instances of ``SpectrumModel`` are typically statically allocated,
+      in order to allow several ``SpectrumValue`` instances to reference
+      the same ``SpectrumModel`` instance.
+   
+    - a child class of ``SpectrumPhy`` which will handle transmission and
+      reception of signals (including, if appropriate, interference
+      and error modeling).
+
+    - a child class of ``SpectrumSignalParameters`` which will contain
+      all the information needed to model the signals for the wireless
+      technology being considered that is not already provided by the
+      base ``SpectrumSignalParameters`` class. Examples of such
+      information are the type of modulation and coding schemes used,
+      the PHY preamble format, info on the pilot/reference signals, etc.
+
+ * The available ``SpectrumChannel`` implementations
+   (``SingleModelSpectrumChannel`` and ``MultiModelSpectrumChannel``,
+   are quite generic. Chances are you can use them as-is. Whether you
+   prefer one or the other it is just a matter of whether you will
+   have a single SpectrumModel or multiple ones in your
+   simulations. 
+
+ * Typically, there will be a single SpectrumChannel instance to which
+   several SpectrumPhy instances are plugged. The rule of thumb is
+   that all PHYs that are interfering with each other shall be plugged
+   on the same channel. Multiple SpectrumChannel instances are
+   expected to be used mainly when simulating completely orthogonal
+   channels; for example, when simulating the uplink and downlink 
+   of a Frequency Division Duplex system, it is a good choice to use
+   two SpectrumChannel instances in order to reduce computational
+   complexity. 
+
+ * Different types of SpectrumPhy (i.e., instances of different child
+   classes) can be plugged on the same SpectrumChannel instance. This
+   is one of the main features of the 
+   spectrum module, to support inter-technology interference. For
+   example, if you implement a WifiSpectrumPhy and a
+   BluetoohSpectrumPhy, and plug both on a SpectrumChannel, then you'll
+   be able to simulate interference between wifi and bluetooth and
+   vice versa.
+
+ * Different child classes of ``SpectrumSignalParameters`` can coexist
+   in the same simulation, and be transmitted over the same channel
+   object.  Again, this is part of the support for inter-technology
+   interference. A PHY device model is expected to use the
+   ``DynamicCast<>`` operator to determine if a signal is of a certain
+   type it can attempt to receive. If not, the signal is normally
+   expected to be considered as interference. 
+
+
+
+
+Helpers
+=======
+
+
+The helpers provided in ``src/spectrum/helpers`` are mainly intended
+for the example implementations described in :ref:`Example model
+implementations`. 
+If you are developing your custom model based on the
+spectrum framework, you will probably prefer to define your own
+helpers.
+
+
+
+Attributes
+==========
+
+
+ * Both ``SingleModelSpectrumChannel`` and
+   ``MultiModelSpectrumChannel`` have an attribute ``MaxLossDb`` which
+   can use to avoid propagating signals affected by very high
+   propagation loss. You can use this to reduce the complexity of
+   interference calculations. Just be careful to choose a value that
+   does not make the interference calculations inaccurate.
+
+ * The example implementations described in :ref:`sec-example-model-implementations` also have several attributes. 
+
+
+
+
+
+Output
+======
+
+
+ * Both ``SingleModelSpectrumChannel`` and
+   ``MultiModelSpectrumChannel`` provide a trace source called
+   ``PathLoss`` which is fired whenever a new path loss value is
+   calclulated. **Note**: only single-frequency path loss is accounted
+   for, see the attribute description.
+
+ * The example implementations described in :ref:`sec-example-model-implementations` also provide some trace sources. 
+
+ * The helper class ``SpectrumAnalyzerHelper`` can be conveniently
+   used to generate an output text file containing the spectrogram
+   produced by a SpectrumAnalyzer instance. The format is designed to
+   be easily plotted with ``gnuplot``. For example, if your run the
+   example ``adhoc-aloha-ideal-phy-with-microwave-oven`` you will get
+   an output file called ``spectrum-analyzer-output-3-0.tr``. From
+   this output file, you can generate a figure similar to 
+   :ref:`fig-spectrum-analyzer-example` by executing the following
+   gnuplot commands::
+
+    unset surface
+    set pm3d at s 
+    set palette
+    set key off
+    set view 50,50
+    set xlabel "time (ms)"
+    set ylabel "freq (MHz)"
+    set zlabel "PSD (dBW/Hz)" offset 15,0,0
+    splot "./spectrum-analyzer-output-3-0.tr" using ($1*1000.0):($2/1e6):(10*log10($3))
+
+
+
+Examples
+========
+
+
+The example programs in ``src/spectrum/examples/`` allow to see the
+example implementations described in :ref:`sec-example-model-implementations` in action.
+
+
+Troubleshooting
+===============
+
+ * **Disclaimer on inter-technology interference**: the spectrum model
+   makes it very easy to implement an inter-technology interference
+   model, but this does not guarantee
+   that the resulting model is accurate. For example, the gaussian
+   interference model implemented in the ``SpectrumInterference`` class can be used
+   to calculate inter-technology interference, however the results might not be valid in some
+   scenarios, depending on the actual waveforms involved, the number
+   of interferers, etc. Moreover, it is very important to use error
+   models that are consistent with the interference model. The
+   responsibility of ensuring that the models being used are correct 
+   is left to the user.
+
+
+
+
+
+Testing
+*******
+
+In this section we describe the test suites that are provided within
+the spectrum module.
+
+SpectrumValue test
+==================
+
+The test suite ``spectrum-value`` verifies the correct functionality of the arithmetic
+operators implemented by the ``SpectrumValue`` class. Each test case
+corresponds to a different operator. The test passes if the result
+provided by the operator implementation is equal to the reference
+values which were calculated offline by hand. Equality is verified
+within a tolerance of :math:`10^{-6}` which is to account for
+numerical errors.
+
+
+SpectrumConverter test
+======================
+
+The test suite ``spectrum-converter`` verifies the correct
+functionality of the ``SpectrumConverter`` class. Different test cases
+correspond to the conversion of different ``SpectrumValue`` instances
+to different ``SpectrumModel`` instances. Each test passes if the
+``SpectrumValue`` instance resulting from the conversion is equal to the reference
+values which were calculated offline by hand. Equality is verified
+within a tolerance of :math:`10^{-6}` which is to account for
+numerical errors.
+
+
+Describe how the model has been tested/validated.  What tests run in the
+test suite?  How much API and code is covered by the tests?  Again, 
+references to outside published work may help here.
+
+
+
+
+Interference test
+=================
+
+The test suite ``spectrum-interference`` verifies the correct
+functionality of the ``SpectrumInterference`` and
+``ShannonSpectrumErrorModel`` in a scenario involving four
+signals (an intended signal plus three interferers). Different test
+cases are created corresponding to different PSDs of the intended
+signal and different amount of transmitted bytes. The test passes if
+the output of the error model (successful or failed) coincides with
+the expected one which was determine offline by manually calculating
+the achievable rate using Shannon's formula. 
+
+
+IdealPhy test
+=============
+
+The test verifies that ``AlohaNoackNetDevice`` and
+``HalfDuplexIdealPhy`` work properly when installed in a node. The
+test recreates a scenario with two nodes (a TX and a RX) affected by a path loss such
+that a certain SNR is obtained. The TX node transmits with a
+pre-determined PHY rate and with an application layer rate which is
+larger than the PHY rate, so as to saturate the
+channel. ``PacketSocket`` is used in order to avoid protocol
+overhead. Different
+test cases correspond to different PHY rate and SNR values. For each
+test case, we calculated offline (using Shannon's formula) whether
+the PHY rate is achievable or not. Each test case passes if the
+following conditions are satisfied:
 
-Spectrum model
---------------
+ * if the PHY rate is achievable, the application throughput shall be within
+   :math:`1\%` of the PHY rate;
 
-*Placeholder chapter*
+ * if the PHY rate is not achievable, the application throughput shall
+   be zero. 
 
-|ns3| Spectrum model support advanced spectrum modeling functionalities for the simulation of wireless networks.
 
-The model is described in [Baldo2009]_. 
 
-..
-  Reference Baldo2009 is defined in lte/doc/lte-references.rst
 
diff -Naur ns-3.19/src/spectrum/examples/adhoc-aloha-ideal-phy-with-microwave-oven.cc ns-3.20/src/spectrum/examples/adhoc-aloha-ideal-phy-with-microwave-oven.cc
--- ns-3.19/src/spectrum/examples/adhoc-aloha-ideal-phy-with-microwave-oven.cc	2014-06-17 10:34:00.302637711 -0700
+++ ns-3.20/src/spectrum/examples/adhoc-aloha-ideal-phy-with-microwave-oven.cc	2014-06-17 10:33:13.662997744 -0700
@@ -144,7 +144,7 @@
   Ptr<ListPositionAllocator> nodePositionList = CreateObject<ListPositionAllocator> ();
   nodePositionList->Add (Vector (5.0, 0.0, 0.0));  // TX node
   nodePositionList->Add (Vector (0.0, 0.0, 0.0));  // RX node
-  nodePositionList->Add (Vector (10.0, 0.0, 0.0)); // Microwave Oven
+  nodePositionList->Add (Vector (30.0, 0.0, 0.0)); // Microwave Oven
   nodePositionList->Add (Vector (0.0, 0.0, 0.0));  // Spectrum Analyzer
   mobility.SetPositionAllocator (nodePositionList);
   mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
@@ -164,7 +164,7 @@
   WifiSpectrumValue5MhzFactory sf;
 
   double txPower = 0.1; // Watts
-  uint32_t channelNumber = 2;
+  uint32_t channelNumber = 4;
   Ptr<SpectrumValue> txPsd =  sf.CreateTxPowerSpectralDensity (txPower, channelNumber);
 
   // for the noise, we use the Power Spectral Density of thermal noise
@@ -191,14 +191,14 @@
   socket.SetProtocol (1);
 
   OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetAttribute ("OnTime", StringValue ("ns3::ExponentialRandomVariable[Mean=0.4]"));
-  onoff.SetAttribute ("OffTime", StringValue ("ns3::ExponentialRandomVariable[Mean=0.1]"));
+  onoff.SetAttribute ("OnTime", StringValue ("ns3::ExponentialRandomVariable[Mean=0.04]"));
+  onoff.SetAttribute ("OffTime", StringValue ("ns3::ExponentialRandomVariable[Mean=0.01]"));
   onoff.SetAttribute ("DataRate", DataRateValue (DataRate ("0.4Mbps")));
   onoff.SetAttribute ("PacketSize", UintegerValue (1500));
 
   ApplicationContainer apps = onoff.Install (ofdmNodes.Get (0));
   apps.Start (Seconds (0.0));
-  apps.Stop (Seconds (2));
+  apps.Stop (Seconds (1));
 
   Ptr<Socket> recvSink = SetupPacketReceive (ofdmNodes.Get (1));
 
@@ -223,7 +223,7 @@
 
   Simulator::Schedule (Seconds (0.1), &WaveformGenerator::Start,
                        waveformGeneratorDevices.Get (0)->GetObject<NonCommunicatingNetDevice> ()->GetPhy ()->GetObject<WaveformGenerator> ());
-
+  
 
 
   /////////////////////////////////
@@ -239,6 +239,19 @@
   spectrumAnalyzerHelper.EnableAsciiAll ("spectrum-analyzer-output");
   NetDeviceContainer spectrumAnalyzerDevices = spectrumAnalyzerHelper.Install (spectrumAnalyzerNodes);
 
+  /*
+    you can get a nice plot of the output of SpectrumAnalyzer with this gnuplot script:
+
+    unset surface
+    set pm3d at s 
+    set palette
+    set key off
+    set view 50,50
+    set xlabel "time (ms)"
+    set ylabel "freq (MHz)"
+    set zlabel "PSD (dBW/Hz)" offset 15,0,0
+    splot "./spectrum-analyzer-output-3-0.tr" using ($1*1000.0):($2/1e6):(10*log10($3))
+  */
 
 
 
diff -Naur ns-3.19/src/spectrum/examples/waf ns-3.20/src/spectrum/examples/waf
--- ns-3.19/src/spectrum/examples/waf	2014-06-17 10:34:00.302637711 -0700
+++ ns-3.20/src/spectrum/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/spectrum/model/aloha-noack-mac-header.cc ns-3.20/src/spectrum/model/aloha-noack-mac-header.cc
--- ns-3.19/src/spectrum/model/aloha-noack-mac-header.cc	2014-06-17 10:34:00.306637681 -0700
+++ ns-3.20/src/spectrum/model/aloha-noack-mac-header.cc	2014-06-17 10:33:13.666997713 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (AlohaNoackMacHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AlohaNoackMacHeader);
 
 TypeId
 AlohaNoackMacHeader::GetTypeId (void)
diff -Naur ns-3.19/src/spectrum/model/aloha-noack-net-device.cc ns-3.20/src/spectrum/model/aloha-noack-net-device.cc
--- ns-3.19/src/spectrum/model/aloha-noack-net-device.cc	2014-06-17 10:34:00.307637673 -0700
+++ ns-3.20/src/spectrum/model/aloha-noack-net-device.cc	2014-06-17 10:33:13.667997706 -0700
@@ -55,8 +55,7 @@
 }
 
 
-NS_OBJECT_ENSURE_REGISTERED (AlohaNoackNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AlohaNoackNetDevice);
 
 TypeId
 AlohaNoackNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/spectrum/model/constant-spectrum-propagation-loss.cc ns-3.20/src/spectrum/model/constant-spectrum-propagation-loss.cc
--- ns-3.19/src/spectrum/model/constant-spectrum-propagation-loss.cc	2014-06-17 10:34:00.308637665 -0700
+++ ns-3.20/src/spectrum/model/constant-spectrum-propagation-loss.cc	2014-06-17 10:33:13.668997698 -0700
@@ -31,8 +31,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantSpectrumPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantSpectrumPropagationLossModel);
 
 ConstantSpectrumPropagationLossModel::ConstantSpectrumPropagationLossModel ()
 {
diff -Naur ns-3.19/src/spectrum/model/friis-spectrum-propagation-loss.cc ns-3.20/src/spectrum/model/friis-spectrum-propagation-loss.cc
--- ns-3.19/src/spectrum/model/friis-spectrum-propagation-loss.cc	2014-06-17 10:34:00.308637665 -0700
+++ ns-3.20/src/spectrum/model/friis-spectrum-propagation-loss.cc	2014-06-17 10:33:13.668997698 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (FriisSpectrumPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FriisSpectrumPropagationLossModel);
 
 
 FriisSpectrumPropagationLossModel::FriisSpectrumPropagationLossModel ()
diff -Naur ns-3.19/src/spectrum/model/half-duplex-ideal-phy.cc ns-3.20/src/spectrum/model/half-duplex-ideal-phy.cc
--- ns-3.19/src/spectrum/model/half-duplex-ideal-phy.cc	2014-06-17 10:34:00.310637650 -0700
+++ ns-3.20/src/spectrum/model/half-duplex-ideal-phy.cc	2014-06-17 10:33:13.670997683 -0700
@@ -36,8 +36,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (HalfDuplexIdealPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (HalfDuplexIdealPhy);
 
 HalfDuplexIdealPhy::HalfDuplexIdealPhy ()
   : m_mobility (0),
diff -Naur ns-3.19/src/spectrum/model/microwave-oven-spectrum-value-helper.cc ns-3.20/src/spectrum/model/microwave-oven-spectrum-value-helper.cc
--- ns-3.19/src/spectrum/model/microwave-oven-spectrum-value-helper.cc	2014-06-17 10:34:00.311637642 -0700
+++ ns-3.20/src/spectrum/model/microwave-oven-spectrum-value-helper.cc	2014-06-17 10:33:13.670997683 -0700
@@ -26,11 +26,11 @@
 namespace ns3 {
 
 
-Ptr<SpectrumModel> g_MicrowaveOvenSpectrumModel5Mhz;
-Ptr<SpectrumModel> g_MicrowaveOvenSpectrumModel6Mhz;
+static Ptr<SpectrumModel> g_MicrowaveOvenSpectrumModel5Mhz;
+static Ptr<SpectrumModel> g_MicrowaveOvenSpectrumModel6Mhz;
 
 
-class MicrowaveOvenSpectrumModel5MhzInitializer
+static class MicrowaveOvenSpectrumModel5MhzInitializer
 {
 public:
   MicrowaveOvenSpectrumModel5MhzInitializer ()
@@ -52,7 +52,7 @@
 
 
 
-class MicrowaveOvenSpectrumModel6MhzInitializer
+static class MicrowaveOvenSpectrumModel6MhzInitializer
 {
 public:
   MicrowaveOvenSpectrumModel6MhzInitializer ()
diff -Naur ns-3.19/src/spectrum/model/multi-model-spectrum-channel.cc ns-3.20/src/spectrum/model/multi-model-spectrum-channel.cc
--- ns-3.19/src/spectrum/model/multi-model-spectrum-channel.cc	2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/src/spectrum/model/multi-model-spectrum-channel.cc	2014-06-17 10:33:13.671997675 -0700
@@ -45,8 +45,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (MultiModelSpectrumChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MultiModelSpectrumChannel);
 
 
 std::ostream& operator<< (std::ostream& lhs, TxSpectrumModelInfoMap_t& rhs)
diff -Naur ns-3.19/src/spectrum/model/non-communicating-net-device.cc ns-3.20/src/spectrum/model/non-communicating-net-device.cc
--- ns-3.19/src/spectrum/model/non-communicating-net-device.cc	2014-06-17 10:34:00.313637626 -0700
+++ ns-3.20/src/spectrum/model/non-communicating-net-device.cc	2014-06-17 10:33:13.672997667 -0700
@@ -36,8 +36,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (NonCommunicatingNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NonCommunicatingNetDevice);
 
 TypeId
 NonCommunicatingNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/spectrum/model/single-model-spectrum-channel.cc ns-3.20/src/spectrum/model/single-model-spectrum-channel.cc
--- ns-3.19/src/spectrum/model/single-model-spectrum-channel.cc	2014-06-17 10:34:00.314637619 -0700
+++ ns-3.20/src/spectrum/model/single-model-spectrum-channel.cc	2014-06-17 10:33:13.673997660 -0700
@@ -44,8 +44,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (SingleModelSpectrumChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SingleModelSpectrumChannel);
 
 SingleModelSpectrumChannel::SingleModelSpectrumChannel ()
 {
diff -Naur ns-3.19/src/spectrum/model/spectrum-analyzer.cc ns-3.20/src/spectrum/model/spectrum-analyzer.cc
--- ns-3.19/src/spectrum/model/spectrum-analyzer.cc	2014-06-17 10:34:00.314637619 -0700
+++ ns-3.20/src/spectrum/model/spectrum-analyzer.cc	2014-06-17 10:33:13.674997652 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SpectrumAnalyzer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SpectrumAnalyzer);
 
 SpectrumAnalyzer::SpectrumAnalyzer ()
   : m_mobility (0),
diff -Naur ns-3.19/src/spectrum/model/spectrum-channel.cc ns-3.20/src/spectrum/model/spectrum-channel.cc
--- ns-3.19/src/spectrum/model/spectrum-channel.cc	2014-06-17 10:34:00.315637611 -0700
+++ ns-3.20/src/spectrum/model/spectrum-channel.cc	2014-06-17 10:33:13.675997644 -0700
@@ -24,8 +24,7 @@
 namespace ns3 {
 
 
-NS_OBJECT_ENSURE_REGISTERED (SpectrumChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SpectrumChannel);
 
 TypeId
 SpectrumChannel::GetTypeId (void)
diff -Naur ns-3.19/src/spectrum/model/spectrum-phy.cc ns-3.20/src/spectrum/model/spectrum-phy.cc
--- ns-3.19/src/spectrum/model/spectrum-phy.cc	2014-06-17 10:34:00.319637580 -0700
+++ ns-3.20/src/spectrum/model/spectrum-phy.cc	2014-06-17 10:33:13.679997613 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SpectrumPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SpectrumPhy);
 
 
 TypeId
diff -Naur ns-3.19/src/spectrum/model/spectrum-propagation-loss-model.cc ns-3.20/src/spectrum/model/spectrum-propagation-loss-model.cc
--- ns-3.19/src/spectrum/model/spectrum-propagation-loss-model.cc	2014-06-17 10:34:00.320637573 -0700
+++ ns-3.20/src/spectrum/model/spectrum-propagation-loss-model.cc	2014-06-17 10:33:13.680997606 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SpectrumPropagationLossModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SpectrumPropagationLossModel);
 
 SpectrumPropagationLossModel::SpectrumPropagationLossModel ()
   : m_next (0)
diff -Naur ns-3.19/src/spectrum/model/waveform-generator.cc ns-3.20/src/spectrum/model/waveform-generator.cc
--- ns-3.19/src/spectrum/model/waveform-generator.cc	2014-06-17 10:34:00.323637549 -0700
+++ ns-3.20/src/spectrum/model/waveform-generator.cc	2014-06-17 10:33:13.682997590 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WaveformGenerator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WaveformGenerator);
 
 WaveformGenerator::WaveformGenerator ()
   : m_mobility (0),
diff -Naur ns-3.19/src/spectrum/model/wifi-spectrum-value-helper.cc ns-3.20/src/spectrum/model/wifi-spectrum-value-helper.cc
--- ns-3.19/src/spectrum/model/wifi-spectrum-value-helper.cc	2014-06-17 10:34:00.324637542 -0700
+++ ns-3.20/src/spectrum/model/wifi-spectrum-value-helper.cc	2014-06-17 10:33:13.683997582 -0700
@@ -24,7 +24,7 @@
 namespace ns3 {
 
 
-Ptr<SpectrumModel> g_WifiSpectrumModel5Mhz;
+static Ptr<SpectrumModel> g_WifiSpectrumModel5Mhz;
 
 WifiSpectrumValueHelper::~WifiSpectrumValueHelper ()
 {
@@ -34,7 +34,7 @@
 {
 }
 
-class WifiSpectrumModel5MhzInitializer
+static class WifiSpectrumModel5MhzInitializer
 {
 public:
   WifiSpectrumModel5MhzInitializer ()
@@ -105,10 +105,10 @@
   NS_ASSERT (channel >= 1);
   NS_ASSERT (channel <= 13);
 
-  (*rf)[channel - 1] = 1;
-  (*rf)[channel    ] = 1;
-  (*rf)[channel + 1] = 1;
-  (*rf)[channel + 2] = 1;
+  (*rf)[channel + 3] = 1;
+  (*rf)[channel + 4] = 1;
+  (*rf)[channel + 5] = 1;
+  (*rf)[channel + 6] = 1;
 
   return rf;
 }
diff -Naur ns-3.19/src/spectrum/test/spectrum-ideal-phy-test.cc ns-3.20/src/spectrum/test/spectrum-ideal-phy-test.cc
--- ns-3.19/src/spectrum/test/spectrum-ideal-phy-test.cc	2014-06-17 10:34:00.325637534 -0700
+++ ns-3.20/src/spectrum/test/spectrum-ideal-phy-test.cc	2014-06-17 10:33:13.684997575 -0700
@@ -52,7 +52,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("SpectrumIdealPhyTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 static uint64_t g_rxBytes;
@@ -246,5 +246,3 @@
 }
 
 static SpectrumIdealPhyTestSuite g_spectrumIdealPhyTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/spectrum/test/spectrum-interference-test.cc ns-3.20/src/spectrum/test/spectrum-interference-test.cc
--- ns-3.19/src/spectrum/test/spectrum-interference-test.cc	2014-06-17 10:34:00.325637534 -0700
+++ ns-3.20/src/spectrum/test/spectrum-interference-test.cc	2014-06-17 10:33:13.685997567 -0700
@@ -30,7 +30,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("SpectrumInterferenceTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 
@@ -193,5 +193,3 @@
 }
 
 static SpectrumInterferenceTestSuite spectrumInterferenceTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/spectrum/test/spectrum-value-test.cc ns-3.20/src/spectrum/test/spectrum-value-test.cc
--- ns-3.19/src/spectrum/test/spectrum-value-test.cc	2014-06-17 10:34:00.326637526 -0700
+++ ns-3.20/src/spectrum/test/spectrum-value-test.cc	2014-06-17 10:33:13.685997567 -0700
@@ -30,7 +30,7 @@
 
 // NS_LOG_COMPONENT_DEFINE ("SpectrumValueTest");
 
-namespace ns3 {
+using namespace ns3;
 
 
 #define TOLERANCE 1e-6
@@ -340,7 +340,3 @@
 // static instance of test suites
 static SpectrumValueTestSuite g_SpectrumValueTestSuite;
 static SpectrumConverterTestSuite g_SpectrumConverterTestSuite;
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/stats/bindings/modulegen__gcc_ILP32.py ns-3.20/src/stats/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/stats/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.330637496 -0700
+++ ns-3.20/src/stats/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.689997536 -0700
@@ -54,6 +54,8 @@
     module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
     ## data-calculator.h (module 'stats'): ns3::StatisticalSummary [class]
     module.add_class('StatisticalSummary', allow_subclassing=True)
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<bool> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['bool'])
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
@@ -76,6 +78,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## gnuplot.h (module 'stats'): ns3::Gnuplot2dDataset [class]
     module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
     ## gnuplot.h (module 'stats'): ns3::Gnuplot2dDataset::Style [enumeration]
@@ -192,12 +196,12 @@
     module.add_class('BooleanProbe', parent=root_module['ns3::Probe'])
     ## double-probe.h (module 'stats'): ns3::DoubleProbe [class]
     module.add_class('DoubleProbe', parent=root_module['ns3::Probe'])
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >', 'ns3::DataCalculatorList')
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >*', 'ns3::DataCalculatorList*')
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >&', 'ns3::DataCalculatorList&')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >', 'ns3::MetadataList')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >*', 'ns3::MetadataList*')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >&', 'ns3::MetadataList&')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >', u'ns3::DataCalculatorList')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >*', u'ns3::DataCalculatorList*')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >&', u'ns3::DataCalculatorList&')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >', u'ns3::MetadataList')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >*', u'ns3::MetadataList*')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >&', u'ns3::MetadataList&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -226,12 +230,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -273,6 +277,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Bool_methods(root_module, root_module['ns3::TracedValue< bool >'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TracedValue__Unsigned_char_methods(root_module, root_module['ns3::TracedValue< unsigned char >'])
@@ -980,6 +985,14 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Bool_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -1347,62 +1360,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1411,6 +1380,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1451,6 +1422,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
@@ -1691,13 +1664,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1724,6 +1699,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/stats/bindings/modulegen__gcc_LP64.py ns-3.20/src/stats/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/stats/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.333637472 -0700
+++ ns-3.20/src/stats/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.692997513 -0700
@@ -54,6 +54,8 @@
     module.add_class('Simulator', destructor_visibility='private', import_from_module='ns.core')
     ## data-calculator.h (module 'stats'): ns3::StatisticalSummary [class]
     module.add_class('StatisticalSummary', allow_subclassing=True)
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<bool> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['bool'])
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
@@ -76,6 +78,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## gnuplot.h (module 'stats'): ns3::Gnuplot2dDataset [class]
     module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
     ## gnuplot.h (module 'stats'): ns3::Gnuplot2dDataset::Style [enumeration]
@@ -192,12 +196,12 @@
     module.add_class('BooleanProbe', parent=root_module['ns3::Probe'])
     ## double-probe.h (module 'stats'): ns3::DoubleProbe [class]
     module.add_class('DoubleProbe', parent=root_module['ns3::Probe'])
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >', 'ns3::DataCalculatorList')
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >*', 'ns3::DataCalculatorList*')
-    typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >&', 'ns3::DataCalculatorList&')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >', 'ns3::MetadataList')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >*', 'ns3::MetadataList*')
-    typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >&', 'ns3::MetadataList&')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >', u'ns3::DataCalculatorList')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >*', u'ns3::DataCalculatorList*')
+    typehandlers.add_type_alias(u'std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >&', u'ns3::DataCalculatorList&')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >', u'ns3::MetadataList')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >*', u'ns3::MetadataList*')
+    typehandlers.add_type_alias(u'std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >&', u'ns3::MetadataList&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -226,12 +230,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -273,6 +277,7 @@
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Bool_methods(root_module, root_module['ns3::TracedValue< bool >'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TracedValue__Unsigned_char_methods(root_module, root_module['ns3::TracedValue< unsigned char >'])
@@ -980,6 +985,14 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Bool_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -1347,62 +1360,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1411,6 +1380,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1451,6 +1422,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
@@ -1691,13 +1664,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1724,6 +1699,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/stats/examples/double-probe-example.cc ns-3.20/src/stats/examples/double-probe-example.cc
--- ns-3.19/src/stats/examples/double-probe-example.cc	2014-06-17 10:34:00.341637411 -0700
+++ ns-3.20/src/stats/examples/double-probe-example.cc	2014-06-17 10:33:13.700997451 -0700
@@ -50,8 +50,7 @@
 
 };
 
-NS_OBJECT_ENSURE_REGISTERED (Emitter)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Emitter);
 
 TypeId
 Emitter::GetTypeId (void)
diff -Naur ns-3.19/src/stats/examples/file-helper-example.cc ns-3.20/src/stats/examples/file-helper-example.cc
--- ns-3.19/src/stats/examples/file-helper-example.cc	2014-06-17 10:34:00.342637403 -0700
+++ ns-3.20/src/stats/examples/file-helper-example.cc	2014-06-17 10:33:13.700997451 -0700
@@ -53,8 +53,7 @@
 
 };
 
-NS_OBJECT_ENSURE_REGISTERED (Emitter)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Emitter);
 
 TypeId
 Emitter::GetTypeId (void)
diff -Naur ns-3.19/src/stats/examples/gnuplot-helper-example.cc ns-3.20/src/stats/examples/gnuplot-helper-example.cc
--- ns-3.19/src/stats/examples/gnuplot-helper-example.cc	2014-06-17 10:34:00.342637403 -0700
+++ ns-3.20/src/stats/examples/gnuplot-helper-example.cc	2014-06-17 10:33:13.701997443 -0700
@@ -53,8 +53,7 @@
 
 };
 
-NS_OBJECT_ENSURE_REGISTERED (Emitter)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Emitter);
 
 TypeId
 Emitter::GetTypeId (void)
diff -Naur ns-3.19/src/stats/helper/file-helper.cc ns-3.20/src/stats/helper/file-helper.cc
--- ns-3.19/src/stats/helper/file-helper.cc	2014-06-17 10:34:00.343637395 -0700
+++ ns-3.20/src/stats/helper/file-helper.cc	2014-06-17 10:33:13.702997436 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("FileHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("FileHelper");
 
 FileHelper::FileHelper ()
   : m_aggregator                     (0),
diff -Naur ns-3.19/src/stats/helper/gnuplot-helper.cc ns-3.20/src/stats/helper/gnuplot-helper.cc
--- ns-3.19/src/stats/helper/gnuplot-helper.cc	2014-06-17 10:34:00.344637387 -0700
+++ ns-3.20/src/stats/helper/gnuplot-helper.cc	2014-06-17 10:33:13.703997428 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("GnuplotHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("GnuplotHelper");
 
 GnuplotHelper::GnuplotHelper ()
   : m_aggregator                     (0),
diff -Naur ns-3.19/src/stats/model/boolean-probe.cc ns-3.20/src/stats/model/boolean-probe.cc
--- ns-3.19/src/stats/model/boolean-probe.cc	2014-06-17 10:34:00.346637372 -0700
+++ ns-3.20/src/stats/model/boolean-probe.cc	2014-06-17 10:33:13.705997412 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BooleanProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BooleanProbe);
 
 TypeId
 BooleanProbe::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/data-calculator.cc ns-3.20/src/stats/model/data-calculator.cc
--- ns-3.19/src/stats/model/data-calculator.cc	2014-06-17 10:34:00.346637372 -0700
+++ ns-3.20/src/stats/model/data-calculator.cc	2014-06-17 10:33:13.705997412 -0700
@@ -35,18 +35,18 @@
 DataCalculator::DataCalculator() :
   m_enabled (true)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 
 DataCalculator::~DataCalculator()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 
 void
 DataCalculator::DoDispose (void)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   Simulator::Cancel (m_startEvent);
   Simulator::Cancel (m_stopEvent);
@@ -59,6 +59,8 @@
 void
 DataCalculator::SetKey (const std::string key)
 {
+  NS_LOG_FUNCTION (this << key);
+
   m_key = key;
   // end DataCalculator::SetKey
 }
@@ -66,6 +68,8 @@
 std::string
 DataCalculator::GetKey () const
 {
+  NS_LOG_FUNCTION (this);
+
   return m_key;
   // end DataCalculator::GetKey
 }
@@ -74,6 +78,8 @@
 void
 DataCalculator::SetContext (const std::string context)
 {
+  NS_LOG_FUNCTION (this << context);
+
   m_context = context;
   // end DataCalculator::SetContext
 }
@@ -81,6 +87,8 @@
 std::string
 DataCalculator::GetContext () const
 {
+  NS_LOG_FUNCTION (this);
+
   return m_context;
   // end DataCalculator::GetContext
 }
@@ -88,6 +96,8 @@
 void
 DataCalculator::Enable ()
 {
+  NS_LOG_FUNCTION (this);
+
   m_enabled = true;
   // end DataCalculator::Enable
 }
@@ -95,6 +105,8 @@
 void
 DataCalculator::Disable ()
 {
+  NS_LOG_FUNCTION (this);
+
   m_enabled = false;
   // end DataCalculator::Disable
 }
@@ -102,6 +114,8 @@
 bool
 DataCalculator::GetEnabled () const
 {
+  NS_LOG_FUNCTION (this);
+
   return m_enabled;
   // end DataCalculator::GetEnabled
 }
@@ -110,6 +124,7 @@
 void
 DataCalculator::Start (const Time& startTime)
 {
+  NS_LOG_FUNCTION (this << startTime);
 
   m_startEvent = Simulator::Schedule (startTime,
                                       &DataCalculator::Enable, this);
@@ -120,6 +135,8 @@
 void
 DataCalculator::Stop (const Time& stopTime)
 {
+  NS_LOG_FUNCTION (this << stopTime);
+
   m_stopEvent = Simulator::Schedule (stopTime,
                                      &DataCalculator::Disable, this);
   // end DataCalculator::Stop
diff -Naur ns-3.19/src/stats/model/data-collection-object.cc ns-3.20/src/stats/model/data-collection-object.cc
--- ns-3.19/src/stats/model/data-collection-object.cc	2014-06-17 10:34:00.347637364 -0700
+++ ns-3.20/src/stats/model/data-collection-object.cc	2014-06-17 10:33:13.706997405 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DataCollectionObject)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DataCollectionObject);
 
 TypeId
 DataCollectionObject::GetTypeId (void)
diff -Naur ns-3.19/src/stats/model/data-collector.cc ns-3.20/src/stats/model/data-collector.cc
--- ns-3.19/src/stats/model/data-collector.cc	2014-06-17 10:34:00.348637356 -0700
+++ ns-3.20/src/stats/model/data-collector.cc	2014-06-17 10:33:13.707997397 -0700
@@ -31,17 +31,17 @@
 //--------------------------------------------------------------
 //----------------------------------------------
 DataCollector::DataCollector() {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   // end DataCollector::DataCollector
 }
 
 DataCollector::~DataCollector() {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   // end DataCollector::~DataCollector
 }
 
 void DataCollector::DoDispose () {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   m_calcList.clear ();
   m_metadata.clear ();
@@ -57,6 +57,7 @@
                             std::string runID,
                             std::string description)
 {
+  NS_LOG_FUNCTION (this << experiment << strategy << input << runID << description);
 
   m_experimentLabel = experiment;
   m_strategyLabel = strategy;
@@ -70,6 +71,7 @@
 void
 DataCollector::AddDataCalculator (Ptr<DataCalculator> datac)
 {
+  NS_LOG_FUNCTION (this << datac);
 
   m_calcList.push_back (datac);
 
@@ -92,6 +94,8 @@
 void
 DataCollector::AddMetadata (std::string key, std::string value)
 {
+  NS_LOG_FUNCTION (this << key << value);
+
   std::pair<std::string, std::string> blob (key, value);
   m_metadata.push_back (blob);
   // end DataCollector::AddMetadata
@@ -99,6 +103,8 @@
 void
 DataCollector::AddMetadata (std::string key, uint32_t value)
 {
+  NS_LOG_FUNCTION (this << key << value);
+
   std::stringstream st;
   st << value;
 
@@ -109,6 +115,8 @@
 void
 DataCollector::AddMetadata (std::string key, double value)
 {
+  NS_LOG_FUNCTION (this << key << value);
+
   std::stringstream st;
   st << value;
 
diff -Naur ns-3.19/src/stats/model/data-output-interface.cc ns-3.20/src/stats/model/data-output-interface.cc
--- ns-3.19/src/stats/model/data-output-interface.cc	2014-06-17 10:34:00.348637356 -0700
+++ ns-3.20/src/stats/model/data-output-interface.cc	2014-06-17 10:33:13.707997397 -0700
@@ -31,16 +31,16 @@
 //----------------------------------------------
 DataOutputInterface::DataOutputInterface()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 DataOutputInterface::~DataOutputInterface()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 void
 DataOutputInterface::DoDispose ()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   Object::DoDispose ();
   // end DataOutputInterface::DoDispose
@@ -49,11 +49,15 @@
 void
 DataOutputInterface::SetFilePrefix (const std::string prefix)
 {
+  NS_LOG_FUNCTION (this << prefix);
+
   m_filePrefix = prefix;
 }
 
 std::string
 DataOutputInterface::GetFilePrefix () const
 {
+  NS_LOG_FUNCTION (this);
+
   return m_filePrefix;
 }
diff -Naur ns-3.19/src/stats/model/double-probe.cc ns-3.20/src/stats/model/double-probe.cc
--- ns-3.19/src/stats/model/double-probe.cc	2014-06-17 10:34:00.349637349 -0700
+++ ns-3.20/src/stats/model/double-probe.cc	2014-06-17 10:33:13.708997389 -0700
@@ -32,8 +32,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (DoubleProbe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DoubleProbe);
 
 TypeId
 DoubleProbe::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/file-aggregator.cc ns-3.20/src/stats/model/file-aggregator.cc
--- ns-3.19/src/stats/model/file-aggregator.cc	2014-06-17 10:34:00.350637341 -0700
+++ ns-3.20/src/stats/model/file-aggregator.cc	2014-06-17 10:33:13.709997382 -0700
@@ -28,11 +28,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("FileAggregator")
-  ;
+NS_LOG_COMPONENT_DEFINE ("FileAggregator");
 
-NS_OBJECT_ENSURE_REGISTERED (FileAggregator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FileAggregator);
 
 TypeId
 FileAggregator::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/gnuplot-aggregator.cc ns-3.20/src/stats/model/gnuplot-aggregator.cc
--- ns-3.19/src/stats/model/gnuplot-aggregator.cc	2014-06-17 10:34:00.351637333 -0700
+++ ns-3.20/src/stats/model/gnuplot-aggregator.cc	2014-06-17 10:33:13.710997374 -0700
@@ -28,10 +28,8 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("GnuplotAggregator")
-  ;
-NS_OBJECT_ENSURE_REGISTERED (GnuplotAggregator)
-  ;
+NS_LOG_COMPONENT_DEFINE ("GnuplotAggregator");
+NS_OBJECT_ENSURE_REGISTERED (GnuplotAggregator);
 
 TypeId
 GnuplotAggregator::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/omnet-data-output.cc ns-3.20/src/stats/model/omnet-data-output.cc
--- ns-3.19/src/stats/model/omnet-data-output.cc	2014-06-17 10:34:00.353637318 -0700
+++ ns-3.20/src/stats/model/omnet-data-output.cc	2014-06-17 10:33:13.712997359 -0700
@@ -37,18 +37,18 @@
 //----------------------------------------------
 OmnetDataOutput::OmnetDataOutput()
 {
-  m_filePrefix = "data";
+  NS_LOG_FUNCTION (this);
 
-  NS_LOG_FUNCTION_NOARGS ();
+  m_filePrefix = "data";
 }
 OmnetDataOutput::~OmnetDataOutput()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 void
 OmnetDataOutput::DoDispose ()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   DataOutputInterface::DoDispose ();
   // end OmnetDataOutput::DoDispose
@@ -85,6 +85,7 @@
 void
 OmnetDataOutput::Output (DataCollector &dc)
 {
+  NS_LOG_FUNCTION (this << &dc);
 
   std::ofstream scalarFile;
   std::string fn = m_filePrefix +"-"+dc.GetRunLabel ()+ ".sca";
@@ -139,6 +140,7 @@
   (std::ostream *scalar) :
   m_scalar (scalar)
 {
+  NS_LOG_FUNCTION (this << scalar);
 }
 
 void
@@ -146,6 +148,8 @@
                                                        std::string name,
                                                        const StatisticalSummary *statSum)
 {
+  NS_LOG_FUNCTION (this << context << name << statSum);
+
   if (context == "")
     context = ".";
   if (name == "")
@@ -172,6 +176,8 @@
                                                        std::string name,
                                                        int val)
 {
+  NS_LOG_FUNCTION (this << context << name << val);
+
   if (context == "")
     context = ".";
   if (name == "")
@@ -185,6 +191,8 @@
                                                        std::string name,
                                                        uint32_t val)
 {
+  NS_LOG_FUNCTION (this << context << name << val);
+
   if (context == "")
     context = ".";
   if (name == "")
@@ -198,6 +206,8 @@
                                                        std::string name,
                                                        double val)
 {
+  NS_LOG_FUNCTION (this << context << name << val);
+
   if (context == "")
     context = ".";
   if (name == "")
@@ -211,6 +221,8 @@
                                                        std::string name,
                                                        std::string val)
 {
+  NS_LOG_FUNCTION (this << context << name << val);
+
   if (context == "")
     context = ".";
   if (name == "")
@@ -224,6 +236,8 @@
                                                        std::string name,
                                                        Time val)
 {
+  NS_LOG_FUNCTION (this << context << name << val);
+
   if (context == "")
     context = ".";
   if (name == "")
diff -Naur ns-3.19/src/stats/model/probe.cc ns-3.20/src/stats/model/probe.cc
--- ns-3.19/src/stats/model/probe.cc	2014-06-17 10:34:00.354637310 -0700
+++ ns-3.20/src/stats/model/probe.cc	2014-06-17 10:33:13.713997351 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Probe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Probe);
 
 TypeId
 Probe::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/sqlite-data-output.cc ns-3.20/src/stats/model/sqlite-data-output.cc
--- ns-3.19/src/stats/model/sqlite-data-output.cc	2014-06-17 10:34:00.354637310 -0700
+++ ns-3.20/src/stats/model/sqlite-data-output.cc	2014-06-17 10:33:13.713997351 -0700
@@ -37,17 +37,18 @@
 //----------------------------------------------
 SqliteDataOutput::SqliteDataOutput()
 {
+  NS_LOG_FUNCTION (this);
+
   m_filePrefix = "data";
-  NS_LOG_FUNCTION_NOARGS ();
 }
 SqliteDataOutput::~SqliteDataOutput()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 void
 SqliteDataOutput::DoDispose ()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   DataOutputInterface::DoDispose ();
   // end SqliteDataOutput::DoDispose
@@ -55,6 +56,8 @@
 
 int
 SqliteDataOutput::Exec (std::string exe) {
+  NS_LOG_FUNCTION (this << exe);
+
   int res;
   char **result;
   int nrows, ncols;
@@ -100,6 +103,8 @@
 void
 SqliteDataOutput::Output (DataCollector &dc)
 {
+  NS_LOG_FUNCTION (this << &dc);
+
   std::string m_dbFile = m_filePrefix + ".db";
 
   if (sqlite3_open (m_dbFile.c_str (), &m_db)) {
@@ -149,6 +154,7 @@
   m_owner (owner),
   m_runLabel (run)
 {
+  NS_LOG_FUNCTION (this << owner << run);
 
   m_owner->Exec ("create table if not exists Singletons ( run text, name text, variable text, value )");
 
@@ -160,6 +166,8 @@
                                                          std::string variable,
                                                          const StatisticalSummary *statSum)
 {
+  NS_LOG_FUNCTION (this << key << variable << statSum);
+
   OutputSingleton (key,variable+"-count", (double)statSum->getCount ());
   if (!isNaN (statSum->getSum ()))
     OutputSingleton (key,variable+"-total", statSum->getSum ());
@@ -179,6 +187,7 @@
                                                          std::string variable,
                                                          int val)
 {
+  NS_LOG_FUNCTION (this << key << variable << val);
 
   std::stringstream sstr;
   sstr << "insert into Singletons (run,name,variable,value) values ('" <<
@@ -195,6 +204,8 @@
                                                          std::string variable,
                                                          uint32_t val)
 {
+  NS_LOG_FUNCTION (this << key << variable << val);
+
   std::stringstream sstr;
   sstr << "insert into Singletons (run,name,variable,value) values ('" <<
   m_runLabel << "', '" <<
@@ -209,6 +220,8 @@
                                                          std::string variable,
                                                          double val)
 {
+  NS_LOG_FUNCTION (this << key << variable << val);
+
   std::stringstream sstr;
   sstr << "insert into Singletons (run,name,variable,value) values ('" <<
   m_runLabel << "', '" <<
@@ -223,6 +236,8 @@
                                                          std::string variable,
                                                          std::string val)
 {
+  NS_LOG_FUNCTION (this << key << variable << val);
+
   std::stringstream sstr;
   sstr << "insert into Singletons (run,name,variable,value) values ('" <<
   m_runLabel << "', '" <<
@@ -237,6 +252,8 @@
                                                          std::string variable,
                                                          Time val)
 {
+  NS_LOG_FUNCTION (this << key << variable << val);
+
   std::stringstream sstr;
   sstr << "insert into Singletons (run,name,variable,value) values ('" <<
   m_runLabel << "', '" <<
diff -Naur ns-3.19/src/stats/model/time-data-calculators.cc ns-3.20/src/stats/model/time-data-calculators.cc
--- ns-3.19/src/stats/model/time-data-calculators.cc	2014-06-17 10:34:00.355637302 -0700
+++ ns-3.20/src/stats/model/time-data-calculators.cc	2014-06-17 10:33:13.714997343 -0700
@@ -32,14 +32,19 @@
 //----------------------------------------------
 TimeMinMaxAvgTotalCalculator::TimeMinMaxAvgTotalCalculator()
 {
+  NS_LOG_FUNCTION (this);
+
   m_count = 0;
 }
 TimeMinMaxAvgTotalCalculator::~TimeMinMaxAvgTotalCalculator()
 {
+  NS_LOG_FUNCTION (this);
 }
 void
 TimeMinMaxAvgTotalCalculator::DoDispose (void)
 {
+  NS_LOG_FUNCTION (this);
+
   DataCalculator::DoDispose ();
   // TimeMinMaxAvgTotalCalculator::DoDispose
 }
@@ -47,6 +52,8 @@
 void
 TimeMinMaxAvgTotalCalculator::Update (const Time i)
 {
+  NS_LOG_FUNCTION (this << i);
+
   if (m_enabled) {
       if (m_count) {
           m_total += i;
@@ -70,6 +77,8 @@
 void
 TimeMinMaxAvgTotalCalculator::Output (DataOutputCallback &callback) const
 {
+  NS_LOG_FUNCTION (this << &callback);
+
   callback.OutputSingleton (m_context, m_key + "-count", m_count);
   if (m_count > 0) {
       callback.OutputSingleton (m_context, m_key + "-total", m_total);
diff -Naur ns-3.19/src/stats/model/time-series-adaptor.cc ns-3.20/src/stats/model/time-series-adaptor.cc
--- ns-3.19/src/stats/model/time-series-adaptor.cc	2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/src/stats/model/time-series-adaptor.cc	2014-06-17 10:33:13.715997336 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (TimeSeriesAdaptor)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TimeSeriesAdaptor);
 
 TypeId
 TimeSeriesAdaptor::GetTypeId (void)
diff -Naur ns-3.19/src/stats/model/uinteger-16-probe.cc ns-3.20/src/stats/model/uinteger-16-probe.cc
--- ns-3.19/src/stats/model/uinteger-16-probe.cc	2014-06-17 10:34:00.357637287 -0700
+++ ns-3.20/src/stats/model/uinteger-16-probe.cc	2014-06-17 10:33:13.716997328 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Uinteger16Probe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Uinteger16Probe);
 
 TypeId
 Uinteger16Probe::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/uinteger-32-probe.cc ns-3.20/src/stats/model/uinteger-32-probe.cc
--- ns-3.19/src/stats/model/uinteger-32-probe.cc	2014-06-17 10:34:00.357637287 -0700
+++ ns-3.20/src/stats/model/uinteger-32-probe.cc	2014-06-17 10:33:13.716997328 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Uinteger32Probe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Uinteger32Probe);
 
 TypeId
 Uinteger32Probe::GetTypeId ()
diff -Naur ns-3.19/src/stats/model/uinteger-8-probe.cc ns-3.20/src/stats/model/uinteger-8-probe.cc
--- ns-3.19/src/stats/model/uinteger-8-probe.cc	2014-06-17 10:34:00.358637279 -0700
+++ ns-3.20/src/stats/model/uinteger-8-probe.cc	2014-06-17 10:33:13.717997320 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Uinteger8Probe)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Uinteger8Probe);
 
 TypeId
 Uinteger8Probe::GetTypeId ()
diff -Naur ns-3.19/src/tap-bridge/bindings/modulegen__gcc_ILP32.py ns-3.20/src/tap-bridge/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/tap-bridge/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.376637141 -0700
+++ ns-3.20/src/tap-bridge/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.722997281 -0700
@@ -100,6 +100,8 @@
     module.add_class('TagBuffer', import_from_module='ns.network')
     ## tap-bridge-helper.h (module 'tap-bridge'): ns3::TapBridgeHelper [class]
     module.add_class('TapBridgeHelper')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -112,6 +114,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -248,12 +252,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -308,6 +312,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TapBridgeHelper_methods(root_module, root_module['ns3::TapBridgeHelper'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -618,6 +623,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -630,6 +639,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1938,6 +1951,14 @@
                    [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2135,62 +2156,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2199,6 +2176,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2239,6 +2218,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -2520,13 +2501,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2553,6 +2536,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3692,10 +3680,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TapBridge_methods(root_module, cls):
diff -Naur ns-3.19/src/tap-bridge/bindings/modulegen__gcc_LP64.py ns-3.20/src/tap-bridge/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/tap-bridge/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.378637125 -0700
+++ ns-3.20/src/tap-bridge/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.725997258 -0700
@@ -100,6 +100,8 @@
     module.add_class('TagBuffer', import_from_module='ns.network')
     ## tap-bridge-helper.h (module 'tap-bridge'): ns3::TapBridgeHelper [class]
     module.add_class('TapBridgeHelper')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -112,6 +114,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -248,12 +252,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -308,6 +312,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TapBridgeHelper_methods(root_module, root_module['ns3::TapBridgeHelper'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -618,6 +623,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -630,6 +639,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -1938,6 +1951,14 @@
                    [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -2135,62 +2156,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2199,6 +2176,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2239,6 +2218,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -2520,13 +2501,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -2553,6 +2536,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -3692,10 +3680,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TapBridge_methods(root_module, cls):
diff -Naur ns-3.19/src/tap-bridge/examples/waf ns-3.20/src/tap-bridge/examples/waf
--- ns-3.19/src/tap-bridge/examples/waf	2014-06-17 10:34:00.383637086 -0700
+++ ns-3.20/src/tap-bridge/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/tap-bridge/model/tap-bridge.cc ns-3.20/src/tap-bridge/model/tap-bridge.cc
--- ns-3.19/src/tap-bridge/model/tap-bridge.cc	2014-06-17 10:34:00.385637071 -0700
+++ ns-3.20/src/tap-bridge/model/tap-bridge.cc	2014-06-17 10:33:13.731997212 -0700
@@ -73,8 +73,7 @@
 
 #define TAP_MAGIC 95549
 
-NS_OBJECT_ENSURE_REGISTERED (TapBridge)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TapBridge);
 
 TypeId
 TapBridge::GetTypeId (void)
@@ -833,7 +832,8 @@
       return 0;
     }
 
-  p->RemoveHeader (header);
+  uint32_t headerSize = p->PeekHeader (header);
+  p->RemoveAtStart (headerSize);
 
   NS_LOG_LOGIC ("Pkt source is " << header.GetSource ());
   NS_LOG_LOGIC ("Pkt destination is " << header.GetDestination ());
diff -Naur ns-3.19/src/tap-bridge/waf ns-3.20/src/tap-bridge/waf
--- ns-3.19/src/tap-bridge/waf	2014-06-17 10:34:00.387637055 -0700
+++ ns-3.20/src/tap-bridge/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc ns-3.20/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc
--- ns-3.19/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc	2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc	2014-06-17 10:33:13.736997173 -0700
@@ -485,7 +485,7 @@
   app->Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate ("1Mbps"));
   n0n1.Get (0)->AddApplication (app);
   app->SetStartTime (Seconds (1.0));
-  app->SetStopTime (Seconds (4.4));
+  app->SetStopTime (Seconds (4.1));
 
   if (m_writeResults)
     {
@@ -495,7 +495,7 @@
     }
 
   // Finally, set up the simulator to run.
-  Simulator::Stop (Seconds (4.4));
+  Simulator::Stop (Seconds (4.1));
   Simulator::Run ();
   Simulator::Destroy ();
 
@@ -516,7 +516,7 @@
   
   
   const uint32_t MSS = 536;
-  const uint32_t N_EVENTS = 45;
+  const uint32_t N_EVENTS = 41;
 
   CwndEvent event;
 
@@ -532,38 +532,34 @@
   VerifyCwndRun (11, 13, 9 * MSS, MSS);
   
   //Partial ack will end up modifying cwnd 2X due to how code is written
-  //Partial ACK in fast recovery: cwnd set to 4824
   NS_TEST_ASSERT_MSG_EQ (m_responses.Get (15).m_newCwnd, 9 * MSS, "Wrong new cwnd value in cwnd change event " << 15);
 
   //DUP ACKS in fast recovery
   VerifyCwndRun (16, 17, 10 * MSS, MSS);
 
   //Partial ack will end up modifying cwnd 2X due to how code is written, therefore eat 18 and 19
-  //Partial ACK in fast recovery: cwnd set to 4824
-  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (19).m_newCwnd, 9 * MSS, "Wrong new cwnd value in cwnd change event " << 19);
-
-  //DUP ACKS in fast recovery
-  VerifyCwndRun (20, 22, 10 * MSS, MSS);
-  
-  //Partial ack will end up modifying cwnd 2X due to how code is written, therefore eat 23, 24
-  //Partial ACK in fast recovery: cwnd set to 4824
-  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (24).m_newCwnd, 10 * MSS, "Wrong new cwnd value in cwnd change event " << 24);  
+  VerifyCwndRun (19, 20, 9 * MSS, MSS);
   
-  //DUP ACKS in fast recovery 
-  VerifyCwndRun (25, 29, 11 * MSS, MSS);
   
+  VerifyCwndRun(22, 25, 8 * MSS, MSS);
+ 
   //Leaving fast recovery
-  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (29).m_newCwnd, 5 * MSS, "Wrong new cwnd value in cwnd change event " << 29);  
+  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (26).m_newCwnd, 5 * MSS, "Wrong new cwnd value in cwnd change event " << 26);  
   
   uint32_t cwnd = 5 * MSS;
   //In CongAvoid each event will increase cwnd by (MSS * MSS / cwnd)
-  for (uint32_t i = 30; i < N_EVENTS; ++i)
+  for (uint32_t i = 27; i < N_EVENTS; ++i)
     {
       double adder = static_cast<double> (MSS * MSS) / cwnd;
       adder = std::max (1.0, adder);
       cwnd += static_cast<uint32_t> (adder);    
       NS_TEST_ASSERT_MSG_EQ (m_responses.Get (i).m_newCwnd, cwnd, "Wrong new cwnd value in cwnd change event " << i); 
     }
+    
+  for (uint32_t i = 0; i < N_EVENTS; ++i)
+  {
+    std::cout << "i: " << m_responses.Get(i).m_newCwnd << "  " << m_responses.Get(i).m_oldCwnd << std::endl;
+  }
 }
 
 void 
diff -Naur ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap
--- ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap	2014-06-17 10:34:00.396636986 -0700
+++ ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap	2014-06-17 10:33:13.741997135 -0700
@@ -1,16 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                   l @     P  qI   P                                                    @     P  u1   P                                                   U @     P  y   P                                                   	 @     P  }   P                                                    @     P     P                                                   Q @     P     P                                                   Q @     P  :   P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P  q   P                                                   YL	 @     P  Y   P                                                   
- @     P  A   P                                                    @     P  )   P                                                   % @     P     P                                                    @     P     P                                                   7 @     P     P                                                   7 @     P     P                                                   A` @     P     P                                                    @     P     P                                                   . @     P     P                                                   =W @     P  i   P                                                   " @     P  Q   P                                                   5	  @     P  9   P                                                   1  @     P  !   P                                                   Z  @     P  	   P                                                   Q  @     P     P                                                   Q  @     P     P                                                     @     P     P                                                   ( @     P  ީ   P                                                   Q @     P     P                                                    @     P  y   P                                                   E @     P  a   P                                                   n @     P  I   P                                                   9 @     P  1   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   U @     P    P                                                   e @     P    P                                                   5 @     P 	   P                                                   Y @     P    P                                                   m @     P q   P                                                   ! @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   =% @     P !   P                                                   M @     P $   P                                                   v @     P (   P                                                   v @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   U	 @     P 8   P                                                   		 @     P <i   P                                                   	 @     P @Q   P                                                   q
+ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                   l @     P  qI   P                                                    @     P  u1   P                                                   U @     P  y   P                                                   	 @     P  }   P                                                    @     P     P                                                   Q @     P  :   P                                                   Q @     P     P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P  q   P                                                   YL	 @     P  Y   P                                                   
+ @     P  A   P                                                    @     P  )   P                                                   % @     P     P                                                    @     P     P                                                    @     P     P                                                   7 @     P     P                                                   A` @     P     P                                                    @     P     P                                                   . @     P     P                                                   =W @     P  i   P                                                   " @     P  Q   P                                                   5	  @     P  9   P                                                   1  @     P  !   P                                                   Z  @     P  	   P                                                   Z  @     P     P                                                   Q  @     P     P                                                     @     P     P                                                   ( @     P  ީ   P                                                   Q @     P     P                                                    @     P  y   P                                                   E @     P  a   P                                                   n @     P  I   P                                                   9 @     P  1   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   U @     P    P                                                   e @     P    P                                                   5 @     P 	   P                                                   Y @     P    P                                                   m @     P q   P                                                   ! @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   =% @     P !   P                                                   M @     P $   P                                                   M @     P (   P                                                   v @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   U	 @     P 8   P                                                   		 @     P <i   P                                                   	 @     P @Q   P                                                   q
  @     P D9   P                                                   %9
  @     P H!   P                                                   a
  @     P L	   P                                                   
  @     P O   P                                                   A
- @     P S   P                                                   
+ @     P S   P                                                   A
  @     P W   P                                                   
- @     P [   P                                                    @     P _   P                                                   m @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                   Y$ @     P o1   P                                                   M @     P s   P                                                   u @     P w   P                                                   u @     P z   P                                                   ) @     P ~   P                                                    @     P    P                                                    @     P    P                                                   EA @     P    P                                                   U @     P q   P                                                   U @     P Y   P                                                     @     P A   P                                                   M  @     P )   P                                                     @     P    P                                                    @     P    P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P i   P                                                   ; @     P Q   P                                                    @     P 9   P                                                   e> @     P !   P                                                   e> @     P 	   P                                                   g @     P    P                                                   	 @     P    P                                                   2 @     P    P                                                   Q[ @     P ة   P                                                    @     P ܑ   P                                                    @     P y   P                                                   m @     P a   P                                                   ! @     P I   P                                                   & @     P 1   P                                                   O @     P    P                                                   =x @     P    P                                                   MR @     P    P                                                   { @     P    P                                                    @     P    P                                                   i @     P    P                                                   i @     P    P                                                   F @     P q   P                                                   9o @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P "   P                                                   qc @     P &   P                                                   % @     P *   P                                                   ٴ @     P .   P                                                   	 @     P 2   P                                                   	 @     P 6i   P                                                   Q	 @     P :Q   P                                                   	
- @     P >9   P                                                   1
- @     P B!   P                                                   !
- @     P F	   P                                                   !
+ @     P [   P                                                    @     P _   P                                                   m @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                   Y$ @     P o1   P                                                   M @     P s   P                                                   u @     P w   P                                                   u @     P z   P                                                   ) @     P ~   P                                                    @     P    P                                                    @     P    P                                                   EA @     P    P                                                   EA @     P q   P                                                   U @     P Y   P                                                     @     P A   P                                                   M  @     P )   P                                                     @     P    P                                                    @     P    P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P i   P                                                   ; @     P Q   P                                                   Ud @     P 9   P                                                   Ud @     P !   P                                                    @     P 	   P                                                   e> @     P    P                                                   	 @     P    P                                                   2 @     P    P                                                   Q[ @     P ة   P                                                    @     P ܑ   P                                                    @     P y   P                                                   m @     P a   P                                                   ! @     P I   P                                                   & @     P 1   P                                                   O @     P    P                                                   =x @     P    P                                                    @     P    P                                                    @     P    P                                                   MR @     P    P                                                   MR @     P    P                                                   { @     P    P                                                   F @     P q   P                                                   9o @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P "   P                                                   qc @     P &   P                                                   % @     P *   P                                                   ٴ @     P .   P                                                    @     P 2   P                                                   A	 @     P 6i   P                                                   	 @     P :Q   P                                                   	 @     P >9   P                                                   Q	 @     P B!   P                                                   Q	 @     P F	   P                                                   !
  @     P I   P                                                   ի
  @     P M   P                                                   
  @     P Q   P                                                   =
- @     P U   P                                                   % @     P Y   P                                                   N @     P ]y   P                                                   Yw @     P aa   P                                                    @     P eI   P                                                    @     P i1   P                                                   u @     P m   P                                                    @     P q   P                                                   9 @     P t   P                                                    @     P x   P                                                   E @     P |   P                                                   Un @     P    P                                                    @     P    P                                                   q @     P q   P                                                   q @     P Y   P                                                   % @     P A   P                                                   9 @     P )   P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   . @     P    P                                                     @     P    P                                                     @     P i   P                                                     @     P Q   P                                                   I @     P 9   P                                                   ? @     P !   P                                                   h @     P 	   P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   54 @     P ҩ   P                                                   54 @     P ֑   P                                                   \ @     P y   P                                                    @     P a   P                                                   Q @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   m( @     P    P                                                   !Q @     P    P                                                   y @     P    P                                                   } @     P    P                                                   1+ @     P    P                                                   S @     P    P                                                   | @     P q   P                                                   M @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ @     P U   P                                                   % @     P Y   P                                                   N @     P ]y   P                                                   Yw @     P aa   P                                                    @     P eI   P                                                    @     P i1   P                                                   u @     P m   P                                                   ) @     P q   P                                                   B @     P t   P                                                    @     P x   P                                                   9 @     P |   P                                                    @     P    P                                                   E @     P    P                                                   E @     P q   P                                                    @     P Y   P                                                   q @     P A   P                                                   % @     P )   P                                                   9 @     P    P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   . @     P    P                                                     @     P i   P                                                   9=  @     P Q   P                                                     @     P 9   P                                                     @     P !   P                                                   I @     P 	   P                                                   ? @     P    P                                                   h @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                    @     P ֑   P                                                    @     P y   P                                                   54 @     P a   P                                                   \ @     P I   P                                                    @     P 1   P                                                   Q @     P    P                                                    @     P    P                                                    @     P    P                                                   m( @     P    P                                                   !Q @     P    P                                                   y @     P    P                                                   } @     P    P                                                   1+ @     P q   P                                                   S @     P 	Y   P                                                   %       P B   P    
\ No newline at end of file
diff -Naur ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap
--- ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap	2014-06-17 10:34:00.396636986 -0700
+++ ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap	2014-06-17 10:33:13.742997127 -0700
@@ -1,15 +1,11 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  qI   P                                                   U @     P  u1   P                                                   	 @     P  y   P                                                    @     P  }   P                                                    @     P     P                                                    @     P  :   P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                    @     P  q   P                                                   UC @     P  Y   P                                                   UC @     P  >   P                                                    @     P  A   P                                                   7 @     P  )   P                                                   A` @     P     P                                                    @     P     P                                                   =W @     P     P                                                    @     P     P                                                    @     P     P                                                   5	  @     P     P                                                   1  @     P     P                                                   Z  @     P  i   P                                                   Z  @     P  Q   P                                                   Q  @     P  9   P                                                   Q @     P  !   P                                                   Mz @     P  	   P                                                    @     P     P                                                   E @     P     P                                                   n @     P     P                                                   9 @     P  ީ   P                                                    @     P     P                                                    @     P  y   P                                                    @     P  a   P                                                   5 @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                   m @     P     P                                                   ! @     P     P                                                    @     P    P                                                    @     P    P                                                   =% @     P 	   P                                                   M @     P    P                                                   M @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   9	 @     P )   P                                                   		 @     P !   P                                                   	 @     P $   P                                                   q
+ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  qI   P                                                   U @     P  u1   P                                                   	 @     P  y   P                                                    @     P  }   P                                                    @     P  :   P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                    @     P  >   P                                                    @     P  q   P                                                   UC @     P  Y   P                                                    @     P  A   P                                                   7 @     P  )   P                                                   A` @     P     P                                                    @     P     P                                                   =W @     P     P                                                    @     P     P                                                    @     P     P                                                   5	  @     P     P                                                   5	  @     P     P                                                   1  @     P  i   P                                                   Z  @     P  Q   P                                                   Q  @     P  9   P                                                   Q @     P  !   P                                                   Mz @     P  	   P                                                    @     P     P                                                   E @     P     P                                                   n @     P     P                                                   9 @     P  ީ   P                                                   9 @     P     P                                                    @     P  y   P                                                    @     P  a   P                                                   5 @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                   m @     P     P                                                   ! @     P     P                                                    @     P    P                                                    @     P    P                                                    @     P 	   P                                                   =% @     P    P                                                   M @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   9	 @     P )   P                                                   		 @     P !   P                                                   	 @     P $   P                                                   q
  @     P (   P                                                   %9
  @     P ,   P                                                   a
  @     P 0   P                                                   
- @     P 4   P                                                   A
- @     P 8   P                                                   m @     P <i   P                                                   m @     P @Q   P                                                   !0 @     P D9   P                                                   X @     P H!   P                                                    @     P L	   P                                                   Y$ @     P O   P                                                   M @     P S   P                                                   u @     P W   P                                                   u @     P [   P                                                   ) @     P _   P                                                    @     P cy   P                                                     @     P ga   P                                                   }*  @     P kI   P                                                   }*  @     P o1   P                                                   1S  @     P s   P                                                   {  @     P w   P                                                     @     P z   P                                                    @     P ~   P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P q   P                                                   9 @     P Y   P                                                   e> @     P A   P                                                   g @     P )   P                                                   ͏ @     P    P                                                    @     P    P                                                    @     P    P                                                   5 @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P i   P                                                   m @     P Q   P                                                   ! @     P 9   P                                                   & @     P !   P                                                   { @     P 	   P                                                    @     P    P                                                   i @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   F @     P y   P                                                   9o @     P a   P                                                    @     P I   P                                                    @     P 1   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P    P                                                   qc @     P    P                                                   	 @     P    P                                                   Q	 @     P    P                                                   	
- @     P    P                                                   1
- @     P q   P                                                   mZ
- @     P Y   P                                                   !
- @     P A   P                                                   ի
- @     P )   P                                                   ի
- @     P    P                                                   
- @     P    P                                                   =
- @     P "   P                                                   % @     P &   P                                                   N @     P *   P                                                   Yw @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   9 @     P :Q   P                                                    @     P >9   P                                                   E @     P B!   P                                                   Un @     P F	   P                                                   	 @     P I   P                                                    @     P M   P                                                   q @     P Q   P                                                   % @     P U   P                                                   9 @     P Y   P                                                   9 @     P ]y   P                                                   b @     P aa   P                                                   A @     P eI   P                                                    @     P i1   P                                                    @     P m   P                                                   ] @     P q   P                                                   . @     P t   P                                                     @     P x   P                                                   I @     P |   P                                                   ? @     P    P                                                   h @     P    P                                                   e @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   54 @     P    P                                                   \ @     P    P                                                   \ @     P    P                                                    @     P    P                                                   Q @     P    P                                                    @     P    P                                                    @     P    P                                                   m( @     P i   P                                                   !Q @     P Q   P                                                   1+ @     P 9   P                                                   S @     P !   P                                                   | @     P 	   P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                   i @     P ҩ   P                                                   H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   9 @     P I   P                                                    @     P 1   P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   	e @     P    P                                                    @     P    P                                                   q @     P    P                                                   g @     P    P                                                    @     P q   P                                                   5 @     P 	Y   P                                                   u
-       P B   P    
\ No newline at end of file
+ @     P 4   P                                                   
+ @     P 8   P                                                   A
+ @     P <i   P                                                   m @     P @Q   P                                                   !0 @     P D9   P                                                   X @     P H!   P                                                    @     P L	   P                                                   Y$ @     P O   P                                                   M @     P S   P                                                   u @     P W   P                                                   u @     P [   P                                                   ) @     P _   P                                                    @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                     @     P o1   P                                                   }*  @     P s   P                                                   1S  @     P w   P                                                     @     P z   P                                                    @     P ~   P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P q   P                                                   9 @     P Y   P                                                    @     P A   P                                                   ; @     P )   P                                                   ; @     P    P                                                   e> @     P    P                                                   g @     P    P                                                   ͏ @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P i   P                                                   m @     P Q   P                                                   ! @     P 9   P                                                   & @     P !   P                                                   O @     P 	   P                                                   =x @     P    P                                                    @     P    P                                                    @     P    P                                                   { @     P ة   P                                                    @     P ܑ   P                                                   i @     P y   P                                                   9o @     P a   P                                                    @     P I   P                                                    @     P 1   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P    P                                                   qc @     P    P                                                   % @     P    P                                                   ٴ @     P    P                                                    @     P    P                                                   A	 @     P q   P                                                   	 @     P Y   P                                                   	 @     P A   P                                                   Q	 @     P )   P                                                   	
+ @     P    P                                                   ի
+ @     P    P                                                   
+ @     P "   P                                                   =
+ @     P &   P                                                   % @     P *   P                                                   N @     P .   P                                                   Yw @     P 2   P                                                    @     P 6i   P                                                    @     P :Q   P                                                   u @     P >9   P                                                   ) @     P B!   P                                                   B @     P F	   P                                                   9 @     P I   P                                                    @     P M   P                                                   E @     P Q   P                                                   E @     P U   P                                                   Un @     P Y   P                                                   q @     P ]y   P                                                   % @     P aa   P                                                   9 @     P eI   P                                                   b @     P i1   P                                                   A @     P m   P                                                    @     P q   P                                                    @     P t   P                                                   ] @     P x   P                                                   . @     P |   P                                                     @     P    P                                                   9=  @     P    P                                                     @     P q   P                                                   I @     P Y   P                                                   ? @     P A   P                                                   h @     P )   P                                                   h @     P    P                                                   e @     P    P                                                    @     P    P                                                    @     P    P                                                   54 @     P    P                                                   \ @     P    P                                                    @     P    P                                                   Q @     P i   P                                                    @     P Q   P                                                    @     P 9   P                                                   m( @     P !   P                                                   !Q @     P 	   P                                                   y @     P    P                                                   1+ @     P    P                                                   S @     P    P                                                   | @     P ҩ   P                                                   M @     P ֑   P                                                    @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   i @     P 1   P                                                   H @     P    P                                                   p @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   	e @     P q   P                                                    @     P 	Y   P                                                   	       P B   P    
\ No newline at end of file
diff -Naur ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap
--- ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap	2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap	2014-06-17 10:33:13.742997127 -0700
@@ -1,16 +1,12 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                   U @     P  qI   P                                                   	 @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                    @     P  :   P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                   UC @     P     P                                                   	l @     P     P                                                   	l @     P  >   P                                                   7 @     P  q   P                                                   A` @     P  Y   P                                                    @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                   Y @     P     P                                                   Y @     P  Bi   P                                                   1  @     P     P                                                   Z  @     P     P                                                   Q  @     P     P                                                   Mz @     P     P                                                    @     P     P                                                    @     P  i   P                                                   i @     P  Q   P                                                   n @     P  9   P                                                   9 @     P  !   P                                                    @     P  	   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   Q @     P  ީ   P                                                   1 @     P     P                                                   ! @     P  y   P                                                    @     P  a   P                                                    @     P  I   P                                                   =% @     P  1   P                                                    @     P     P                                                    @     P     P                                                   9	 @     P     P                                                   D	 @     P    P                                                   m	 @     P    P                                                   	 @     P 	   P                                                   q
- @     P    P                                                   %9
- @     P q   P                                                   a
- @     P Y   P                                                   !0 @     P A   P                                                   X @     P )   P                                                   X @     P !   P                                                    @     P $   P                                                   = @     P (   P                                                    @     P ,   P                                                   Y$ @     P 0   P                                                   M @     P 4   P                                                   u @     P 8   P                                                   u @     P <i   P                                                   }*  @     P @Q   P                                                   1S  @     P D9   P                                                   {  @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                   M  @     P S   P                                                     @     P W   P                                                    @     P [   P                                                   iG @     P _   P                                                   p @     P cy   P                                                   ј @     P ga   P                                                   g @     P kI   P                                                   ͏ @     P o1   P                                                    @     P s   P                                                   5 @     P w   P                                                   	 @     P z   P                                                   	 @     P ~   P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P q   P                                                   m @     P Y   P                                                   ! @     P A   P                                                    @     P )   P                                                   i @     P    P                                                    @     P    P                                                    @     P    P                                                   F @     P    P                                                   9o @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P i   P                                                   U @     P Q   P                                                   	 @     P 9   P                                                   : @     P !   P                                                   qc @     P 	   P                                                   Q	 @     P    P                                                   	
- @     P    P                                                   1
- @     P    P                                                   mZ
- @     P ة   P                                                   !
- @     P ܑ   P                                                   ի
- @     P y   P                                                   
- @     P a   P                                                   =
- @     P I   P                                                   =
- @     P 1   P                                                   % @     P    P                                                   N @     P    P                                                   Yw @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   E @     P    P                                                   Un @     P q   P                                                   	 @     P Y   P                                                    @     P A   P                                                   q @     P )   P                                                   % @     P    P                                                   9 @     P    P                                                   b @     P "   P                                                   A @     P &   P                                                   A @     P *   P                                                    @     P .   P                                                    @     P 2   P                                                   ] @     P 6i   P                                                   . @     P :Q   P                                                   I @     P >9   P                                                   ? @     P B!   P                                                   h @     P F	   P                                                   e @     P I   P                                                    @     P M   P                                                    @     P Q   P                                                    @     P U   P                                                   54 @     P Y   P                                                   \ @     P ]y   P                                                    @     P aa   P                                                   Q @     P eI   P                                                    @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   m( @     P t   P                                                   !Q @     P x   P                                                   S @     P |   P                                                   | @     P    P                                                   M @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   i @     P A   P                                                   H @     P )   P                                                   p @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   U< @     P    P                                                   	e @     P i   P                                                    @     P Q   P                                                   q @     P 9   P                                                    @     P !   P                                                   5 @     P 	   P                                                    @     P    P                                                   
- @     P    P                                                   Q3 @     P    P                                                   \ @     P ҩ   P                                                    @     P ֑   P                                                   m @     P y   P                                                   ! @     P a   P                                                    @     P I   P                                                   '	 @     P 1   P                                                   =P	 @     P    P                                                   x	 @     P    P                                                   	 @     P    P                                                   Y	 @     P    P                                                   Y	 @     P    P                                                   	 @     P    P                                                   
- @     P    P                                                   
- @     P q   P                                                   
- @     P 	Y   P                                                   4       P B   P    
\ No newline at end of file
+ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                   U @     P  qI   P                                                   	 @     P  u1   P                                                    @     P  y   P                                                    @     P  :   P                                                    @     P  }   P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                   UC @     P  >   P                                                   UC @     P     P                                                   	l @     P     P                                                   7 @     P  q   P                                                   A` @     P  Y   P                                                    @     P  A   P                                                    @     P  Bi   P                                                    @     P  )   P                                                    @     P     P                                                   Y @     P     P                                                   1  @     P     P                                                   Z  @     P     P                                                   Q  @     P     P                                                   Mz @     P     P                                                    @     P     P                                                    @     P  i   P                                                   i @     P  Q   P                                                   i @     P  9   P                                                   n @     P  !   P                                                   9 @     P  	   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   Q @     P  ީ   P                                                   1 @     P     P                                                   Y @     P  y   P                                                   ! @     P  a   P                                                   ! @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                    @     P     P                                                   9	 @     P     P                                                   D	 @     P    P                                                   m	 @     P    P                                                   U	 @     P 	   P                                                   	 @     P    P                                                   q
+ @     P q   P                                                   q
+ @     P Y   P                                                   %9
+ @     P A   P                                                   a
+ @     P )   P                                                   !0 @     P !   P                                                   X @     P $   P                                                    @     P (   P                                                   = @     P ,   P                                                    @     P 0   P                                                   Y$ @     P 4   P                                                   M @     P 8   P                                                   u @     P <i   P                                                   u @     P @Q   P                                                   u @     P D9   P                                                   ) @     P H!   P                                                   }*  @     P L	   P                                                   1S  @     P O   P                                                   {  @     P S   P                                                     @     P W   P                                                   M  @     P [   P                                                    @     P _   P                                                   iG @     P cy   P                                                   p @     P ga   P                                                   ј @     P kI   P                                                    @     P o1   P                                                    @     P s   P                                                   9 @     P w   P                                                   g @     P z   P                                                   ͏ @     P ~   P                                                    @     P    P                                                   5 @     P    P                                                   	 @     P    P                                                   Q[ @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   m @     P )   P                                                   ! @     P    P                                                   & @     P    P                                                   O @     P    P                                                   O @     P    P                                                    @     P    P                                                   i @     P    P                                                    @     P    P                                                    @     P i   P                                                   F @     P Q   P                                                    @     P 9   P                                                    @     P !   P                                                   U @     P 	   P                                                   	 @     P    P                                                   : @     P    P                                                   qc @     P    P                                                   % @     P ة   P                                                   ٴ @     P ܑ   P                                                   ٴ @     P y   P                                                   Q	 @     P a   P                                                   	
+ @     P I   P                                                   1
+ @     P 1   P                                                   mZ
+ @     P    P                                                   !
+ @     P    P                                                   
+ @     P    P                                                   =
+ @     P    P                                                   % @     P    P                                                   N @     P    P                                                   Yw @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   u @     P A   P                                                   ) @     P )   P                                                    @     P    P                                                    @     P    P                                                   E @     P "   P                                                   Un @     P &   P                                                   	 @     P *   P                                                    @     P .   P                                                   % @     P 2   P                                                   9 @     P 6i   P                                                   b @     P :Q   P                                                   A @     P >9   P                                                    @     P B!   P                                                    @     P F	   P                                                   ] @     P I   P                                                   . @     P M   P                                                     @     P Q   P                                                   I @     P U   P                                                   ? @     P Y   P                                                   h @     P ]y   P                                                   h @     P aa   P                                                   e @     P eI   P                                                    @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   54 @     P t   P                                                   \ @     P x   P                                                    @     P |   P                                                   Q @     P    P                                                    @     P    P                                                    @     P q   P                                                   m( @     P Y   P                                                   !Q @     P A   P                                                   S @     P )   P                                                   | @     P    P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   i @     P    P                                                   H @     P    P                                                   p @     P i   P                                                    @     P Q   P                                                   9 @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   U< @     P    P                                                   	e @     P    P                                                    @     P    P                                                   q @     P ҩ   P                                                    @     P ֑   P                                                   5 @     P y   P                                                    @     P a   P                                                   
+ @     P I   P                                                   Q3 @     P 1   P                                                   \ @     P    P                                                   \ @     P    P                                                    @     P    P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                   '	 @     P    P                                                   =P	 @     P q   P                                                   x	 @     P 	Y   P                                                          P B   P    
\ No newline at end of file
diff -Naur ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap
--- ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap	2014-06-17 10:34:00.405636916 -0700
+++ ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap	2014-06-17 10:33:13.751997058 -0700
@@ -1,9 +1,10 @@
 ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                    O  @     P     P                                                    O  @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                    / @     P  *   P                                                    / @     P  .   P                                                    9 @     P  2   P                                                    9 @     P  6   P                                                    OZ @     P  :   P                                                    OZ @     P  >   P                                                    z @     P  Bi   P                                                    z @     P  FQ   P                                                    o @     P  J9   P                                                    o @     P  N!   P                                                     @     P  R	   P                                                     @     P  U   P                                                     @     P  Y   P                                                     @     P  ]   P                                                     @     P  a   P                                                     @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    ?> @     P  qI   P                                                    ?> @     P  u1   P                                                    ^ @     P  y   P                                                    ^ @     P  }   P                                                    _ @     P     P                                                    _ @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                     @     P  )   P                                                     @     P     P                                                    /" @     P     P                                                    /" @     P     P                                                    B @     P     P                                                    B @     P     P                                                    Oc @     P     P                                                    Oc @     P     P                                                    ߃ @     P  i   P                                                    ߃ @     P  Q   P                                                    o @     P  9   P                                                    o @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    & @     P  y   P                                                    & @     P  a   P                                                    ?G @     P  I   P                                                    ?G @     P  1   P                                                    g @     P     P                                                    g @     P     P                                                    _ @     P     P                                                    _ @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    
  @     P )   P                                                    
- @     P !   P                                                    /+ @     P $   P                                                    /+ @     P (   P                                                    K @     P ,   P                                                    K @     P 0   P                                                    Ol @     P 4   P                                                    Ol @     P 8   P                                                    ߌ @     P <i   P                                                    ߌ @     P @Q   P                                                    o @     P D9   P                                                    o @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                     @     P S   P                                                     @     P W   P                                                    ?P @     P     P                                                     @     P     P                                                     	 @     P [   P                                                     	 @     P     P                                                    f	 @     P _   P                                                    	 @     P cy   P                                                    	 @     P  Q   P                                                    o	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P  !   P                                                    
+ @     P !   P                                                    /+ @     P $   P                                                    /+ @     P (   P                                                    K @     P ,   P                                                    K @     P 0   P                                                    Ol @     P 4   P                                                    Ol @     P 8   P                                                    ߌ @     P <i   P                                                    ߌ @     P @Q   P                                                    o @     P D9   P                                                    o @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                     @     P S   P                                                     @     P W   P                                                    ?P @     P     P                                                     @     P     P                                                     	 @     P     P                                                     	 @     P [   P                                                    f	 @     P  Q   P                                                    f	 @     P _   P                                                    	 @     P cy   P                                                    o	 @     P  !   P                                                    o	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    
+ @     P     P                                                    
  @     P s   P                                                    -
  @     P w   P                                                    ?N
  @     P z   P                                                    n
- @     P ~   P                                                    n
- @     P     P                                                    _
- @     P    P                                                     @     P     P                                                    V @     P     P                                                    ? @     P  a   P                                                     @     P  1   P                                                    & @     P     P                                                    /l @     P    P                                                     @     P 	   P                                                     @     P q   P                                                    < @     P A   P                                                    o @     P !   P                                                     @     P (   P                                                     @     P 0   P                                                    _Q @     P 8   P                                                     @     P @Q   P                                                     @     P H!   P                                                    O! @     P O   P                                                   _$  @     P W   P                                                   j        P    P    
\ No newline at end of file
+ @     P ~   P                                                    _
+ @     P     P                                                    _
+ @     P    P                                                    /2 @     P     P                                                    w @     P  a   P                                                    ϼ @     P  1   P                                                     @     P     P                                                    oG @     P    P                                                     @     P 	   P                                                     @     P q   P                                                    _ @     P A   P                                                    \ @     P !   P                                                     @     P (   P                                                    O @     P 0   P                                                    , @     P 8   P                                                    q @     P @Q   P                                                    ? @     P H!   P                                                     @     P O   P                                                    A @     P W   P                                                   ?F        P    P    
\ No newline at end of file
diff -Naur ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap
--- ns-3.19/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap	2014-06-17 10:34:00.406636909 -0700
+++ ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap	2014-06-17 10:33:13.752997050 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                           P     P    
\ No newline at end of file
+ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                           P     P    
\ No newline at end of file
diff -Naur ns-3.19/src/test/perf/waf ns-3.20/src/test/perf/waf
--- ns-3.19/src/test/perf/waf	2014-06-17 10:34:00.409636885 -0700
+++ ns-3.20/src/test/perf/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/topology-read/bindings/modulegen__gcc_ILP32.py ns-3.20/src/topology-read/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/topology-read/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.412636862 -0700
+++ ns-3.20/src/topology-read/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.758997004 -0700
@@ -54,6 +54,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## topology-reader-helper.h (module 'topology-read'): ns3::TopologyReaderHelper [class]
     module.add_class('TopologyReaderHelper')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -68,6 +70,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -148,7 +152,7 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type='map')
+    module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -171,12 +175,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -211,6 +215,7 @@
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TopologyReaderHelper_methods(root_module, root_module['ns3::TopologyReaderHelper'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -1059,6 +1064,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TopologyReaderHelper_methods(root_module, cls):
     ## topology-reader-helper.h (module 'topology-read'): ns3::TopologyReaderHelper::TopologyReaderHelper(ns3::TopologyReaderHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TopologyReaderHelper const &', 'arg0')])
@@ -1275,62 +1288,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1339,6 +1308,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1379,6 +1350,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1520,13 +1493,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1553,6 +1528,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/topology-read/bindings/modulegen__gcc_LP64.py ns-3.20/src/topology-read/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/topology-read/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.414636847 -0700
+++ ns-3.20/src/topology-read/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.760996988 -0700
@@ -54,6 +54,8 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## topology-reader-helper.h (module 'topology-read'): ns3::TopologyReaderHelper [class]
     module.add_class('TopologyReaderHelper')
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -68,6 +70,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -148,7 +152,7 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type='map')
+    module.add_container('std::map< std::string, std::string >', ('std::string', 'std::string'), container_type=u'map')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -171,12 +175,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -211,6 +215,7 @@
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TopologyReaderHelper_methods(root_module, root_module['ns3::TopologyReaderHelper'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -1059,6 +1064,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TopologyReaderHelper_methods(root_module, cls):
     ## topology-reader-helper.h (module 'topology-read'): ns3::TopologyReaderHelper::TopologyReaderHelper(ns3::TopologyReaderHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TopologyReaderHelper const &', 'arg0')])
@@ -1275,62 +1288,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1339,6 +1308,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -1379,6 +1350,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1520,13 +1493,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -1553,6 +1528,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
diff -Naur ns-3.19/src/topology-read/examples/waf ns-3.20/src/topology-read/examples/waf
--- ns-3.19/src/topology-read/examples/waf	2014-06-17 10:34:00.419636808 -0700
+++ ns-3.20/src/topology-read/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/topology-read/helper/topology-reader-helper.cc ns-3.20/src/topology-read/helper/topology-reader-helper.cc
--- ns-3.19/src/topology-read/helper/topology-reader-helper.cc	2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/topology-read/helper/topology-reader-helper.cc	2014-06-17 10:33:13.766996942 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("TopologyReaderHelper")
-  ;
+NS_LOG_COMPONENT_DEFINE ("TopologyReaderHelper");
 
 TopologyReaderHelper::TopologyReaderHelper ()
 {
diff -Naur ns-3.19/src/topology-read/model/inet-topology-reader.cc ns-3.20/src/topology-read/model/inet-topology-reader.cc
--- ns-3.19/src/topology-read/model/inet-topology-reader.cc	2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/topology-read/model/inet-topology-reader.cc	2014-06-17 10:33:13.767996934 -0700
@@ -30,11 +30,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("InetTopologyReader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("InetTopologyReader");
 
-NS_OBJECT_ENSURE_REGISTERED (InetTopologyReader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (InetTopologyReader);
 
 TypeId InetTopologyReader::GetTypeId (void)
 {
diff -Naur ns-3.19/src/topology-read/model/orbis-topology-reader.cc ns-3.20/src/topology-read/model/orbis-topology-reader.cc
--- ns-3.19/src/topology-read/model/orbis-topology-reader.cc	2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/topology-read/model/orbis-topology-reader.cc	2014-06-17 10:33:13.768996926 -0700
@@ -30,11 +30,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("OrbisTopologyReader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("OrbisTopologyReader");
 
-NS_OBJECT_ENSURE_REGISTERED (OrbisTopologyReader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OrbisTopologyReader);
 
 TypeId OrbisTopologyReader::GetTypeId (void)
 {
diff -Naur ns-3.19/src/topology-read/model/rocketfuel-topology-reader.cc ns-3.20/src/topology-read/model/rocketfuel-topology-reader.cc
--- ns-3.19/src/topology-read/model/rocketfuel-topology-reader.cc	2014-06-17 10:34:00.422636785 -0700
+++ ns-3.20/src/topology-read/model/rocketfuel-topology-reader.cc	2014-06-17 10:33:13.769996919 -0700
@@ -30,11 +30,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("RocketfuelTopologyReader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("RocketfuelTopologyReader");
 
-NS_OBJECT_ENSURE_REGISTERED (RocketfuelTopologyReader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RocketfuelTopologyReader);
 
 TypeId RocketfuelTopologyReader::GetTypeId (void)
 {
diff -Naur ns-3.19/src/topology-read/model/topology-reader.cc ns-3.20/src/topology-read/model/topology-reader.cc
--- ns-3.19/src/topology-read/model/topology-reader.cc	2014-06-17 10:34:00.423636777 -0700
+++ ns-3.20/src/topology-read/model/topology-reader.cc	2014-06-17 10:33:13.769996919 -0700
@@ -26,11 +26,9 @@
 
 namespace ns3 {
 
-NS_LOG_COMPONENT_DEFINE ("TopologyReader")
-  ;
+NS_LOG_COMPONENT_DEFINE ("TopologyReader");
 
-NS_OBJECT_ENSURE_REGISTERED (TopologyReader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (TopologyReader);
 
 TypeId TopologyReader::GetTypeId (void)
 {
diff -Naur ns-3.19/src/topology-read/test/rocketfuel-topology-reader-test-suite.cc ns-3.20/src/topology-read/test/rocketfuel-topology-reader-test-suite.cc
--- ns-3.19/src/topology-read/test/rocketfuel-topology-reader-test-suite.cc	2014-06-17 10:34:00.424636769 -0700
+++ ns-3.20/src/topology-read/test/rocketfuel-topology-reader-test-suite.cc	2014-06-17 10:33:13.771996903 -0700
@@ -31,7 +31,7 @@
 #include "ns3/object-factory.h"
 #include "ns3/simulator.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class RocketfuelTopologyReaderTest : public TestCase
 {
@@ -86,4 +86,3 @@
 }
 
 static RocketfuelTopologyReaderTestSuite rocketfuelTopologyReaderTestSuite;
-}
diff -Naur ns-3.19/src/uan/bindings/modulegen__gcc_ILP32.py ns-3.20/src/uan/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/uan/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.430636723 -0700
+++ ns-3.20/src/uan/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.776996865 -0700
@@ -106,6 +106,8 @@
     module.add_class('TagBuffer', import_from_module='ns.network')
     ## uan-prop-model.h (module 'uan'): ns3::Tap [class]
     module.add_class('Tap')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -144,6 +146,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## acoustic-modem-energy-model-helper.h (module 'uan'): ns3::AcousticModemEnergyModelHelper [class]
     module.add_class('AcousticModemEnergyModelHelper', parent=root_module['ns3::DeviceEnergyModelHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -378,26 +382,26 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress >', container_type='list')
-    module.add_container('std::vector< ns3::Tap >', 'ns3::Tap', container_type='vector')
-    module.add_container('std::vector< std::complex< double > >', 'std::complex< double >', container_type='vector')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('std::set< unsigned char >', 'unsigned char', container_type='set')
-    module.add_container('std::list< ns3::UanPacketArrival >', 'ns3::UanPacketArrival', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::UanPhy > >', 'ns3::Ptr< ns3::UanPhy >', container_type='list')
-    module.add_container('std::vector< std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > > >', 'std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > >', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::UanTransducer > >', 'ns3::Ptr< ns3::UanTransducer >', container_type='list')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress >', container_type=u'list')
+    module.add_container('std::vector< ns3::Tap >', 'ns3::Tap', container_type=u'vector')
+    module.add_container('std::vector< std::complex< double > >', 'std::complex< double >', container_type=u'vector')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('std::set< unsigned char >', 'unsigned char', container_type=u'set')
+    module.add_container('std::list< ns3::UanPacketArrival >', 'ns3::UanPacketArrival', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::UanPhy > >', 'ns3::Ptr< ns3::UanPhy >', container_type=u'list')
+    module.add_container('std::vector< std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > > >', 'std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > >', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::UanTransducer > >', 'ns3::Ptr< ns3::UanTransducer >', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -427,12 +431,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -495,6 +499,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3Tap_methods(root_module, root_module['ns3::Tap'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -874,6 +879,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -886,6 +895,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2397,6 +2410,14 @@
                    is_const=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -3000,62 +3021,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3064,6 +3041,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3104,6 +3083,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3AcousticModemEnergyModelHelper_methods(root_module, cls):
@@ -3440,13 +3421,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3473,6 +3456,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7396,10 +7384,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/uan/bindings/modulegen__gcc_LP64.py ns-3.20/src/uan/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/uan/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.434636692 -0700
+++ ns-3.20/src/uan/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.781996826 -0700
@@ -106,6 +106,8 @@
     module.add_class('TagBuffer', import_from_module='ns.network')
     ## uan-prop-model.h (module 'uan'): ns3::Tap [class]
     module.add_class('Tap')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## type-id.h (module 'core'): ns3::TypeId [class]
@@ -144,6 +146,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## acoustic-modem-energy-model-helper.h (module 'uan'): ns3::AcousticModemEnergyModelHelper [class]
     module.add_class('AcousticModemEnergyModelHelper', parent=root_module['ns3::DeviceEnergyModelHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -378,26 +382,26 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress >', container_type='list')
-    module.add_container('std::vector< ns3::Tap >', 'ns3::Tap', container_type='vector')
-    module.add_container('std::vector< std::complex< double > >', 'std::complex< double >', container_type='vector')
-    module.add_container('std::vector< double >', 'double', container_type='vector')
-    module.add_container('std::set< unsigned char >', 'unsigned char', container_type='set')
-    module.add_container('std::list< ns3::UanPacketArrival >', 'ns3::UanPacketArrival', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::UanPhy > >', 'ns3::Ptr< ns3::UanPhy >', container_type='list')
-    module.add_container('std::vector< std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > > >', 'std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > >', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::UanTransducer > >', 'ns3::Ptr< ns3::UanTransducer >', container_type='list')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::UanAddress >', container_type=u'list')
+    module.add_container('std::vector< ns3::Tap >', 'ns3::Tap', container_type=u'vector')
+    module.add_container('std::vector< std::complex< double > >', 'std::complex< double >', container_type=u'vector')
+    module.add_container('std::vector< double >', 'double', container_type=u'vector')
+    module.add_container('std::set< unsigned char >', 'unsigned char', container_type=u'set')
+    module.add_container('std::list< ns3::UanPacketArrival >', 'ns3::UanPacketArrival', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::UanPhy > >', 'ns3::Ptr< ns3::UanPhy >', container_type=u'list')
+    module.add_container('std::vector< std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > > >', 'std::pair< ns3::Ptr< ns3::UanNetDevice >, ns3::Ptr< ns3::UanTransducer > >', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::UanTransducer > >', 'ns3::Ptr< ns3::UanTransducer >', container_type=u'list')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
@@ -427,12 +431,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -495,6 +499,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3Tap_methods(root_module, root_module['ns3::Tap'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
@@ -874,6 +879,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -886,6 +895,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2397,6 +2410,14 @@
                    is_const=True)
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -3000,62 +3021,18 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3064,6 +3041,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3104,6 +3083,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3AcousticModemEnergyModelHelper_methods(root_module, cls):
@@ -3440,13 +3421,15 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('==')
@@ -3473,6 +3456,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7396,10 +7384,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/uan/examples/uan-cw-example.cc ns-3.20/src/uan/examples/uan-cw-example.cc
--- ns-3.19/src/uan/examples/uan-cw-example.cc	2014-06-17 10:34:00.436636677 -0700
+++ ns-3.20/src/uan/examples/uan-cw-example.cc	2014-06-17 10:33:13.783996811 -0700
@@ -53,8 +53,7 @@
 
 using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("UanCwExample")
-  ;
+NS_LOG_COMPONENT_DEFINE ("UanCwExample");
 
 Experiment::Experiment () 
   : m_numNodes (15),
diff -Naur ns-3.19/src/uan/examples/uan-rc-example.cc ns-3.20/src/uan/examples/uan-rc-example.cc
--- ns-3.19/src/uan/examples/uan-rc-example.cc	2014-06-17 10:34:00.437636669 -0700
+++ ns-3.20/src/uan/examples/uan-rc-example.cc	2014-06-17 10:33:13.784996803 -0700
@@ -65,8 +65,7 @@
 
 using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("UanRcExample")
-  ;
+NS_LOG_COMPONENT_DEFINE ("UanRcExample");
 
 
 Experiment::Experiment () 
diff -Naur ns-3.19/src/uan/model/acoustic-modem-energy-model.cc ns-3.20/src/uan/model/acoustic-modem-energy-model.cc
--- ns-3.19/src/uan/model/acoustic-modem-energy-model.cc	2014-06-17 10:34:00.439636654 -0700
+++ ns-3.20/src/uan/model/acoustic-modem-energy-model.cc	2014-06-17 10:33:13.786996787 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (AcousticModemEnergyModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AcousticModemEnergyModel);
 
 TypeId
 AcousticModemEnergyModel::GetTypeId (void)
diff -Naur ns-3.19/src/uan/model/uan-channel.cc ns-3.20/src/uan/model/uan-channel.cc
--- ns-3.19/src/uan/model/uan-channel.cc	2014-06-17 10:34:00.441636638 -0700
+++ ns-3.20/src/uan/model/uan-channel.cc	2014-06-17 10:33:13.788996772 -0700
@@ -40,8 +40,7 @@
 NS_LOG_COMPONENT_DEFINE ("UanChannel");
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanChannel);
 
 TypeId
 UanChannel::GetTypeId ()
diff -Naur ns-3.19/src/uan/model/uan-header-common.cc ns-3.20/src/uan/model/uan-header-common.cc
--- ns-3.19/src/uan/model/uan-header-common.cc	2014-06-17 10:34:00.442636631 -0700
+++ ns-3.20/src/uan/model/uan-header-common.cc	2014-06-17 10:33:13.788996772 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderCommon)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderCommon);
 
 UanHeaderCommon::UanHeaderCommon ()
 {
diff -Naur ns-3.19/src/uan/model/uan-header-rc.cc ns-3.20/src/uan/model/uan-header-rc.cc
--- ns-3.19/src/uan/model/uan-header-rc.cc	2014-06-17 10:34:00.442636631 -0700
+++ ns-3.20/src/uan/model/uan-header-rc.cc	2014-06-17 10:33:13.789996764 -0700
@@ -25,16 +25,11 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcData)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcRts)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCtsGlobal)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCts)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcAck)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcData);
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcRts);
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCtsGlobal);
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcCts);
+NS_OBJECT_ENSURE_REGISTERED (UanHeaderRcAck);
 
 UanHeaderRcData::UanHeaderRcData ()
   : Header (),
diff -Naur ns-3.19/src/uan/model/uan-mac-aloha.cc ns-3.20/src/uan/model/uan-mac-aloha.cc
--- ns-3.19/src/uan/model/uan-mac-aloha.cc	2014-06-17 10:34:00.443636623 -0700
+++ ns-3.20/src/uan/model/uan-mac-aloha.cc	2014-06-17 10:33:13.790996757 -0700
@@ -32,8 +32,7 @@
 namespace ns3
 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanMacAloha)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanMacAloha);
 
 UanMacAloha::UanMacAloha ()
   : UanMac (),
diff -Naur ns-3.19/src/uan/model/uan-mac.cc ns-3.20/src/uan/model/uan-mac.cc
--- ns-3.19/src/uan/model/uan-mac.cc	2014-06-17 10:34:00.447636592 -0700
+++ ns-3.20/src/uan/model/uan-mac.cc	2014-06-17 10:33:13.793996733 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanMac);
 
 TypeId UanMac::GetTypeId (void)
 {
diff -Naur ns-3.19/src/uan/model/uan-mac-cw.cc ns-3.20/src/uan/model/uan-mac-cw.cc
--- ns-3.19/src/uan/model/uan-mac-cw.cc	2014-06-17 10:34:00.444636615 -0700
+++ ns-3.20/src/uan/model/uan-mac-cw.cc	2014-06-17 10:33:13.791996749 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanMacCw)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanMacCw);
 
 UanMacCw::UanMacCw ()
   : UanMac (),
diff -Naur ns-3.19/src/uan/model/uan-mac-rc.cc ns-3.20/src/uan/model/uan-mac-rc.cc
--- ns-3.19/src/uan/model/uan-mac-rc.cc	2014-06-17 10:34:00.446636600 -0700
+++ ns-3.20/src/uan/model/uan-mac-rc.cc	2014-06-17 10:33:13.793996733 -0700
@@ -40,8 +40,7 @@
 NS_LOG_COMPONENT_DEFINE ("UanMacRc");
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanMacRc)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanMacRc);
 
 Reservation::Reservation ()
   : m_length (0),
diff -Naur ns-3.19/src/uan/model/uan-mac-rc-gw.cc ns-3.20/src/uan/model/uan-mac-rc-gw.cc
--- ns-3.19/src/uan/model/uan-mac-rc-gw.cc	2014-06-17 10:34:00.445636607 -0700
+++ ns-3.20/src/uan/model/uan-mac-rc-gw.cc	2014-06-17 10:33:13.792996741 -0700
@@ -43,8 +43,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanMacRcGw)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanMacRcGw);
 
 UanMacRcGw::UanMacRcGw ()
   : UanMac (),
diff -Naur ns-3.19/src/uan/model/uan-net-device.cc ns-3.20/src/uan/model/uan-net-device.cc
--- ns-3.19/src/uan/model/uan-net-device.cc	2014-06-17 10:34:00.448636584 -0700
+++ ns-3.20/src/uan/model/uan-net-device.cc	2014-06-17 10:33:13.794996726 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanNetDevice);
 
 UanNetDevice::UanNetDevice ()
   : NetDevice (),
diff -Naur ns-3.19/src/uan/model/uan-noise-model.cc ns-3.20/src/uan/model/uan-noise-model.cc
--- ns-3.19/src/uan/model/uan-noise-model.cc	2014-06-17 10:34:00.449636577 -0700
+++ ns-3.20/src/uan/model/uan-noise-model.cc	2014-06-17 10:33:13.796996710 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanNoiseModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanNoiseModel);
 
 TypeId UanNoiseModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/uan/model/uan-noise-model-default.cc ns-3.20/src/uan/model/uan-noise-model-default.cc
--- ns-3.19/src/uan/model/uan-noise-model-default.cc	2014-06-17 10:34:00.449636577 -0700
+++ ns-3.20/src/uan/model/uan-noise-model-default.cc	2014-06-17 10:33:13.795996718 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanNoiseModelDefault)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanNoiseModelDefault);
 
 UanNoiseModelDefault::UanNoiseModelDefault ()
 {
diff -Naur ns-3.19/src/uan/model/uan-phy.cc ns-3.20/src/uan/model/uan-phy.cc
--- ns-3.19/src/uan/model/uan-phy.cc	2014-06-17 10:34:00.452636553 -0700
+++ ns-3.20/src/uan/model/uan-phy.cc	2014-06-17 10:33:13.798996695 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinr)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinr);
 
 TypeId UanPhyCalcSinr::GetTypeId (void)
 {
@@ -44,8 +43,7 @@
   Object::DoDispose ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (UanPhyPer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPhyPer);
 
 TypeId UanPhyPer::GetTypeId (void)
 {
@@ -66,8 +64,7 @@
   Object::DoDispose ();
 }
 
-NS_OBJECT_ENSURE_REGISTERED (UanPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPhy);
 
 TypeId UanPhy::GetTypeId (void)
 {
diff -Naur ns-3.19/src/uan/model/uan-phy-dual.cc ns-3.20/src/uan/model/uan-phy-dual.cc
--- ns-3.19/src/uan/model/uan-phy-dual.cc	2014-06-17 10:34:00.450636569 -0700
+++ ns-3.20/src/uan/model/uan-phy-dual.cc	2014-06-17 10:33:13.796996710 -0700
@@ -41,10 +41,8 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanPhyDual)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrDual)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPhyDual);
+NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrDual);
 
 UanPhyCalcSinrDual::UanPhyCalcSinrDual ()
 {
diff -Naur ns-3.19/src/uan/model/uan-phy-gen.cc ns-3.20/src/uan/model/uan-phy-gen.cc
--- ns-3.19/src/uan/model/uan-phy-gen.cc	2014-06-17 10:34:00.451636561 -0700
+++ ns-3.20/src/uan/model/uan-phy-gen.cc	2014-06-17 10:33:13.798996695 -0700
@@ -40,16 +40,11 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanPhyGen)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanPhyPerGenDefault)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrDefault)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrFhFsk)
-  ;
-NS_OBJECT_ENSURE_REGISTERED (UanPhyPerUmodem)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPhyGen);
+NS_OBJECT_ENSURE_REGISTERED (UanPhyPerGenDefault);
+NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrDefault);
+NS_OBJECT_ENSURE_REGISTERED (UanPhyCalcSinrFhFsk);
+NS_OBJECT_ENSURE_REGISTERED (UanPhyPerUmodem);
 
 
 /*************** UanPhyCalcSinrDefault definition *****************/
diff -Naur ns-3.19/src/uan/model/uan-prop-model.cc ns-3.20/src/uan/model/uan-prop-model.cc
--- ns-3.19/src/uan/model/uan-prop-model.cc	2014-06-17 10:34:00.455636530 -0700
+++ ns-3.20/src/uan/model/uan-prop-model.cc	2014-06-17 10:33:13.801996672 -0700
@@ -336,8 +336,7 @@
   return pdp;
 }
 
-NS_OBJECT_ENSURE_REGISTERED (UanPropModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPropModel);
 
 TypeId UanPropModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/uan/model/uan-prop-model-ideal.cc ns-3.20/src/uan/model/uan-prop-model-ideal.cc
--- ns-3.19/src/uan/model/uan-prop-model-ideal.cc	2014-06-17 10:34:00.453636546 -0700
+++ ns-3.20/src/uan/model/uan-prop-model-ideal.cc	2014-06-17 10:33:13.799996687 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanPropModelIdeal)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPropModelIdeal);
 
 UanPropModelIdeal::UanPropModelIdeal ()
 {
diff -Naur ns-3.19/src/uan/model/uan-prop-model-thorp.cc ns-3.20/src/uan/model/uan-prop-model-thorp.cc
--- ns-3.19/src/uan/model/uan-prop-model-thorp.cc	2014-06-17 10:34:00.454636538 -0700
+++ ns-3.20/src/uan/model/uan-prop-model-thorp.cc	2014-06-17 10:33:13.800996679 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanPropModelThorp)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanPropModelThorp);
 
 UanPropModelThorp::UanPropModelThorp ()
 {
diff -Naur ns-3.19/src/uan/model/uan-transducer.cc ns-3.20/src/uan/model/uan-transducer.cc
--- ns-3.19/src/uan/model/uan-transducer.cc	2014-06-17 10:34:00.456636522 -0700
+++ ns-3.20/src/uan/model/uan-transducer.cc	2014-06-17 10:33:13.802996664 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanTransducer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanTransducer);
 
 TypeId UanTransducer::GetTypeId (void)
 {
diff -Naur ns-3.19/src/uan/model/uan-transducer-hd.cc ns-3.20/src/uan/model/uan-transducer-hd.cc
--- ns-3.19/src/uan/model/uan-transducer-hd.cc	2014-06-17 10:34:00.455636530 -0700
+++ ns-3.20/src/uan/model/uan-transducer-hd.cc	2014-06-17 10:33:13.801996672 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UanTransducerHd)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UanTransducerHd);
   
 UanTransducerHd::UanTransducerHd ()
   : UanTransducer (),
diff -Naur ns-3.19/src/uan/test/uan-energy-model-test.cc ns-3.20/src/uan/test/uan-energy-model-test.cc
--- ns-3.19/src/uan/test/uan-energy-model-test.cc	2014-06-17 10:34:00.458636507 -0700
+++ ns-3.20/src/uan/test/uan-energy-model-test.cc	2014-06-17 10:33:13.804996648 -0700
@@ -36,10 +36,9 @@
 #include "ns3/uan-header-common.h"
 #include "ns3/uan-phy.h"
 
-namespace ns3 {
+using namespace ns3;
 
-NS_LOG_COMPONENT_DEFINE ("UanEnergyModelTestSuite")
-  ;
+NS_LOG_COMPONENT_DEFINE ("UanEnergyModelTestSuite");
 
 class AcousticModemEnergyTestCase : public TestCase
 {
@@ -310,5 +309,3 @@
 
 // create an instance of the test suite
 static UanEnergyModelTestSuite g_uanEnergyModelTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/virtual-net-device/bindings/modulegen__gcc_ILP32.py ns-3.20/src/virtual-net-device/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/virtual-net-device/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.461636484 -0700
+++ ns-3.20/src/virtual-net-device/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.807996625 -0700
@@ -196,12 +196,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -544,6 +544,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -556,6 +560,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2836,10 +2844,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TypeIdChecker_methods(root_module, cls):
diff -Naur ns-3.19/src/virtual-net-device/bindings/modulegen__gcc_LP64.py ns-3.20/src/virtual-net-device/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/virtual-net-device/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.463636468 -0700
+++ ns-3.20/src/virtual-net-device/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.809996610 -0700
@@ -196,12 +196,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -544,6 +544,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -556,6 +560,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2836,10 +2844,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3TypeIdChecker_methods(root_module, cls):
diff -Naur ns-3.19/src/virtual-net-device/model/virtual-net-device.cc ns-3.20/src/virtual-net-device/model/virtual-net-device.cc
--- ns-3.19/src/virtual-net-device/model/virtual-net-device.cc	2014-06-17 10:34:00.464636461 -0700
+++ ns-3.20/src/virtual-net-device/model/virtual-net-device.cc	2014-06-17 10:33:13.810996602 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (VirtualNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (VirtualNetDevice);
 
 TypeId
 VirtualNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/virtual-net-device/waf ns-3.20/src/virtual-net-device/waf
--- ns-3.19/src/virtual-net-device/waf	2014-06-17 10:34:00.465636453 -0700
+++ ns-3.20/src/virtual-net-device/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/visualizer/bindings/modulegen__gcc_ILP32.py ns-3.20/src/visualizer/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/visualizer/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.470636414 -0700
+++ ns-3.20/src/visualizer/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.815996564 -0700
@@ -56,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -98,12 +70,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -164,14 +130,6 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -194,10 +152,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -247,7 +201,7 @@
     ## nstime.h (module 'core'): ns3::Time [class]
     module.add_class('Time', import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
+    module.add_enum('Unit', ['Y', 'D', 'H', 'MIN', 'S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time [class]
     root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
@@ -272,10 +226,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -300,8 +250,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -410,18 +358,10 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -448,8 +388,6 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -458,7 +396,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
@@ -492,7 +429,6 @@
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -504,7 +440,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3Mac48AddressChecker_methods(root_module, root_module['ns3::Mac48AddressChecker'])
@@ -1166,55 +1101,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1551,10 +1437,11 @@
                    'bool', 
                    [param('ns3::Ipv6Address const &', 'other')], 
                    is_const=True)
-    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() [member function]
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
     cls.add_method('IsIpv4MappedAddress', 
                    'bool', 
-                   [])
+                   [], 
+                   is_const=True)
     ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
     cls.add_method('IsLinkLocal', 
                    'bool', 
@@ -1645,61 +1532,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2496,90 +2328,6 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -3110,106 +2858,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4090,6 +3738,11 @@
                    'ns3::Time', 
                    [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
                    is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
+    cls.add_method('GetDays', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
     cls.add_method('GetDouble', 
                    'double', 
@@ -4100,6 +3753,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetHours() const [member function]
+    cls.add_method('GetHours', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
     cls.add_method('GetInteger', 
                    'int64_t', 
@@ -4115,6 +3773,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetMinutes() const [member function]
+    cls.add_method('GetMinutes', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
     cls.add_method('GetNanoSeconds', 
                    'int64_t', 
@@ -4140,6 +3803,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetYears() const [member function]
+    cls.add_method('GetYears', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
     cls.add_method('IsNegative', 
                    'bool', 
@@ -4473,63 +4141,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5185,151 +4796,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
diff -Naur ns-3.19/src/visualizer/bindings/modulegen__gcc_LP64.py ns-3.20/src/visualizer/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/visualizer/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.473636391 -0700
+++ ns-3.20/src/visualizer/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.818996541 -0700
@@ -56,34 +56,6 @@
     module.add_class('InetSocketAddress', import_from_module='ns.network')
     ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress [class]
     root_module['ns3::InetSocketAddress'].implicitly_converts_to(root_module['ns3::Address'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['0'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 0 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<1> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['1'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 1 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<2> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['2'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 2 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<3> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['3'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 3 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<4> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['4'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 4 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<5> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['5'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 5 >'], import_from_module='ns.core')
-    ## int-to-type.h (module 'core'): ns3::IntToType<6> [struct]
-    module.add_class('IntToType', import_from_module='ns.core', template_parameters=['6'])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::v_e [enumeration]
-    module.add_enum('v_e', ['value'], outer_class=root_module['ns3::IntToType< 6 >'], import_from_module='ns.core')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
     module.add_class('Ipv4Address', import_from_module='ns.network')
     ## ipv4-address.h (module 'network'): ns3::Ipv4Address [class]
@@ -98,12 +70,6 @@
     module.add_class('Ipv6Address', import_from_module='ns.network')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
     root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
-    module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
-    module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
-    module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
     ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
     module.add_class('Ipv6Prefix', import_from_module='ns.network')
     ## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -164,14 +130,6 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
-    ## timer.h (module 'core'): ns3::Timer [class]
-    module.add_class('Timer', import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
-    module.add_enum('DestroyPolicy', ['CANCEL_ON_DESTROY', 'REMOVE_ON_DESTROY', 'CHECK_ON_DESTROY'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer.h (module 'core'): ns3::Timer::State [enumeration]
-    module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
-    ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
-    module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -194,10 +152,6 @@
     module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
     module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
-    module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
-    module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
     ## object.h (module 'core'): ns3::Object [class]
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -247,7 +201,7 @@
     ## nstime.h (module 'core'): ns3::Time [class]
     module.add_class('Time', import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
+    module.add_enum('Unit', ['Y', 'D', 'H', 'MIN', 'S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time [class]
     root_module['ns3::Time'].implicitly_converts_to(root_module['ns3::int64x64_t'])
     ## trace-source-accessor.h (module 'core'): ns3::TraceSourceAccessor [class]
@@ -272,10 +226,6 @@
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
-    module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
-    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
     ## ipv4.h (module 'internet'): ns3::Ipv4 [class]
     module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -300,8 +250,6 @@
     module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
     module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
-    module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
     module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -410,18 +358,10 @@
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
     register_Ns3Inet6SocketAddress_methods(root_module, root_module['ns3::Inet6SocketAddress'])
     register_Ns3InetSocketAddress_methods(root_module, root_module['ns3::InetSocketAddress'])
-    register_Ns3IntToType__0_methods(root_module, root_module['ns3::IntToType< 0 >'])
-    register_Ns3IntToType__1_methods(root_module, root_module['ns3::IntToType< 1 >'])
-    register_Ns3IntToType__2_methods(root_module, root_module['ns3::IntToType< 2 >'])
-    register_Ns3IntToType__3_methods(root_module, root_module['ns3::IntToType< 3 >'])
-    register_Ns3IntToType__4_methods(root_module, root_module['ns3::IntToType< 4 >'])
-    register_Ns3IntToType__5_methods(root_module, root_module['ns3::IntToType< 5 >'])
-    register_Ns3IntToType__6_methods(root_module, root_module['ns3::IntToType< 6 >'])
     register_Ns3Ipv4Address_methods(root_module, root_module['ns3::Ipv4Address'])
     register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
     register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
     register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
-    register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
     register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
     register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
@@ -448,8 +388,6 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
-    register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -458,7 +396,6 @@
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
-    register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
@@ -492,7 +429,6 @@
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
     register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -504,7 +440,6 @@
     register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
     register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
     register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
-    register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3Mac48AddressChecker_methods(root_module, root_module['ns3::Mac48AddressChecker'])
@@ -1166,55 +1101,6 @@
                    [param('uint16_t', 'port')])
     return
 
-def register_Ns3IntToType__0_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__1_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__2_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__3_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__4_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__5_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
-    return
-
-def register_Ns3IntToType__6_methods(root_module, cls):
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType() [constructor]
-    cls.add_constructor([])
-    ## int-to-type.h (module 'core'): ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
-    return
-
 def register_Ns3Ipv4Address_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -1551,10 +1437,11 @@
                    'bool', 
                    [param('ns3::Ipv6Address const &', 'other')], 
                    is_const=True)
-    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() [member function]
+    ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsIpv4MappedAddress() const [member function]
     cls.add_method('IsIpv4MappedAddress', 
                    'bool', 
-                   [])
+                   [], 
+                   is_const=True)
     ## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsLinkLocal() const [member function]
     cls.add_method('IsLinkLocal', 
                    'bool', 
@@ -1645,61 +1532,6 @@
                    [param('uint8_t *', 'address')])
     return
 
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
-    cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
-    cls.add_method('GetNsDadUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
-    cls.add_method('GetPrefix', 
-                   'ns3::Ipv6Prefix', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
-    cls.add_method('GetScope', 
-                   'ns3::Ipv6InterfaceAddress::Scope_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Ipv6InterfaceAddress::State_e', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('SetAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('uint32_t', 'uid')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
-    cls.add_method('SetScope', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
-    ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    return
-
 def register_Ns3Ipv6Prefix_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2496,90 +2328,6 @@
                    [param('uint8_t', 'v')])
     return
 
-def register_Ns3Timer_methods(root_module, cls):
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
-    ## timer.h (module 'core'): ns3::Timer::Timer() [constructor]
-    cls.add_constructor([])
-    ## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
-    ## timer.h (module 'core'): void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 
-                   'ns3::Timer::State', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## timer.h (module 'core'): void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [])
-    ## timer.h (module 'core'): void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 
-                   'void', 
-                   [param('ns3::Time', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 
-                   'void', 
-                   [param('ns3::Time const &', 'delay')])
-    ## timer.h (module 'core'): void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3TimerImpl_methods(root_module, cls):
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl() [constructor]
-    cls.add_constructor([])
-    ## timer-impl.h (module 'core'): ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
-    ## timer-impl.h (module 'core'): void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## timer-impl.h (module 'core'): ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 
-                   'ns3::EventId', 
-                   [param('ns3::Time const &', 'delay')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('!=')
@@ -3110,106 +2858,6 @@
                    [param('uint8_t', 'ttl')])
     return
 
-def register_Ns3Ipv6Header_methods(root_module, cls):
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
-    cls.add_constructor([])
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
-    cls.add_method('GetDestinationAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
-    cls.add_method('GetFlowLabel', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
-    cls.add_method('GetHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
-    cls.add_method('GetNextHeader', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
-    cls.add_method('GetPayloadLength', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
-    cls.add_method('GetSourceAddress', 
-                   'ns3::Ipv6Address', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
-    cls.add_method('GetTrafficClass', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
-    cls.add_method('SetDestinationAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
-    cls.add_method('SetFlowLabel', 
-                   'void', 
-                   [param('uint32_t', 'flow')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
-    cls.add_method('SetHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'limit')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
-    cls.add_method('SetNextHeader', 
-                   'void', 
-                   [param('uint8_t', 'next')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
-    cls.add_method('SetPayloadLength', 
-                   'void', 
-                   [param('uint16_t', 'len')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
-    cls.add_method('SetSourceAddress', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'src')])
-    ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
-    cls.add_method('SetTrafficClass', 
-                   'void', 
-                   [param('uint8_t', 'traffic')])
-    return
-
 def register_Ns3Object_methods(root_module, cls):
     ## object.h (module 'core'): ns3::Object::Object() [constructor]
     cls.add_constructor([])
@@ -4090,6 +3738,11 @@
                    'ns3::Time', 
                    [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
                    is_static=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
+    cls.add_method('GetDays', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDouble() const [member function]
     cls.add_method('GetDouble', 
                    'double', 
@@ -4100,6 +3753,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetHours() const [member function]
+    cls.add_method('GetHours', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): int64_t ns3::Time::GetInteger() const [member function]
     cls.add_method('GetInteger', 
                    'int64_t', 
@@ -4115,6 +3773,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetMinutes() const [member function]
+    cls.add_method('GetMinutes', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
     cls.add_method('GetNanoSeconds', 
                    'int64_t', 
@@ -4140,6 +3803,11 @@
                    'int64_t', 
                    [], 
                    is_const=True)
+    ## nstime.h (module 'core'): double ns3::Time::GetYears() const [member function]
+    cls.add_method('GetYears', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
     cls.add_method('IsNegative', 
                    'bool', 
@@ -4473,63 +4141,6 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3IpL4Protocol_methods(root_module, cls):
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
-    cls.add_constructor([])
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
-    cls.add_method('GetDownTarget', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
-    cls.add_method('GetDownTarget6', 
-                   'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
-    cls.add_method('GetProtocolNumber', 
-                   'int', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Header const & header, ns3::Ptr<ns3::Ipv6Interface> incomingInterface) [member function]
-    cls.add_method('Receive', 
-                   'ns3::IpL4Protocol::RxStatus', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
-    cls.add_method('ReceiveIcmp', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')], 
-                   is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr<ns3::Ipv4Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback<void,ns3::Ptr<ns3::Packet>,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr<ns3::Ipv6Route>,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
-    cls.add_method('SetDownTarget6', 
-                   'void', 
-                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -5185,151 +4796,6 @@
                    [param('ns3::Ipv6Address const &', 'value')])
     return
 
-def register_Ns3Ipv6Interface_methods(root_module, cls):
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
-    cls.add_constructor([])
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
-    cls.add_method('AddAddress', 
-                   'bool', 
-                   [param('ns3::Ipv6InterfaceAddress', 'iface')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
-    cls.add_method('GetAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
-    cls.add_method('GetAddressMatchingDestination', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'dst')])
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
-    cls.add_method('GetBaseReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
-    cls.add_method('GetCurHopLimit', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv6Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 
-                   'ns3::Ptr< ns3::NetDevice >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
-    cls.add_method('GetLinkLocalAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
-    cls.add_method('GetNAddresses', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
-    cls.add_method('GetReachableTime', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
-    cls.add_method('GetRetransTimer', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
-    cls.add_method('IsForwarding', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('uint32_t', 'index')])
-    ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
-    cls.add_method('RemoveAddress', 
-                   'ns3::Ipv6InterfaceAddress', 
-                   [param('ns3::Ipv6Address', 'address')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv6Address dest) [member function]
-    cls.add_method('Send', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
-    cls.add_method('SetBaseReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'baseReachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
-    cls.add_method('SetCurHopLimit', 
-                   'void', 
-                   [param('uint8_t', 'curHopLimit')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('SetDevice', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
-    cls.add_method('SetDown', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
-    cls.add_method('SetForwarding', 
-                   'void', 
-                   [param('bool', 'forward')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 
-                   'void', 
-                   [param('uint16_t', 'metric')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
-    cls.add_method('SetNsDadUid', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
-    cls.add_method('SetReachableTime', 
-                   'void', 
-                   [param('uint16_t', 'reachableTime')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
-    cls.add_method('SetRetransTimer', 
-                   'void', 
-                   [param('uint16_t', 'retransTimer')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
-    cls.add_method('SetState', 
-                   'void', 
-                   [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
-    cls.add_method('SetUp', 
-                   'void', 
-                   [])
-    ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
 def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
     cls.add_constructor([])
diff -Naur ns-3.19/src/visualizer/model/visual-simulator-impl.cc ns-3.20/src/visualizer/model/visual-simulator-impl.cc
--- ns-3.19/src/visualizer/model/visual-simulator-impl.cc	2014-06-17 10:34:00.476636368 -0700
+++ ns-3.20/src/visualizer/model/visual-simulator-impl.cc	2014-06-17 10:33:13.821996517 -0700
@@ -28,8 +28,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (VisualSimulatorImpl)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (VisualSimulatorImpl);
 
 namespace
 {
diff -Naur ns-3.19/src/wave/bindings/modulegen__gcc_ILP32.py ns-3.20/src/wave/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/wave/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.490636260 -0700
+++ ns-3.20/src/wave/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.834996417 -0700
@@ -143,7 +143,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -156,6 +156,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -192,6 +194,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -410,26 +414,26 @@
     module.add_class('DcaTxop', import_from_module='ns.wifi', parent=root_module['ns3::Dcf'])
     ## ocb-wifi-mac.h (module 'wave'): ns3::OcbWifiMac [class]
     module.add_class('OcbWifiMac', parent=root_module['ns3::RegularWifiMac'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::VscCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::VscCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::VscCallback&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::VscCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::VscCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::VscCallback&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -458,12 +462,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -539,6 +543,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1260,6 +1265,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1272,6 +1281,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3193,6 +3206,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -3716,61 +3737,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3778,6 +3755,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3818,6 +3797,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4782,12 +4763,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4813,6 +4796,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6487,6 +6475,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8927,10 +8920,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PointerChecker_methods(root_module, cls):
@@ -9652,6 +9645,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/wave/bindings/modulegen__gcc_LP64.py ns-3.20/src/wave/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/wave/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.495636221 -0700
+++ ns-3.20/src/wave/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.839996379 -0700
@@ -143,7 +143,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
@@ -156,6 +156,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -192,6 +194,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -410,26 +414,26 @@
     module.add_class('DcaTxop', import_from_module='ns.wifi', parent=root_module['ns3::Dcf'])
     ## ocb-wifi-mac.h (module 'wave'): ns3::OcbWifiMac [class]
     module.add_class('OcbWifiMac', parent=root_module['ns3::RegularWifiMac'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ns3::VscCallback')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', 'ns3::VscCallback*')
-    typehandlers.add_type_alias('ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', 'ns3::VscCallback&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::VscCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::VscCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::WifiMac >, ns3::OrganizationIdentifier const &, ns3::Ptr< ns3::Packet const >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::VscCallback&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -458,12 +462,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -539,6 +543,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1260,6 +1265,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1272,6 +1281,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3193,6 +3206,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -3714,63 +3735,19 @@
     return
 
 def register_Ns3Int64x64_t_methods(root_module, cls):
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -3778,6 +3755,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -3818,6 +3797,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -4780,14 +4761,16 @@
     return
 
 def register_Ns3Time_methods(root_module, cls):
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4813,6 +4796,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -6487,6 +6475,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8927,10 +8920,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3PointerChecker_methods(root_module, cls):
@@ -9652,6 +9645,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/wave/model/ocb-wifi-mac.cc ns-3.20/src/wave/model/ocb-wifi-mac.cc
--- ns-3.19/src/wave/model/ocb-wifi-mac.cc	2014-06-17 10:34:00.498636198 -0700
+++ ns-3.20/src/wave/model/ocb-wifi-mac.cc	2014-06-17 10:33:13.842996355 -0700
@@ -125,7 +125,7 @@
 Ssid
 OcbWifiMac::GetSsid (void) const
 {
-  NS_FATAL_ERROR ("in OCB mode we should not call GetSsid");
+  NS_LOG_WARN ("in OCB mode we should not call GetSsid");
   // we really do not want to return ssid, however we have to provide
   return RegularWifiMac::GetSsid ();
 }
@@ -134,13 +134,13 @@
 void
 OcbWifiMac::SetBssid (Mac48Address bssid)
 {
-  NS_FATAL_ERROR ("in OCB mode we should not call SetBsid");
+  NS_LOG_WARN ("in OCB mode we should not call SetBsid");
 }
 
 Mac48Address
 OcbWifiMac::GetBssid (void) const
 {
-  NS_FATAL_ERROR ("in OCB mode we should not call GetBssid");
+  NS_LOG_WARN ("in OCB mode we should not call GetBssid");
   return WILDCARD_BSSID;
 }
 
diff -Naur ns-3.19/src/wifi/bindings/modulegen__gcc_ILP32.py ns-3.20/src/wifi/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/wifi/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.510636106 -0700
+++ ns-3.20/src/wifi/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.854996262 -0700
@@ -159,7 +159,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
@@ -176,6 +176,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -220,6 +222,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -564,42 +568,42 @@
     module.add_class('ApWifiMac', parent=root_module['ns3::RegularWifiMac'])
     ## dca-txop.h (module 'wifi'): ns3::DcaTxop [class]
     module.add_class('DcaTxop', parent=root_module['ns3::Dcf'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader >', container_type='list')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader >', container_type=u'list')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', u'ns3::MinstrelRate')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', u'ns3::MinstrelRate*')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', u'ns3::MinstrelRate&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', u'ns3::SampleRate')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', u'ns3::SampleRate*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', u'ns3::SampleRate&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -628,12 +632,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -717,6 +721,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1526,6 +1531,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1538,6 +1547,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3730,6 +3743,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -4340,61 +4361,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4402,6 +4379,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4442,6 +4421,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5697,12 +5678,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5728,6 +5711,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7605,6 +7593,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8499,6 +8492,16 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsMcsSupported(ns3::WifiMode mode) [member function]
+    cls.add_method('IsMcsSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_const=True, is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -10398,12 +10401,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -10874,13 +10877,13 @@
     return
 
 def register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411LosPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411LosPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -10903,13 +10906,13 @@
     return
 
 def register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -10985,13 +10988,13 @@
     return
 
 def register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, cls):
-    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::Kun2600MhzPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): double ns3::Kun2600MhzPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -11874,13 +11877,13 @@
     return
 
 def register_Ns3OkumuraHataPropagationLossModel_methods(root_module, cls):
-    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::OkumuraHataPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): double ns3::OkumuraHataPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -12157,10 +12160,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -13397,6 +13400,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/wifi/bindings/modulegen__gcc_LP64.py ns-3.20/src/wifi/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/wifi/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.519636036 -0700
+++ ns-3.20/src/wifi/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.863996193 -0700
@@ -159,7 +159,7 @@
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
@@ -176,6 +176,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId [class]
     module.add_class('TypeId', import_from_module='ns.core')
     ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
@@ -220,6 +222,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## chunk.h (module 'network'): ns3::Chunk [class]
     module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## header.h (module 'network'): ns3::Header [class]
@@ -564,42 +568,42 @@
     module.add_class('ApWifiMac', parent=root_module['ns3::RegularWifiMac'])
     ## dca-txop.h (module 'wifi'): ns3::DcaTxop [class]
     module.add_class('DcaTxop', parent=root_module['ns3::Dcf'])
-    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type='vector')
-    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type='vector')
-    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader >', container_type='list')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >', 'ns3::WifiMcsList')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >*', 'ns3::WifiMcsList*')
-    typehandlers.add_type_alias('std::vector< unsigned char, std::allocator< unsigned char > >&', 'ns3::WifiMcsList&')
-    typehandlers.add_type_alias('uint8_t', 'ns3::WifiInformationElementId')
-    typehandlers.add_type_alias('uint8_t*', 'ns3::WifiInformationElementId*')
-    typehandlers.add_type_alias('uint8_t&', 'ns3::WifiInformationElementId&')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
-    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
-    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
-    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
+    module.add_container('ns3::WifiMcsList', 'unsigned char', container_type=u'vector')
+    module.add_container('std::list< std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader > >', 'std::pair< ns3::Ptr< ns3::Packet >, ns3::AmsduSubframeHeader >', container_type=u'list')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >', u'ns3::WifiMcsList')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >*', u'ns3::WifiMcsList*')
+    typehandlers.add_type_alias(u'std::vector< unsigned char, std::allocator< unsigned char > >&', u'ns3::WifiMcsList&')
+    typehandlers.add_type_alias(u'uint8_t', u'ns3::WifiInformationElementId')
+    typehandlers.add_type_alias(u'uint8_t*', u'ns3::WifiInformationElementId*')
+    typehandlers.add_type_alias(u'uint8_t&', u'ns3::WifiInformationElementId&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', u'ns3::WifiModeListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', u'ns3::WifiModeListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', u'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+    typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+    typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
     module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*')
-    typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
-    typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
-    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
-    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
-    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', u'ns3::MinstrelRate')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', u'ns3::MinstrelRate*')
+    typehandlers.add_type_alias(u'std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', u'ns3::MinstrelRate&')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', u'ns3::WifiModeList')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', u'ns3::WifiModeList*')
+    typehandlers.add_type_alias(u'std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', u'ns3::WifiModeList&')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+    typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
     module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*')
-    typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&')
-    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
-    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
-    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', u'ns3::SampleRate')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', u'ns3::SampleRate*')
+    typehandlers.add_type_alias(u'std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', u'ns3::SampleRate&')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+    typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
     module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', 'ns3::WifiMcsListIterator')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', 'ns3::WifiMcsListIterator*')
-    typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', 'ns3::WifiMcsListIterator&')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >', u'ns3::WifiMcsListIterator')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >*', u'ns3::WifiMcsListIterator*')
+    typehandlers.add_type_alias(u'__gnu_cxx::__normal_iterator< unsigned char const *, std::vector< unsigned char, std::allocator< unsigned char > > >&', u'ns3::WifiMcsListIterator&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -628,12 +632,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -717,6 +721,7 @@
     register_Ns3StatusCode_methods(root_module, root_module['ns3::StatusCode'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
@@ -1526,6 +1531,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1538,6 +1547,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -3730,6 +3743,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TypeId_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_binary_comparison_operator('<')
@@ -4340,61 +4361,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4402,6 +4379,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4442,6 +4421,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -5697,12 +5678,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -5728,6 +5711,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -7605,6 +7593,11 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -8499,6 +8492,16 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsMcsSupported(ns3::WifiMode mode) [member function]
+    cls.add_method('IsMcsSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsModeSupported(ns3::WifiMode mode) const [member function]
+    cls.add_method('IsModeSupported', 
+                   'bool', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_const=True, is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateBusy() [member function]
     cls.add_method('IsStateBusy', 
                    'bool', 
@@ -10398,12 +10401,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -10874,13 +10877,13 @@
     return
 
 def register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411LosPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411LosPropagationLossModel::ItuR1411LosPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-los-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411LosPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -10903,13 +10906,13 @@
     return
 
 def register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, cls):
-    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel::ItuR1411NlosOverRooftopPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): void ns3::ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency(double freq) [member function]
     cls.add_method('SetFrequency', 
                    'void', 
@@ -10985,13 +10988,13 @@
     return
 
 def register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, cls):
-    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::Kun2600MhzPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel::Kun2600MhzPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): double ns3::Kun2600MhzPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -11874,13 +11877,13 @@
     return
 
 def register_Ns3OkumuraHataPropagationLossModel_methods(root_module, cls):
-    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
-    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::OkumuraHataPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
+    ## okumura-hata-propagation-loss-model.h (module 'propagation'): ns3::OkumuraHataPropagationLossModel::OkumuraHataPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## okumura-hata-propagation-loss-model.h (module 'propagation'): double ns3::OkumuraHataPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('GetLoss', 
                    'double', 
@@ -12157,10 +12160,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
@@ -13397,6 +13400,10 @@
     cls.add_method('SetWifiRemoteStationManager', 
                    'void', 
                    [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'remoteManager')])
+    ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxMiddle(ns3::MacTxMiddle * txMiddle) [member function]
+    cls.add_method('SetTxMiddle', 
+                   'void', 
+                   [param('ns3::MacTxMiddle *', 'txMiddle')])
     ## dca-txop.h (module 'wifi'): void ns3::DcaTxop::SetTxOkCallback(ns3::Callback<void, ns3::WifiMacHeader const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetTxOkCallback', 
                    'void', 
diff -Naur ns-3.19/src/wifi/doc/WifiArchitecture.dia ns-3.20/src/wifi/doc/WifiArchitecture.dia
--- ns-3.19/src/wifi/doc/WifiArchitecture.dia	2014-06-17 10:34:00.520636028 -0700
+++ ns-3.20/src/wifi/doc/WifiArchitecture.dia	2014-06-17 10:33:13.864996186 -0700
@@ -1,11 +1,11 @@
-     ][s8~ϯ/U#L&=鞞Twj^\26;< '=|эW勬wst$"Hqt3@:H~n_?Oo~Q.pb'JhJ6+1SLiLVH^{͒xTQ΋8px3x3QQh=u/LZS$j8]/wÞ7R(޾H(%ɛ_뫺ZAtYʂ	SwB?&݊t+.H8	IGTrR05_44>pS4 ENYwDM-O'Nݕ׾TCT]}֪_S}d!D1yvEѡ^/;cJ;5I~5RqđGw}OC<Z4C?zsPi(?^А|R{>p˘!RE'r	\>f!7d"ռF&<CϓHB{q҄v	pdY6zNٜ׍Wzq\A[S,o[RsTMN/T'2UDL	}O0=p[gVIeKS5\ҁ5PÛu쌵l7h&tl  46B{Um&(,ZIբ:U&L^mF`$L60:a
-!,qbpwN@ñ.C[G0w$MTqpnk|]RT[w.،.Ň<z^^EcYmq*mi?EDD*/X"Te}T eZW#zS}w-##6r!浣X軾Wt[]!Sh}"+}wֱ2Ptן8H,4(~*kl*~ҏw#+jS5{
-B2x<LUA#]-:Y5Kx彾ӧp]y`5dϵls9
-]Q.^a&3ac݁R
-(*cx>QcQ)m\thg%2ʝߠc)1x'|&CC1|ڍm.iVR4FNUEK4A^>=t}y0MpD[1[BysJY8<ׇ{)2},SYz$_QpNr|,Un@)"љjH:lmt^U,UֺL
-tjR6*58DFG
-"$u"X$x)+x"%y"Jŕzl<5?O92"|_|o%ɦ(T6Hkr )!E"D*	ThsDBAW"P]mgq*R^yc(=^xFQPǉg0>@%JFsSttTbd;vmeSgK||/-HZW|f'ūW}xEc PDW3,֠$<I4痜M_E|Ζt~cvۧ@eNh4ۘ⌝eD/xCyCSͣ	)X?y|.󥜲l哪Cփ $Kb:X5 /!nr팜]Ric#P2ojѐ%e0e068$p~
- @U5H%Dϳv^Ig<Y'
-ڽ&Hki'uܖIOYFX/!nXЩ OW$Il0t@9hxbởȰMQl,<6lQ(ǣH˻˟]tŰAa:)h :,k4t[]W|B%eKu 5^)C>1;[]V=kp0Y=nEvTC1znՖ9TWq벿
-ώj6sho~f*qYjJq`dt$"q8eL"]A$rO%:'Rvj o4M0mJ_%n%Kղp@Ooyت~ߛQKhnoLIq6r~d;[X	)g{	#@{khرEHmetvJ0Ɲ8MrRKSW'(WD)tcr=x|y	x}uh@<F4]ECt%_{AA&&Kzj-ZNhiK3wHl^xc}2zooG%e.'Σ½,Y)Cυx̽T쇋9ːAG޿BJuLo{
-a:\of2<5Kb,-K6p{Mky-<&10|suE7R%t޸ƭN띒>am@u]Hey`?X 4\iLPwNĜ}$y{Yo=	  
\ No newline at end of file
+     ][۶~_!8/-`Ӣ6)ҤimdeAKYr%z7~9){wmKIT"e~pHӗY,e#$H(un~zucHr~7elpeNX8ZKаJӞWFwo	cY4Z0%dF_F$<ERrAvO◽cW7SL(su:|4ۮv6O|HE=YU
+%W/Sh՗O]l 6#$JveAEc6}rgv9]ܨ]qqvE<XF"+r1%I!ez< 1ؾ>K\17P|N,
+wލ<D!}\EKIGy4iG	ke3o?O?Em&"MMd4?fe*jvcj`1YlUOZ[=h$`YЀn]>S1m~=!QAl wk>`}wѣh.$ȷ؆$Ҙ4KviB3$ٽ55h2euc/||>ܕ)sovttfN+m#Vpew4-ZmNV&,pq${ZΖK?Ey__> oStM) <ۮ'jVt xdF˟'M>*39|		܀0[Ye!oyh<<4ey9`5>mCu0o܇0s1]|	QF!Gڃ4Ih:E{8JdeO|QyR>I*(ԧ^\F.7ͺC Xbȵ
+!hu4[U![^Kς.crK~A~6%I",A,t]cSc1nt늚Tڞ*¸/3 "#tZ㎎qV-cQEyor\]Wڊj7๚MtsWL}d9op}ϳ{Wn){0E+dP56٨uE,dtyt2zCEm</yoH;SS6XV=ֶ2<82|!ԝ&+Vv|GʢufѰ.1lNgu[^\>|,gȎUGOWm%Q\-P ,;0p]qҝ+*ZÀSgQۡRK"]ݢjsf!ɟ?N,}оf )y?KE<[!XEI[c7mHrMd:)(%);7/lzK_(~ #XHU=ޜXv
+GWJA!B#c/b|eU=(7ʐAW?AI$M&?P	Qj`L_rlO)F׎?S^ƦwbJLǕ:ŦYi;>Kx\`)UVB(5} Sw$y54K&O"x>gKI>=|Ɩc껧@#eLh贛؉\ć(6r)TXY?{%YٗK9'YG9.!jV.jBEG`PI6ĢO+ dK(R(T
+9:8&P{F6$s="}'/aL`*˜OiZ#y\g⌔f"]ot$20¦{	IvVUQTN+`yKYw{-FN(+1j{r2VK;8=O2͍UJZ&
++^zJ,W JkksHܑ y|3mtb%yAڽ,B_Dn6lɥY&Ʊw^7<]/Kϸ.n6ȏ{'v#VY].Kͻv#2#S5S_'pnXag;26>n{\.Yuv8Ȩ ]du"4Nx,p<ؔjbMli/6ȄGק2ʞע1eSR4M5>#~*\-.W{z;aQ<$}IϭΠ:ViNF2!׏lSl{>ZBK2aFIkD1@ &ylPzfiHa}_Q4A}u8MNnH GǏPWn9Gc^Z:ƋD8\l`4VoD	pm} )^]DMԴ^Hvb0Ygo?׷Kn*)b
+ZDmUEЪ>7Qp3:+f/cU}J6oS=H} UnMn6+r 
+>?6Rsԛc1/SbL{#Opf@mwFOɅ8V$.r}H-}3k[jZt`z#7Bؒr|dW-,f" Ih]N>CBf"}3.|=a4al(}$ޤ!A$K	eg(/T3)#pi}WE:LIeik)y]|Hw,?E]"fcD-	9b?#o."\`_SC'Fx6',b6'1i1Ϙӿ;,)f"3+]DyٲZfgG3EΪUPQnTl8⋇zkyHaQ)("N7d<E.5*j5RpT
+Gn3xd#ϕG<aF5Oі),"Ni7L9R꣯¢
+SXU8ɒfdd  
\ No newline at end of file
diff -Naur ns-3.19/src/wifi/helper/athstats-helper.cc ns-3.20/src/wifi/helper/athstats-helper.cc
--- ns-3.19/src/wifi/helper/athstats-helper.cc	2014-06-17 10:34:00.523636005 -0700
+++ ns-3.20/src/wifi/helper/athstats-helper.cc	2014-06-17 10:33:13.866996170 -0700
@@ -105,8 +105,7 @@
 
 
 
-NS_OBJECT_ENSURE_REGISTERED (AthstatsWifiTraceSink)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AthstatsWifiTraceSink);
 
 TypeId
 AthstatsWifiTraceSink::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/aarfcd-wifi-manager.cc ns-3.20/src/wifi/model/aarfcd-wifi-manager.cc
--- ns-3.19/src/wifi/model/aarfcd-wifi-manager.cc	2014-06-17 10:34:00.528635967 -0700
+++ ns-3.20/src/wifi/model/aarfcd-wifi-manager.cc	2014-06-17 10:33:13.872996124 -0700
@@ -59,8 +59,7 @@
   bool m_haveASuccess;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (AarfcdWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AarfcdWifiManager);
 
 TypeId
 AarfcdWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/aarf-wifi-manager.cc ns-3.20/src/wifi/model/aarf-wifi-manager.cc
--- ns-3.19/src/wifi/model/aarf-wifi-manager.cc	2014-06-17 10:34:00.527635974 -0700
+++ ns-3.20/src/wifi/model/aarf-wifi-manager.cc	2014-06-17 10:33:13.871996131 -0700
@@ -52,8 +52,7 @@
 };
 
 
-NS_OBJECT_ENSURE_REGISTERED (AarfWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AarfWifiManager);
 
 TypeId
 AarfWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/adhoc-wifi-mac.cc ns-3.20/src/wifi/model/adhoc-wifi-mac.cc
--- ns-3.19/src/wifi/model/adhoc-wifi-mac.cc	2014-06-17 10:34:00.529635959 -0700
+++ ns-3.20/src/wifi/model/adhoc-wifi-mac.cc	2014-06-17 10:33:13.872996124 -0700
@@ -40,8 +40,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (AdhocWifiMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AdhocWifiMac);
 
 TypeId
 AdhocWifiMac::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/amrr-wifi-manager.cc ns-3.20/src/wifi/model/amrr-wifi-manager.cc
--- ns-3.19/src/wifi/model/amrr-wifi-manager.cc	2014-06-17 10:34:00.530635951 -0700
+++ ns-3.20/src/wifi/model/amrr-wifi-manager.cc	2014-06-17 10:33:13.873996116 -0700
@@ -50,8 +50,7 @@
 };
 
 
-NS_OBJECT_ENSURE_REGISTERED (AmrrWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AmrrWifiManager);
 
 TypeId
 AmrrWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/amsdu-subframe-header.cc ns-3.20/src/wifi/model/amsdu-subframe-header.cc
--- ns-3.19/src/wifi/model/amsdu-subframe-header.cc	2014-06-17 10:34:00.530635951 -0700
+++ ns-3.20/src/wifi/model/amsdu-subframe-header.cc	2014-06-17 10:33:13.874996108 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (AmsduSubframeHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (AmsduSubframeHeader);
 
 TypeId
 AmsduSubframeHeader::GetTypeId ()
diff -Naur ns-3.19/src/wifi/model/ap-wifi-mac.cc ns-3.20/src/wifi/model/ap-wifi-mac.cc
--- ns-3.19/src/wifi/model/ap-wifi-mac.cc	2014-06-17 10:34:00.531635943 -0700
+++ ns-3.20/src/wifi/model/ap-wifi-mac.cc	2014-06-17 10:33:13.875996101 -0700
@@ -42,8 +42,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ApWifiMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ApWifiMac);
 
 TypeId
 ApWifiMac::GetTypeId (void)
@@ -82,6 +81,7 @@
   m_beaconDca->SetMaxCw (0);
   m_beaconDca->SetLow (m_low);
   m_beaconDca->SetManager (m_dcfManager);
+  m_beaconDca->SetTxMiddle (m_txMiddle);
 
   // Let the lower layers know that we are acting as an AP.
   SetTypeOfStation (AP);
@@ -169,7 +169,7 @@
   NS_LOG_FUNCTION (this << interval);
   if ((interval.GetMicroSeconds () % 1024) != 0)
     {
-      NS_LOG_WARN ("beacon interval should be multiple of 1024us, see IEEE Std. 802.11-2007, section 11.1.1.1");
+      NS_LOG_WARN ("beacon interval should be multiple of 1024us (802.11 time unit), see IEEE Std. 802.11-2012");
     }
   m_beaconInterval = interval;
 }
diff -Naur ns-3.19/src/wifi/model/arf-wifi-manager.cc ns-3.20/src/wifi/model/arf-wifi-manager.cc
--- ns-3.19/src/wifi/model/arf-wifi-manager.cc	2014-06-17 10:34:00.532635936 -0700
+++ ns-3.20/src/wifi/model/arf-wifi-manager.cc	2014-06-17 10:33:13.876996093 -0700
@@ -50,8 +50,7 @@
   uint32_t m_rate;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (ArfWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ArfWifiManager);
 
 TypeId
 ArfWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/block-ack-manager.cc ns-3.20/src/wifi/model/block-ack-manager.cc
--- ns-3.19/src/wifi/model/block-ack-manager.cc	2014-06-17 10:34:00.534635920 -0700
+++ ns-3.20/src/wifi/model/block-ack-manager.cc	2014-06-17 10:33:13.878996077 -0700
@@ -222,9 +222,9 @@
 {
   NS_LOG_FUNCTION (this << &hdr);
   Ptr<const Packet> packet = 0;
+  CleanupBuffers ();
   if (m_retryPackets.size () > 0)
     {
-      CleanupBuffers ();
       PacketQueueI queueIt = m_retryPackets.front ();
       m_retryPackets.pop_front ();
       packet = queueIt->packet;
diff -Naur ns-3.19/src/wifi/model/cara-wifi-manager.cc ns-3.20/src/wifi/model/cara-wifi-manager.cc
--- ns-3.19/src/wifi/model/cara-wifi-manager.cc	2014-06-17 10:34:00.536635905 -0700
+++ ns-3.20/src/wifi/model/cara-wifi-manager.cc	2014-06-17 10:33:13.880996062 -0700
@@ -46,8 +46,7 @@
   uint32_t m_rate;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (CaraWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CaraWifiManager);
 
 TypeId
 CaraWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/constant-rate-wifi-manager.cc ns-3.20/src/wifi/model/constant-rate-wifi-manager.cc
--- ns-3.19/src/wifi/model/constant-rate-wifi-manager.cc	2014-06-17 10:34:00.537635897 -0700
+++ ns-3.20/src/wifi/model/constant-rate-wifi-manager.cc	2014-06-17 10:33:13.880996062 -0700
@@ -30,8 +30,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ConstantRateWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConstantRateWifiManager);
 
 TypeId
 ConstantRateWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/ctrl-headers.cc ns-3.20/src/wifi/model/ctrl-headers.cc
--- ns-3.19/src/wifi/model/ctrl-headers.cc	2014-06-17 10:34:00.538635889 -0700
+++ ns-3.20/src/wifi/model/ctrl-headers.cc	2014-06-17 10:33:13.881996054 -0700
@@ -30,8 +30,7 @@
  *       Block ack request
  ***********************************/
 
-NS_OBJECT_ENSURE_REGISTERED (CtrlBAckRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CtrlBAckRequestHeader);
 
 CtrlBAckRequestHeader::CtrlBAckRequestHeader ()
   : m_barAckPolicy (false),
@@ -279,8 +278,7 @@
  *       Block ack response
  ***********************************/
 
-NS_OBJECT_ENSURE_REGISTERED (CtrlBAckResponseHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (CtrlBAckResponseHeader);
 
 CtrlBAckResponseHeader::CtrlBAckResponseHeader ()
   : m_baAckPolicy (false),
diff -Naur ns-3.19/src/wifi/model/dca-txop.cc ns-3.20/src/wifi/model/dca-txop.cc
--- ns-3.19/src/wifi/model/dca-txop.cc	2014-06-17 10:34:00.539635881 -0700
+++ ns-3.20/src/wifi/model/dca-txop.cc	2014-06-17 10:33:13.882996046 -0700
@@ -120,8 +120,7 @@
   DcaTxop *m_txop;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (DcaTxop)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DcaTxop);
 
 TypeId
 DcaTxop::GetTypeId (void)
@@ -146,7 +145,6 @@
   m_dcf = new DcaTxop::Dcf (this);
   m_queue = CreateObject<WifiMacQueue> ();
   m_rng = new RealRandomStream ();
-  m_txMiddle = new MacTxMiddle ();
 }
 
 DcaTxop::~DcaTxop ()
@@ -164,7 +162,6 @@
   delete m_transmissionListener;
   delete m_dcf;
   delete m_rng;
-  delete m_txMiddle;
   m_transmissionListener = 0;
   m_dcf = 0;
   m_rng = 0;
@@ -179,6 +176,11 @@
   m_manager->Add (m_dcf);
 }
 
+void DcaTxop::SetTxMiddle (MacTxMiddle *txMiddle)
+{
+  m_txMiddle = txMiddle;
+}
+
 void
 DcaTxop::SetLow (Ptr<MacLow> low)
 {
diff -Naur ns-3.19/src/wifi/model/dca-txop.h ns-3.20/src/wifi/model/dca-txop.h
--- ns-3.19/src/wifi/model/dca-txop.h	2014-06-17 10:34:00.539635881 -0700
+++ ns-3.20/src/wifi/model/dca-txop.h	2014-06-17 10:33:13.883996039 -0700
@@ -101,6 +101,12 @@
    * \param remoteManager WifiRemoteStationManager
    */
   void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> remoteManager);
+  /**
+   * Set MacTxMiddle this DcaTxop is associated to.
+   *
+   * \param txMiddle MacTxMiddle
+   */
+  void SetTxMiddle (MacTxMiddle *txMiddle);
 
   /**
    * \param callback the callback to invoke when a
diff -Naur ns-3.19/src/wifi/model/dcf.cc ns-3.20/src/wifi/model/dcf.cc
--- ns-3.19/src/wifi/model/dcf.cc	2014-06-17 10:34:00.540635874 -0700
+++ ns-3.20/src/wifi/model/dcf.cc	2014-06-17 10:33:13.884996031 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Dcf)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Dcf);
 
 TypeId
 Dcf::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/dcf-manager.cc ns-3.20/src/wifi/model/dcf-manager.cc
--- ns-3.19/src/wifi/model/dcf-manager.cc	2014-06-17 10:34:00.540635874 -0700
+++ ns-3.20/src/wifi/model/dcf-manager.cc	2014-06-17 10:33:13.883996039 -0700
@@ -94,7 +94,7 @@
 void
 DcfState::UpdateFailedCw (void)
 {
-  // see 802.11-2007, section 9.9.1.5
+  // see 802.11-2012, section 9.19.2.5
   m_cw = std::min ( 2 * (m_cw + 1) - 1, m_cwMax);
 }
 void
diff -Naur ns-3.19/src/wifi/model/edca-txop-n.cc ns-3.20/src/wifi/model/edca-txop-n.cc
--- ns-3.19/src/wifi/model/edca-txop-n.cc	2014-06-17 10:34:00.542635859 -0700
+++ ns-3.20/src/wifi/model/edca-txop-n.cc	2014-06-17 10:33:13.886996016 -0700
@@ -138,8 +138,7 @@
   EdcaTxopN *m_txop;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (EdcaTxopN)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (EdcaTxopN);
 
 TypeId
 EdcaTxopN::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/error-rate-model.cc ns-3.20/src/wifi/model/error-rate-model.cc
--- ns-3.19/src/wifi/model/error-rate-model.cc	2014-06-17 10:34:00.543635851 -0700
+++ ns-3.20/src/wifi/model/error-rate-model.cc	2014-06-17 10:33:13.887996008 -0700
@@ -21,8 +21,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ErrorRateModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ErrorRateModel);
 
 TypeId ErrorRateModel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wifi/model/ideal-wifi-manager.cc ns-3.20/src/wifi/model/ideal-wifi-manager.cc
--- ns-3.19/src/wifi/model/ideal-wifi-manager.cc	2014-06-17 10:34:00.545635835 -0700
+++ ns-3.20/src/wifi/model/ideal-wifi-manager.cc	2014-06-17 10:33:13.888996000 -0700
@@ -38,8 +38,7 @@
   double m_lastSnr;  //!< SNR of last packet sent to the remote station
 };
 
-NS_OBJECT_ENSURE_REGISTERED (IdealWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (IdealWifiManager);
 
 TypeId
 IdealWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/mgt-headers.cc ns-3.20/src/wifi/model/mgt-headers.cc
--- ns-3.19/src/wifi/model/mgt-headers.cc	2014-06-17 10:34:00.550635797 -0700
+++ ns-3.20/src/wifi/model/mgt-headers.cc	2014-06-17 10:33:13.894995954 -0700
@@ -29,8 +29,7 @@
  *          Probe Request
  ***********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtProbeRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtProbeRequestHeader);
 
 MgtProbeRequestHeader::~MgtProbeRequestHeader ()
 {
@@ -123,8 +122,7 @@
  *          Probe Response
  ***********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtProbeResponseHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtProbeResponseHeader);
 
 MgtProbeResponseHeader::MgtProbeResponseHeader ()
 {
@@ -257,8 +255,7 @@
  *          Assoc Request
  ***********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtAssocRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtAssocRequestHeader);
 
 MgtAssocRequestHeader::MgtAssocRequestHeader ()
   : m_listenInterval (0)
@@ -370,8 +367,7 @@
  *          Assoc Response
  ***********************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtAssocResponseHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtAssocResponseHeader);
 
 MgtAssocResponseHeader::MgtAssocResponseHeader ()
   : m_aid (0)
@@ -641,8 +637,7 @@
 *                 ADDBARequest
 ****************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtAddBaRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtAddBaRequestHeader);
 
 MgtAddBaRequestHeader::MgtAddBaRequestHeader ()
   : m_dialogToken (1),
@@ -818,8 +813,7 @@
 *                 ADDBAResponse
 ****************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtAddBaResponseHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtAddBaResponseHeader);
 
 MgtAddBaResponseHeader::MgtAddBaResponseHeader ()
   : m_dialogToken (1),
@@ -985,8 +979,7 @@
 *                     DelBa
 ****************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (MgtDelBaHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MgtDelBaHeader);
 
 MgtDelBaHeader::MgtDelBaHeader ()
   : m_reasonCode (1)
diff -Naur ns-3.19/src/wifi/model/minstrel-wifi-manager.cc ns-3.20/src/wifi/model/minstrel-wifi-manager.cc
--- ns-3.19/src/wifi/model/minstrel-wifi-manager.cc	2014-06-17 10:34:00.551635789 -0700
+++ ns-3.20/src/wifi/model/minstrel-wifi-manager.cc	2014-06-17 10:33:13.895995946 -0700
@@ -83,8 +83,7 @@
   bool m_initialized;  ///< for initializing tables
 };
 
-NS_OBJECT_ENSURE_REGISTERED (MinstrelWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MinstrelWifiManager);
 
 TypeId
 MinstrelWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/msdu-aggregator.cc ns-3.20/src/wifi/model/msdu-aggregator.cc
--- ns-3.19/src/wifi/model/msdu-aggregator.cc	2014-06-17 10:34:00.552635781 -0700
+++ ns-3.20/src/wifi/model/msdu-aggregator.cc	2014-06-17 10:33:13.896995938 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MsduAggregator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MsduAggregator);
 
 TypeId
 MsduAggregator::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/msdu-standard-aggregator.cc ns-3.20/src/wifi/model/msdu-standard-aggregator.cc
--- ns-3.19/src/wifi/model/msdu-standard-aggregator.cc	2014-06-17 10:34:00.553635774 -0700
+++ ns-3.20/src/wifi/model/msdu-standard-aggregator.cc	2014-06-17 10:33:13.897995931 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MsduStandardAggregator)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MsduStandardAggregator);
 
 TypeId
 MsduStandardAggregator::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/nist-error-rate-model.cc ns-3.20/src/wifi/model/nist-error-rate-model.cc
--- ns-3.19/src/wifi/model/nist-error-rate-model.cc	2014-06-17 10:34:00.553635774 -0700
+++ ns-3.20/src/wifi/model/nist-error-rate-model.cc	2014-06-17 10:33:13.898995923 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (NistErrorRateModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (NistErrorRateModel);
 
 TypeId
 NistErrorRateModel::GetTypeId (void)
@@ -77,7 +76,7 @@
   return ber;
 }
 double
-NistErrorRateModel::GetFecBpskBer (double snr, double nbits,
+NistErrorRateModel::GetFecBpskBer (double snr, uint32_t nbits,
                                    uint32_t bValue) const
 {
   double ber = GetBpskBer (snr);
@@ -87,11 +86,11 @@
     }
   double pe = CalculatePe (ber, bValue);
   pe = std::min (pe, 1.0);
-  double pms = std::pow (1 - pe, nbits);
+  double pms = std::pow (1 - pe, (double)nbits);
   return pms;
 }
 double
-NistErrorRateModel::GetFecQpskBer (double snr, double nbits,
+NistErrorRateModel::GetFecQpskBer (double snr, uint32_t nbits,
                                    uint32_t bValue) const
 {
   double ber = GetQpskBer (snr);
@@ -101,7 +100,7 @@
     }
   double pe = CalculatePe (ber, bValue);
   pe = std::min (pe, 1.0);
-  double pms = std::pow (1 - pe, nbits);
+  double pms = std::pow (1 - pe, (double)nbits);
   return pms;
 }
 double
@@ -112,47 +111,47 @@
   if (bValue == 1)
     {
       // code rate 1/2, use table 3.1.1
-      pe = 0.5 * ( 36.0 * std::pow (D, 10.0)
-                   + 211.0 * std::pow (D, 12.0)
-                   + 1404.0 * std::pow (D, 14.0)
-                   + 11633.0 * std::pow (D, 16.0)
-                   + 77433.0 * std::pow (D, 18.0)
-                   + 502690.0 * std::pow (D, 20.0)
-                   + 3322763.0 * std::pow (D, 22.0)
-                   + 21292910.0 * std::pow (D, 24.0)
-                   + 134365911.0 * std::pow (D, 26.0)
+      pe = 0.5 * ( 36.0 * std::pow (D, 10)
+                   + 211.0 * std::pow (D, 12)
+                   + 1404.0 * std::pow (D, 14)
+                   + 11633.0 * std::pow (D, 16)
+                   + 77433.0 * std::pow (D, 18)
+                   + 502690.0 * std::pow (D, 20)
+                   + 3322763.0 * std::pow (D, 22)
+                   + 21292910.0 * std::pow (D, 24)
+                   + 134365911.0 * std::pow (D, 26)
                    );
     }
   else if (bValue == 2)
     {
       // code rate 2/3, use table 3.1.2
       pe = 1.0 / (2.0 * bValue) *
-        ( 3.0 * std::pow (D, 6.0)
-          + 70.0 * std::pow (D, 7.0)
-          + 285.0 * std::pow (D, 8.0)
-          + 1276.0 * std::pow (D, 9.0)
-          + 6160.0 * std::pow (D, 10.0)
-          + 27128.0 * std::pow (D, 11.0)
-          + 117019.0 * std::pow (D, 12.0)
-          + 498860.0 * std::pow (D, 13.0)
-          + 2103891.0 * std::pow (D, 14.0)
-          + 8784123.0 * std::pow (D, 15.0)
+        ( 3.0 * std::pow (D, 6)
+          + 70.0 * std::pow (D, 7)
+          + 285.0 * std::pow (D, 8)
+          + 1276.0 * std::pow (D, 9)
+          + 6160.0 * std::pow (D, 10)
+          + 27128.0 * std::pow (D, 11)
+          + 117019.0 * std::pow (D, 12)
+          + 498860.0 * std::pow (D, 13)
+          + 2103891.0 * std::pow (D, 14)
+          + 8784123.0 * std::pow (D, 15)
         );
     }
   else if (bValue == 3)
     {
       // code rate 3/4, use table 3.1.2
       pe = 1.0 / (2.0 * bValue) *
-        ( 42.0 * std::pow (D, 5.0)
-          + 201.0 * std::pow (D, 6.0)
-          + 1492.0 * std::pow (D, 7.0)
-          + 10469.0 * std::pow (D, 8.0)
-          + 62935.0 * std::pow (D, 9.0)
-          + 379644.0 * std::pow (D, 10.0)
-          + 2253373.0 * std::pow (D, 11.0)
-          + 13073811.0 * std::pow (D, 12.0)
-          + 75152755.0 * std::pow (D, 13.0)
-          + 428005675.0 * std::pow (D, 14.0)
+        ( 42.0 * std::pow (D, 5)
+          + 201.0 * std::pow (D, 6)
+          + 1492.0 * std::pow (D, 7)
+          + 10469.0 * std::pow (D, 8)
+          + 62935.0 * std::pow (D, 9)
+          + 379644.0 * std::pow (D, 10)
+          + 2253373.0 * std::pow (D, 11)
+          + 13073811.0 * std::pow (D, 12)
+          + 75152755.0 * std::pow (D, 13)
+          + 428005675.0 * std::pow (D, 14)
         );
     }
   else
diff -Naur ns-3.19/src/wifi/model/nist-error-rate-model.h ns-3.20/src/wifi/model/nist-error-rate-model.h
--- ns-3.19/src/wifi/model/nist-error-rate-model.h	2014-06-17 10:34:00.554635766 -0700
+++ ns-3.20/src/wifi/model/nist-error-rate-model.h	2014-06-17 10:33:13.898995923 -0700
@@ -89,7 +89,7 @@
    * \param bValue
    * \return BER of BPSK at the given SNR after applying FEC
    */
-  double GetFecBpskBer (double snr, double nbits,
+  double GetFecBpskBer (double snr, uint32_t nbits,
                         uint32_t bValue) const;
   /**
    * Return BER of QPSK at the given SNR after applying FEC.
@@ -99,7 +99,7 @@
    * \param bValue
    * \return BER of QPSK at the given SNR after applying FEC
    */
-  double GetFecQpskBer (double snr, double nbits,
+  double GetFecQpskBer (double snr, uint32_t nbits,
                         uint32_t bValue) const;
   /**
    * Return BER of QAM16 at the given SNR after applying FEC.
diff -Naur ns-3.19/src/wifi/model/onoe-wifi-manager.cc ns-3.20/src/wifi/model/onoe-wifi-manager.cc
--- ns-3.19/src/wifi/model/onoe-wifi-manager.cc	2014-06-17 10:34:00.554635766 -0700
+++ ns-3.20/src/wifi/model/onoe-wifi-manager.cc	2014-06-17 10:33:13.898995923 -0700
@@ -48,8 +48,7 @@
 };
 
 
-NS_OBJECT_ENSURE_REGISTERED (OnoeWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (OnoeWifiManager);
 
 TypeId
 OnoeWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/qos-tag.cc ns-3.20/src/wifi/model/qos-tag.cc
--- ns-3.19/src/wifi/model/qos-tag.cc	2014-06-17 10:34:00.556635750 -0700
+++ ns-3.20/src/wifi/model/qos-tag.cc	2014-06-17 10:33:13.900995908 -0700
@@ -23,8 +23,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (QosTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (QosTag);
 
 TypeId
 QosTag::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/qos-tag.h ns-3.20/src/wifi/model/qos-tag.h
--- ns-3.19/src/wifi/model/qos-tag.h	2014-06-17 10:34:00.557635743 -0700
+++ ns-3.20/src/wifi/model/qos-tag.h	2014-06-17 10:33:13.901995900 -0700
@@ -28,13 +28,13 @@
 
 
 /**
- * As per IEEE Std. 802.11-2007, Section 6.1.1.1.1, when EDCA is used the
+ * As per IEEE Std. 802.11-2012, Section 5.1.1.3, when EDCA is used the
  * the Traffic ID (TID) value corresponds to one of the User Priority (UP)
  * values defined by the IEEE Std. 802.1D-2004, Annex G, table G-2.
  *
  * Note that this correspondence does not hold for HCCA, since in that
  * case the mapping between UPs and TIDs should be determined by a
- * TSPEC element as per IEEE Std. 802.11-2007, Section 7.3.2.30
+ * TSPEC element as per IEEE Std. 802.11-2012, Section 8.4.2.32
  */
 enum UserPriority
 {
diff -Naur ns-3.19/src/wifi/model/qos-utils.h ns-3.20/src/wifi/model/qos-utils.h
--- ns-3.19/src/wifi/model/qos-utils.h	2014-06-17 10:34:00.557635743 -0700
+++ ns-3.20/src/wifi/model/qos-utils.h	2014-06-17 10:33:13.901995900 -0700
@@ -29,8 +29,8 @@
 /**
  * \ingroup wifi
  * This enumeration defines the Access Categories as an enumeration
- * with values corresponding to the AC index (ACI) values specified in
- * Table 7-36 of IEEE 802.11-2007.
+ * with values corresponding to the AC index (ACI) values specified
+ * (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012).
  */
 enum AcIndex
 {
@@ -51,7 +51,7 @@
 /**
  * \ingroup wifi
  * Maps TID (Traffic ID) to Access classes.
- * For more details see table 9-1 of IEEE802.11 standard.
+ * For more details see (Table 9-1 "UP-to-AC mapping"; IEEE802.11-2012).
  *
  * \param tid the Traffic ID to be mapped to Access class
  * \return the access class for the given TID
diff -Naur ns-3.19/src/wifi/model/regular-wifi-mac.cc ns-3.20/src/wifi/model/regular-wifi-mac.cc
--- ns-3.19/src/wifi/model/regular-wifi-mac.cc	2014-06-17 10:34:00.559635727 -0700
+++ ns-3.20/src/wifi/model/regular-wifi-mac.cc	2014-06-17 10:33:13.903995884 -0700
@@ -38,8 +38,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (RegularWifiMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RegularWifiMac);
 
 RegularWifiMac::RegularWifiMac ()
 {
@@ -58,11 +57,12 @@
   m_dca = CreateObject<DcaTxop> ();
   m_dca->SetLow (m_low);
   m_dca->SetManager (m_dcfManager);
+  m_dca->SetTxMiddle(m_txMiddle);
   m_dca->SetTxOkCallback (MakeCallback (&RegularWifiMac::TxOk, this));
   m_dca->SetTxFailedCallback (MakeCallback (&RegularWifiMac::TxFailed, this));
 
   // Construct the EDCAFs. The ordering is important - highest
-  // priority (see Table 9-1 in IEEE 802.11-2007) must be created
+  // priority (Table 9-1 UP-to-AC mapping; IEEE 802.11-2012) must be created
   // first.
   SetupEdcaQueue (AC_VO);
   SetupEdcaQueue (AC_VI);
diff -Naur ns-3.19/src/wifi/model/rraa-wifi-manager.cc ns-3.20/src/wifi/model/rraa-wifi-manager.cc
--- ns-3.19/src/wifi/model/rraa-wifi-manager.cc	2014-06-17 10:34:00.560635719 -0700
+++ ns-3.20/src/wifi/model/rraa-wifi-manager.cc	2014-06-17 10:33:13.904995877 -0700
@@ -52,8 +52,7 @@
   uint32_t m_rate;
 };
 
-NS_OBJECT_ENSURE_REGISTERED (RraaWifiManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RraaWifiManager);
 
 TypeId
 RraaWifiManager::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/snr-tag.cc ns-3.20/src/wifi/model/snr-tag.cc
--- ns-3.19/src/wifi/model/snr-tag.cc	2014-06-17 10:34:00.560635719 -0700
+++ ns-3.20/src/wifi/model/snr-tag.cc	2014-06-17 10:33:13.904995877 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SnrTag)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SnrTag);
 
 TypeId
 SnrTag::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/sta-wifi-mac.cc ns-3.20/src/wifi/model/sta-wifi-mac.cc
--- ns-3.19/src/wifi/model/sta-wifi-mac.cc	2014-06-17 10:34:00.562635704 -0700
+++ ns-3.20/src/wifi/model/sta-wifi-mac.cc	2014-06-17 10:33:13.906995861 -0700
@@ -60,8 +60,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (StaWifiMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (StaWifiMac);
 
 TypeId
 StaWifiMac::GetTypeId (void)
@@ -85,7 +84,7 @@
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("ActiveProbing", "If true, we send probe requests. If false, we don't. NOTE: if more than one STA in your simulation is using active probing, you should enable it at a different simulation time for each STA, otherwise all the STAs will start sending probes at the same time resulting in collisions. See bug 1060 for more info.",
                    BooleanValue (false),
-                   MakeBooleanAccessor (&StaWifiMac::SetActiveProbing),
+                   MakeBooleanAccessor (&StaWifiMac::SetActiveProbing, &StaWifiMac::GetActiveProbing),
                    MakeBooleanChecker ())
     .AddTraceSource ("Assoc", "Associated with an access point.",
                      MakeTraceSourceAccessor (&StaWifiMac::m_assocLogger))
@@ -153,6 +152,12 @@
     {
       m_probeRequestEvent.Cancel ();
     }
+  m_activeProbing = enable;
+}
+  
+bool StaWifiMac::GetActiveProbing (void) const
+{
+  return m_activeProbing;
 }
 
 void
@@ -251,8 +256,11 @@
        * We try to initiate a probe request now.
        */
       m_linkDown ();
-      SetState (WAIT_PROBE_RESP);
-      SendProbeRequest ();
+      if (m_activeProbing) 
+        {
+          SetState (WAIT_PROBE_RESP);
+          SendProbeRequest ();
+        }
       break;
     case WAIT_ASSOC_RESP:
       /* we have sent an assoc request so we do not need to
diff -Naur ns-3.19/src/wifi/model/sta-wifi-mac.h ns-3.20/src/wifi/model/sta-wifi-mac.h
--- ns-3.19/src/wifi/model/sta-wifi-mac.h	2014-06-17 10:34:00.562635704 -0700
+++ ns-3.20/src/wifi/model/sta-wifi-mac.h	2014-06-17 10:33:13.906995861 -0700
@@ -187,6 +187,7 @@
   EventId m_beaconWatchdog;
   Time m_beaconWatchdogEnd;
   uint32_t m_maxMissedBeacons;
+  bool m_activeProbing;
 
   TracedCallback<Mac48Address> m_assocLogger;
   TracedCallback<Mac48Address> m_deAssocLogger;
diff -Naur ns-3.19/src/wifi/model/wifi-channel.cc ns-3.20/src/wifi/model/wifi-channel.cc
--- ns-3.19/src/wifi/model/wifi-channel.cc	2014-06-17 10:34:00.564635689 -0700
+++ ns-3.20/src/wifi/model/wifi-channel.cc	2014-06-17 10:33:13.908995846 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiChannel);
 
 TypeId
 WifiChannel::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/wifi-information-element-vector.cc ns-3.20/src/wifi/model/wifi-information-element-vector.cc
--- ns-3.19/src/wifi/model/wifi-information-element-vector.cc	2014-06-17 10:34:00.565635681 -0700
+++ ns-3.20/src/wifi/model/wifi-information-element-vector.cc	2014-06-17 10:33:13.909995838 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiInformationElementVector)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiInformationElementVector);
 
 WifiInformationElementVector::WifiInformationElementVector ()
   : m_maxSize (1500)
diff -Naur ns-3.19/src/wifi/model/wifi-mac.cc ns-3.20/src/wifi/model/wifi-mac.cc
--- ns-3.19/src/wifi/model/wifi-mac.cc	2014-06-17 10:34:00.570635642 -0700
+++ ns-3.20/src/wifi/model/wifi-mac.cc	2014-06-17 10:33:13.913995807 -0700
@@ -24,8 +24,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiMac)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiMac);
   
 
 Time
diff -Naur ns-3.19/src/wifi/model/wifi-mac-header.cc ns-3.20/src/wifi/model/wifi-mac-header.cc
--- ns-3.19/src/wifi/model/wifi-mac-header.cc	2014-06-17 10:34:00.567635665 -0700
+++ ns-3.20/src/wifi/model/wifi-mac-header.cc	2014-06-17 10:33:13.910995830 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiMacHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiMacHeader);
 
 enum
 {
diff -Naur ns-3.19/src/wifi/model/wifi-mac-queue.cc ns-3.20/src/wifi/model/wifi-mac-queue.cc
--- ns-3.19/src/wifi/model/wifi-mac-queue.cc	2014-06-17 10:34:00.568635658 -0700
+++ ns-3.20/src/wifi/model/wifi-mac-queue.cc	2014-06-17 10:33:13.911995823 -0700
@@ -29,8 +29,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiMacQueue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiMacQueue);
 
 WifiMacQueue::Item::Item (Ptr<const Packet> packet,
                           const WifiMacHeader &hdr,
diff -Naur ns-3.19/src/wifi/model/wifi-mac-queue.h ns-3.20/src/wifi/model/wifi-mac-queue.h
--- ns-3.19/src/wifi/model/wifi-mac-queue.h	2014-06-17 10:34:00.568635658 -0700
+++ ns-3.20/src/wifi/model/wifi-mac-queue.h	2014-06-17 10:33:13.912995815 -0700
@@ -35,8 +35,8 @@
 /**
  * \ingroup wifi
  *
- * This queue implements the timeout procedure described in IEEE
- * Std. 802.11-2007, section 9.9.1.6, paragraph 6.
+ * This queue implements the timeout procedure described in
+ * (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012).
  *
  * When a packet is received by the MAC, to be sent to the PHY,
  * it is queued in the internal queue after being tagged by the
diff -Naur ns-3.19/src/wifi/model/wifi-mac-trailer.cc ns-3.20/src/wifi/model/wifi-mac-trailer.cc
--- ns-3.19/src/wifi/model/wifi-mac-trailer.cc	2014-06-17 10:34:00.569635650 -0700
+++ ns-3.20/src/wifi/model/wifi-mac-trailer.cc	2014-06-17 10:33:13.912995815 -0700
@@ -22,8 +22,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiMacTrailer)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiMacTrailer);
 
 WifiMacTrailer::WifiMacTrailer ()
 {
diff -Naur ns-3.19/src/wifi/model/wifi-mode.h ns-3.20/src/wifi/model/wifi-mode.h
--- ns-3.19/src/wifi/model/wifi-mode.h	2014-06-17 10:34:00.571635634 -0700
+++ ns-3.20/src/wifi/model/wifi-mode.h	2014-06-17 10:33:13.914995800 -0700
@@ -30,8 +30,8 @@
 namespace ns3 {
 
 /**
- * This enumeration defines the modulation classes per IEEE
- * 802.11-2007, Section 9.6.1, Table 9-2.
+ * This enumeration defines the modulation classes per 
+ * (Table 9-4 "Modulation classes"; IEEE 802.11-2012).
  */
 enum WifiModulationClass
 {
@@ -138,8 +138,8 @@
 
   /**
    *
-   * \returns the Modulation Class (see IEEE 802.11-2007 Section
-   * 9.6.1) to which this WifiMode belongs.
+   * \returns the Modulation Class (Section 9.7.8 "Modulation classes"; IEEE 802.11-2012)
+   * to which this WifiMode belongs.
    */
   enum WifiModulationClass GetModulationClass () const;
 
diff -Naur ns-3.19/src/wifi/model/wifi-net-device.cc ns-3.20/src/wifi/model/wifi-net-device.cc
--- ns-3.19/src/wifi/model/wifi-net-device.cc	2014-06-17 10:34:00.571635634 -0700
+++ ns-3.20/src/wifi/model/wifi-net-device.cc	2014-06-17 10:33:13.915995792 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiNetDevice);
 
 TypeId
 WifiNetDevice::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/wifi-phy.cc ns-3.20/src/wifi/model/wifi-phy.cc
--- ns-3.19/src/wifi/model/wifi-phy.cc	2014-06-17 10:34:00.574635611 -0700
+++ ns-3.20/src/wifi/model/wifi-phy.cc	2014-06-17 10:33:13.918995769 -0700
@@ -48,8 +48,7 @@
  *       The actual WifiPhy class
  ****************************************************************/
 
-NS_OBJECT_ENSURE_REGISTERED (WifiPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiPhy);
 
 TypeId
 WifiPhy::GetTypeId (void)
@@ -159,7 +158,7 @@
           case 10000000:
             return WifiPhy::GetOfdmRate3MbpsBW10MHz ();
           default:
-            // IEEE Std 802.11-2007, 17.3.2
+            // (Section 18.3.2 "PLCP frame format"; IEEE Std 802.11-2012)
             // actually this is only the first part of the PlcpHeader,
             // because the last 16 bits of the PlcpHeader are using the
             // same mode of the payload
@@ -202,12 +201,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_LONG)
         {
-          // IEEE Std 802.11-2007, sections 15.2.3 and 18.2.2.1
+          // (Section 16.2.3 "PLCP field definitions" and Section 17.2.2.2 "Long PPDU format"; IEEE Std 802.11-2012)
           return WifiPhy::GetDsssRate1Mbps ();
         }
       else  //  WIFI_PREAMBLE_SHORT
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2
+          // (Section 17.2.2.3 "Short PPDU format"; IEEE Std 802.11-2012)
           return WifiPhy::GetDsssRate2Mbps ();
         }
 
@@ -229,18 +228,18 @@
           {
           case 20000000:
           default:
-            // IEEE Std 802.11-2007, section 17.3.3 and figure 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" and Figure 18-4 "OFDM training structure"; IEEE Std 802.11-2012)
+            // also (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             // We return the duration of the SIGNAL field only, since the
             // SERVICE field (which strictly speaking belongs to the PLCP
-            // header, see section 17.3.2 and figure 17-1) is sent using the
+            // header, see Section 18.3.2 and Figure 18-1) is sent using the
             // payload mode.
             return 4;
           case 10000000:
-            // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
+            // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             return 8;
           case 5000000:
-            // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
+            // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             return 16;
           }
       }
@@ -266,12 +265,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_SHORT)
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2 and figure 18-2
+          // (Section 17.2.2.3 "Short PPDU format" and Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
           return 24;
         }
       else // WIFI_PREAMBLE_LONG
         {
-          // IEEE Std 802.11-2007, sections 18.2.2.1 and figure 18-1
+          // (Section 17.2.2.2 "Long PPDU format" and Figure 17-1 "Short PPDU format"; IEEE Std 802.11-2012)
           return 48;
         }
 
@@ -292,16 +291,16 @@
           {
           case 20000000:
           default:
-            // IEEE Std 802.11-2007, section 17.3.3,  figure 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 16;
           case 10000000:
-            // IEEE Std 802.11-2007, section 17.3.3, table 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 32;
           case 5000000:
-            // IEEE Std 802.11-2007, section 17.3.3
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 64;
           }
       }
@@ -315,12 +314,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_SHORT)
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2 and figure 18-2
+          // (Section 17.2.2.3 "Short PPDU format)" Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
           return 72;
         }
       else // WIFI_PREAMBLE_LONG
         {
-          // IEEE Std 802.11-2007, sections 18.2.2.1 and figure 18-1
+          // (Section 17.2.2.2 "Long PPDU format)" Figure 17-1 "Long PPDU format"; IEEE Std 802.11-2012)
           return 144;
         }
     default:
@@ -341,8 +340,8 @@
     case WIFI_MOD_CLASS_OFDM:
     case WIFI_MOD_CLASS_ERP_OFDM:
       {
-        // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
-        // corresponds to T_{SYM} in the table
+        // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012
+        // corresponds to T_{SYM} in the table)
         uint32_t symbolDurationUs;
 
         switch (payloadMode.GetBandwidth ())
@@ -359,11 +358,11 @@
             break;
           }
 
-        // IEEE Std 802.11-2007, section 17.3.2.2, table 17-3
+        // (Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
         // corresponds to N_{DBPS} in the table
         double numDataBitsPerSymbol = payloadMode.GetDataRate () * symbolDurationUs / 1e6;
 
-        // IEEE Std 802.11-2007, section 17.3.5.3, equation (17-11)
+        // (Section 18.3.5.4 "Pad bits (PAD)" Equation 18-11; IEEE Std 802.11-2012)
         uint32_t numSymbols = lrint (ceil ((16 + size * 8.0 + 6.0) / numDataBitsPerSymbol));
 
         // Add signal extension for ERP PHY
@@ -424,7 +423,7 @@
          
       }
     case WIFI_MOD_CLASS_DSSS:
-      // IEEE Std 802.11-2007, section 18.2.3.5
+      // (Section 17.2.3.6 "Long PLCP LENGTH field"; IEEE Std 802.11-2012)
       NS_LOG_LOGIC (" size=" << size
                              << " mode=" << payloadMode
                              << " rate=" << payloadMode.GetDataRate () );
diff -Naur ns-3.19/src/wifi/model/wifi-phy.h ns-3.20/src/wifi/model/wifi-phy.h
--- ns-3.19/src/wifi/model/wifi-phy.h	2014-06-17 10:34:00.575635604 -0700
+++ ns-3.20/src/wifi/model/wifi-phy.h	2014-06-17 10:33:13.919995761 -0700
@@ -353,6 +353,14 @@
    */
   virtual WifiMode GetMode (uint32_t mode) const = 0;
   /**
+   * Check if the given WifiMode is supported by the PHY.
+   *
+   * \param mode the wifi mode to check
+   * \return true if the given mode is supported,
+   *         false otherwise
+   */
+  virtual bool IsModeSupported (WifiMode mode) const = 0;
+  /**
    * \param txMode the transmission mode
    * \param ber the probability of bit error rate
    * \return the minimum snr which is required to achieve
@@ -450,7 +458,7 @@
    * Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1)
    *
    * where Starting channel frequency is standard-dependent, see SetStandard()
-   * as defined in IEEE 802.11-2007 17.3.8.3.2.
+   * as defined in (Section 18.3.8.4.2 "Channel numbering"; IEEE Std 802.11-2012).
    *
    * \param id the channel number
    */
diff -Naur ns-3.19/src/wifi/model/wifi-phy-state-helper.cc ns-3.20/src/wifi/model/wifi-phy-state-helper.cc
--- ns-3.19/src/wifi/model/wifi-phy-state-helper.cc	2014-06-17 10:34:00.573635619 -0700
+++ ns-3.20/src/wifi/model/wifi-phy-state-helper.cc	2014-06-17 10:33:13.916995784 -0700
@@ -26,8 +26,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiPhyStateHelper)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiPhyStateHelper);
 
 TypeId
 WifiPhyStateHelper::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/wifi-remote-station-manager.cc ns-3.20/src/wifi/model/wifi-remote-station-manager.cc
--- ns-3.19/src/wifi/model/wifi-remote-station-manager.cc	2014-06-17 10:34:00.576635596 -0700
+++ ns-3.20/src/wifi/model/wifi-remote-station-manager.cc	2014-06-17 10:33:13.920995753 -0700
@@ -249,8 +249,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WifiRemoteStationManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WifiRemoteStationManager);
 
 TypeId
 WifiRemoteStationManager::GetTypeId (void)
@@ -276,14 +275,14 @@
                    MakeUintegerAccessor (&WifiRemoteStationManager::m_maxSlrc),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("RtsCtsThreshold", "If  the size of the data packet + LLC header + MAC header + FCS trailer is bigger than "
-                   "this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2007, Section 9.2.6. "
+                   "this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2012, Section 9.3.5. "
                    "This value will not have any effect on some rate control algorithms.",
                    UintegerValue (2346),
                    MakeUintegerAccessor (&WifiRemoteStationManager::m_rtsCtsThreshold),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("FragmentationThreshold", "If the size of the data packet + LLC header + MAC header + FCS trailer is bigger"
                    "than this value, we fragment it such that the size of the fragments are equal or smaller "
-                   "than this value, as per IEEE Std. 802.11-2007, Section 9.4. "
+                   "than this value, as per IEEE Std. 802.11-2012, Section 9.5. "
                    "This value will not have any effect on some rate control algorithms.",
                    UintegerValue (2346),
                    MakeUintegerAccessor (&WifiRemoteStationManager::DoSetFragmentationThreshold,
@@ -850,8 +849,8 @@
 {
   /**
    * The standard has relatively unambiguous rules for selecting a
-   * control response rate (the below is quoted from IEEE 802.11-2007,
-   * Section 9.6):
+   * control response rate (the below is quoted from IEEE 802.11-2012,
+   * Section 9.7):
    *
    *   To allow the transmitting STA to calculate the contents of the
    *   Duration/ID field, a STA responding to a received frame shall
@@ -859,8 +858,8 @@
    *   than the BlockAck control frame, at the highest rate in the
    *   BSSBasicRateSet parameter that is less than or equal to the
    *   rate of the immediately previous frame in the frame exchange
-   *   sequence (as defined in 9.12) and that is of the same
-   *   modulation class (see 9.6.1) as the received frame...
+   *   sequence (as defined in Annex G) and that is of the same
+   *   modulation class (see Section 9.7.8) as the received frame...
    */
   WifiMode mode = GetDefaultMode ();
   bool found = false;
diff -Naur ns-3.19/src/wifi/model/wifi-tx-vector.cc ns-3.20/src/wifi/model/wifi-tx-vector.cc
--- ns-3.19/src/wifi/model/wifi-tx-vector.cc	2014-06-17 10:34:00.577635588 -0700
+++ ns-3.20/src/wifi/model/wifi-tx-vector.cc	2014-06-17 10:33:13.921995745 -0700
@@ -27,7 +27,8 @@
 {
 }
 
-WifiTxVector::WifiTxVector (WifiMode mode, uint8_t powerLevel, uint8_t retries, bool shortGuardInterval, uint8_t nss, uint8_t ness, bool stbc)
+WifiTxVector::WifiTxVector (WifiMode mode, uint8_t powerLevel, uint8_t retries,
+                            bool shortGuardInterval, uint8_t nss, uint8_t ness, bool stbc)
   : m_mode (mode),
     m_txPowerLevel (powerLevel),
     m_retries (retries),
@@ -112,7 +113,13 @@
 
 std::ostream & operator << ( std::ostream &os, const WifiTxVector &v)
 { 
-  os << "mode:" << v.GetMode() << " txpwrlvl:" << v.GetTxPowerLevel() << " retries:" << v.GetRetries() << " Short GI: " << v.IsShortGuardInterval() << " Nss: " << v.GetNss() << " Ness: " << v.GetNess() << " STBC: " << v.IsStbc();
+  os << "mode:" << v.GetMode() <<
+    " txpwrlvl:" << (uint32_t)v.GetTxPowerLevel() <<
+    " retries:" << (uint32_t)v.GetRetries() <<
+    " Short GI: " << v.IsShortGuardInterval() <<
+    " Nss: " << (uint32_t)v.GetNss() <<
+    " Ness: " << (uint32_t)v.GetNess() <<
+    " STBC: " << v.IsStbc();
   return os;
 }
 
diff -Naur ns-3.19/src/wifi/model/yans-error-rate-model.cc ns-3.20/src/wifi/model/yans-error-rate-model.cc
--- ns-3.19/src/wifi/model/yans-error-rate-model.cc	2014-06-17 10:34:00.578635580 -0700
+++ ns-3.20/src/wifi/model/yans-error-rate-model.cc	2014-06-17 10:33:13.922995738 -0700
@@ -28,8 +28,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (YansErrorRateModel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (YansErrorRateModel);
 
 TypeId
 YansErrorRateModel::GetTypeId (void)
@@ -65,7 +64,7 @@
   double EbNo = snr * signalSpread / phyRate;
   double z = std::sqrt ((1.5 * Log2 (m) * EbNo) / (m - 1.0));
   double z1 = ((1.0 - 1.0 / std::sqrt (m)) * erfc (z));
-  double z2 = 1 - std::pow ((1 - z1), 2.0);
+  double z2 = 1 - std::pow ((1 - z1), 2);
   double ber = z2 / Log2 (m);
   NS_LOG_INFO ("Qam m=" << m << " rate=" << phyRate << " snr=" << snr << " ber=" << ber);
   return ber;
diff -Naur ns-3.19/src/wifi/model/yans-wifi-channel.cc ns-3.20/src/wifi/model/yans-wifi-channel.cc
--- ns-3.19/src/wifi/model/yans-wifi-channel.cc	2014-06-17 10:34:00.579635573 -0700
+++ ns-3.20/src/wifi/model/yans-wifi-channel.cc	2014-06-17 10:33:13.923995730 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (YansWifiChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (YansWifiChannel);
 
 TypeId
 YansWifiChannel::GetTypeId (void)
diff -Naur ns-3.19/src/wifi/model/yans-wifi-phy.cc ns-3.20/src/wifi/model/yans-wifi-phy.cc
--- ns-3.19/src/wifi/model/yans-wifi-phy.cc	2014-06-17 10:34:00.580635565 -0700
+++ ns-3.20/src/wifi/model/yans-wifi-phy.cc	2014-06-17 10:33:13.924995722 -0700
@@ -42,8 +42,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (YansWifiPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (YansWifiPhy);
 
 TypeId
 YansWifiPhy::GetTypeId (void)
@@ -452,7 +451,7 @@
   rxPowerDbm += m_rxGainDb;
   double rxPowerW = DbmToW (rxPowerDbm);
   Time rxDuration = CalculateTxDuration (packet->GetSize (), txVector, preamble);
-WifiMode txMode=txVector.GetMode();
+  WifiMode txMode = txVector.GetMode();
   Time endRx = Simulator::Now () + rxDuration;
 
   Ptr<InterferenceHelper::Event> event;
@@ -509,15 +508,24 @@
     case YansWifiPhy::IDLE:
       if (rxPowerW > m_edThresholdW)
         {
-          NS_LOG_DEBUG ("sync to signal (power=" << rxPowerW << "W)");
-          // sync to signal
-          m_state->SwitchToRx (rxDuration);
-          NS_ASSERT (m_endRxEvent.IsExpired ());
-          NotifyRxBegin (packet);
-          m_interference.NotifyRxStart ();
-          m_endRxEvent = Simulator::Schedule (rxDuration, &YansWifiPhy::EndReceive, this,
-                                              packet,
-                                              event);
+          if (IsModeSupported (txMode) || IsMcsSupported(txMode))
+            {
+              NS_LOG_DEBUG ("sync to signal (power=" << rxPowerW << "W)");
+              // sync to signal
+              m_state->SwitchToRx (rxDuration);
+              NS_ASSERT (m_endRxEvent.IsExpired ());
+              NotifyRxBegin (packet);
+              m_interference.NotifyRxStart ();
+              m_endRxEvent = Simulator::Schedule (rxDuration, &YansWifiPhy::EndReceive, this,
+                                                  packet,
+                                                  event);
+            }
+          else
+            {
+              NS_LOG_DEBUG ("drop packet because it was sent using an unsupported mode (" << txMode << ")");
+              NotifyRxDrop (packet);
+              goto maybeCcaBusy;
+            }
         }
       else
         {
@@ -580,6 +588,30 @@
 {
   return m_deviceRateSet[mode];
 }
+bool
+YansWifiPhy::IsModeSupported (WifiMode mode) const
+{
+  for (uint32_t i = 0; i < GetNModes (); i++)
+    {
+      if (mode == GetMode (i))
+        {
+          return true;
+        }
+    }
+  return false;
+}
+bool
+YansWifiPhy::IsMcsSupported (WifiMode mode)
+{
+  for (uint32_t i = 0; i < GetNMcs (); i++)
+    {
+      if (mode == McsToWifiMode(GetMcs (i)))
+        {
+          return true;
+        }
+    }
+  return false;
+}
 uint32_t
 YansWifiPhy::GetNTxPower (void) const
 {
diff -Naur ns-3.19/src/wifi/model/yans-wifi-phy.h ns-3.20/src/wifi/model/yans-wifi-phy.h
--- ns-3.19/src/wifi/model/yans-wifi-phy.h	2014-06-17 10:34:00.581635557 -0700
+++ ns-3.20/src/wifi/model/yans-wifi-phy.h	2014-06-17 10:33:13.925995715 -0700
@@ -260,6 +260,8 @@
   virtual Time GetLastRxStartTime (void) const;
   virtual uint32_t GetNModes (void) const;
   virtual WifiMode GetMode (uint32_t mode) const;
+  virtual bool IsModeSupported (WifiMode mode) const;
+  virtual bool IsMcsSupported (WifiMode mode);
   virtual double CalculateSnr (WifiMode txMode, double ber) const;
   virtual Ptr<WifiChannel> GetChannel (void) const;
   
diff -Naur ns-3.19/src/wifi/test/dcf-manager-test.cc ns-3.20/src/wifi/test/dcf-manager-test.cc
--- ns-3.19/src/wifi/test/dcf-manager-test.cc	2014-06-17 10:34:00.582635549 -0700
+++ ns-3.20/src/wifi/test/dcf-manager-test.cc	2014-06-17 10:33:13.926995707 -0700
@@ -22,7 +22,7 @@
 #include "ns3/simulator.h"
 #include "ns3/dcf-manager.h"
 
-namespace ns3 {
+using namespace ns3;
 
 class DcfManagerTest;
 
@@ -686,5 +686,3 @@
 }
 
 static DcfTestSuite g_dcfTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/wifi/test/tx-duration-test.cc ns-3.20/src/wifi/test/tx-duration-test.cc
--- ns-3.19/src/wifi/test/tx-duration-test.cc	2014-06-17 10:34:00.583635542 -0700
+++ ns-3.20/src/wifi/test/tx-duration-test.cc	2014-06-17 10:33:13.927995699 -0700
@@ -27,7 +27,7 @@
 
 NS_LOG_COMPONENT_DEFINE ("InterferenceHelperTxDurationTest");
 
-namespace ns3 {
+using namespace ns3;
 
 class TxDurationTest : public TestCase
 {
@@ -210,5 +210,3 @@
 }
 
 static TxDurationTestSuite g_txDurationTestSuite;
-} // namespace ns3
-
diff -Naur ns-3.19/src/wifi/test/wifi-test.cc ns-3.20/src/wifi/test/wifi-test.cc
--- ns-3.19/src/wifi/test/wifi-test.cc	2014-06-17 10:34:00.584635534 -0700
+++ ns-3.20/src/wifi/test/wifi-test.cc	2014-06-17 10:33:13.928995691 -0700
@@ -42,7 +42,7 @@
 #include "ns3/config.h"
 #include "ns3/boolean.h"
 
-namespace ns3 {
+using namespace ns3;
 
 // helper function to assign streams to random variables, to control 
 // randomness in the tests
@@ -495,5 +495,3 @@
 }
 
 static WifiTestSuite g_wifiTestSuite;
-
-} // namespace ns3
diff -Naur ns-3.19/src/wifi/waf ns-3.20/src/wifi/waf
--- ns-3.19/src/wifi/waf	2014-06-17 10:34:00.584635534 -0700
+++ ns-3.20/src/wifi/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../../waf "$@"
diff -Naur ns-3.19/src/wimax/bindings/modulegen__gcc_ILP32.py ns-3.20/src/wimax/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/wimax/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:34:00.592635472 -0700
+++ ns-3.20/src/wimax/bindings/modulegen__gcc_ILP32.py	2014-06-17 10:33:13.936995630 -0700
@@ -132,12 +132,14 @@
     module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
     ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData_e [enumeration]
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger', import_from_module='ns.core')
     ## pcap-file.h (module 'network'): ns3::PcapFile [class]
     module.add_class('PcapFile', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## snr-to-block-error-rate-manager.h (module 'wimax'): ns3::SNRToBlockErrorRateManager [class]
@@ -170,6 +172,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## wimax-tlv.h (module 'wimax'): ns3::TlvValue [class]
     module.add_class('TlvValue', allow_subclassing=True)
     ## wimax-tlv.h (module 'wimax'): ns3::TosTlvValue [class]
@@ -204,6 +208,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## simple-ofdm-send-param.h (module 'wimax'): ns3::simpleOfdmSendParam [class]
     module.add_class('simpleOfdmSendParam')
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -516,30 +522,30 @@
     module.add_enum('State', ['SS_STATE_IDLE', 'SS_STATE_SCANNING', 'SS_STATE_SYNCHRONIZING', 'SS_STATE_ACQUIRING_PARAMETERS', 'SS_STATE_WAITING_REG_RANG_INTRVL', 'SS_STATE_WAITING_INV_RANG_INTRVL', 'SS_STATE_WAITING_RNG_RSP', 'SS_STATE_ADJUSTING_PARAMETERS', 'SS_STATE_REGISTERED', 'SS_STATE_TRANSMITTING', 'SS_STATE_STOPPED'], outer_class=root_module['ns3::SubscriberStationNetDevice'])
     ## ss-net-device.h (module 'wimax'): ns3::SubscriberStationNetDevice::EventType [enumeration]
     module.add_enum('EventType', ['EVENT_NONE', 'EVENT_WAIT_FOR_RNG_RSP', 'EVENT_DL_MAP_SYNC_TIMEOUT', 'EVENT_LOST_DL_MAP', 'EVENT_LOST_UL_MAP', 'EVENT_DCD_WAIT_TIMEOUT', 'EVENT_UCD_WAIT_TIMEOUT', 'EVENT_RANG_OPP_WAIT_TIMEOUT'], outer_class=root_module['ns3::SubscriberStationNetDevice'])
-    module.add_container('std::vector< ns3::ServiceFlow * >', 'ns3::ServiceFlow *', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('ns3::bvec', 'bool', container_type='vector')
-    module.add_container('std::vector< ns3::DlFramePrefixIe >', 'ns3::DlFramePrefixIe', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::vector< ns3::SSRecord * >', 'ns3::SSRecord *', container_type='vector')
-    module.add_container('std::vector< ns3::OfdmUlBurstProfile >', 'ns3::OfdmUlBurstProfile', container_type='vector')
-    module.add_container('std::list< ns3::OfdmUlMapIe >', 'ns3::OfdmUlMapIe', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::UlJob > >', 'ns3::Ptr< ns3::UlJob >', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet const > >', 'ns3::Ptr< ns3::Packet const >', container_type='list')
-    module.add_container('std::deque< ns3::WimaxMacQueue::QueueElement >', 'ns3::WimaxMacQueue::QueueElement', container_type='dequeue')
-    module.add_container('std::list< std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > > >', 'std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > >', container_type='list')
-    module.add_container('std::vector< ns3::Ptr< ns3::WimaxConnection > >', 'ns3::Ptr< ns3::WimaxConnection >', container_type='vector')
-    module.add_container('std::vector< ns3::OfdmDlBurstProfile >', 'ns3::OfdmDlBurstProfile', container_type='vector')
-    module.add_container('std::list< ns3::OfdmDlMapIe >', 'ns3::OfdmDlMapIe', container_type='list')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >', 'ns3::bvec')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >*', 'ns3::bvec*')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >&', 'ns3::bvec&')
+    module.add_container('std::vector< ns3::ServiceFlow * >', 'ns3::ServiceFlow *', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('ns3::bvec', 'bool', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlFramePrefixIe >', 'ns3::DlFramePrefixIe', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::vector< ns3::SSRecord * >', 'ns3::SSRecord *', container_type=u'vector')
+    module.add_container('std::vector< ns3::OfdmUlBurstProfile >', 'ns3::OfdmUlBurstProfile', container_type=u'vector')
+    module.add_container('std::list< ns3::OfdmUlMapIe >', 'ns3::OfdmUlMapIe', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::UlJob > >', 'ns3::Ptr< ns3::UlJob >', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet const > >', 'ns3::Ptr< ns3::Packet const >', container_type=u'list')
+    module.add_container('std::deque< ns3::WimaxMacQueue::QueueElement >', 'ns3::WimaxMacQueue::QueueElement', container_type=u'dequeue')
+    module.add_container('std::list< std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > > >', 'std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > >', container_type=u'list')
+    module.add_container('std::vector< ns3::Ptr< ns3::WimaxConnection > >', 'ns3::Ptr< ns3::WimaxConnection >', container_type=u'vector')
+    module.add_container('std::vector< ns3::OfdmDlBurstProfile >', 'ns3::OfdmDlBurstProfile', container_type=u'vector')
+    module.add_container('std::list< ns3::OfdmDlMapIe >', 'ns3::OfdmDlMapIe', container_type=u'list')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >', u'ns3::bvec')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >*', u'ns3::bvec*')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >&', u'ns3::bvec&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -568,12 +574,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -642,6 +648,7 @@
     register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
@@ -655,6 +662,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TlvValue_methods(root_module, root_module['ns3::TlvValue'])
     register_Ns3TosTlvValue_methods(root_module, root_module['ns3::TosTlvValue'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -1170,6 +1178,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1182,6 +1194,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2232,29 +2248,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -2266,6 +2278,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3Mac48Address_methods(root_module, cls):
@@ -3071,6 +3087,13 @@
     cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3PcapFile_methods(root_module, cls):
     ## pcap-file.h (module 'network'): ns3::PcapFile::PcapFile() [constructor]
     cls.add_constructor([])
@@ -4245,6 +4268,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TlvValue_methods(root_module, cls):
     ## wimax-tlv.h (module 'wimax'): ns3::TlvValue::TlvValue() [constructor]
     cls.add_constructor([])
@@ -4811,61 +4842,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4873,6 +4860,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4913,6 +4902,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3SimpleOfdmSendParam_methods(root_module, cls):
@@ -6424,12 +6415,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -6455,6 +6448,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -9549,12 +9547,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -10677,10 +10675,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/wimax/bindings/modulegen__gcc_LP64.py ns-3.20/src/wimax/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/wimax/bindings/modulegen__gcc_LP64.py	2014-06-17 10:34:00.599635419 -0700
+++ ns-3.20/src/wimax/bindings/modulegen__gcc_LP64.py	2014-06-17 10:33:13.943995576 -0700
@@ -132,12 +132,14 @@
     module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
     ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData_e [enumeration]
     module.add_enum('TagData_e', ['MAX_SIZE'], outer_class=root_module['ns3::PacketTagList::TagData'], import_from_module='ns.network')
+    ## log.h (module 'core'): ns3::ParameterLogger [class]
+    module.add_class('ParameterLogger', import_from_module='ns.core')
     ## pcap-file.h (module 'network'): ns3::PcapFile [class]
     module.add_class('PcapFile', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [class]
     module.add_class('PcapHelper', import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelper [enumeration]
-    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
+    module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
     ## snr-to-block-error-rate-manager.h (module 'wimax'): ns3::SNRToBlockErrorRateManager [class]
@@ -170,6 +172,8 @@
     module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
     ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
     module.add_class('TagBuffer', import_from_module='ns.network')
+    ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+    module.add_class('TimeWithUnit', import_from_module='ns.core')
     ## wimax-tlv.h (module 'wimax'): ns3::TlvValue [class]
     module.add_class('TlvValue', allow_subclassing=True)
     ## wimax-tlv.h (module 'wimax'): ns3::TosTlvValue [class]
@@ -204,6 +208,8 @@
     module.add_class('empty', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
     module.add_class('int64x64_t', import_from_module='ns.core')
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+    module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
     ## simple-ofdm-send-param.h (module 'wimax'): ns3::simpleOfdmSendParam [class]
     module.add_class('simpleOfdmSendParam')
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -516,30 +522,30 @@
     module.add_enum('State', ['SS_STATE_IDLE', 'SS_STATE_SCANNING', 'SS_STATE_SYNCHRONIZING', 'SS_STATE_ACQUIRING_PARAMETERS', 'SS_STATE_WAITING_REG_RANG_INTRVL', 'SS_STATE_WAITING_INV_RANG_INTRVL', 'SS_STATE_WAITING_RNG_RSP', 'SS_STATE_ADJUSTING_PARAMETERS', 'SS_STATE_REGISTERED', 'SS_STATE_TRANSMITTING', 'SS_STATE_STOPPED'], outer_class=root_module['ns3::SubscriberStationNetDevice'])
     ## ss-net-device.h (module 'wimax'): ns3::SubscriberStationNetDevice::EventType [enumeration]
     module.add_enum('EventType', ['EVENT_NONE', 'EVENT_WAIT_FOR_RNG_RSP', 'EVENT_DL_MAP_SYNC_TIMEOUT', 'EVENT_LOST_DL_MAP', 'EVENT_LOST_UL_MAP', 'EVENT_DCD_WAIT_TIMEOUT', 'EVENT_UCD_WAIT_TIMEOUT', 'EVENT_RANG_OPP_WAIT_TIMEOUT'], outer_class=root_module['ns3::SubscriberStationNetDevice'])
-    module.add_container('std::vector< ns3::ServiceFlow * >', 'ns3::ServiceFlow *', container_type='vector')
-    module.add_container('std::vector< bool >', 'bool', container_type='vector')
-    module.add_container('ns3::bvec', 'bool', container_type='vector')
-    module.add_container('std::vector< ns3::DlFramePrefixIe >', 'ns3::DlFramePrefixIe', container_type='vector')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
-    module.add_container('std::vector< ns3::SSRecord * >', 'ns3::SSRecord *', container_type='vector')
-    module.add_container('std::vector< ns3::OfdmUlBurstProfile >', 'ns3::OfdmUlBurstProfile', container_type='vector')
-    module.add_container('std::list< ns3::OfdmUlMapIe >', 'ns3::OfdmUlMapIe', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::UlJob > >', 'ns3::Ptr< ns3::UlJob >', container_type='list')
-    module.add_container('std::list< ns3::Ptr< ns3::Packet const > >', 'ns3::Ptr< ns3::Packet const >', container_type='list')
-    module.add_container('std::deque< ns3::WimaxMacQueue::QueueElement >', 'ns3::WimaxMacQueue::QueueElement', container_type='dequeue')
-    module.add_container('std::list< std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > > >', 'std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > >', container_type='list')
-    module.add_container('std::vector< ns3::Ptr< ns3::WimaxConnection > >', 'ns3::Ptr< ns3::WimaxConnection >', container_type='vector')
-    module.add_container('std::vector< ns3::OfdmDlBurstProfile >', 'ns3::OfdmDlBurstProfile', container_type='vector')
-    module.add_container('std::list< ns3::OfdmDlMapIe >', 'ns3::OfdmDlMapIe', container_type='list')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
-    typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >', 'ns3::bvec')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >*', 'ns3::bvec*')
-    typehandlers.add_type_alias('std::vector< bool, std::allocator< bool > >&', 'ns3::bvec&')
+    module.add_container('std::vector< ns3::ServiceFlow * >', 'ns3::ServiceFlow *', container_type=u'vector')
+    module.add_container('std::vector< bool >', 'bool', container_type=u'vector')
+    module.add_container('ns3::bvec', 'bool', container_type=u'vector')
+    module.add_container('std::vector< ns3::DlFramePrefixIe >', 'ns3::DlFramePrefixIe', container_type=u'vector')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+    module.add_container('std::vector< ns3::SSRecord * >', 'ns3::SSRecord *', container_type=u'vector')
+    module.add_container('std::vector< ns3::OfdmUlBurstProfile >', 'ns3::OfdmUlBurstProfile', container_type=u'vector')
+    module.add_container('std::list< ns3::OfdmUlMapIe >', 'ns3::OfdmUlMapIe', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::UlJob > >', 'ns3::Ptr< ns3::UlJob >', container_type=u'list')
+    module.add_container('std::list< ns3::Ptr< ns3::Packet const > >', 'ns3::Ptr< ns3::Packet const >', container_type=u'list')
+    module.add_container('std::deque< ns3::WimaxMacQueue::QueueElement >', 'ns3::WimaxMacQueue::QueueElement', container_type=u'dequeue')
+    module.add_container('std::list< std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > > >', 'std::pair< ns3::OfdmDlMapIe *, ns3::Ptr< ns3::PacketBurst > >', container_type=u'list')
+    module.add_container('std::vector< ns3::Ptr< ns3::WimaxConnection > >', 'ns3::Ptr< ns3::WimaxConnection >', container_type=u'vector')
+    module.add_container('std::vector< ns3::OfdmDlBurstProfile >', 'ns3::OfdmDlBurstProfile', container_type=u'vector')
+    module.add_container('std::list< ns3::OfdmDlMapIe >', 'ns3::OfdmDlMapIe', container_type=u'list')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
+    typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >', u'ns3::bvec')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >*', u'ns3::bvec*')
+    typehandlers.add_type_alias(u'std::vector< bool, std::allocator< bool > >&', u'ns3::bvec&')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -568,12 +574,12 @@
     
     ## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
     module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
-    typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
-    typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+    typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+    typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
     
     ## Register a nested module for the namespace Function
     
@@ -642,6 +648,7 @@
     register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
     register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
     register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
+    register_Ns3ParameterLogger_methods(root_module, root_module['ns3::ParameterLogger'])
     register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
@@ -655,6 +662,7 @@
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+    register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3TlvValue_methods(root_module, root_module['ns3::TlvValue'])
     register_Ns3TosTlvValue_methods(root_module, root_module['ns3::TosTlvValue'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -1170,6 +1178,10 @@
     cls.add_method('Next', 
                    'void', 
                    [param('uint32_t', 'delta')])
+    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+    cls.add_method('PeekU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
     cls.add_method('Prev', 
                    'void', 
@@ -1182,6 +1194,10 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+    cls.add_method('Read', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
     ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
     cls.add_method('ReadLsbtohU16', 
                    'uint16_t', 
@@ -2232,29 +2248,25 @@
 def register_Ns3LogComponent_methods(root_module, cls):
     ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
-    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
-    cls.add_constructor([param('std::string const &', 'name')])
-    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
+    ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
+    cls.add_constructor([param('std::string const &', 'name'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+    ## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
     cls.add_method('Disable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel level) [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): void ns3::LogComponent::Enable(ns3::LogLevel const level) [member function]
     cls.add_method('Enable', 
                    'void', 
-                   [param('ns3::LogLevel', 'level')])
-    ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
-    cls.add_method('EnvVarCheck', 
-                   'void', 
-                   [param('std::string const &', 'name')])
-    ## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
+                   [param('ns3::LogLevel const', 'level')])
+    ## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
     cls.add_method('GetLevelLabel', 
                    'std::string', 
                    [param('ns3::LogLevel const', 'level')], 
-                   is_const=True)
-    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel level) const [member function]
+                   is_static=True)
+    ## log.h (module 'core'): bool ns3::LogComponent::IsEnabled(ns3::LogLevel const level) const [member function]
     cls.add_method('IsEnabled', 
                    'bool', 
-                   [param('ns3::LogLevel', 'level')], 
+                   [param('ns3::LogLevel const', 'level')], 
                    is_const=True)
     ## log.h (module 'core'): bool ns3::LogComponent::IsNoneEnabled() const [member function]
     cls.add_method('IsNoneEnabled', 
@@ -2266,6 +2278,10 @@
                    'char const *', 
                    [], 
                    is_const=True)
+    ## log.h (module 'core'): void ns3::LogComponent::SetMask(ns3::LogLevel const level) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::LogLevel const', 'level')])
     return
 
 def register_Ns3Mac48Address_methods(root_module, cls):
@@ -3071,6 +3087,13 @@
     cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
     return
 
+def register_Ns3ParameterLogger_methods(root_module, cls):
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(ns3::ParameterLogger const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ParameterLogger const &', 'arg0')])
+    ## log.h (module 'core'): ns3::ParameterLogger::ParameterLogger(std::ostream & os) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os')])
+    return
+
 def register_Ns3PcapFile_methods(root_module, cls):
     ## pcap-file.h (module 'network'): ns3::PcapFile::PcapFile() [constructor]
     cls.add_constructor([])
@@ -4245,6 +4268,14 @@
                    [param('uint8_t', 'v')])
     return
 
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+    cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+    return
+
 def register_Ns3TlvValue_methods(root_module, cls):
     ## wimax-tlv.h (module 'wimax'): ns3::TlvValue::TlvValue() [constructor]
     cls.add_constructor([])
@@ -4811,61 +4842,17 @@
 def register_Ns3Int64x64_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_unary_numeric_operator('-')
-    cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+    cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -4873,6 +4860,8 @@
     cls.add_constructor([])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
     cls.add_constructor([param('double', 'v')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+    cls.add_constructor([param('long double', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
     cls.add_constructor([param('int', 'v')])
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -4913,6 +4902,8 @@
     cls.add_method('MulByInvert', 
                    'void', 
                    [param('ns3::int64x64_t const &', 'o')])
+    ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+    cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
 def register_Ns3SimpleOfdmSendParam_methods(root_module, cls):
@@ -6424,12 +6415,14 @@
 def register_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('<=')
     cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('>')
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
     cls.add_output_stream_operator()
     cls.add_binary_comparison_operator('==')
     cls.add_binary_comparison_operator('>=')
@@ -6455,6 +6448,11 @@
     cls.add_constructor([param('std::string const &', 's')])
     ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
     cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+    ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+    cls.add_method('As', 
+                   'ns3::TimeWithUnit', 
+                   [param('ns3::Time::Unit const', 'unit')], 
+                   is_const=True)
     ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
     cls.add_method('Compare', 
                    'int', 
@@ -9549,12 +9547,12 @@
     cls.add_method('SetSystemLoss', 
                    'void', 
                    [param('double', 'systemLoss')])
-    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 
+    ## propagation-loss-model.h (module 'propagation'): void ns3::FriisPropagationLossModel::SetMinLoss(double minLoss) [member function]
+    cls.add_method('SetMinLoss', 
                    'void', 
-                   [param('double', 'minDistance')])
-    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 
+                   [param('double', 'minLoss')])
+    ## propagation-loss-model.h (module 'propagation'): double ns3::FriisPropagationLossModel::GetMinLoss() const [member function]
+    cls.add_method('GetMinLoss', 
                    'double', 
                    [], 
                    is_const=True)
@@ -10677,10 +10675,10 @@
                    'uint32_t', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
                    is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
+    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> nixVector) [member function]
     cls.add_method('SetNixVector', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+                   [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/wimax/examples/waf ns-3.20/src/wimax/examples/waf
--- ns-3.19/src/wimax/examples/waf	2014-06-17 10:34:00.600635411 -0700
+++ ns-3.20/src/wimax/examples/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/src/wimax/model/bandwidth-manager.cc ns-3.20/src/wimax/model/bandwidth-manager.cc
--- ns-3.19/src/wimax/model/bandwidth-manager.cc	2014-06-17 10:34:00.603635387 -0700
+++ ns-3.20/src/wimax/model/bandwidth-manager.cc	2014-06-17 10:33:13.948995537 -0700
@@ -37,8 +37,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BandwidthManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BandwidthManager);
 
 TypeId BandwidthManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/bs-link-manager.cc ns-3.20/src/wimax/model/bs-link-manager.cc
--- ns-3.19/src/wimax/model/bs-link-manager.cc	2014-06-17 10:34:00.604635380 -0700
+++ ns-3.20/src/wimax/model/bs-link-manager.cc	2014-06-17 10:33:13.948995537 -0700
@@ -36,8 +36,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BSLinkManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BSLinkManager);
 
 TypeId BSLinkManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/bs-net-device.cc ns-3.20/src/wimax/model/bs-net-device.cc
--- ns-3.19/src/wimax/model/bs-net-device.cc	2014-06-17 10:34:00.605635372 -0700
+++ ns-3.20/src/wimax/model/bs-net-device.cc	2014-06-17 10:33:13.949995529 -0700
@@ -50,8 +50,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BaseStationNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BaseStationNetDevice);
 
 TypeId BaseStationNetDevice::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/bs-scheduler.cc ns-3.20/src/wimax/model/bs-scheduler.cc
--- ns-3.19/src/wimax/model/bs-scheduler.cc	2014-06-17 10:34:00.607635357 -0700
+++ ns-3.20/src/wimax/model/bs-scheduler.cc	2014-06-17 10:33:13.952995506 -0700
@@ -38,8 +38,7 @@
 NS_LOG_COMPONENT_DEFINE ("BSScheduler");
 
 namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (BSScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BSScheduler);
 
 TypeId
 BSScheduler::GetTypeId (void)
diff -Naur ns-3.19/src/wimax/model/bs-scheduler-rtps.cc ns-3.20/src/wimax/model/bs-scheduler-rtps.cc
--- ns-3.19/src/wimax/model/bs-scheduler-rtps.cc	2014-06-17 10:34:00.606635364 -0700
+++ ns-3.20/src/wimax/model/bs-scheduler-rtps.cc	2014-06-17 10:33:13.950995522 -0700
@@ -41,8 +41,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BSSchedulerRtps)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BSSchedulerRtps);
 
 TypeId
 BSSchedulerRtps::GetTypeId (void)
diff -Naur ns-3.19/src/wimax/model/bs-scheduler-simple.cc ns-3.20/src/wimax/model/bs-scheduler-simple.cc
--- ns-3.19/src/wimax/model/bs-scheduler-simple.cc	2014-06-17 10:34:00.607635357 -0700
+++ ns-3.20/src/wimax/model/bs-scheduler-simple.cc	2014-06-17 10:33:13.951995514 -0700
@@ -39,8 +39,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BSSchedulerSimple)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BSSchedulerSimple);
 
 TypeId BSSchedulerSimple::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/bs-uplink-scheduler.cc ns-3.20/src/wimax/model/bs-uplink-scheduler.cc
--- ns-3.19/src/wimax/model/bs-uplink-scheduler.cc	2014-06-17 10:34:00.612635318 -0700
+++ ns-3.20/src/wimax/model/bs-uplink-scheduler.cc	2014-06-17 10:33:13.956995475 -0700
@@ -36,8 +36,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UplinkScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UplinkScheduler);
 
 UplinkScheduler::UplinkScheduler (void)
   : m_bs (0),
diff -Naur ns-3.19/src/wimax/model/bs-uplink-scheduler-mbqos.cc ns-3.20/src/wimax/model/bs-uplink-scheduler-mbqos.cc
--- ns-3.19/src/wimax/model/bs-uplink-scheduler-mbqos.cc	2014-06-17 10:34:00.609635341 -0700
+++ ns-3.20/src/wimax/model/bs-uplink-scheduler-mbqos.cc	2014-06-17 10:33:13.953995499 -0700
@@ -33,8 +33,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (UplinkSchedulerMBQoS)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UplinkSchedulerMBQoS);
 
 UplinkSchedulerMBQoS::UplinkSchedulerMBQoS ()
 {
@@ -312,7 +311,7 @@
                         (*(ssRecord->GetServiceFlows (ServiceFlow::SF_TYPE_UGS).begin ()))->GetRecord ()->GetLastGrantTime ()
                         + MilliSeconds ((*(ssRecord->GetServiceFlows (ServiceFlow::SF_TYPE_UGS).begin ()))->GetUnsolicitedGrantInterval ());
 
-                      Time frame = Time ((timestamp - Simulator::Now ()) / frame_duration);
+                      int64_t frame = (timestamp - Simulator::Now ()) / frame_duration;
 
                       if (frame <= 1)
                         {
@@ -663,7 +662,7 @@
               Time deadline = job->GetDeadline ();
               Time frame_duration = GetBs ()->GetPhy ()->GetFrameDuration ();
 
-              Time frame = Time ((deadline - Simulator::Now ()) / frame_duration);
+              int64_t frame = (deadline - Simulator::Now ()) / frame_duration;
 
               NS_LOG_DEBUG ("At " << Simulator::Now ().GetSeconds () << " reserved traffic rate: "
                                   << job->GetServiceFlow ()->GetMinReservedTrafficRate ()
diff -Naur ns-3.19/src/wimax/model/bs-uplink-scheduler-rtps.cc ns-3.20/src/wimax/model/bs-uplink-scheduler-rtps.cc
--- ns-3.19/src/wimax/model/bs-uplink-scheduler-rtps.cc	2014-06-17 10:34:00.610635334 -0700
+++ ns-3.20/src/wimax/model/bs-uplink-scheduler-rtps.cc	2014-06-17 10:33:13.954995491 -0700
@@ -36,8 +36,7 @@
 NS_LOG_COMPONENT_DEFINE ("UplinkSchedulerRtps");
 
 namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED ( UplinkSchedulerRtps)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UplinkSchedulerRtps);
   
 
 UplinkSchedulerRtps::UplinkSchedulerRtps ()
diff -Naur ns-3.19/src/wimax/model/bs-uplink-scheduler-simple.cc ns-3.20/src/wimax/model/bs-uplink-scheduler-simple.cc
--- ns-3.19/src/wimax/model/bs-uplink-scheduler-simple.cc	2014-06-17 10:34:00.611635326 -0700
+++ ns-3.20/src/wimax/model/bs-uplink-scheduler-simple.cc	2014-06-17 10:33:13.955995483 -0700
@@ -35,8 +35,7 @@
 NS_LOG_COMPONENT_DEFINE ("UplinkSchedulerSimple");
 
 namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (UplinkSchedulerSimple)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UplinkSchedulerSimple);
 
 UplinkSchedulerSimple::UplinkSchedulerSimple (void)
 {
diff -Naur ns-3.19/src/wimax/model/burst-profile-manager.cc ns-3.20/src/wimax/model/burst-profile-manager.cc
--- ns-3.19/src/wimax/model/burst-profile-manager.cc	2014-06-17 10:34:00.612635318 -0700
+++ ns-3.20/src/wimax/model/burst-profile-manager.cc	2014-06-17 10:33:13.956995475 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (BurstProfileManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BurstProfileManager);
 
 TypeId BurstProfileManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/cid-factory.cc ns-3.20/src/wimax/model/cid-factory.cc
--- ns-3.19/src/wimax/model/cid-factory.cc	2014-06-17 10:34:00.613635310 -0700
+++ ns-3.20/src/wimax/model/cid-factory.cc	2014-06-17 10:33:13.957995468 -0700
@@ -98,14 +98,14 @@
 bool
 CidFactory::IsTransport (Cid cid) const
 {
-  uint16_t id = cid.m_identifier;
-  return id >= 2 * m_m + 1 && id <= 0xfefe;
+  int id = cid.m_identifier;
+  return (id - 2 * m_m > 0) && (id <= 0xfefe);
 }
 bool
 CidFactory::IsPrimary (Cid cid) const
 {
-  uint16_t id = cid.m_identifier;
-  return id >= m_m + 1 && id <= 2 * m_m;
+  int id = cid.m_identifier;
+  return (id - m_m > 0) && (id <= 2 * m_m);
 }
 bool
 CidFactory::IsBasic (Cid cid) const
diff -Naur ns-3.19/src/wimax/model/connection-manager.cc ns-3.20/src/wimax/model/connection-manager.cc
--- ns-3.19/src/wimax/model/connection-manager.cc	2014-06-17 10:34:00.614635302 -0700
+++ ns-3.20/src/wimax/model/connection-manager.cc	2014-06-17 10:33:13.958995460 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ConnectionManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ConnectionManager);
 
 TypeId ConnectionManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/default-traces.h ns-3.20/src/wimax/model/default-traces.h
--- ns-3.19/src/wimax/model/default-traces.h	2014-06-17 10:34:00.617635279 -0700
+++ ns-3.20/src/wimax/model/default-traces.h	2014-06-17 10:33:13.961995437 -0700
@@ -36,7 +36,9 @@
 #ifndef WIMAX_DEFAULT_TRACES_H
 #define WIMAX_DEFAULT_TRACES_H
 
-double modulation0[6][29] = {
+namespace ns3 {
+
+static const double modulation0[6][29] = {
 
   { 0.00, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80,
     1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80 },
@@ -62,7 +64,7 @@
     0.00000, 0.00000, 0.00000 }
 };
 
-double modulation1[6][42] = {
+static const double modulation1[6][42] = {
 
   { 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80,
     3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90, 5.00, 5.10, 5.20, 5.30, 5.40, 5.50, 5.60, 5.70,
@@ -94,7 +96,7 @@
     0.00000, 0.00030, 0.00000 }
 };
 
-double modulation2[6][96] = {
+static const double modulation2[6][96] = {
 
   { 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80,
     4.90, 5.00, 5.10, 5.20, 5.30, 5.40, 5.50, 5.60, 5.70, 5.80, 5.90, 6.00, 6.10, 6.20, 6.30, 6.40, 6.50, 6.60, 6.70,
@@ -149,7 +151,7 @@
     0.00030, 0.00048, 0.00000, 0.00000, 0.00000 }
 };
 
-double modulation3[6][117] = {
+static const double modulation3[6][117] = {
 
   { 10.00, 10.10, 10.20, 10.30, 10.40, 10.50, 10.60, 10.70, 10.80, 10.90, 11.00, 11.10, 11.20, 11.30, 11.40, 11.50,
     11.60, 11.70, 11.80, 11.90, 12.00, 12.10, 12.20, 12.30, 12.40, 12.50, 12.60, 12.70, 12.80, 12.90, 13.00, 13.10,
@@ -231,7 +233,7 @@
     0.00000, 0.00030, 0.00048, 0.00079, 0.00048, 0.00030, 0.00030, 0.00079, 0.00000 }
 };
 
-double modulation4[6][115] = {
+static const double modulation4[6][115] = {
 
   { 20.00, 20.10, 20.20, 20.30, 20.40, 20.50, 20.60, 20.70, 20.80, 20.90, 21.00, 21.10, 21.20, 21.30, 21.40, 21.50,
     21.60, 21.70, 21.80, 21.90, 22.00, 22.10, 22.20, 22.30, 22.40, 22.50, 22.60, 22.70, 22.80, 22.90, 23.00, 23.10,
@@ -293,7 +295,7 @@
     0.05739, 0.05988, 0.05500, 0.05500, 0.05365, 0.05084, 0.04635, 0.04844, 0.05557, 0.05329, 0.05443 },
 };
 
-double modulation5[6][547] = {
+static const double modulation5[6][547] = {
 
   { 50.00, 50.10, 50.20, 50.30, 50.40, 50.50, 50.60, 50.70, 50.80, 50.90, 51.00, 51.10, 51.20, 51.30, 51.40, 51.50,
     51.60, 51.70, 51.80, 51.90, 52.00, 52.10, 52.20, 52.30, 52.40, 52.50, 52.60, 52.70, 52.80, 52.90, 53.00, 53.10,
@@ -547,7 +549,7 @@
     0.01283, 0.01107, 0.00819, 0.01008, 0.00975, 0.01140, 0.00952, 0.00875, 0.00919 }
 };
 
-double modulation6[6][626] = {
+static const double modulation6[6][626] = {
 
   { 65.00, 65.10, 65.20, 65.30, 65.40, 65.50, 65.60, 65.70, 65.80, 65.90, 66.00, 66.10, 66.20, 66.30, 66.40, 66.50,
     66.60, 66.70, 66.80, 66.90, 67.00, 67.10, 67.20, 67.30, 67.40, 67.50, 67.60, 67.70, 67.80, 67.90, 68.00, 68.10,
@@ -831,4 +833,6 @@
     0.01943 }
 };
 
+}
+
 #endif /* WIMAX_DEFAULT_TRACES_H */
diff -Naur ns-3.19/src/wimax/model/dl-mac-messages.cc ns-3.20/src/wimax/model/dl-mac-messages.cc
--- ns-3.19/src/wimax/model/dl-mac-messages.cc	2014-06-17 10:34:00.617635279 -0700
+++ ns-3.20/src/wimax/model/dl-mac-messages.cc	2014-06-17 10:33:13.961995437 -0700
@@ -312,8 +312,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (Dcd)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Dcd);
 
 Dcd::Dcd (void)
   : m_reserved (0),
@@ -545,8 +544,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (DlMap)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DlMap);
 
 DlMap::DlMap (void)
   : m_dcdCount (0),
diff -Naur ns-3.19/src/wimax/model/ipcs-classifier.cc ns-3.20/src/wimax/model/ipcs-classifier.cc
--- ns-3.19/src/wimax/model/ipcs-classifier.cc	2014-06-17 10:34:00.619635264 -0700
+++ ns-3.20/src/wimax/model/ipcs-classifier.cc	2014-06-17 10:33:13.963995421 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (IpcsClassifier)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (IpcsClassifier);
 
 TypeId IpcsClassifier::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/mac-messages.cc ns-3.20/src/wimax/model/mac-messages.cc
--- ns-3.19/src/wimax/model/mac-messages.cc	2014-06-17 10:34:00.619635264 -0700
+++ ns-3.20/src/wimax/model/mac-messages.cc	2014-06-17 10:33:13.964995414 -0700
@@ -27,10 +27,10 @@
 #include "wimax-tlv.h"
 
 NS_LOG_COMPONENT_DEFINE ("MACMESSAGES");
+
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ManagementMessageType)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ManagementMessageType);
 
 ManagementMessageType::ManagementMessageType (void)
   : m_type (~0)
@@ -105,10 +105,9 @@
   return i.GetDistanceFrom (start);
 }
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (RngReq)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RngReq);
 
 RngReq::RngReq (void)
   : m_reserved (0),
@@ -220,10 +219,9 @@
   return i.GetDistanceFrom (start);
 }
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (RngRsp)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (RngRsp);
 
 RngRsp::RngRsp (void)
   : m_reserved (0),
@@ -498,10 +496,9 @@
   return i.GetDistanceFrom (start);
 }
 
-// ----------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (DsaReq)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsaReq);
 
 DsaReq::DsaReq (void)
   : m_transactionId (0),
@@ -583,16 +580,6 @@
   os << " transaction id = " << (uint32_t) m_transactionId << ", m_sfid = " << m_sfid << ", cid = " << m_cid;
 }
 
-/*
- *  0             7             15            23
- * +-------------+-------------+-------------+
- * |Mngt msg type|       Transaction ID      |
- * +-------------+-------------+-------------+
- * |            Service Flow TLV             |
- * +~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
- *
- */
-
 uint32_t
 DsaReq::GetSerializedSize (void) const
 {
@@ -633,10 +620,9 @@
   m_serviceFlow = sf;
 }
 
-// ----------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (DsaRsp)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsaRsp);
 
 DsaRsp::DsaRsp (void)
   : m_transactionId (0),
@@ -742,15 +728,7 @@
   return 2 + 1 + m_serviceFlow.ToTlv ().GetSerializedSize ();
 }
 
-/*
- *  0             7             15            23
- * +-------------+-------------+-------------+
- * |Mngt msg type|       Transaction ID      |
- * +-------------+-------------+-------------+
- * | Conf Code   | Service Flow TLV          |
- * +~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
- *
- */
+
 void
 DsaRsp::Serialize (Buffer::Iterator start) const
 {
@@ -774,10 +752,9 @@
   return size + 3;
 }
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (DsaAck)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (DsaAck);
 
 DsaAck::DsaAck (void)
   : m_transactionId (0),
diff -Naur ns-3.19/src/wimax/model/mac-messages.h ns-3.20/src/wimax/model/mac-messages.h
--- ns-3.19/src/wimax/model/mac-messages.h	2014-06-17 10:34:00.620635256 -0700
+++ ns-3.20/src/wimax/model/mac-messages.h	2014-06-17 10:33:13.964995414 -0700
@@ -81,7 +81,7 @@
 #endif /* MANAGEMENT_MESSAGE_TYPE_H */
 
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
 #ifndef RNG_RSP_H
 #define RNG_RSP_H
@@ -246,7 +246,7 @@
 
 #endif /* RNG_RSP_H */
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
 #ifndef DSA_REQ_H
 #define DSA_REQ_H
@@ -266,6 +266,15 @@
    * Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems"
    * 6.3.2.3.7 Registration request (REG-REQ) message, page 51
    *
+   * \verbatim
+   *  0             7             15            23
+   * +-------------+-------------+-------------+
+   * |Mngt msg type|       Transaction ID      |
+   * +-------------+-------------+-------------+
+   * |            Service Flow TLV             |
+   * +~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
+   * \endverbatim
+   *
    */
 public:
   DsaReq ();
@@ -320,7 +329,7 @@
 
 #endif /* DSA_REQ_H */
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
 #ifndef DSA_RSP_H
 #define DSA_RSP_H
@@ -338,6 +347,15 @@
    * \brief This class implements the DSA-RSP message described by "IEEE Standard for
    * Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems"
    * 6.3.2.3.11 DSA-RSP message, page 63
+   *
+   * \verbatim
+   *   0             7             15            23
+   *  +-------------+-------------+-------------+
+   *  |Mngt msg type|       Transaction ID      |
+   *  +-------------+-------------+-------------+
+   *  | Conf Code   | Service Flow TLV          |
+   *  +~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
+   * \endverbatim
    */
 
 public:
@@ -398,7 +416,7 @@
 
 #endif /* DSA_RSP_H */
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
 #ifndef DSA_ACK_H
 #define DSA_ACK_H
@@ -443,7 +461,7 @@
 
 #endif /* DSA_ACK_H */
 
-// ----------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------
 
 #ifndef RNG_REQ_H
 #define RNG_REQ_H
diff -Naur ns-3.19/src/wimax/model/service-flow-manager.cc ns-3.20/src/wimax/model/service-flow-manager.cc
--- ns-3.19/src/wimax/model/service-flow-manager.cc	2014-06-17 10:34:00.621635249 -0700
+++ ns-3.20/src/wimax/model/service-flow-manager.cc	2014-06-17 10:33:13.966995398 -0700
@@ -43,8 +43,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (ServiceFlowManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (ServiceFlowManager);
 
 TypeId ServiceFlowManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/simple-ofdm-wimax-phy.cc ns-3.20/src/wimax/model/simple-ofdm-wimax-phy.cc
--- ns-3.19/src/wimax/model/simple-ofdm-wimax-phy.cc	2014-06-17 10:34:00.625635218 -0700
+++ ns-3.20/src/wimax/model/simple-ofdm-wimax-phy.cc	2014-06-17 10:33:13.969995375 -0700
@@ -38,8 +38,7 @@
 NS_LOG_COMPONENT_DEFINE ("SimpleOfdmWimaxPhy");
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SimpleOfdmWimaxPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SimpleOfdmWimaxPhy);
 
 TypeId SimpleOfdmWimaxPhy::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/ss-link-manager.cc ns-3.20/src/wimax/model/ss-link-manager.cc
--- ns-3.19/src/wimax/model/ss-link-manager.cc	2014-06-17 10:34:00.627635202 -0700
+++ ns-3.20/src/wimax/model/ss-link-manager.cc	2014-06-17 10:33:13.971995360 -0700
@@ -35,8 +35,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SSLinkManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SSLinkManager);
 
 TypeId SSLinkManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/ss-manager.cc ns-3.20/src/wimax/model/ss-manager.cc
--- ns-3.19/src/wimax/model/ss-manager.cc	2014-06-17 10:34:00.628635194 -0700
+++ ns-3.20/src/wimax/model/ss-manager.cc	2014-06-17 10:33:13.972995352 -0700
@@ -28,8 +28,7 @@
 NS_LOG_COMPONENT_DEFINE ("SSManager");
 
 namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (SSManager)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SSManager);
 
 TypeId SSManager::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/ss-net-device.cc ns-3.20/src/wimax/model/ss-net-device.cc
--- ns-3.19/src/wimax/model/ss-net-device.cc	2014-06-17 10:34:00.629635187 -0700
+++ ns-3.20/src/wimax/model/ss-net-device.cc	2014-06-17 10:33:13.973995344 -0700
@@ -46,8 +46,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (SubscriberStationNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SubscriberStationNetDevice);
 
 Time SubscriberStationNetDevice::GetDefaultLostDlMapInterval ()
 {
diff -Naur ns-3.19/src/wimax/model/ss-scheduler.cc ns-3.20/src/wimax/model/ss-scheduler.cc
--- ns-3.19/src/wimax/model/ss-scheduler.cc	2014-06-17 10:34:00.631635171 -0700
+++ ns-3.20/src/wimax/model/ss-scheduler.cc	2014-06-17 10:33:13.975995329 -0700
@@ -34,8 +34,7 @@
 NS_LOG_COMPONENT_DEFINE ("SSScheduler");
 
 namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (SSScheduler)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (SSScheduler);
 
 TypeId SSScheduler::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/ul-mac-messages.cc ns-3.20/src/wimax/model/ul-mac-messages.cc
--- ns-3.19/src/wimax/model/ul-mac-messages.cc	2014-06-17 10:34:00.633635156 -0700
+++ ns-3.20/src/wimax/model/ul-mac-messages.cc	2014-06-17 10:33:13.977995313 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (Ucd)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (Ucd);
 
 UcdChannelEncodings::UcdChannelEncodings (void)
   : m_bwReqOppSize (0),
@@ -578,8 +577,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (UlMap)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (UlMap);
 
 UlMap::UlMap (void)
   : m_reserved (0),
diff -Naur ns-3.19/src/wimax/model/wimax-channel.cc ns-3.20/src/wimax/model/wimax-channel.cc
--- ns-3.19/src/wimax/model/wimax-channel.cc	2014-06-17 10:34:00.633635156 -0700
+++ ns-3.20/src/wimax/model/wimax-channel.cc	2014-06-17 10:33:13.977995313 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxChannel)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxChannel);
 
 TypeId WimaxChannel::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/wimax-connection.cc ns-3.20/src/wimax/model/wimax-connection.cc
--- ns-3.19/src/wimax/model/wimax-connection.cc	2014-06-17 10:34:00.634635148 -0700
+++ ns-3.20/src/wimax/model/wimax-connection.cc	2014-06-17 10:33:13.978995306 -0700
@@ -27,8 +27,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxConnection)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxConnection);
 
 TypeId WimaxConnection::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wimax/model/wimax-mac-header.cc ns-3.20/src/wimax/model/wimax-mac-header.cc
--- ns-3.19/src/wimax/model/wimax-mac-header.cc	2014-06-17 10:34:00.635635140 -0700
+++ ns-3.20/src/wimax/model/wimax-mac-header.cc	2014-06-17 10:33:13.979995298 -0700
@@ -25,8 +25,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (MacHeaderType)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (MacHeaderType);
 
 MacHeaderType::MacHeaderType (void)
   : m_type (0)
@@ -93,8 +92,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (GenericMacHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GenericMacHeader);
 
 GenericMacHeader::GenericMacHeader (void)
   : m_ht (0),
@@ -298,8 +296,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (BandwidthRequestHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (BandwidthRequestHeader);
 
 BandwidthRequestHeader::BandwidthRequestHeader (void)
   : m_ht (1),
@@ -481,8 +478,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (GrantManagementSubheader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (GrantManagementSubheader);
 
 GrantManagementSubheader::GrantManagementSubheader (void)
   : m_si (0),
@@ -573,8 +569,7 @@
 
 // ----------------------------------------------------------------------------------------------------------
 
-NS_OBJECT_ENSURE_REGISTERED (FragmentationSubheader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (FragmentationSubheader);
 
 FragmentationSubheader::FragmentationSubheader (void)
   : m_fc (0),
diff -Naur ns-3.19/src/wimax/model/wimax-mac-queue.cc ns-3.20/src/wimax/model/wimax-mac-queue.cc
--- ns-3.19/src/wimax/model/wimax-mac-queue.cc	2014-06-17 10:34:00.635635140 -0700
+++ ns-3.20/src/wimax/model/wimax-mac-queue.cc	2014-06-17 10:33:13.980995290 -0700
@@ -31,8 +31,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxMacQueue)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxMacQueue);
 
 WimaxMacQueue::QueueElement::QueueElement (void)
   : m_packet (Create<Packet> ()),
diff -Naur ns-3.19/src/wimax/model/wimax-mac-to-mac-header.cc ns-3.20/src/wimax/model/wimax-mac-to-mac-header.cc
--- ns-3.19/src/wimax/model/wimax-mac-to-mac-header.cc	2014-06-17 10:34:00.636635133 -0700
+++ ns-3.20/src/wimax/model/wimax-mac-to-mac-header.cc	2014-06-17 10:33:13.980995290 -0700
@@ -24,8 +24,7 @@
 #include "ns3/log.h"
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxMacToMacHeader)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxMacToMacHeader);
 
 WimaxMacToMacHeader::WimaxMacToMacHeader (void)
   : m_len (0)
diff -Naur ns-3.19/src/wimax/model/wimax-net-device.cc ns-3.20/src/wimax/model/wimax-net-device.cc
--- ns-3.19/src/wimax/model/wimax-net-device.cc	2014-06-17 10:34:00.637635125 -0700
+++ ns-3.20/src/wimax/model/wimax-net-device.cc	2014-06-17 10:33:13.981995283 -0700
@@ -43,8 +43,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxNetDevice)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxNetDevice);
 
 uint32_t WimaxNetDevice::m_nrFrames = 0;
 uint8_t WimaxNetDevice::m_direction = ~0;
diff -Naur ns-3.19/src/wimax/model/wimax-phy.cc ns-3.20/src/wimax/model/wimax-phy.cc
--- ns-3.19/src/wimax/model/wimax-phy.cc	2014-06-17 10:34:00.637635125 -0700
+++ ns-3.20/src/wimax/model/wimax-phy.cc	2014-06-17 10:33:13.982995275 -0700
@@ -34,8 +34,7 @@
 
 namespace ns3 {
 
-NS_OBJECT_ENSURE_REGISTERED (WimaxPhy)
-  ;
+NS_OBJECT_ENSURE_REGISTERED (WimaxPhy);
 
 TypeId WimaxPhy::GetTypeId (void)
 {
diff -Naur ns-3.19/src/wscript ns-3.20/src/wscript
--- ns-3.19/src/wscript	2014-06-17 10:34:00.644635071 -0700
+++ ns-3.20/src/wscript	2014-06-17 10:33:13.988995228 -0700
@@ -16,6 +16,7 @@
     from sets import Set as set # Python 2.3 fallback
 
 
+
 all_modules = []
 for dirname in os.listdir('src'):
     if dirname.startswith('.') or dirname == 'CVS':
@@ -59,11 +60,16 @@
             if not conf.env['LIB_BOOST']:
                 conf.env['LIB_BOOST'] = []
 
+    # Append blddir to the module path before recursing into modules
+    blddir = os.path.abspath(os.path.join(conf.bldnode.abspath(), conf.variant))
+    conf.env.append_value('NS3_MODULE_PATH', blddir)
+
     for module in all_modules:
         conf.recurse(module, mandatory=False)
 
-    blddir = os.path.abspath(os.path.join(conf.bldnode.abspath(), conf.variant))
-    conf.env.append_value('NS3_MODULE_PATH', blddir)
+    # Remove duplicate path items
+    conf.env['NS3_MODULE_PATH'] = wutils.uniquify_list(conf.env['NS3_MODULE_PATH'])
+
     if Options.options.enable_rpath:
         conf.env.append_value('RPATH', '-Wl,-rpath,%s' % (os.path.join(blddir),))
 
diff -Naur ns-3.19/test.py ns-3.20/test.py
--- ns-3.19/test.py	2014-06-17 10:34:00.647635048 -0700
+++ ns-3.20/test.py	2014-06-17 10:33:13.991995205 -0700
@@ -167,19 +167,23 @@
 
             # Add the proper prefix and suffix to the example name to
             # match what is done in the wscript file.
-            example_name = "%s%s-%s%s" % (APPNAME, VERSION, example_name, BUILD_PROFILE_SUFFIX)
+            example_path = "%s%s-%s%s" % (APPNAME, VERSION, example_name, BUILD_PROFILE_SUFFIX)
 
             # Set the full path for the example.
-            example_path = os.path.join(cpp_executable_dir, example_name)
+            example_path = os.path.join(cpp_executable_dir, example_path)
+            example_name = os.path.join(
+                os.path.relpath(cpp_executable_dir, NS3_BUILDDIR),
+                example_name)
             # Add all of the C++ examples that were built, i.e. found
             # in the directory, to the list of C++ examples to run.
             if os.path.exists(example_path):
                 # Add any arguments to the path.
                 if len(example_name_parts) != 1:
                     example_path = "%s %s" % (example_path, example_arguments)
+                    example_name = "%s %s" % (example_name, example_arguments)
 
                 # Add this example.
-                example_tests.append((example_path, do_run, do_valgrind_run))
+                example_tests.append((example_name, example_path, do_run, do_valgrind_run))
                 example_names_original.append(example_name_original)
     
         # Each tuple in the Python list of examples to run contains
@@ -1320,6 +1324,7 @@
     #
     total_tests = 0
     skipped_tests = 0
+    skipped_testnames = []
 
     #
     # We now have worker threads spun up, and a list of work to do.  So, run 
@@ -1412,7 +1417,7 @@
     if len(options.suite) == 0 and len(options.example) == 0 and len(options.pyexample) == 0:
         if len(options.constrain) == 0 or options.constrain == "example":
             if ENABLE_EXAMPLES:
-                for test, do_run, do_valgrind_run in example_tests:
+                for name, test, do_run, do_valgrind_run in example_tests:
                     # Remove any arguments and directory names from test.
                     test_name = test.split(' ', 1)[0] 
                     test_name = os.path.basename(test_name)
@@ -1423,7 +1428,7 @@
                             job = Job()
                             job.set_is_example(True)
                             job.set_is_pyexample(False)
-                            job.set_display_name(test)
+                            job.set_display_name(name)
                             job.set_tmp_file_name("")
                             job.set_cwd(testpy_output_dir)
                             job.set_basedir(os.getcwd())
@@ -1589,8 +1594,11 @@
     #
     passed_tests = 0
     failed_tests = 0
+    failed_testnames = []
     crashed_tests = 0
+    crashed_testnames = []
     valgrind_errors = 0
+    valgrind_testnames = []
     for i in range(jobs):
         job = output_queue.get()
         if job.is_break:
@@ -1604,18 +1612,22 @@
         if job.is_skip:
             status = "SKIP"
             skipped_tests = skipped_tests + 1
+            skipped_testnames.append(job.display_name)
         else:
             if job.returncode == 0:
                 status = "PASS"
                 passed_tests = passed_tests + 1
             elif job.returncode == 1:
                 failed_tests = failed_tests + 1
+                failed_testnames.append(job.display_name)
                 status = "FAIL"
             elif job.returncode == 2:
                 valgrind_errors = valgrind_errors + 1
+                valgrind_testnames.append(job.display_name)
                 status = "VALGR"
             else:
                 crashed_tests = crashed_tests + 1
+                crashed_testnames.append(job.display_name)
                 status = "CRASH"
 
         if options.duration or options.constrain == "performance":
@@ -1752,6 +1764,17 @@
     print "%d of %d tests passed (%d passed, %d skipped, %d failed, %d crashed, %d valgrind errors)" % (passed_tests, 
         total_tests, passed_tests, skipped_tests, failed_tests, crashed_tests, valgrind_errors)
     #
+    # Repeat summary of skipped, failed, crashed, valgrind events 
+    #
+    if skipped_testnames:
+        print 'List of SKIPped tests: %s' % ' '.join(map(str, skipped_testnames))
+    if failed_testnames:
+        print 'List of FAILed tests: %s' % ' '.join(map(str, failed_testnames))
+    if crashed_testnames:
+        print 'List of CRASHed tests: %s' % ' '.join(map(str, crashed_testnames))
+    if valgrind_testnames:
+        print 'List of VALGR failures: %s' % ' '.join(map(str, valgrind_testnames))
+    #
     # The last things to do are to translate the XML results file to "human
     # readable form" if the user asked for it (or make an XML file somewhere)
     #
diff -Naur ns-3.19/utils/print-introspected-doxygen.cc ns-3.20/utils/print-introspected-doxygen.cc
--- ns-3.19/utils/print-introspected-doxygen.cc	2014-06-17 10:34:00.658634963 -0700
+++ ns-3.20/utils/print-introspected-doxygen.cc	2014-06-17 10:33:14.002995121 -0700
@@ -27,12 +27,6 @@
   std::string brief;                         ///< brief tag
   std::string commentStart;                  ///< start of code comment
   std::string commentStop;                   ///< end of code comment
-  std::string defgroupAttributeListStart;    ///< start of AttributeList group
-  std::string defgroupAttributeListStop;     ///< end of AttributeList group
-  std::string defgroupGlobalValueListStart;  ///< start of GlobalValueList group
-  std::string defgroupGlobalValueListStop;   ///< end of GlobalValueList group
-  std::string defgroupTraceSourceListStart;  ///< start of TraceSourceList group
-  std::string defgroupTraceSourceListStop;   ///< end of TraceSourceList group
   std::string flagSpanStart;                 ///< start of Attribute flag value
   std::string flagSpanStop;                  ///< end of Attribute flag value
   std::string functionStart;                 ///< start of a class/function
@@ -40,7 +34,9 @@
   std::string headingStart;                  ///< start of section heading (h3)
   std::string headingStop;                   ///< end of section heading (h3)
   std::string indentHtmlOnly;                ///< small indent
-  std::string ingroupConstructs;             ///< add to constructs group
+  std::string pageAttributeList;             ///< start Attributes list
+  std::string pageGlobalValueList;           ///< start GlobalValue page
+  std::string pageTraceSourceList;           ///< start Trace sources page
   std::string listStart;                     ///< start unordered list
   std::string listStop;                      ///< end unordered list
   std::string listLineStart;                 ///< start unordered list item
@@ -68,9 +64,37 @@
 	       && (info.checker->GetUnderlyingTypeInformation () != "std::string")
 	      )
 	    {
-	      os << reference;
+	      // Two indirect cases to handle
+	      bool handled = false;
+
+	      if (info.checker->GetValueTypeName () == "ns3::PointerValue")
+		{
+		  const PointerChecker *ptrChecker = dynamic_cast<const PointerChecker *> (PeekPointer (info.checker));
+		  if (ptrChecker != 0)
+		    {
+		      os << reference << "ns3::Ptr" << "< "
+			 << reference << ptrChecker->GetPointeeTypeId ().GetName ()
+			 << ">";
+		      handled = true;
+		    }
+		}
+	      else if (info.checker->GetValueTypeName () == "ns3::ObjectPtrContainerValue")
+		{
+		  const ObjectPtrContainerChecker * ptrChecker = dynamic_cast<const ObjectPtrContainerChecker *> (PeekPointer (info.checker));
+		  if (ptrChecker != 0)
+		    {
+		      os << reference << "ns3::Ptr" << "< "
+			 << reference << ptrChecker->GetItemTypeId ().GetName ()
+			 << ">";
+		      handled = true;
+		    }
+		}
+	      if (! handled)
+		{
+		  os << reference << info.checker->GetUnderlyingTypeInformation ();
+		}
 	    }
-	  os << info.checker->GetUnderlyingTypeInformation () << listLineStop << std::endl;
+	  os << listLineStop << std::endl;
 	}
       if (info.flags & TypeId::ATTR_CONSTRUCT && info.accessor->HasSetter ())
 	{
@@ -428,12 +452,6 @@
       brief                        = "";
       commentStart                 = "===============================================================\n";
       commentStop                  = "";
-      defgroupAttributeListStart   = "";
-      defgroupAttributeListStop    = "\n";
-      defgroupGlobalValueListStart = "";
-      defgroupGlobalValueListStop  = "";
-      defgroupTraceSourceListStart = "";
-      defgroupTraceSourceListStop  = "\n";
       flagSpanStart                = "";
       flagSpanStop                 = "";
       functionStart                = "";
@@ -441,7 +459,9 @@
       headingStart                 = "";
       headingStop                  = "";
       indentHtmlOnly               = "";
-      ingroupConstructs            = "";
+      pageAttributeList            = "";
+      pageGlobalValueList          = "";
+      pageTraceSourceList          = "";
       listStart                    = "";
       listStop                     = "";
       listLineStart                = "    * ";
@@ -458,14 +478,8 @@
       breakHtmlOnly                = "<br>";
       breakTextOnly                = "";
       brief                        = "\\brief ";
-      commentStart                 = "/*!";
-      commentStop                  = "*/";
-      defgroupAttributeListStart   = "\\defgroup AttributeList ";
-      defgroupAttributeListStop    = "";
-      defgroupGlobalValueListStart = "\\defgroup GlobalValueList ";
-      defgroupGlobalValueListStop  = "";
-      defgroupTraceSourceListStart = "\\defgroup TraceSourceList ";
-      defgroupTraceSourceListStop  = "";
+      commentStart                 = "/*!\n";
+      commentStop                  = "*/\n";
       flagSpanStart                = "<span class=\"mlabel\">";
       flagSpanStop                 = "</span>";
       functionStart                = "\\class ";
@@ -473,7 +487,9 @@
       headingStart                 = "<h3>";
       headingStop                  = "</h3>";
       indentHtmlOnly               = "  ";
-      ingroupConstructs            = "\\ingroup constructs\n";
+      pageAttributeList            = "\\page AttributesList ";
+      pageGlobalValueList          = "\\page GlobalValueList ";
+      pageTraceSourceList          = "\\page TraceSourceList ";
       listStart                    = "<ul>";
       listStop                     = "</ul>";
       listLineStart                = "<li>";
@@ -643,10 +659,10 @@
     }  // class documentation
 
 
-  std::cout << commentStart << std::endl
-            << ingroupConstructs
-            << defgroupTraceSourceListStart << "The list of all trace sources."
-	    << defgroupTraceSourceListStop << std::endl;
+  std::cout << commentStart
+            << pageTraceSourceList << "All TraceSources\n"
+	    << std::endl;
+
   for (uint32_t i = 0; i < TypeId::GetRegisteredN (); ++i)
     {
       TypeId tid = TypeId::GetRegistered (i);
@@ -661,17 +677,19 @@
       for (uint32_t j = 0; j < tid.GetTraceSourceN (); ++j)
 	{
 	  struct TypeId::TraceSourceInformation info = tid.GetTraceSource(j);
-	  std::cout << listLineStart << info.name << ": " << info.help
+	  std::cout << listLineStart
+		    << boldStart << info.name << boldStop
+		    << ": " << info.help
 		    << listLineStop  << std::endl;
 	}
       std::cout << listStop << std::endl;
     }
   std::cout << commentStop << std::endl;
 
-  std::cout << commentStart << std::endl
-            << ingroupConstructs
-            << defgroupAttributeListStart << "The list of all attributes."
-	    << defgroupAttributeListStop  << std::endl;
+  std::cout << commentStart
+            << pageAttributeList << "All Attributes\n"
+	    << std::endl;
+
   for (uint32_t i = 0; i < TypeId::GetRegisteredN (); ++i)
     {
       TypeId tid = TypeId::GetRegistered (i);
@@ -686,7 +704,9 @@
       for (uint32_t j = 0; j < tid.GetAttributeN (); ++j)
 	{
 	  struct TypeId::AttributeInformation info = tid.GetAttribute(j);
-	  std::cout << listLineStart << info.name << ": " << info.help
+	  std::cout << listLineStart
+		    << boldStart << info.name << boldStop
+		    << ": " << info.help
 		    << listLineStop  << std::endl;
 	}
       std::cout << listStop << std::endl;
@@ -695,11 +715,11 @@
 
 
 
-  std::cout << commentStart << std::endl
-            << ingroupConstructs
-            << defgroupGlobalValueListStart << "The list of all global values."
-	    << defgroupGlobalValueListStop  << std::endl
-            << listStart << std::endl;
+  std::cout << commentStart
+            << pageGlobalValueList << "All GlobalValues\n"
+	    << std::endl
+	    << listStart << std::endl;
+  
   for (GlobalValue::Iterator i = GlobalValue::Begin ();
        i != GlobalValue::End ();
        ++i)
diff -Naur ns-3.19/utils/waf ns-3.20/utils/waf
--- ns-3.19/utils/waf	2014-06-17 10:34:00.660634947 -0700
+++ ns-3.20/utils/waf	1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../waf "$@"
diff -Naur ns-3.19/VERSION ns-3.20/VERSION
--- ns-3.19/VERSION	2014-06-17 10:34:00.276637912 -0700
+++ ns-3.20/VERSION	2014-06-17 10:33:13.624998038 -0700
@@ -1 +1 @@
-3.19
+3.20
diff -Naur ns-3.19/waf-tools/boost.py ns-3.20/waf-tools/boost.py
--- ns-3.19/waf-tools/boost.py	2014-06-17 10:34:00.663634924 -0700
+++ ns-3.20/waf-tools/boost.py	2014-06-17 10:33:14.007995082 -0700
@@ -54,7 +54,8 @@
 from waflib.Configure import conf
 from waflib.Errors import WafError
 
-BOOST_LIBS = ['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/sw/lib', '/lib']
+BOOST_LIBS = ['/usr/lib/x86_64-linux-gnu', '/usr/lib/i386-linux-gnu',
+              '/usr/lib', '/usr/local/lib', '/opt/local/lib', '/sw/lib', '/lib']
 BOOST_INCLUDES = ['/usr/include', '/usr/local/include', '/opt/local/include', '/sw/include']
 BOOST_VERSION_FILE = 'boost/version.hpp'
 BOOST_VERSION_CODE = '''
diff -Naur ns-3.19/wscript ns-3.20/wscript
--- ns-3.19/wscript	2014-06-17 10:34:00.670634870 -0700
+++ ns-3.20/wscript	2014-06-17 10:33:14.014995028 -0700
@@ -29,6 +29,10 @@
 examples_enabled = False
 tests_enabled    = False
 
+# Bug 1868:  be conservative about -Wstrict-overflow for optimized builds
+# on older compilers; it can generate spurious warnings.  
+cc_version_warn_strict_overflow = ('4', '8', '2')
+
 # Get the information out of the NS-3 configuration file.
 config_file_exists = False
 (config_file_exists, modules_enabled, examples_enabled, tests_enabled) = read_config_file()
@@ -325,6 +329,9 @@
         if Options.options.build_profile == 'optimized': 
             if conf.check_compilation_flag('-march=native'):
                 env.append_value('CXXFLAGS', '-march=native') 
+            env.append_value('CXXFLAGS', '-fstrict-overflow')
+            if conf.env['CC_VERSION'] == cc_version_warn_strict_overflow:
+                env.append_value('CXXFLAGS', '-Wstrict-overflow=5')
 
         if sys.platform == 'win32':
             env.append_value("LINKFLAGS", "-Wl,--enable-runtime-pseudo-reloc")
@@ -524,6 +531,13 @@
 
     # Write a summary of optional features status
     print "---- Summary of optional NS-3 features:"
+    print "%-30s: %s%s%s" % ("Build profile", Logs.colors('GREEN'),
+                             Options.options.build_profile, Logs.colors('NORMAL'))
+    bld = wutils.bld
+    print "%-30s: %s%s%s" % ("Build directory", Logs.colors('GREEN'),
+                             Context.out_dir, Logs.colors('NORMAL'))
+    
+    
     for (name, caption, was_enabled, reason_not_enabled) in conf.env['NS3_OPTIONAL_FEATURES']:
         if was_enabled:
             status = 'enabled'
diff -Naur ns-3.19/wutils.py ns-3.20/wutils.py
--- ns-3.19/wutils.py	2014-06-17 10:34:00.671634862 -0700
+++ ns-3.20/wutils.py	2014-06-17 10:33:14.015995020 -0700
@@ -228,3 +228,10 @@
     return run_argv([env['PYTHON'][0]] + execvec, env, cwd=cwd)
 
 
+def uniquify_list(seq):
+    """Remove duplicates while preserving order
+       From Dave Kirby http://www.peterbe.com/plog/uniqifiers-benchmark
+    """
+    seen = set()
+    return [ x for x in seq if x not in seen and not seen.add(x)]
+
